From 93312ff8b51d59b8600794ce955517593fb9d93d Mon Sep 17 00:00:00 2001 From: Luc <8822552+luc-github@users.noreply.github.com> Date: Thu, 5 Sep 2024 16:27:47 +0800 Subject: [PATCH] Idf 5.1.4/Arduino 3.0.4 porting for esp32 (#1046) * Update WebSocket library * Update SSDP library * Update TFT_eSPI library * Update EspLuaEngine library * Update SDFat library * Change to pioarduino * Make ESP3DMessageFIFO and ESP3DMessage more thread safe * Fix sanity checks for BT * Add some C6 support * Refactor ethernet code * Split Ethernet Sta / WiFi sta ESP Commands and settings * Simplify wait and wdtFeed code * Set C3 with 4MB by default in platformio.ini * Apply Disable brown out only on ESP32 to avoid crash e.g:ESP32S3 * Add missing entries in platformio.ini --- .github/ci/install-esp32.sh | 2 +- .github/ci/prepare-libs.sh | 8 +- astyle.bat | 7 - astyle.sh | 7 - docs/esp3dcnf.ini | 18 + esp3d/configuration.h | 38 +- esp3d/src/core/commands/ESP0.cpp | 20 +- esp3d/src/core/commands/ESP102.cpp | 7 +- esp3d/src/core/commands/ESP103.cpp | 7 +- esp3d/src/core/commands/ESP104.cpp | 12 +- esp3d/src/core/commands/ESP116.cpp | 94 + esp3d/src/core/commands/ESP117.cpp | 118 + esp3d/src/core/commands/ESP118.cpp | 101 + esp3d/src/core/commands/ESP301.cpp | 25 +- esp3d/src/core/commands/ESP400.cpp | 45 +- esp3d/src/core/commands/ESP420.cpp | 14 + esp3d/src/core/commands/ESP710.cpp | 2 +- esp3d/src/core/commands/ESP715.cpp | 2 +- esp3d/src/core/commands/ESP720.cpp | 12 +- esp3d/src/core/commands/ESP740.cpp | 8 +- esp3d/src/core/commands/ESP780.cpp | 8 +- esp3d/src/core/esp3d.cpp | 7 + esp3d/src/core/esp3d_commands.cpp | 73 +- esp3d/src/core/esp3d_commands.h | 11 +- esp3d/src/core/esp3d_hal.cpp | 81 +- esp3d/src/core/esp3d_hal.h | 1 + esp3d/src/core/esp3d_message.cpp | 188 +- esp3d/src/core/esp3d_message.h | 75 +- esp3d/src/core/esp3d_messageFifo.h | 194 +- esp3d/src/core/esp3d_settings.cpp | 64 +- esp3d/src/include/esp3d_defines.h | 38 +- esp3d/src/include/esp3d_sanity.h | 4 +- esp3d/src/modules/bluetooth/BT_service.cpp | 6 +- esp3d/src/modules/camera/camera.cpp | 2 + esp3d/src/modules/display/display.cpp | 2 +- esp3d/src/modules/ethernet/ethconfig.cpp | 110 +- esp3d/src/modules/ethernet/ethconfig.h | 3 +- .../modules/filesystem/sd/sd_sdfat2_esp32.cpp | 18 +- .../filesystem/sd/sd_sdfat2_esp8266.cpp | 11 +- esp3d/src/modules/ftp/FtpServer.h | 4 +- esp3d/src/modules/gcode_host/gcode_host.cpp | 4 +- .../modules/http/handlers/handle-command.cpp | 2 +- .../modules/http/handlers/handle-config.cpp | 2 +- esp3d/src/modules/http/http_server.cpp | 8 +- .../lua_interpreter_service.cpp | 289 +- .../lua_interpreter/lua_interpreter_service.h | 26 +- esp3d/src/modules/mDNS/mDNS.cpp | 2 +- esp3d/src/modules/mks/mks_service.cpp | 2 +- esp3d/src/modules/network/netconfig.cpp | 44 +- esp3d/src/modules/network/netconfig.h | 1 + esp3d/src/modules/serial/serial_service.cpp | 6 +- .../modules/serial2socket/serial2socket.cpp | 4 +- esp3d/src/modules/telnet/telnet_server.cpp | 7 +- esp3d/src/modules/telnet/telnet_server.h | 5 +- esp3d/src/modules/update/update_service.cpp | 49 +- esp3d/src/modules/webdav/webdav_server.h | 4 +- .../modules/websocket/websocket_server.cpp | 4 +- esp3d/src/modules/wifi/wificonfig.cpp | 29 +- esp3d/src/modules/wifi/wificonfig.h | 1 + extra-libraries/ESP32/SdFat-2.1.2/.gitignore | 215 - .../ESP32/SdFat-2.1.2/doc/SdErrorCodes.txt | 50 - .../ESP32/SdFat-2.1.2/doc/html.zip | Bin 2261073 -> 0 bytes .../DirectoryFunctions/DirectoryFunctions.ino | 129 - .../examples/examplesV1/OpenNext/OpenNext.ino | 60 - .../examplesV1/QuickStart/QuickStart.ino | 161 - .../examplesV1/SdFormatter/SdFormatter.ino | 552 --- .../examples/examplesV1/SdInfo/SdInfo.ino | 248 -- .../examplesV1/SoftwareSpi/SoftwareSpi.ino | 59 - .../TeensySdioDemo/TeensySdioDemo.ino | 169 - .../examples/examplesV1/bench/bench.ino | 222 - .../examples/examplesV1/rename/rename.ino | 106 - .../USB_Host_Shield/USB_Host_Shield_2.0.zip | Bin 435152 -> 0 bytes .../SdFat-2.1.2/extras/attic/PrintBasic.cpp | 89 - .../ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.h | 490 --- .../ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.h | 277 -- extra-libraries/ESP32/SdFat-2.1.2/src/SdFat.h | 582 --- .../ESP32/SdFat-2.1.2/src/common/FsUtf.cpp | 115 - .../ESP32/SdFat-2.1.2/src/common/FsUtf.h | 109 - .../.gitattributes | 0 extra-libraries/ESP32/SdFat-2.2.3/.gitignore | 36 + .../{SdFat-2.1.2 => SdFat-2.2.3}/LICENSE.md | 0 .../{SdFat-2.1.2 => SdFat-2.2.3}/README.md | 8 +- .../{SdFat-2.1.2 => SdFat-2.2.3}/doc/Doxyfile | 260 +- .../ESP32/SdFat-2.2.3/doc/SdErrorCodes.txt | 51 + .../doc/SdFat.html | 0 .../doc/ZipMsg/index.html | 0 .../doc/clean_html.bat | 0 .../doc/del_html.bat | 0 .../ESP32/SdFat-2.2.3/doc/html.zip | Bin 0 -> 2552549 bytes .../doc/html/index.html | 0 .../doc/mainpage.h | 26 +- .../examples/AvrAdcLogger/AvrAdcLogger.h | 10 +- .../examples/AvrAdcLogger/AvrAdcLogger.ino | 112 +- .../BackwardCompatibility.ino | 5 +- .../examples/BufferedPrint/BufferedPrint.ino | 131 +- .../DirectoryFunctions/DirectoryFunctions.ino | 17 +- .../examples/ExFatLogger/ExFatLogger.h | 0 .../examples/ExFatLogger/ExFatLogger.ino | 46 +- .../MinimumSizeSdReader.ino | 24 +- .../examples/OpenNext/OpenNext.ino | 27 +- .../examples/QuickStart/QuickStart.ino | 47 +- .../examples/ReadCsvFile/ReadCsvFile.ino | 19 +- .../RtcTimestampTest/RtcTimestampTest.ino | 29 +- .../examples/SdErrorCodes/SdErrorCodes.ino | 3 +- .../examples/SdFormatter/SdFormatter.ino | 74 +- .../examples/SdInfo/SdInfo.ino | 144 +- .../examples/SoftwareSpi/SoftwareSpi.ino | 6 +- .../SpiLoopBackTest/SpiLoopBackTest.ino | 66 + .../TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino | 161 +- .../TeensyRtcTimestamp/TeensyRtcTimestamp.ino | 18 +- .../TeensySdioDemo/TeensySdioDemo.ino | 43 +- .../TeensySdioLogger/TeensySdioLogger.ino | 23 +- .../UnicodeFilenames/UnicodeFilenames.ino | 5 +- .../UserChipSelectFunction.ino | 0 .../examples/UserSPIDriver/UserSPIDriver.ino | 20 +- .../examples/bench/bench.ino | 51 +- .../debug/CardBusyTest/CardBusyTest.ino | 119 + .../debug/ExFatDbgDmp/ExFatDbgDmp.ino | 51 + .../debug/TestGetName/TestGetName.ino | 43 + .../examples/debug/TestMkdir/TestMkdir.ino | 140 + .../examples/debug/TestRmdir/TestRmdir.ino | 99 + .../debug/TimestampTest/TimestampTest.ino | 162 + .../#attic/AnalogLogger/AnalogLogger.ino | 0 .../BaseExtCaseTest/BaseExtCaseTest.ino | 0 .../#attic/HelloWorld/HelloWorld.ino | 0 .../#attic/MiniSerial/MiniSerial.ino | 0 .../PrintBenchmarkSD/PrintBenchmarkSD.ino | 0 .../examplesV1/#attic/SD_Size/SD_Size.ino | 0 .../examplesV1/#attic/SdFatSize/SdFatSize.ino | 0 .../#attic/StreamParseInt/StreamParseInt.ino | 0 .../examplesV1/#attic/append/append.ino | 0 .../examplesV1/#attic/average/average.ino | 0 .../examplesV1/#attic/benchSD/benchSD.ino | 0 .../examplesV1/#attic/bufstream/bufstream.ino | 0 .../examplesV1/#attic/cin_cout/cin_cout.ino | 0 .../examplesV1/#attic/eventlog/eventlog.ino | 0 .../#attic/fgetsRewrite/fgetsRewrite.ino | 0 .../examplesV1/#attic/readlog/readlog.ino | 0 .../examples/examplesV1/#attic/readme.txt | 0 .../AnalogBinLogger/AnalogBinLogger.h | 0 .../AnalogBinLogger/AnalogBinLogger.ino | 3 +- .../examplesV1/LongFileName/LongFileName.ino | 0 .../A long name can be 255 characters.txt | 0 .../LongFileName/testFiles/LFN,NAME.TXT | 0 .../LongFileName/testFiles/MIXCASE.txt | 0 .../LongFileName/testFiles/Not_8_3.txt | 0 .../LongFileName/testFiles/OK%83.TXT | 0 .../LongFileName/testFiles/STD_8_3.TXT | 0 .../LongFileName/testFiles/With Blank.txt | 0 .../LongFileName/testFiles/With.Two dots.txt | 0 .../LongFileName/testFiles/lower.txt | 0 .../LongFileName/testFiles/mixed.TXT | 0 .../LowLatencyLogger/LowLatencyLogger.ino | 0 .../LowLatencyLogger/UserFunctions.cpp | 0 .../examplesV1/LowLatencyLogger/UserTypes.h | 0 .../LowLatencyLogger.ino | 0 .../LowLatencyLoggerADXL345.ino | 0 .../LowLatencyLoggerADXL345/UserFunctions.cpp | 0 .../LowLatencyLoggerADXL345/UserTypes.h | 0 .../LowLatencyLoggerADXL345/readme.txt | 0 .../LowLatencyLogger.ino | 0 .../LowLatencyLoggerMPU6050.ino | 0 .../LowLatencyLoggerMPU6050/UserFunctions.cpp | 0 .../LowLatencyLoggerMPU6050/UserTypes.h | 0 .../PrintBenchmark/PrintBenchmark.ino | 0 .../examples/examplesV1/RawWrite/RawWrite.ino | 0 .../examples/examplesV1/ReadCsv/ReadCsv.ino | 0 .../examplesV1/ReadCsvArray/ReadCsvArray.ino | 0 .../ReadCsvStream/ReadCsvStream.ino | 0 .../examplesV1/ReadWrite/ReadWrite.ino | 0 .../examplesV1/STM32Test/STM32Test.ino | 0 .../examplesV1/StdioBench/StdioBench.ino | 0 .../examplesV1/Timestamp/Timestamp.ino | 0 .../examples/examplesV1/TwoCards/TwoCards.ino | 0 .../VolumeFreeSpace/VolumeFreeSpace.ino | 0 .../examplesV1/dataLogger/dataLogger.ino | 0 .../examples/examplesV1/fgets/fgets.ino | 0 .../examplesV1/formatting/formatting.ino | 0 .../examples/examplesV1/getline/getline.ino | 0 .../examples/examplesV1/wipe/wipe.ino | 0 .../examples/rename/rename.ino | 9 +- .../SdFat-2.2.3/extras/AvrPrintStimmer.cpp | 567 +++ .../USB_Host_Shield/USB_Host_Shield_2.0.zip | Bin 0 -> 476902 bytes .../USB_Host_Shield/UsbHostShieldDiff.txt | 5 +- .../extras/USB_Host_Shield/readme.txt | 2 +- .../extras/attic}/PrintBasic.cpp | 8 +- .../extras/attic}/PrintBasic.h | 73 +- .../extras/attic/PrintTemplates.h | 0 .../extras/attic/SysCallBareUno.cpp | 0 .../extras/cpplint.bat | 0 .../extras/cpplint.py | 2 +- .../extras/cpplint.sh | 0 .../ESP32/SdFat-2.2.3/extras/fmt_src.bat | 11 + .../library.properties | 2 +- .../src/BufferedPrint.h | 29 +- .../src/DigitalIO/DigitalPin.h | 0 .../src/DigitalIO/SoftSPI.h | 0 .../boards/AvrDevelopersGpioPinMap.h | 0 .../src/DigitalIO/boards/BobuinoGpioPinMap.h | 0 .../src/DigitalIO/boards/GpioPinMap.h | 0 .../src/DigitalIO/boards/LeonardoGpioPinMap.h | 0 .../src/DigitalIO/boards/MegaGpioPinMap.h | 0 .../boards/SleepingBeautyGpioPinMap.h | 0 .../DigitalIO/boards/Standard1284GpioPinMap.h | 0 .../src/DigitalIO/boards/Teensy2GpioPinMap.h | 0 .../DigitalIO/boards/Teensy2ppGpioPinMap.h | 0 .../src/DigitalIO/boards/UnoGpioPinMap.h | 0 .../src/DigitalIO/readme.txt | 0 .../src/ExFatLib/ExFatConfig.h | 2 +- .../src/ExFatLib/ExFatDbg.cpp | 85 +- .../src/ExFatLib/ExFatFile.cpp | 173 +- .../src/ExFatLib/ExFatFile.h | 290 +- .../src/ExFatLib/ExFatFilePrint.cpp | 40 +- .../src/ExFatLib/ExFatFileWrite.cpp | 98 +- .../src/ExFatLib/ExFatFormatter.cpp | 60 +- .../src/ExFatLib/ExFatFormatter.h | 5 +- .../src/ExFatLib/ExFatLib.h | 4 +- .../src/ExFatLib/ExFatName.cpp | 47 +- .../src/ExFatLib/ExFatPartition.cpp | 75 +- .../src/ExFatLib/ExFatPartition.h | 81 +- .../src/ExFatLib/ExFatVolume.cpp | 7 +- .../src/ExFatLib/ExFatVolume.h | 69 +- .../src/FatLib/FatDbg.cpp | 32 +- .../src/FatLib/FatFile.cpp | 248 +- .../src/FatLib/FatFile.h | 305 +- .../src/FatLib/FatFileLFN.cpp | 129 +- .../src/FatLib/FatFilePrint.cpp | 6 +- .../src/FatLib/FatFileSFN.cpp | 49 +- .../src/FatLib/FatFormatter.cpp | 58 +- .../src/FatLib/FatFormatter.h | 6 +- .../src/FatLib/FatLib.h | 4 +- .../src/FatLib/FatName.cpp | 46 +- .../src/FatLib/FatPartition.cpp | 71 +- .../src/FatLib/FatPartition.h | 171 +- .../src/FatLib/FatVolume.cpp | 9 +- .../src/FatLib/FatVolume.h | 71 +- .../src/FreeStack.cpp | 2 +- .../src/FreeStack.h | 14 +- .../src/FsLib/FsFile.cpp | 77 +- .../src/FsLib/FsFile.h | 416 +- .../src/FsLib/FsFormatter.h | 12 +- .../src/FsLib/FsLib.h | 4 +- .../src/FsLib/FsNew.cpp | 2 +- .../src/FsLib/FsNew.h | 4 +- .../src/FsLib/FsVolume.cpp | 19 +- .../src/FsLib/FsVolume.h | 176 +- .../src/MinimumSerial.cpp | 17 +- .../src/MinimumSerial.h | 6 +- .../src/RingBuf.h | 312 +- .../src/SdCard/CPPLINT.cfg | 0 .../src/SdCard/SdCard.h | 32 +- .../src/SdCard/SdCardInfo.cpp | 21 +- .../ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.h | 477 +++ .../src/SdCard/SdCardInterface.h | 43 +- .../src/SdCard/SdSpiCard.cpp | 261 +- .../src/SdCard/SdSpiCard.h | 178 +- .../src/SdCard/SdioCard.h | 61 +- .../src/SdCard/SdioTeensy.cpp | 418 +- .../ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.h | 530 +++ extra-libraries/ESP32/SdFat-2.2.3/src/SdFat.h | 510 +++ .../src/SdFatConfig.h | 107 +- .../src/SpiDriver/SdSpiArduinoDriver.h | 18 +- .../src/SpiDriver/SdSpiArtemis.cpp | 30 +- .../src/SpiDriver/SdSpiAvr.h | 46 +- .../src/SpiDriver/SdSpiBareUnoDriver.h | 52 +- .../src/SpiDriver/SdSpiBaseClass.h | 16 +- .../src/SpiDriver/SdSpiChipSelect.cpp | 18 +- .../src/SpiDriver/SdSpiDriver.h | 29 +- .../src/SpiDriver/SdSpiDue.cpp | 90 +- .../src/SpiDriver/SdSpiESP.cpp | 28 +- .../src/SpiDriver/SdSpiLibDriver.h | 78 +- .../src/SpiDriver/SdSpiParticle.cpp | 33 +- .../src/SpiDriver/SdSpiSTM32.cpp | 31 +- .../src/SpiDriver/SdSpiSTM32Core.cpp | 22 +- .../src/SpiDriver/SdSpiSoftDriver.h | 15 +- .../src/SpiDriver/SdSpiTeensy3.cpp | 28 +- .../src/common/ArduinoFiles.h | 53 +- .../src/common/CPPLINT.cfg | 0 .../src/common/CompileDateTime.h | 49 +- .../src/common/DebugMacros.h | 15 +- .../src/common/FmtNumber.cpp | 195 +- .../src/common/FmtNumber.h | 14 +- .../src/common/FsApiConstants.h | 30 +- .../src/common/FsBlockDevice.h | 2 +- .../src/common/FsBlockDeviceInterface.h | 4 +- .../src/common/FsCache.cpp | 12 +- .../src/common/FsCache.h | 38 +- .../src/common/FsDateTime.cpp | 55 +- .../src/common/FsDateTime.h | 158 +- .../src/common/FsName.cpp | 5 +- .../src/common/FsName.h | 19 +- .../src/common/FsStructs.cpp | 2 +- .../src/common/FsStructs.h | 381 +- .../ESP32/SdFat-2.2.3/src/common/FsUtf.cpp | 114 + .../ESP32/SdFat-2.2.3/src/common/FsUtf.h | 101 + .../src/common/SysCall.h | 5 +- .../src/common/upcase.cpp | 179 +- .../src/common/upcase.h | 2 +- .../src/iostream/ArduinoStream.h | 20 +- .../src/iostream/StdioStream.cpp | 162 +- .../src/iostream/StdioStream.h | 69 +- .../src/iostream/StreamBaseClass.cpp | 76 +- .../src/iostream/bufstream.h | 45 +- .../src/iostream/fstream.h | 142 +- .../src/iostream/ios.h | 101 +- .../src/iostream/iostream.h | 17 +- .../src/iostream/istream.cpp | 45 +- .../src/iostream/istream.h | 67 +- .../src/iostream/ostream.cpp | 19 +- .../src/iostream/ostream.h | 92 +- .../{SdFat-2.1.2 => SdFat-2.2.3}/src/sdios.h | 4 +- .../ESP8266/ESP8266SdFat/.gitignore | 243 +- .../ESP8266/ESP8266SdFat/README.md | 18 +- .../ESP8266/ESP8266SdFat/doc/Doxyfile | 899 ++-- .../ESP8266/ESP8266SdFat/doc/SdErrorCodes.txt | 45 +- .../ESP8266SdFat/doc/ZipMsg/index.html | 4 + .../ESP8266/ESP8266SdFat/doc/html.zip | Bin 0 -> 2552549 bytes .../doc/html/_arduino_stream_8h.html | 133 - .../html/_arduino_stream_8h__dep__incl.png | Bin 2150 -> 0 bytes .../doc/html/_arduino_stream_8h__incl.png | Bin 17167 -> 0 bytes .../doc/html/_block_device_interface_8h.html | 114 - .../html/_block_device_interface_8h__incl.png | Bin 7659 -> 0 bytes .../doc/html/_buffered_print_8h.html | 100 - .../doc/html/_ex_fat_file_8h.html | 202 - .../doc/html/_ex_fat_file_8h__incl.png | Bin 15345 -> 0 bytes .../doc/html/_ex_fat_partition_8h.html | 150 - .../html/_ex_fat_partition_8h__dep__incl.png | Bin 2268 -> 0 bytes .../doc/html/_ex_fat_partition_8h__incl.png | Bin 8563 -> 0 bytes .../ESP8266SdFat/doc/html/_fat_file_8h.html | 345 -- .../doc/html/_fat_file_8h__dep__incl.png | Bin 2113 -> 0 bytes .../doc/html/_fat_file_8h__incl.png | Bin 28107 -> 0 bytes .../doc/html/_fat_lib_config_8h.html | 113 - .../html/_fat_lib_config_8h__dep__incl.png | Bin 10659 -> 0 bytes .../doc/html/_fat_lib_config_8h__incl.png | Bin 3592 -> 0 bytes .../doc/html/_fat_partition_8h.html | 191 - .../doc/html/_fat_partition_8h__dep__incl.png | Bin 6596 -> 0 bytes .../doc/html/_fat_partition_8h__incl.png | Bin 15133 -> 0 bytes .../ESP8266SdFat/doc/html/_fat_volume_8h.html | 120 - .../doc/html/_fat_volume_8h__incl.png | Bin 32084 -> 0 bytes .../ESP8266SdFat/doc/html/_free_stack_8h.html | 241 -- .../doc/html/_free_stack_8h__incl.png | Bin 3286 -> 0 bytes .../ESP8266SdFat/doc/html/_fs_file_8h.html | 124 - .../doc/html/_fs_file_8h__dep__incl.png | Bin 28344 -> 0 bytes .../ESP8266SdFat/doc/html/_fs_lib_8h.html | 120 - .../doc/html/_fs_lib_8h__dep__incl.png | Bin 26888 -> 0 bytes .../doc/html/_fs_lib_8h__incl.png | Bin 3404 -> 0 bytes .../ESP8266SdFat/doc/html/_fs_volume_8h.html | 121 - .../doc/html/_fs_volume_8h__dep__incl.png | Bin 28380 -> 0 bytes .../doc/html/_minimum_serial_8h.html | 113 - .../doc/html/_minimum_serial_8h__incl.png | Bin 8438 -> 0 bytes .../doc/html/_print_templates_8h.html | 393 -- .../doc/html/_print_templates_8h__incl.png | Bin 1827 -> 0 bytes .../ESP8266SdFat/doc/html/_sd_fat_8h.html | 210 - .../doc/html/_sd_fat_8h__incl.png | Bin 13943 -> 0 bytes .../doc/html/_sd_fat_config_8h.html | 660 --- .../doc/html/_sd_fat_config_8h__dep__incl.png | Bin 35573 -> 0 bytes .../doc/html/_sd_fat_config_8h__incl.png | Bin 3295 -> 0 bytes .../doc/html/_sd_spi_arduino_driver_8h.html | 141 - .../_sd_spi_arduino_driver_8h__dep__incl.png | Bin 3730 -> 0 bytes .../html/_sd_spi_arduino_driver_8h__incl.png | Bin 1931 -> 0 bytes .../doc/html/_sd_spi_base_class_8h.html | 99 - .../doc/html/_sd_spi_card_8h.html | 121 - .../doc/html/_sd_spi_card_8h__incl.png | Bin 17517 -> 0 bytes .../doc/html/_sd_spi_driver_8h.html | 424 -- .../doc/html/_sd_spi_driver_8h__dep__incl.png | Bin 2223 -> 0 bytes .../doc/html/_sd_spi_driver_8h__incl.png | Bin 13258 -> 0 bytes .../doc/html/_sd_spi_lib_driver_8h.html | 101 - .../html/_sd_spi_lib_driver_8h__dep__incl.png | Bin 5151 -> 0 bytes .../doc/html/_sd_spi_soft_driver_8h.html | 137 - .../doc/html/_sd_spi_soft_driver_8h__incl.png | Bin 9376 -> 0 bytes .../doc/html/_stdio_stream_8h.html | 254 -- .../doc/html/_stdio_stream_8h__dep__incl.png | Bin 2075 -> 0 bytes .../doc/html/_stdio_stream_8h__incl.png | Bin 7769 -> 0 bytes .../ESP8266SdFat/doc/html/_sys_call_8h.html | 230 - .../doc/html/_sys_call_8h__dep__incl.png | Bin 22890 -> 0 bytes .../doc/html/_sys_call_8h__incl.png | Bin 7688 -> 0 bytes .../ESP8266SdFat/doc/html/annotated.html | 140 - .../ESP8266/ESP8266SdFat/doc/html/bc_s.png | Bin 676 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/bdwn.png | Bin 147 -> 0 bytes .../ESP8266SdFat/doc/html/bufstream_8h.html | 130 - .../doc/html/bufstream_8h__dep__incl.png | Bin 3445 -> 0 bytes .../doc/html/bufstream_8h__incl.png | Bin 11613 -> 0 bytes .../html/class_arduino_in_stream-members.html | 172 - .../doc/html/class_arduino_in_stream.html | 2785 ------------ .../class_arduino_in_stream__coll__graph.png | Bin 3290 -> 0 bytes ...lass_arduino_in_stream__inherit__graph.png | Bin 3290 -> 0 bytes .../class_arduino_out_stream-members.html | 165 - .../doc/html/class_arduino_out_stream.html | 2559 ----------- .../class_arduino_out_stream__coll__graph.png | Bin 2700 -> 0 bytes ...ass_arduino_out_stream__inherit__graph.png | Bin 2700 -> 0 bytes .../class_block_device_interface-members.html | 86 - .../html/class_block_device_interface.html | 374 -- ...block_device_interface__inherit__graph.png | Bin 2217 -> 0 bytes .../html/class_buffered_print-members.html | 98 - .../doc/html/class_buffered_print.html | 885 ---- .../doc/html/class_ex_fat_file-members.html | 152 - .../doc/html/class_ex_fat_file.html | 2529 ----------- .../class_ex_fat_file__inherit__graph.png | Bin 2379 -> 0 bytes .../html/class_ex_fat_formatter-members.html | 80 - .../doc/html/class_ex_fat_formatter.html | 146 - .../html/class_ex_fat_partition-members.html | 97 - .../doc/html/class_ex_fat_partition.html | 578 --- ...class_ex_fat_partition__inherit__graph.png | Bin 3161 -> 0 bytes .../doc/html/class_ex_fat_volume-members.html | 122 - .../doc/html/class_ex_fat_volume.html | 1612 ------- .../html/class_ex_fat_volume__coll__graph.png | Bin 1252 -> 0 bytes .../class_ex_fat_volume__inherit__graph.png | Bin 3176 -> 0 bytes .../doc/html/class_ex_file-members.html | 160 - .../ESP8266SdFat/doc/html/class_ex_file.html | 3034 ------------- .../doc/html/class_ex_file__coll__graph.png | Bin 4210 -> 0 bytes .../html/class_ex_file__inherit__graph.png | Bin 4210 -> 0 bytes .../doc/html/class_fat_cache-members.html | 94 - .../doc/html/class_fat_cache.html | 507 --- .../doc/html/class_fat_file-members.html | 172 - .../ESP8266SdFat/doc/html/class_fat_file.html | 3225 -------------- .../html/class_fat_file__inherit__graph.png | Bin 13255 -> 0 bytes .../doc/html/class_fat_formatter-members.html | 80 - .../doc/html/class_fat_formatter.html | 146 - .../doc/html/class_fat_partition-members.html | 102 - .../doc/html/class_fat_partition.html | 773 ---- .../class_fat_partition__inherit__graph.png | Bin 3043 -> 0 bytes .../doc/html/class_fat_volume-members.html | 124 - .../doc/html/class_fat_volume.html | 1711 -------- .../html/class_fat_volume__coll__graph.png | Bin 1181 -> 0 bytes .../html/class_fat_volume__inherit__graph.png | Bin 3064 -> 0 bytes .../doc/html/class_file32-members.html | 180 - .../ESP8266SdFat/doc/html/class_file32.html | 3740 ---------------- .../doc/html/class_file32__coll__graph.png | Bin 3805 -> 0 bytes .../doc/html/class_file32__inherit__graph.png | Bin 3805 -> 0 bytes .../doc/html/class_fs_base_file-members.html | 149 - .../doc/html/class_fs_base_file.html | 2599 ----------- .../class_fs_base_file__inherit__graph.png | Bin 2409 -> 0 bytes .../doc/html/class_fs_cache-members.html | 95 - .../ESP8266SdFat/doc/html/class_fs_cache.html | 502 --- .../doc/html/class_fs_file-members.html | 152 - .../ESP8266SdFat/doc/html/class_fs_file.html | 2698 ------------ .../doc/html/class_fs_file__coll__graph.png | Bin 4255 -> 0 bytes .../html/class_fs_file__inherit__graph.png | Bin 4255 -> 0 bytes .../doc/html/class_fs_volume-members.html | 114 - .../doc/html/class_fs_volume.html | 1296 ------ .../html/class_fs_volume__inherit__graph.png | Bin 2114 -> 0 bytes .../html/class_minimum_serial-members.html | 85 - .../doc/html/class_minimum_serial.html | 255 -- .../class_minimum_serial__coll__graph.png | Bin 1220 -> 0 bytes .../class_minimum_serial__inherit__graph.png | Bin 1220 -> 0 bytes .../doc/html/class_print_file-members.html | 80 - .../doc/html/class_print_file.html | 154 - .../html/class_print_file__coll__graph.png | Bin 2894 -> 0 bytes .../html/class_print_file__inherit__graph.png | Bin 2894 -> 0 bytes .../doc/html/class_sd_base-members.html | 111 - .../ESP8266SdFat/doc/html/class_sd_base.html | 1327 ------ .../doc/html/class_sd_base__coll__graph.png | Bin 1238 -> 0 bytes .../html/class_sd_base__inherit__graph.png | Bin 1238 -> 0 bytes .../html/class_sd_card_factory-members.html | 81 - .../doc/html/class_sd_card_factory.html | 166 - .../html/class_sd_card_interface-members.html | 98 - .../doc/html/class_sd_card_interface.html | 809 ---- .../class_sd_card_interface__coll__graph.png | Bin 1457 -> 0 bytes ...lass_sd_card_interface__inherit__graph.png | Bin 2234 -> 0 bytes .../doc/html/class_sd_ex_fat-members.html | 155 - .../doc/html/class_sd_ex_fat.html | 2800 ------------ .../doc/html/class_sd_ex_fat__coll__graph.png | Bin 3180 -> 0 bytes .../html/class_sd_ex_fat__inherit__graph.png | Bin 3180 -> 0 bytes .../doc/html/class_sd_fat32-members.html | 157 - .../ESP8266SdFat/doc/html/class_sd_fat32.html | 2904 ------------- .../doc/html/class_sd_fat32__coll__graph.png | Bin 3057 -> 0 bytes .../html/class_sd_fat32__inherit__graph.png | Bin 3057 -> 0 bytes .../doc/html/class_sd_file-members.html | 175 - .../ESP8266SdFat/doc/html/class_sd_file.html | 3603 ---------------- .../doc/html/class_sd_file__coll__graph.png | Bin 3918 -> 0 bytes .../html/class_sd_file__inherit__graph.png | Bin 3918 -> 0 bytes .../doc/html/class_sd_fs-members.html | 145 - .../ESP8266SdFat/doc/html/class_sd_fs.html | 2445 ----------- .../doc/html/class_sd_fs__coll__graph.png | Bin 2089 -> 0 bytes .../doc/html/class_sd_fs__inherit__graph.png | Bin 2089 -> 0 bytes .../class_sd_spi_arduino_driver-members.html | 88 - .../doc/html/class_sd_spi_arduino_driver.html | 399 -- .../html/class_sd_spi_base_class-members.html | 87 - .../doc/html/class_sd_spi_base_class.html | 377 -- .../doc/html/class_sd_spi_card-members.html | 111 - .../doc/html/class_sd_spi_card.html | 1058 ----- .../doc/html/class_sd_spi_config-members.html | 87 - .../doc/html/class_sd_spi_config.html | 361 -- .../class_sd_spi_soft_driver-members.html | 88 - .../doc/html/class_sd_spi_soft_driver.html | 420 -- ...ass_sd_spi_soft_driver__inherit__graph.png | Bin 1786 -> 0 bytes .../doc/html/class_sdio_card-members.html | 107 - .../doc/html/class_sdio_card.html | 1060 ----- .../doc/html/class_sdio_card__coll__graph.png | Bin 2241 -> 0 bytes .../html/class_sdio_card__inherit__graph.png | Bin 2241 -> 0 bytes .../doc/html/class_sdio_config-members.html | 83 - .../doc/html/class_sdio_config.html | 185 - .../html/class_soft_spi_driver-members.html | 88 - .../doc/html/class_soft_spi_driver.html | 438 -- .../class_soft_spi_driver__coll__graph.png | Bin 1780 -> 0 bytes .../class_soft_spi_driver__inherit__graph.png | Bin 1780 -> 0 bytes .../doc/html/class_stdio_stream-members.html | 127 - .../doc/html/class_stdio_stream.html | 1693 -------- .../html/class_stdio_stream__coll__graph.png | Bin 1308 -> 0 bytes .../class_stdio_stream__inherit__graph.png | Bin 1308 -> 0 bytes .../html/class_stream_base_class-members.html | 141 - .../doc/html/class_stream_base_class.html | 1595 ------- .../class_stream_base_class__coll__graph.png | Bin 3884 -> 0 bytes ...lass_stream_base_class__inherit__graph.png | Bin 7301 -> 0 bytes .../doc/html/class_stream_file-members.html | 92 - .../doc/html/class_stream_file.html | 515 --- .../html/class_stream_file__coll__graph.png | Bin 3405 -> 0 bytes .../class_stream_file__inherit__graph.png | Bin 3405 -> 0 bytes .../doc/html/class_sys_call-members.html | 82 - .../ESP8266SdFat/doc/html/class_sys_call.html | 178 - .../ESP8266SdFat/doc/html/classes.html | 181 - .../doc/html/classfstream-members.html | 203 - .../ESP8266SdFat/doc/html/classfstream.html | 3784 ----------------- .../doc/html/classfstream__coll__graph.png | Bin 9457 -> 0 bytes .../doc/html/classfstream__inherit__graph.png | Bin 9457 -> 0 bytes .../doc/html/classibufstream-members.html | 170 - .../doc/html/classibufstream.html | 2766 ------------ .../doc/html/classibufstream__coll__graph.png | Bin 2455 -> 0 bytes .../html/classibufstream__inherit__graph.png | Bin 3303 -> 0 bytes .../doc/html/classifstream-members.html | 176 - .../ESP8266SdFat/doc/html/classifstream.html | 2848 ------------- .../doc/html/classifstream__coll__graph.png | Bin 6167 -> 0 bytes .../html/classifstream__inherit__graph.png | Bin 6167 -> 0 bytes .../doc/html/classios-members.html | 136 - .../ESP8266SdFat/doc/html/classios.html | 1614 ------- .../doc/html/classios__base-members.html | 125 - .../ESP8266SdFat/doc/html/classios__base.html | 1222 ------ .../html/classios__base__inherit__graph.png | Bin 18294 -> 0 bytes .../doc/html/classios__coll__graph.png | Bin 1056 -> 0 bytes .../doc/html/classios__inherit__graph.png | Bin 18281 -> 0 bytes .../doc/html/classiostream-members.html | 195 - .../ESP8266SdFat/doc/html/classiostream.html | 3616 ---------------- .../doc/html/classiostream__coll__graph.png | Bin 5739 -> 0 bytes .../html/classiostream__inherit__graph.png | Bin 6509 -> 0 bytes .../doc/html/classistream-members.html | 167 - .../ESP8266SdFat/doc/html/classistream.html | 2616 ------------ .../doc/html/classistream__coll__graph.png | Bin 1704 -> 0 bytes .../doc/html/classistream__inherit__graph.png | Bin 6670 -> 0 bytes .../doc/html/classobufstream-members.html | 169 - .../doc/html/classobufstream.html | 2698 ------------ .../doc/html/classobufstream__coll__graph.png | Bin 2474 -> 0 bytes .../html/classobufstream__inherit__graph.png | Bin 2474 -> 0 bytes .../doc/html/classofstream-members.html | 172 - .../ESP8266SdFat/doc/html/classofstream.html | 2684 ------------ .../doc/html/classofstream__coll__graph.png | Bin 6737 -> 0 bytes .../html/classofstream__inherit__graph.png | Bin 6737 -> 0 bytes .../doc/html/classostream-members.html | 164 - .../ESP8266SdFat/doc/html/classostream.html | 2527 ----------- .../doc/html/classostream__coll__graph.png | Bin 1705 -> 0 bytes .../doc/html/classostream__inherit__graph.png | Bin 7836 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/closed.png | Bin 132 -> 0 bytes .../doc/html/dir_000004_000009.html | 76 - .../doc/html/dir_000006_000005.html | 76 - .../doc/html/dir_000007_000005.html | 76 - .../doc/html/dir_000009_000008.html | 76 - .../doc/html/dir_000010_000005.html | 76 - .../doc/html/dir_000010_000011.html | 76 - .../doc/html/dir_000011_000005.html | 76 - .../dir_05631d2e79636c8b95a1e5d165caf51f.html | 119 - ...r_05631d2e79636c8b95a1e5d165caf51f_dep.png | Bin 1463 -> 0 bytes .../dir_1281b15c327061056ab3b326e90c50cf.html | 95 - ...r_1281b15c327061056ab3b326e90c50cf_dep.png | Bin 1412 -> 0 bytes .../dir_481cc946b8a81b8d9363a4aad6201160.html | 90 - ...r_481cc946b8a81b8d9363a4aad6201160_dep.png | Bin 1277 -> 0 bytes .../dir_4944048bb6fb9e219242a59a3faf7f85.html | 80 - .../dir_6ad57a83f04f6188f18545163430419a.html | 101 - ...r_6ad57a83f04f6188f18545163430419a_dep.png | Bin 1484 -> 0 bytes .../dir_72a7f5d5cdfff657f3dd19b69595124a.html | 110 - ...r_72a7f5d5cdfff657f3dd19b69595124a_dep.png | Bin 1510 -> 0 bytes .../dir_7e472674a7b7d2590a789f197241f95f.html | 107 - ...r_7e472674a7b7d2590a789f197241f95f_dep.png | Bin 1440 -> 0 bytes .../dir_954f1cc1f567c84d567c4e2ef94e5c23.html | 93 - .../dir_a70af2fb8f1edf8b7124f41d82dbf480.html | 101 - ...r_a70af2fb8f1edf8b7124f41d82dbf480_dep.png | Bin 3682 -> 0 bytes .../dir_a991eec27578c865874ede3d8ec657c2.html | 89 - ...r_a991eec27578c865874ede3d8ec657c2_dep.png | Bin 867 -> 0 bytes .../dir_c18d6c86f7b0afecac5c3a8a9885031e.html | 128 - ...r_c18d6c86f7b0afecac5c3a8a9885031e_dep.png | Bin 10229 -> 0 bytes .../dir_f9735b46fbe6c50afc1ee0ea5d409dcf.html | 102 - ...r_f9735b46fbe6c50afc1ee0ea5d409dcf_dep.png | Bin 780 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/doc.png | Bin 746 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/doxygen.css | 1766 -------- .../ESP8266/ESP8266SdFat/doc/html/doxygen.png | Bin 3779 -> 0 bytes .../ESP8266SdFat/doc/html/dynsections.js | 120 - .../ESP8266/ESP8266SdFat/doc/html/files.html | 123 - .../ESP8266SdFat/doc/html/folderclosed.png | Bin 616 -> 0 bytes .../ESP8266SdFat/doc/html/folderopen.png | Bin 597 -> 0 bytes .../ESP8266SdFat/doc/html/fstream_8h.html | 133 - .../doc/html/fstream_8h__dep__incl.png | Bin 1991 -> 0 bytes .../doc/html/fstream_8h__incl.png | Bin 9855 -> 0 bytes .../ESP8266SdFat/doc/html/functions.html | 112 - .../ESP8266SdFat/doc/html/functions_b.html | 134 - .../ESP8266SdFat/doc/html/functions_c.html | 201 - .../ESP8266SdFat/doc/html/functions_d.html | 130 - .../ESP8266SdFat/doc/html/functions_e.html | 133 - .../ESP8266SdFat/doc/html/functions_enum.html | 77 - .../ESP8266SdFat/doc/html/functions_eval.html | 83 - .../ESP8266SdFat/doc/html/functions_f.html | 219 - .../ESP8266SdFat/doc/html/functions_func.html | 100 - .../doc/html/functions_func_b.html | 119 - .../doc/html/functions_func_c.html | 157 - .../doc/html/functions_func_d.html | 121 - .../doc/html/functions_func_e.html | 125 - .../doc/html/functions_func_f.html | 198 - .../doc/html/functions_func_g.html | 128 - .../doc/html/functions_func_h.html | 79 - .../doc/html/functions_func_i.html | 181 - .../doc/html/functions_func_k.html | 79 - .../doc/html/functions_func_l.html | 90 - .../doc/html/functions_func_m.html | 84 - .../doc/html/functions_func_n.html | 83 - .../doc/html/functions_func_o.html | 132 - .../doc/html/functions_func_p.html | 171 - .../doc/html/functions_func_r.html | 191 - .../doc/html/functions_func_s.html | 203 - .../doc/html/functions_func_t.html | 99 - .../doc/html/functions_func_u.html | 85 - .../doc/html/functions_func_v.html | 88 - .../doc/html/functions_func_w.html | 116 - .../doc/html/functions_func_y.html | 79 - .../ESP8266SdFat/doc/html/functions_g.html | 131 - .../ESP8266SdFat/doc/html/functions_h.html | 82 - .../ESP8266SdFat/doc/html/functions_i.html | 191 - .../ESP8266SdFat/doc/html/functions_k.html | 79 - .../ESP8266SdFat/doc/html/functions_l.html | 101 - .../ESP8266SdFat/doc/html/functions_m.html | 99 - .../ESP8266SdFat/doc/html/functions_n.html | 83 - .../ESP8266SdFat/doc/html/functions_o.html | 148 - .../ESP8266SdFat/doc/html/functions_p.html | 192 - .../ESP8266SdFat/doc/html/functions_r.html | 197 - .../ESP8266SdFat/doc/html/functions_rela.html | 92 - .../ESP8266SdFat/doc/html/functions_s.html | 230 - .../ESP8266SdFat/doc/html/functions_t.html | 102 - .../ESP8266SdFat/doc/html/functions_type.html | 92 - .../ESP8266SdFat/doc/html/functions_u.html | 88 - .../ESP8266SdFat/doc/html/functions_v.html | 88 - .../ESP8266SdFat/doc/html/functions_vars.html | 342 -- .../ESP8266SdFat/doc/html/functions_w.html | 119 - .../ESP8266SdFat/doc/html/functions_y.html | 79 - .../ESP8266SdFat/doc/html/globals.html | 482 --- .../ESP8266SdFat/doc/html/globals_defs.html | 286 -- .../ESP8266SdFat/doc/html/globals_func.html | 231 - .../ESP8266SdFat/doc/html/globals_type.html | 108 - .../ESP8266SdFat/doc/html/globals_vars.html | 113 - .../ESP8266SdFat/doc/html/graph_legend.html | 136 - .../ESP8266SdFat/doc/html/graph_legend.png | Bin 13883 -> 0 bytes .../ESP8266SdFat/doc/html/hierarchy.html | 164 - .../ESP8266/ESP8266SdFat/doc/html/index.html | 209 +- .../ESP8266SdFat/doc/html/inherit_graph_0.png | Bin 1672 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_1.png | Bin 814 -> 0 bytes .../doc/html/inherit_graph_10.png | Bin 416 -> 0 bytes .../doc/html/inherit_graph_11.png | Bin 2143 -> 0 bytes .../doc/html/inherit_graph_12.png | Bin 389 -> 0 bytes .../doc/html/inherit_graph_13.png | Bin 370 -> 0 bytes .../doc/html/inherit_graph_14.png | Bin 383 -> 0 bytes .../doc/html/inherit_graph_15.png | Bin 1518 -> 0 bytes .../doc/html/inherit_graph_16.png | Bin 1003 -> 0 bytes .../doc/html/inherit_graph_17.png | Bin 480 -> 0 bytes .../doc/html/inherit_graph_18.png | Bin 423 -> 0 bytes .../doc/html/inherit_graph_19.png | Bin 523 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_2.png | Bin 370 -> 0 bytes .../doc/html/inherit_graph_20.png | Bin 509 -> 0 bytes .../doc/html/inherit_graph_21.png | Bin 442 -> 0 bytes .../doc/html/inherit_graph_22.png | Bin 455 -> 0 bytes .../doc/html/inherit_graph_23.png | Bin 1571 -> 0 bytes .../doc/html/inherit_graph_24.png | Bin 310 -> 0 bytes .../doc/html/inherit_graph_25.png | Bin 415 -> 0 bytes .../doc/html/inherit_graph_26.png | Bin 312 -> 0 bytes .../doc/html/inherit_graph_27.png | Bin 56840 -> 0 bytes .../doc/html/inherit_graph_28.png | Bin 387 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_3.png | Bin 299 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_4.png | Bin 385 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_5.png | Bin 454 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_6.png | Bin 2149 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_7.png | Bin 436 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_8.png | Bin 416 -> 0 bytes .../ESP8266SdFat/doc/html/inherit_graph_9.png | Bin 404 -> 0 bytes .../ESP8266SdFat/doc/html/inherits.html | 267 -- .../ESP8266/ESP8266SdFat/doc/html/ios_8h.html | 804 ---- .../doc/html/ios_8h__dep__incl.png | Bin 23118 -> 0 bytes .../ESP8266SdFat/doc/html/ios_8h__incl.png | Bin 4344 -> 0 bytes .../ESP8266SdFat/doc/html/iostream_8h.html | 522 --- .../doc/html/iostream_8h__dep__incl.png | Bin 10781 -> 0 bytes .../doc/html/iostream_8h__incl.png | Bin 8962 -> 0 bytes .../ESP8266SdFat/doc/html/istream_8h.html | 125 - .../doc/html/istream_8h__dep__incl.png | Bin 12005 -> 0 bytes .../doc/html/istream_8h__incl.png | Bin 5002 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/jquery.js | 35 - .../ESP8266/ESP8266SdFat/doc/html/menu.js | 50 - .../ESP8266/ESP8266SdFat/doc/html/menudata.js | 156 - .../doc/html/namespace_fs_date_time.html | 232 - .../doc/html/namespacemembers.html | 86 - .../doc/html/namespacemembers_func.html | 80 - .../doc/html/namespacemembers_vars.html | 80 - .../ESP8266SdFat/doc/html/namespaces.html | 81 - .../ESP8266/ESP8266SdFat/doc/html/nav_f.png | Bin 153 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/nav_g.png | Bin 95 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/nav_h.png | Bin 98 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/open.png | Bin 123 -> 0 bytes .../ESP8266SdFat/doc/html/ostream_8h.html | 125 - .../doc/html/ostream_8h__dep__incl.png | Bin 12001 -> 0 bytes .../doc/html/ostream_8h__incl.png | Bin 5000 -> 0 bytes .../ESP8266SdFat/doc/html/sdios_8h.html | 118 - .../ESP8266SdFat/doc/html/sdios_8h__incl.png | Bin 27532 -> 0 bytes .../ESP8266SdFat/doc/html/search/all_0.html | 30 - .../ESP8266SdFat/doc/html/search/all_0.js | 5 - .../ESP8266SdFat/doc/html/search/all_1.html | 30 - .../ESP8266SdFat/doc/html/search/all_1.js | 15 - .../ESP8266SdFat/doc/html/search/all_10.html | 30 - .../ESP8266SdFat/doc/html/search/all_10.js | 30 - .../ESP8266SdFat/doc/html/search/all_11.html | 30 - .../ESP8266SdFat/doc/html/search/all_11.js | 107 - .../ESP8266SdFat/doc/html/search/all_12.html | 30 - .../ESP8266SdFat/doc/html/search/all_12.js | 9 - .../ESP8266SdFat/doc/html/search/all_13.html | 30 - .../ESP8266SdFat/doc/html/search/all_13.js | 18 - .../ESP8266SdFat/doc/html/search/all_14.html | 30 - .../ESP8266SdFat/doc/html/search/all_14.js | 9 - .../ESP8266SdFat/doc/html/search/all_15.html | 30 - .../ESP8266SdFat/doc/html/search/all_15.js | 14 - .../ESP8266SdFat/doc/html/search/all_16.html | 30 - .../ESP8266SdFat/doc/html/search/all_16.js | 4 - .../ESP8266SdFat/doc/html/search/all_2.html | 30 - .../ESP8266SdFat/doc/html/search/all_2.js | 21 - .../ESP8266SdFat/doc/html/search/all_3.html | 30 - .../ESP8266SdFat/doc/html/search/all_3.js | 40 - .../ESP8266SdFat/doc/html/search/all_4.html | 30 - .../ESP8266SdFat/doc/html/search/all_4.js | 22 - .../ESP8266SdFat/doc/html/search/all_5.html | 30 - .../ESP8266SdFat/doc/html/search/all_5.js | 30 - .../ESP8266SdFat/doc/html/search/all_6.html | 30 - .../ESP8266SdFat/doc/html/search/all_6.js | 75 - .../ESP8266SdFat/doc/html/search/all_7.html | 30 - .../ESP8266SdFat/doc/html/search/all_7.js | 17 - .../ESP8266SdFat/doc/html/search/all_8.html | 30 - .../ESP8266SdFat/doc/html/search/all_8.js | 7 - .../ESP8266SdFat/doc/html/search/all_9.html | 30 - .../ESP8266SdFat/doc/html/search/all_9.js | 41 - .../ESP8266SdFat/doc/html/search/all_a.html | 30 - .../ESP8266SdFat/doc/html/search/all_a.js | 4 - .../ESP8266SdFat/doc/html/search/all_b.html | 30 - .../ESP8266SdFat/doc/html/search/all_b.js | 10 - .../ESP8266SdFat/doc/html/search/all_c.html | 30 - .../ESP8266SdFat/doc/html/search/all_c.js | 13 - .../ESP8266SdFat/doc/html/search/all_d.html | 30 - .../ESP8266SdFat/doc/html/search/all_d.js | 13 - .../ESP8266SdFat/doc/html/search/all_e.html | 30 - .../ESP8266SdFat/doc/html/search/all_e.js | 23 - .../ESP8266SdFat/doc/html/search/all_f.html | 30 - .../ESP8266SdFat/doc/html/search/all_f.js | 43 - .../doc/html/search/classes_0.html | 30 - .../ESP8266SdFat/doc/html/search/classes_0.js | 5 - .../doc/html/search/classes_1.html | 30 - .../ESP8266SdFat/doc/html/search/classes_1.js | 5 - .../doc/html/search/classes_2.html | 30 - .../ESP8266SdFat/doc/html/search/classes_2.js | 5 - .../doc/html/search/classes_3.html | 30 - .../ESP8266SdFat/doc/html/search/classes_3.js | 4 - .../doc/html/search/classes_4.html | 30 - .../ESP8266SdFat/doc/html/search/classes_4.js | 10 - .../doc/html/search/classes_5.html | 30 - .../ESP8266SdFat/doc/html/search/classes_5.js | 16 - .../doc/html/search/classes_6.html | 30 - .../ESP8266SdFat/doc/html/search/classes_6.js | 9 - .../doc/html/search/classes_7.html | 30 - .../ESP8266SdFat/doc/html/search/classes_7.js | 4 - .../doc/html/search/classes_8.html | 30 - .../ESP8266SdFat/doc/html/search/classes_8.js | 6 - .../doc/html/search/classes_9.html | 30 - .../ESP8266SdFat/doc/html/search/classes_9.js | 5 - .../doc/html/search/classes_a.html | 30 - .../ESP8266SdFat/doc/html/search/classes_a.js | 31 - .../ESP8266SdFat/doc/html/search/close.png | Bin 273 -> 0 bytes .../doc/html/search/defines_0.html | 30 - .../ESP8266SdFat/doc/html/search/defines_0.js | 4 - .../doc/html/search/defines_1.html | 30 - .../ESP8266SdFat/doc/html/search/defines_1.js | 5 - .../doc/html/search/defines_2.html | 30 - .../ESP8266SdFat/doc/html/search/defines_2.js | 9 - .../doc/html/search/defines_3.html | 30 - .../ESP8266SdFat/doc/html/search/defines_3.js | 7 - .../doc/html/search/defines_4.html | 30 - .../ESP8266SdFat/doc/html/search/defines_4.js | 5 - .../doc/html/search/defines_5.html | 30 - .../ESP8266SdFat/doc/html/search/defines_5.js | 6 - .../doc/html/search/defines_6.html | 30 - .../ESP8266SdFat/doc/html/search/defines_6.js | 4 - .../doc/html/search/defines_7.html | 30 - .../ESP8266SdFat/doc/html/search/defines_7.js | 5 - .../doc/html/search/defines_8.html | 30 - .../ESP8266SdFat/doc/html/search/defines_8.js | 8 - .../doc/html/search/defines_9.html | 30 - .../ESP8266SdFat/doc/html/search/defines_9.js | 22 - .../doc/html/search/defines_a.html | 30 - .../ESP8266SdFat/doc/html/search/defines_a.js | 12 - .../doc/html/search/defines_b.html | 30 - .../ESP8266SdFat/doc/html/search/defines_b.js | 4 - .../ESP8266SdFat/doc/html/search/enums_0.html | 30 - .../ESP8266SdFat/doc/html/search/enums_0.js | 4 - .../doc/html/search/enumvalues_0.html | 30 - .../doc/html/search/enumvalues_0.js | 4 - .../doc/html/search/enumvalues_1.html | 30 - .../doc/html/search/enumvalues_1.js | 4 - .../doc/html/search/enumvalues_2.html | 30 - .../doc/html/search/enumvalues_2.js | 4 - .../ESP8266SdFat/doc/html/search/files_0.html | 30 - .../ESP8266SdFat/doc/html/search/files_0.js | 4 - .../ESP8266SdFat/doc/html/search/files_1.html | 30 - .../ESP8266SdFat/doc/html/search/files_1.js | 6 - .../ESP8266SdFat/doc/html/search/files_2.html | 30 - .../ESP8266SdFat/doc/html/search/files_2.js | 5 - .../ESP8266SdFat/doc/html/search/files_3.html | 30 - .../ESP8266SdFat/doc/html/search/files_3.js | 12 - .../ESP8266SdFat/doc/html/search/files_4.html | 30 - .../ESP8266SdFat/doc/html/search/files_4.js | 6 - .../ESP8266SdFat/doc/html/search/files_5.html | 30 - .../ESP8266SdFat/doc/html/search/files_5.js | 4 - .../ESP8266SdFat/doc/html/search/files_6.html | 30 - .../ESP8266SdFat/doc/html/search/files_6.js | 4 - .../ESP8266SdFat/doc/html/search/files_7.html | 30 - .../ESP8266SdFat/doc/html/search/files_7.js | 4 - .../ESP8266SdFat/doc/html/search/files_8.html | 30 - .../ESP8266SdFat/doc/html/search/files_8.js | 14 - .../doc/html/search/functions_0.html | 30 - .../doc/html/search/functions_0.js | 9 - .../doc/html/search/functions_1.html | 30 - .../doc/html/search/functions_1.js | 13 - .../doc/html/search/functions_10.html | 30 - .../doc/html/search/functions_10.js | 43 - .../doc/html/search/functions_11.html | 30 - .../doc/html/search/functions_11.js | 8 - .../doc/html/search/functions_12.html | 30 - .../doc/html/search/functions_12.js | 8 - .../doc/html/search/functions_13.html | 30 - .../doc/html/search/functions_13.js | 9 - .../doc/html/search/functions_14.html | 30 - .../doc/html/search/functions_14.js | 12 - .../doc/html/search/functions_15.html | 30 - .../doc/html/search/functions_15.js | 4 - .../doc/html/search/functions_2.html | 30 - .../doc/html/search/functions_2.js | 23 - .../doc/html/search/functions_3.html | 30 - .../doc/html/search/functions_3.js | 17 - .../doc/html/search/functions_4.html | 30 - .../doc/html/search/functions_4.js | 16 - .../doc/html/search/functions_5.html | 30 - .../doc/html/search/functions_5.js | 38 - .../doc/html/search/functions_6.html | 30 - .../doc/html/search/functions_6.js | 16 - .../doc/html/search/functions_7.html | 30 - .../doc/html/search/functions_7.js | 5 - .../doc/html/search/functions_8.html | 30 - .../doc/html/search/functions_8.js | 30 - .../doc/html/search/functions_9.html | 30 - .../doc/html/search/functions_9.js | 4 - .../doc/html/search/functions_a.html | 30 - .../doc/html/search/functions_a.js | 8 - .../doc/html/search/functions_b.html | 30 - .../doc/html/search/functions_b.js | 5 - .../doc/html/search/functions_c.html | 30 - .../doc/html/search/functions_c.js | 11 - .../doc/html/search/functions_d.html | 30 - .../doc/html/search/functions_d.js | 17 - .../doc/html/search/functions_e.html | 30 - .../doc/html/search/functions_e.js | 27 - .../doc/html/search/functions_f.html | 30 - .../doc/html/search/functions_f.js | 29 - .../ESP8266SdFat/doc/html/search/mag_sel.png | Bin 465 -> 0 bytes .../doc/html/search/namespaces_0.html | 30 - .../doc/html/search/namespaces_0.js | 4 - .../doc/html/search/nomatches.html | 12 - .../ESP8266SdFat/doc/html/search/pages_0.html | 30 - .../ESP8266SdFat/doc/html/search/pages_0.js | 4 - .../doc/html/search/related_0.html | 30 - .../ESP8266SdFat/doc/html/search/related_0.js | 5 - .../doc/html/search/related_1.html | 30 - .../ESP8266SdFat/doc/html/search/related_1.js | 7 - .../ESP8266SdFat/doc/html/search/search.css | 271 -- .../ESP8266SdFat/doc/html/search/search.js | 814 ---- .../ESP8266SdFat/doc/html/search/search_l.png | Bin 567 -> 0 bytes .../ESP8266SdFat/doc/html/search/search_m.png | Bin 158 -> 0 bytes .../ESP8266SdFat/doc/html/search/search_r.png | Bin 553 -> 0 bytes .../doc/html/search/searchdata.js | 48 - .../doc/html/search/typedefs_0.html | 30 - .../doc/html/search/typedefs_0.js | 5 - .../doc/html/search/typedefs_1.html | 30 - .../doc/html/search/typedefs_1.js | 4 - .../doc/html/search/typedefs_2.html | 30 - .../doc/html/search/typedefs_2.js | 5 - .../doc/html/search/typedefs_3.html | 30 - .../doc/html/search/typedefs_3.js | 6 - .../doc/html/search/typedefs_4.html | 30 - .../doc/html/search/typedefs_4.js | 12 - .../doc/html/search/variables_0.html | 30 - .../doc/html/search/variables_0.js | 5 - .../doc/html/search/variables_1.html | 30 - .../doc/html/search/variables_1.js | 7 - .../doc/html/search/variables_10.html | 30 - .../doc/html/search/variables_10.js | 4 - .../doc/html/search/variables_11.html | 30 - .../doc/html/search/variables_11.js | 5 - .../doc/html/search/variables_12.html | 30 - .../doc/html/search/variables_12.js | 4 - .../doc/html/search/variables_2.html | 30 - .../doc/html/search/variables_2.js | 7 - .../doc/html/search/variables_3.html | 30 - .../doc/html/search/variables_3.js | 16 - .../doc/html/search/variables_4.html | 30 - .../doc/html/search/variables_4.js | 6 - .../doc/html/search/variables_5.html | 30 - .../doc/html/search/variables_5.js | 4 - .../doc/html/search/variables_6.html | 30 - .../doc/html/search/variables_6.js | 16 - .../doc/html/search/variables_7.html | 30 - .../doc/html/search/variables_7.js | 4 - .../doc/html/search/variables_8.html | 30 - .../doc/html/search/variables_8.js | 4 - .../doc/html/search/variables_9.html | 30 - .../doc/html/search/variables_9.js | 6 - .../doc/html/search/variables_a.html | 30 - .../doc/html/search/variables_a.js | 6 - .../doc/html/search/variables_b.html | 30 - .../doc/html/search/variables_b.js | 8 - .../doc/html/search/variables_c.html | 30 - .../doc/html/search/variables_c.js | 7 - .../doc/html/search/variables_d.html | 30 - .../doc/html/search/variables_d.js | 9 - .../doc/html/search/variables_e.html | 30 - .../doc/html/search/variables_e.js | 5 - .../doc/html/search/variables_f.html | 30 - .../doc/html/search/variables_f.js | 11 - .../ESP8266SdFat/doc/html/splitbar.png | Bin 314 -> 0 bytes .../doc/html/struct_c_i_d-members.html | 91 - .../ESP8266SdFat/doc/html/struct_c_i_d.html | 298 -- .../doc/html/struct_dir_pos__t-members.html | 82 - .../doc/html/struct_dir_pos__t.html | 145 - .../html/struct_ex_fat_pos__t-members.html | 82 - .../doc/html/struct_ex_fat_pos__t.html | 128 - .../doc/html/struct_ex_name__t-members.html | 81 - .../doc/html/struct_ex_name__t.html | 128 - .../doc/html/struct_fat_pos__t-members.html | 82 - .../doc/html/struct_fat_pos__t.html | 128 - .../doc/html/structfname__t-members.html | 84 - .../ESP8266SdFat/doc/html/structfname__t.html | 179 - .../doc/html/structsetfill-members.html | 81 - .../ESP8266SdFat/doc/html/structsetfill.html | 151 - .../doc/html/structsetprecision-members.html | 81 - .../doc/html/structsetprecision.html | 150 - .../doc/html/structsetw-members.html | 81 - .../ESP8266SdFat/doc/html/structsetw.html | 150 - .../ESP8266SdFat/doc/html/sync_off.png | Bin 853 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/sync_on.png | Bin 845 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/tab_a.png | Bin 142 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/tab_b.png | Bin 169 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/tab_h.png | Bin 177 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/tab_s.png | Bin 184 -> 0 bytes .../ESP8266/ESP8266SdFat/doc/html/tabs.css | 1 - .../doc/html/unioncache__t-members.html | 83 - .../ESP8266SdFat/doc/html/unioncache__t.html | 162 - .../ESP8266/ESP8266SdFat/doc/mainpage.h | 36 +- .../examples/AvrAdcLogger/AvrAdcLogger.h | 10 +- .../examples/AvrAdcLogger/AvrAdcLogger.ino | 127 +- .../BackwardCompatibility.ino | 15 +- .../examples/BufferedPrint/BufferedPrint.ino | 139 +- .../DirectoryFunctions/DirectoryFunctions.ino | 28 +- .../ExFatFormatter/ExFatFormatter.ino | 88 - .../examples/ExFatLogger/ExFatLogger.ino | 73 +- .../ExFatUnicodeTest/ExFatUnicodeTest.ino | 50 - .../MinimumSizeSdReader.ino | 60 + .../examples/OpenNext/OpenNext.ino | 37 +- .../examples/QuickStart/QuickStart.ino | 60 +- .../examples/ReadCsvFile/ReadCsvFile.ino | 27 +- .../RtcTimestampTest/RtcTimestampTest.ino | 49 +- .../examples/STM32Test/STM32Test.ino | 172 - .../examples/SdErrorCodes/SdErrorCodes.ino | 8 +- .../examples/SdFormatter/SdFormatter.ino | 90 +- .../ESP8266SdFat/examples/SdInfo/SdInfo.ino | 151 +- .../examples/SoftwareSpi/SoftwareSpi.ino | 17 +- .../SpiLoopBackTest/SpiLoopBackTest.ino | 66 + .../TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino | 214 + .../TeensyRtcTimestamp/TeensyRtcTimestamp.ino | 24 +- .../TeensySdioDemo/TeensySdioDemo.ino | 51 +- .../TeensySdioLogger/TeensySdioLogger.ino | 151 + .../UnicodeFilenames/UnicodeFilenames.ino | 97 + .../UserChipSelectFunction.ino | 3 - .../examples/UserSPIDriver/UserSPIDriver.ino | 28 +- .../ESP8266SdFat/examples/bench/bench.ino | 58 +- .../debug/CardBusyTest/CardBusyTest.ino | 119 + .../debug/ExFatDbgDmp/ExFatDbgDmp.ino | 51 + .../debug/TestGetName/TestGetName.ino | 43 + .../examples/debug/TestMkdir/TestMkdir.ino | 140 + .../examples/debug/TestRmdir/TestRmdir.ino | 99 + .../debug/TimestampTest/TimestampTest.ino | 162 + .../#attic/AnalogLogger/AnalogLogger.ino | 6 +- .../BaseExtCaseTest/BaseExtCaseTest.ino | 4 +- .../#attic/HelloWorld/HelloWorld.ino | 2 +- .../examplesV1/#attic/SdFatSize/SdFatSize.ino | 2 +- .../#attic/StreamParseInt/StreamParseInt.ino | 4 +- .../examplesV1/#attic/append/append.ino | 4 +- .../examplesV1/#attic/average/average.ino | 4 +- .../examplesV1/#attic/bufstream/bufstream.ino | 2 +- .../examplesV1/#attic/cin_cout/cin_cout.ino | 2 +- .../examplesV1/#attic/eventlog/eventlog.ino | 4 +- .../#attic/fgetsRewrite/fgetsRewrite.ino | 4 +- .../examplesV1/#attic/readlog/readlog.ino | 2 +- .../AnalogBinLogger/AnalogBinLogger.ino | 5 +- .../DirectoryFunctions/DirectoryFunctions.ino | 129 - .../examplesV1/LongFileName/LongFileName.ino | 2 +- .../LowLatencyLogger/LowLatencyLogger.ino | 12 +- .../LowLatencyLogger.ino | 12 +- .../LowLatencyLogger.ino | 12 +- .../examples/examplesV1/OpenNext/OpenNext.ino | 60 - .../PrintBenchmark/PrintBenchmark.ino | 4 +- .../examplesV1/QuickStart/QuickStart.ino | 161 - .../examples/examplesV1/RawWrite/RawWrite.ino | 4 +- .../examplesV1/ReadCsvArray/ReadCsvArray.ino | 6 +- .../ReadCsvStream/ReadCsvStream.ino | 4 +- .../examplesV1/SdFormatter/SdFormatter.ino | 552 --- .../examples/examplesV1/SdInfo/SdInfo.ino | 248 -- .../examplesV1/SoftwareSpi/SoftwareSpi.ino | 59 - .../examplesV1/StdioBench/StdioBench.ino | 4 +- .../TeensySdioDemo/TeensySdioDemo.ino | 169 - .../examplesV1/Timestamp/Timestamp.ino | 4 +- .../examples/examplesV1/TwoCards/TwoCards.ino | 4 +- .../VolumeFreeSpace/VolumeFreeSpace.ino | 4 +- .../examples/examplesV1/bench/bench.ino | 222 - .../examplesV1/dataLogger/dataLogger.ino | 6 +- .../examples/examplesV1/fgets/fgets.ino | 4 +- .../examplesV1/formatting/formatting.ino | 2 +- .../examples/examplesV1/getline/getline.ino | 4 +- .../examples/examplesV1/rename/rename.ino | 106 - .../ESP8266SdFat/examples/examplesV1/v1v2.txt | 66 - .../examples/examplesV1/wipe/wipe.ino | 4 +- .../ESP8266SdFat/examples/rename/rename.ino | 22 +- .../ESP8266SdFat/extras/AvrPrintStimmer.cpp | 567 +++ .../USB_Host_Shield/USB_Host_Shield_2.0.zip | Bin 435152 -> 476902 bytes .../USB_Host_Shield/UsbHostShieldDiff.txt | 5 +- .../extras/USB_Host_Shield/readme.txt | 2 +- .../common => extras/attic}/PrintBasic.cpp | 15 +- .../ESP8266SdFat}/extras/attic/PrintBasic.h | 82 +- .../common => extras/attic}/PrintTemplates.h | 14 +- .../attic}/SysCallBareUno.cpp | 0 .../ESP8266/ESP8266SdFat/extras/cpplint.py | 2 +- .../ESP8266/ESP8266SdFat/extras/fmt_src.bat | 11 + .../ESP8266/ESP8266SdFat/library.properties | 8 +- .../ESP8266/ESP8266SdFat/src/BufferedPrint.h | 39 +- .../ESP8266SdFat/src/DigitalIO/DigitalPin.h | 10 - .../ESP8266SdFat/src/DigitalIO/SoftSPI.h | 10 - .../boards/AvrDevelopersGpioPinMap.h | 12 +- .../src/DigitalIO/boards/BobuinoGpioPinMap.h | 12 +- .../src/DigitalIO/boards/LeonardoGpioPinMap.h | 10 - .../src/DigitalIO/boards/MegaGpioPinMap.h | 10 - .../boards/SleepingBeautyGpioPinMap.h | 12 +- .../DigitalIO/boards/Standard1284GpioPinMap.h | 11 +- .../src/DigitalIO/boards/Teensy2GpioPinMap.h | 10 - .../DigitalIO/boards/Teensy2ppGpioPinMap.h | 10 - .../src/DigitalIO/boards/UnoGpioPinMap.h | 12 +- .../ESP8266SdFat/src/ExFatLib/ExFatConfig.h | 15 +- .../ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp | 145 +- .../ESP8266SdFat/src/ExFatLib/ExFatFile.cpp | 479 +-- .../ESP8266SdFat/src/ExFatLib/ExFatFile.h | 529 ++- .../src/ExFatLib/ExFatFilePrint.cpp | 99 +- .../src/ExFatLib/ExFatFileWrite.cpp | 193 +- .../src/ExFatLib/ExFatFormatter.cpp | 79 +- .../src/ExFatLib/ExFatFormatter.h | 24 +- .../ESP8266SdFat/src/ExFatLib/ExFatLib.h | 5 +- .../ESP8266SdFat/src/ExFatLib/ExFatName.cpp | 189 + .../src/ExFatLib/ExFatPartition.cpp | 149 +- .../src/ExFatLib/ExFatPartition.h | 228 +- .../ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp | 23 +- .../ESP8266SdFat/src/ExFatLib/ExFatVolume.h | 117 +- .../ESP8266SdFat/src/ExFatLib/upcase.cpp | 284 -- .../ESP8266SdFat/src/ExFatLib/upcase.h | 46 - .../ESP8266SdFat/src/FatLib/FatDbg.cpp | 171 +- .../ESP8266SdFat/src/FatLib/FatFile.cpp | 441 +- .../ESP8266/ESP8266SdFat/src/FatLib/FatFile.h | 808 ++-- .../ESP8266SdFat/src/FatLib/FatFileLFN.cpp | 640 ++- .../ESP8266SdFat/src/FatLib/FatFilePrint.cpp | 65 +- .../ESP8266SdFat/src/FatLib/FatFileSFN.cpp | 306 +- .../ESP8266SdFat/src/FatLib/FatFormatter.cpp | 74 +- .../ESP8266SdFat/src/FatLib/FatFormatter.h | 24 +- .../ESP8266/ESP8266SdFat/src/FatLib/FatLib.h | 5 +- .../ESP8266SdFat/src/FatLib/FatName.cpp | 356 ++ .../ESP8266SdFat/src/FatLib/FatPartition.cpp | 211 +- .../ESP8266SdFat/src/FatLib/FatPartition.h | 337 +- .../ESP8266SdFat/src/FatLib/FatVolume.cpp | 23 +- .../ESP8266SdFat/src/FatLib/FatVolume.h | 89 +- .../ESP8266/ESP8266SdFat/src/FreeStack.cpp | 12 +- .../ESP8266/ESP8266SdFat/src/FreeStack.h | 40 +- .../ESP8266/ESP8266SdFat/src/FsLib/FsFile.cpp | 107 +- .../ESP8266/ESP8266SdFat/src/FsLib/FsFile.h | 579 ++- .../ExFatTypes.h => FsLib/FsFormatter.h} | 72 +- .../ESP8266/ESP8266SdFat/src/FsLib/FsLib.h | 5 +- .../ESP8266/ESP8266SdFat/src/FsLib/FsNew.cpp | 5 +- .../ESP8266/ESP8266SdFat/src/FsLib/FsNew.h | 20 +- .../ESP8266SdFat/src/FsLib/FsVolume.cpp | 31 +- .../ESP8266/ESP8266SdFat/src/FsLib/FsVolume.h | 245 +- .../ESP8266SdFat/src/MinimumSerial.cpp | 26 +- .../ESP8266/ESP8266SdFat/src/MinimumSerial.h | 16 +- .../ESP8266/ESP8266SdFat/src/RingBuf.h | 400 ++ .../ESP8266/ESP8266SdFat/src/SdCard/SdCard.h | 42 +- .../ESP8266SdFat/src/SdCard/SdCardInfo.cpp | 29 +- .../ESP8266SdFat/src/SdCard/SdCardInfo.h | 517 ++- .../ESP8266SdFat/src/SdCard/SdCardInterface.h | 62 +- .../ESP8266SdFat/src/SdCard/SdSpiCard.cpp | 668 ++- .../ESP8266SdFat/src/SdCard/SdSpiCard.h | 454 +- .../ESP8266SdFat/src/SdCard/SdioCard.h | 101 +- .../ESP8266SdFat/src/SdCard/SdioTeensy.cpp | 594 ++- .../ESP8266SdFat/src/SdCard/SdioTeensy.h | 733 ++-- .../ESP8266/ESP8266SdFat/src/SdFat.h | 212 +- .../ESP8266/ESP8266SdFat/src/SdFatConfig.h | 270 +- .../src/SpiDriver/SdSpiArduinoDriver.h | 28 +- .../src/SpiDriver/SdSpiArtemis.cpp | 39 +- .../ESP8266SdFat/src/SpiDriver/SdSpiAvr.h | 108 +- .../src/SpiDriver/SdSpiBareUnoDriver.h | 60 +- .../src/SpiDriver/SdSpiBaseClass.h | 28 +- .../src/SpiDriver/SdSpiChipSelect.cpp | 26 +- .../ESP8266SdFat/src/SpiDriver/SdSpiDriver.h | 129 +- .../ESP8266SdFat/src/SpiDriver/SdSpiDue.cpp | 140 +- .../ESP8266SdFat/src/SpiDriver/SdSpiESP.cpp | 61 +- .../src/SpiDriver/SdSpiLibDriver.h | 73 +- .../src/SpiDriver/SdSpiParticle.cpp | 38 +- .../ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp | 38 +- .../src/SpiDriver/SdSpiSTM32Core.cpp | 65 + .../src/SpiDriver/SdSpiSoftDriver.h | 27 +- .../src/SpiDriver/SdSpiTeensy3.cpp | 34 +- .../ESP8266SdFat/src/common/ArduinoFiles.h | 71 +- .../ESP8266SdFat/src/common/CompileDateTime.h | 59 +- .../ESP8266SdFat/src/common/DebugMacros.h | 55 +- .../ESP8266SdFat/src/common/FmtNumber.cpp | 208 +- .../ESP8266SdFat/src/common/FmtNumber.h | 23 +- .../ESP8266SdFat/src/common/FsApiConstants.h | 99 +- .../common/{BlockDevice.h => FsBlockDevice.h} | 22 +- ...ceInterface.h => FsBlockDeviceInterface.h} | 47 +- .../ESP8266SdFat/src/common/FsCache.cpp | 75 + .../ESP8266/ESP8266SdFat/src/common/FsCache.h | 176 + .../ESP8266SdFat/src/common/FsDateTime.cpp | 67 +- .../ESP8266SdFat/src/common/FsDateTime.h | 167 +- .../ESP8266SdFat/src/common/FsName.cpp | 55 + .../ESP8266/ESP8266SdFat/src/common/FsName.h | 65 + .../ESP8266SdFat/src/common/FsStructs.cpp | 10 +- .../ESP8266SdFat/src/common/FsStructs.h | 423 +- .../ESP8266/ESP8266SdFat/src/common/FsUtf.cpp | 114 + .../ESP8266/ESP8266SdFat/src/common/FsUtf.h | 101 + .../ESP8266SdFat/src/common/PrintBasic.h | 186 - .../ESP8266/ESP8266SdFat/src/common/SysCall.h | 63 +- .../ESP8266SdFat/src/common/upcase.cpp | 133 + .../FatLibConfig.h => common/upcase.h} | 16 +- .../ESP8266SdFat/src/iostream/ArduinoStream.h | 37 +- .../ESP8266SdFat/src/iostream/StdioStream.cpp | 170 +- .../ESP8266SdFat/src/iostream/StdioStream.h | 99 +- .../src/iostream/StreamBaseClass.cpp | 84 +- .../ESP8266SdFat/src/iostream/bufstream.h | 70 +- .../ESP8266SdFat/src/iostream/fstream.h | 152 +- .../ESP8266/ESP8266SdFat/src/iostream/ios.h | 117 +- .../ESP8266SdFat/src/iostream/iostream.h | 27 +- .../ESP8266SdFat/src/iostream/istream.cpp | 53 +- .../ESP8266SdFat/src/iostream/istream.h | 80 +- .../ESP8266SdFat/src/iostream/ostream.cpp | 31 +- .../ESP8266SdFat/src/iostream/ostream.h | 102 +- .../ESP8266/ESP8266SdFat/src/sdios.h | 4 +- libraries/ESP32SSDP-1.2.1/.github/FUNDING.yml | 11 - .../.github/ISSUE_TEMPLATE/bug_report.md | 38 - .../.github/ISSUE_TEMPLATE/config.yml | 1 - .../ISSUE_TEMPLATE/question-template.md | 10 - .../ESP32SSDP-1.2.1/.github/ci/build-ssdp.sh | 27 - .../ESP32SSDP-1.2.1/.github/ci/final-check.sh | 21 - .../.github/ci/install-arduino.sh | 12 - .../.github/ci/install-esp32.sh | 19 - .../.github/ci/install-platformio.sh | 9 - .../.github/ci/prepare-libs.sh | 12 - .../.github/workflows/build-ci-dev.yml | 46 - .../.github/workflows/build-ci.yml | 46 - .../.github/workflows/greetings.yml | 13 - .../.github/workflows/wiki.yml | 27 - .../ESP32SSDP-1.2.1/examples/SSDP/SSDP.ino | 105 - .../SSDPAsyncWebserver/SSDPAsyncWebserver.ino | 103 - libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.cpp | 734 ---- libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.h | 196 - .../.all-contributorsrc | 0 .../.astylerc | 0 .../.gitignore | 0 .../LICENSE | 0 .../README.md | 28 +- .../examples/SSDP/Readme.md | 0 .../ESP32SSDP-2.0.2/examples/SSDP/SSDP.ino | 104 + .../examples/SSDPAsyncWebserver/Readme.md | 0 .../SSDPAsyncWebserver/SSDPAsyncWebserver.ino | 104 + .../keywords.txt | 0 .../library.properties | 2 +- .../set_style.bat | 0 libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.cpp | 687 +++ libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.h | 154 + .../test/platformio.ini | 0 .../ESP32SSDP-2.0.2/tools/format_sources.py | 50 + .../.github/ISSUE_TEMPLATE/feature_request.md | 20 - .../EspLuaEngine-1.0.1/.github/stale.yml | 49 - libraries/EspLuaEngine-1.0.1/API.md | 53 - .../.github/FUNDING.yml | 0 .../.github/ISSUE_TEMPLATE/bug_report.md | 0 .../.github/ISSUE_TEMPLATE/config.yml | 0 .../.github/ISSUE_TEMPLATE/feature_request.md | 0 .../ISSUE_TEMPLATE/question-template.md | 0 .../.github/stale.yml | 0 libraries/EspLuaEngine-1.0.2/API.md | 142 + .../LICENSE | 0 .../README.md | 0 .../cleanLua.py | 0 .../examples/HelloWorld/HelloWorld.ino | 0 .../examples/files/files.ino | 0 .../examples/gpio/gpio.ino | 0 .../examples/userData/userData.ino | 0 .../library.properties | 2 +- .../portingLua.md | 0 .../src/EspLuaEngine.cpp | 134 +- .../src/EspLuaEngine.h | 42 + .../src/lua-5.4.7/Makefile | 0 .../src/lua-5.4.7/README | 0 .../src/lua-5.4.7/doc/OSIApproved_100X125.png | Bin .../src/lua-5.4.7/doc/contents.html | 0 .../src/lua-5.4.7/doc/index.css | 0 .../src/lua-5.4.7/doc/logo.gif | Bin .../src/lua-5.4.7/doc/lua.1 | 0 .../src/lua-5.4.7/doc/lua.css | 0 .../src/lua-5.4.7/doc/luac.1 | 0 .../src/lua-5.4.7/doc/manual.css | 0 .../src/lua-5.4.7/doc/manual.html | 0 .../src/lua-5.4.7/doc/readme.html | 0 .../src/lua-5.4.7/src/Makefile | 0 .../src/lua-5.4.7/src/lapi.c | 0 .../src/lua-5.4.7/src/lapi.h | 0 .../src/lua-5.4.7/src/lauxlib.c | 0 .../src/lua-5.4.7/src/lauxlib.h | 0 .../src/lua-5.4.7/src/lbaselib.c | 0 .../src/lua-5.4.7/src/lcode.c | 0 .../src/lua-5.4.7/src/lcode.h | 0 .../src/lua-5.4.7/src/lcorolib.c.disabled | 0 .../src/lua-5.4.7/src/lctype.c | 0 .../src/lua-5.4.7/src/lctype.h | 0 .../src/lua-5.4.7/src/ldblib.c.disabled | 0 .../src/lua-5.4.7/src/ldebug.c | 0 .../src/lua-5.4.7/src/ldebug.h | 0 .../src/lua-5.4.7/src/ldo.c | 0 .../src/lua-5.4.7/src/ldo.h | 0 .../src/lua-5.4.7/src/ldump.c | 0 .../src/lua-5.4.7/src/lfunc.c | 0 .../src/lua-5.4.7/src/lfunc.h | 0 .../src/lua-5.4.7/src/lgc.c | 0 .../src/lua-5.4.7/src/lgc.h | 0 .../src/lua-5.4.7/src/linit.c.disabled | 0 .../src/lua-5.4.7/src/liolib.c.disabled | 0 .../src/lua-5.4.7/src/ljumptab.h | 0 .../src/lua-5.4.7/src/llex.c | 0 .../src/lua-5.4.7/src/llex.h | 0 .../src/lua-5.4.7/src/llimits.h | 0 .../src/lua-5.4.7/src/lmathlib.c | 0 .../src/lua-5.4.7/src/lmem.c | 0 .../src/lua-5.4.7/src/lmem.h | 0 .../src/lua-5.4.7/src/loadlib.c.disabled | 0 .../src/lua-5.4.7/src/lobject.c | 0 .../src/lua-5.4.7/src/lobject.h | 0 .../src/lua-5.4.7/src/lopcodes.c | 0 .../src/lua-5.4.7/src/lopcodes.h | 0 .../src/lua-5.4.7/src/lopnames.h | 0 .../src/lua-5.4.7/src/loslib.c.disabled | 0 .../src/lua-5.4.7/src/lparser.c | 0 .../src/lua-5.4.7/src/lparser.h | 0 .../src/lua-5.4.7/src/lprefix.h | 0 .../src/lua-5.4.7/src/lstate.c | 0 .../src/lua-5.4.7/src/lstate.h | 0 .../src/lua-5.4.7/src/lstring.c | 0 .../src/lua-5.4.7/src/lstring.h | 0 .../src/lua-5.4.7/src/lstrlib.c | 0 .../src/lua-5.4.7/src/ltable.c | 0 .../src/lua-5.4.7/src/ltable.h | 0 .../src/lua-5.4.7/src/ltablib.c | 0 .../src/lua-5.4.7/src/ltm.c | 0 .../src/lua-5.4.7/src/ltm.h | 0 .../src/lua-5.4.7/src/lua.c.disabled | 0 .../src/lua-5.4.7/src/lua.h | 0 .../src/lua-5.4.7/src/lua.hpp | 0 .../src/lua-5.4.7/src/luac.c.disabled | 0 .../src/lua-5.4.7/src/luaconf.h | 0 .../src/lua-5.4.7/src/lualib.h | 0 .../src/lua-5.4.7/src/lundump.c | 0 .../src/lua-5.4.7/src/lundump.h | 0 .../src/lua-5.4.7/src/lutf8lib.c | 0 .../src/lua-5.4.7/src/lvm.c | 0 .../src/lua-5.4.7/src/lvm.h | 0 .../src/lua-5.4.7/src/lzio.c | 0 .../src/lua-5.4.7/src/lzio.h | 0 .../Processors/pio_16bit_parallel.pio | 76 - .../Processors/pio_8bit_parallel.pio | 92 - .../TFT_eSPI-2.4.72/Processors/pio_SPI.pio | 89 - .../Processors/pio_SPI_18bit.pio | 89 - libraries/TFT_eSPI-2.4.72/README.txt | 7 - .../TFT_Drivers/RM68120_Init.h | 429 -- libraries/TFT_eSPI-2.4.72/TFT_eSPI.h | 1043 ----- .../FontFiles/Final-Frontier28.vlw | Bin 25287 -> 0 bytes .../User_Setups/Setup17_ePaper.h | 41 - .../.gitattributes | 0 .../.github/ISSUE_TEMPLATE/issue-template.md | 8 +- .../.gitignore | 5 + .../CMakeLists.txt | 0 .../Extensions/Button.cpp | 2 + .../Extensions/Button.h | 4 +- .../Extensions/Smooth_font.cpp | 26 +- .../Extensions/Smooth_font.h | 0 .../Extensions/Sprite.cpp | 68 +- .../Extensions/Sprite.h | 24 +- .../Extensions/Touch.cpp | 8 +- .../Extensions/Touch.h | 5 +- .../Fonts/Custom/Orbitron_Light_24.h | 0 .../Fonts/Custom/Orbitron_Light_32.h | 0 .../Fonts/Custom/Roboto_Thin_24.h | 0 .../Fonts/Custom/Satisfy_24.h | 0 .../Fonts/Custom/Yellowtail_32.h | 0 .../Fonts/Font16.c | 0 .../Fonts/Font16.h | 0 .../Fonts/Font32rle.c | 2 +- .../Fonts/Font32rle.h | 0 .../Fonts/Font64rle.c | 2 +- .../Fonts/Font64rle.h | 0 .../Fonts/Font72rle.c | 2 +- .../Fonts/Font72rle.h | 0 .../Fonts/Font72x53rle.c | 2 +- .../Fonts/Font72x53rle.h | 0 .../Fonts/Font7srle.c | 2 +- .../Fonts/Font7srle.h | 0 .../Fonts/GFXFF/FreeMono12pt7b.h | 0 .../Fonts/GFXFF/FreeMono18pt7b.h | 0 .../Fonts/GFXFF/FreeMono24pt7b.h | 0 .../Fonts/GFXFF/FreeMono9pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBold12pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBold18pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBold24pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBold9pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h | 0 .../Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h | 0 .../Fonts/GFXFF/FreeMonoOblique12pt7b.h | 0 .../Fonts/GFXFF/FreeMonoOblique18pt7b.h | 0 .../Fonts/GFXFF/FreeMonoOblique24pt7b.h | 0 .../Fonts/GFXFF/FreeMonoOblique9pt7b.h | 0 .../Fonts/GFXFF/FreeSans12pt7b.h | 0 .../Fonts/GFXFF/FreeSans18pt7b.h | 0 .../Fonts/GFXFF/FreeSans24pt7b.h | 0 .../Fonts/GFXFF/FreeSans9pt7b.h | 0 .../Fonts/GFXFF/FreeSansBold12pt7b.h | 0 .../Fonts/GFXFF/FreeSansBold18pt7b.h | 0 .../Fonts/GFXFF/FreeSansBold24pt7b.h | 0 .../Fonts/GFXFF/FreeSansBold9pt7b.h | 0 .../Fonts/GFXFF/FreeSansBoldOblique12pt7b.h | 0 .../Fonts/GFXFF/FreeSansBoldOblique18pt7b.h | 0 .../Fonts/GFXFF/FreeSansBoldOblique24pt7b.h | 0 .../Fonts/GFXFF/FreeSansBoldOblique9pt7b.h | 0 .../Fonts/GFXFF/FreeSansOblique12pt7b.h | 0 .../Fonts/GFXFF/FreeSansOblique18pt7b.h | 0 .../Fonts/GFXFF/FreeSansOblique24pt7b.h | 0 .../Fonts/GFXFF/FreeSansOblique9pt7b.h | 0 .../Fonts/GFXFF/FreeSerif12pt7b.h | 0 .../Fonts/GFXFF/FreeSerif18pt7b.h | 0 .../Fonts/GFXFF/FreeSerif24pt7b.h | 0 .../Fonts/GFXFF/FreeSerif9pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBold12pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBold18pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBold24pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBold9pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h | 0 .../Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h | 0 .../Fonts/GFXFF/FreeSerifItalic12pt7b.h | 0 .../Fonts/GFXFF/FreeSerifItalic18pt7b.h | 0 .../Fonts/GFXFF/FreeSerifItalic24pt7b.h | 0 .../Fonts/GFXFF/FreeSerifItalic9pt7b.h | 0 .../Fonts/GFXFF/TomThumb.h | 0 .../Fonts/GFXFF/gfxfont.h | 0 .../Fonts/GFXFF/license.txt | 0 .../Fonts/GFXFF/print.txt | 0 .../Fonts/TrueType/Not_yet_supported.txt | 0 .../Fonts/glcdfont.c | 5 +- .../Kconfig | 44 +- .../Processors/TFT_eSPI_ESP32.c | 67 +- .../Processors/TFT_eSPI_ESP32.h | 91 +- .../Processors/TFT_eSPI_ESP32_C3.c | 31 +- .../Processors/TFT_eSPI_ESP32_C3.h | 90 +- .../Processors/TFT_eSPI_ESP32_S3.c | 132 +- .../Processors/TFT_eSPI_ESP32_S3.h | 186 +- .../Processors/TFT_eSPI_ESP8266.c | 4 +- .../Processors/TFT_eSPI_ESP8266.h | 10 +- .../Processors/TFT_eSPI_Generic.c | 4 +- .../Processors/TFT_eSPI_Generic.h | 12 +- .../Processors/TFT_eSPI_RP2040.c | 69 +- .../Processors/TFT_eSPI_RP2040.h | 107 +- .../Processors/TFT_eSPI_STM32.c | 125 +- .../Processors/TFT_eSPI_STM32.h | 159 +- .../Processors/pio_16bit_parallel.pio.h | 2 +- .../Processors/pio_8bit_parallel.pio.h | 1 + .../Processors/pio_8bit_parallel_18bpp.pio.h | 73 + .../Processors/pio_SPI.pio.h | 1 + .../Processors/pio_SPI_18bit.pio.h | 1 + .../README.md | 111 +- libraries/TFT_eSPI-2.5.43/README.txt | 7 + .../TFT_Drivers/EPD_Defines.h | 0 .../TFT_Drivers/GC9A01_Defines.h | 14 +- .../TFT_Drivers/GC9A01_Init.h | 0 .../TFT_Drivers/GC9A01_Rotation.h | 28 + .../TFT_Drivers/HX8357B_Defines.h | 0 .../TFT_Drivers/HX8357B_Init.h | 2 +- .../TFT_Drivers/HX8357B_Rotation.h | 0 .../TFT_Drivers/HX8357C_Defines.h | 0 .../TFT_Drivers/HX8357C_Init.h | 2 +- .../TFT_Drivers/HX8357C_Rotation.h | 0 .../TFT_Drivers/HX8357D_Defines.h | 0 .../TFT_Drivers/HX8357D_Init.h | 4 +- .../TFT_Drivers/HX8357D_Rotation.h | 0 .../TFT_Drivers/ILI9163_Defines.h | 9 +- .../TFT_Drivers/ILI9163_Init.h | 0 .../TFT_Drivers/ILI9163_Rotation.h | 0 .../TFT_Drivers/ILI9225_Defines.h | 0 .../TFT_Drivers/ILI9225_Init.h | 0 .../TFT_Drivers/ILI9225_Rotation.h | 0 .../TFT_Drivers/ILI9341_Defines.h | 10 +- .../TFT_Drivers/ILI9341_Init.h | 2 +- .../TFT_Drivers/ILI9341_Rotation.h | 0 .../TFT_Drivers/ILI9481_Defines.h | 0 .../TFT_Drivers/ILI9481_Init.h | 34 +- .../TFT_Drivers/ILI9481_Rotation.h | 0 .../TFT_Drivers/ILI9486_Defines.h | 9 +- .../TFT_Drivers/ILI9486_Init.h | 16 +- .../TFT_Drivers/ILI9486_Rotation.h | 0 .../TFT_Drivers/ILI9488_Defines.h | 0 .../TFT_Drivers/ILI9488_Init.h | 6 +- .../TFT_Drivers/ILI9488_Rotation.h | 0 .../TFT_Drivers/R61581_Defines.h | 0 .../TFT_Drivers/R61581_Init.h | 2 +- .../TFT_Drivers/R61581_Rotation.h | 0 .../TFT_Drivers/RM68120_Defines.h | 41 +- .../TFT_Drivers/RM68120_Init.h | 269 ++ .../TFT_Drivers/RM68120_Rotation.h | 12 +- .../TFT_Drivers/RM68140_Defines.h | 0 .../TFT_Drivers/RM68140_Init.h | 2 +- .../TFT_Drivers/RM68140_Rotation.h | 0 .../TFT_Drivers/S6D02A1_Defines.h | 9 +- .../TFT_Drivers/S6D02A1_Init.h | 0 .../TFT_Drivers/S6D02A1_Rotation.h | 0 .../TFT_Drivers/SSD1351_Defines.h | 0 .../TFT_Drivers/SSD1351_Init.h | 0 .../TFT_Drivers/SSD1351_Rotation.h | 0 .../TFT_Drivers/SSD1963_Defines.h | 9 +- .../TFT_Drivers/SSD1963_Init.h | 8 +- .../TFT_Drivers/SSD1963_Rotation.h | 0 .../TFT_Drivers/ST7735_Defines.h | 16 +- .../TFT_Drivers/ST7735_Init.h | 16 + .../TFT_Drivers/ST7735_Rotation.h | 0 .../TFT_Drivers/ST7789_2_Defines.h | 6 + .../TFT_Drivers/ST7789_2_Init.h | 0 .../TFT_Drivers/ST7789_2_Rotation.h} | 0 .../TFT_Drivers/ST7789_Defines.h | 6 + .../TFT_Drivers/ST7789_Init.h | 116 +- .../TFT_Drivers/ST7789_Rotation.h} | 140 - .../TFT_Drivers/ST7796_Defines.h | 15 +- .../TFT_Drivers/ST7796_Init.h | 2 +- .../TFT_Drivers/ST7796_Rotation.h | 28 + .../TFT_config.h | 26 +- .../TFT_eSPI.cpp | 1005 ++++- libraries/TFT_eSPI-2.5.43/TFT_eSPI.h | 1011 +++++ .../Create_font/Create_font.pde | 61 +- .../Create_font/FontFiles/Final-Frontier28.h | 1588 +++++++ .../Create_font/data/Final-Frontier.ttf | Bin .../Screenshot_client/Screenshot_client.pde | 2 +- .../Tools/bmp2array4bit/README.md | 0 .../Tools/bmp2array4bit/bmp2array4bit.py | 0 .../Tools/bmp2array4bit/star.bmp | Bin .../User_Setup.h | 41 +- .../User_Setup_Select.h | 76 +- .../User_Setups/Setup0_Sprite.h | 47 + .../Setup100_RP2040_ILI9488_parallel.h | 4 +- .../Setup101_RP2040_ILI9481_parallel.h | 4 +- .../Setup102_RP2040_ILI9341_parallel.h | 4 +- .../Setup103_RP2040_ILI9486_parallel.h | 4 +- .../Setup104_RP2040_ST7796_parallel.h | 4 +- .../Setup105_RP2040_ST7796_16bit_parallel.h | 2 +- .../Setup106_RP2040_ILI9481_16bit_parallel.h | 15 +- .../Setup107_RP2040_ILI9341_16bit_parallel.h | 2 +- .../User_Setups/Setup108_RP2040_ST7735.h | 44 + .../User_Setups/Setup10_RPi_touch_ILI9486.h | 0 .../User_Setups/Setup11_RPi_touch_ILI9486.h | 0 .../User_Setups/Setup12_M5Stack_Basic_Core.h | 0 .../User_Setups/Setup135_ST7789.h | 0 .../User_Setups/Setup136_LilyGo_TTV.h | 0 .../Setup137_LilyGo_TDisplay_RP2040.h | 0 ...etup138_Pico_Explorer_Base_RP2040_ST7789.h | 32 + .../User_Setups/Setup13_ILI9481_Parallel.h | 2 +- .../User_Setups/Setup14_ILI9341_Parallel.h | 0 .../User_Setups/Setup15_HX8357D.h | 0 .../User_Setups/Setup16_ILI9488_Parallel.h | 0 .../User_Setups/Setup17_ePaper.h | 16 + .../User_Setups/Setup18_ST7789.h | 0 .../User_Setups/Setup19_RM68140_Parallel.h | 0 .../User_Setups/Setup1_ILI9341.h | 0 .../User_Setups/Setup200_GC9A01.h | 0 .../User_Setups/Setup201_WT32_SC01.h | 2 +- .../User_Setups/Setup202_SSD1351_128.h | 2 +- .../User_Setups/Setup203_ST7789.h | 0 .../User_Setups/Setup204_ESP32_TouchDown.h | 0 .../User_Setups/Setup205_ESP32_TouchDown_S3.h | 0 .../Setup206_LilyGo_T_Display_S3.h | 47 + .../User_Setups/Setup207_LilyGo_T_HMI.h | 48 + .../User_Setups/Setup209_LilyGo_T_Dongle_S3.h | 52 + .../User_Setups/Setup20_ILI9488.h | 0 .../User_Setups/Setup210_LilyGo_T_Embed_S3.h | 43 + .../User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h | 45 + .../User_Setups/Setup212_LilyGo_T_PicoPro.h | 45 + .../Setup213_LilyGo_T_Beam_Shield.h | 36 + .../User_Setups/Setup21_ILI9488.h | 0 .../User_Setups/Setup22_TTGO_T4.h | 0 .../User_Setups/Setup22_TTGO_T4_v1.3.h | 0 .../User_Setups/Setup23_TTGO_TM.h | 0 .../User_Setups/Setup24_ST7789.h | 0 .../User_Setups/Setup250_ESP32_S3_Box_Lite.h | 32 + .../User_Setups/Setup251_ESP32_S3_Box.h | 28 + .../User_Setups/Setup25_TTGO_T_Display.h | 2 - .../User_Setups/Setup26_TTGO_T_Wristband.h | 0 .../User_Setups/Setup27_RPi_ST7796_ESP32.h | 2 +- .../User_Setups/Setup28_RPi_ST7796_ESP8266.h | 2 +- .../User_Setups/Setup29_ILI9341_STM32.h | 2 +- .../User_Setups/Setup29b_ILI9341_STM32.h | 141 + .../User_Setups/Setup2_ST7735.h | 0 .../User_Setups/Setup301_BW16_ST7735.h | 47 + .../Setup302_Waveshare_ESP32S3_GC9A01.h | 33 + .../Setup30_ILI9341_Parallel_STM32.h | 4 +- .../Setup31_ST7796_Parallel_STM32.h | 4 +- .../User_Setups/Setup32_ILI9341_STM32F103.h | 0 .../User_Setups/Setup33_RPi_ILI9486_STM32.h | 2 +- .../Setup34_ILI9481_Parallel_STM32.h | 4 +- .../Setup35_ILI9341_STM32_Port_Bus.h | 4 +- .../User_Setups/Setup36_RPi_touch_ST7796.h | 0 .../User_Setups/Setup3_ILI9163.h | 0 .../User_Setups/Setup42_ILI9341_ESP32.h | 0 .../User_Setups/Setup43_ST7735.h | 0 .../User_Setups/Setup44_TTGO_CameraPlus.h | 0 .../User_Setups/Setup45_TTGO_T_Watch.h | 0 .../User_Setups/Setup46_GC9A01_ESP32.h | 0 .../User_Setups/Setup47_ST7735.h | 0 .../User_Setups/Setup4_S6D02A1.h | 0 .../User_Setups/Setup50_SSD1963_Parallel.h | 2 +- .../User_Setups/Setup51_LilyPi_ILI9481.h | 0 .../User_Setups/Setup52_LilyPi_ST7796.h | 0 .../User_Setups/Setup5_RPi_ILI9486.h | 0 .../User_Setups/Setup60_RP2040_ILI9341.h | 4 +- .../User_Setups/Setup60_RP2040_RPI_MHS.h | 29 + .../Setup61_RP2040_ILI9341_PIO_SPI.h | 0 .../Setup62_RP2040_Nano_Connect_ILI9341.h | 4 +- .../User_Setups/Setup66_Seeed_XIAO_Round.h | 29 + .../User_Setups/Setup6_RPi_Wr_ILI9486.h | 0 .../User_Setups/Setup70_ESP32_S2_ILI9341.h | 0 .../User_Setups/Setup70b_ESP32_S3_ILI9341.h | 2 +- .../User_Setups/Setup70c_ESP32_C3_ILI9341.h | 0 .../Setup70d_ILI9488_S3_Parallel.h | 0 .../User_Setups/Setup70f_ESP32_S2_ST7735.h | 44 + .../User_Setups/Setup70h_ESP32_S3_GC9A01.h | 31 + .../User_Setups/Setup71_ESP32_S2_ST7789.h | 0 .../Setup72_ESP32_ST7789_172x320.h | 0 .../User_Setups/Setup7_ST7735_128x128.h | 0 .../User_Setups/Setup8_ILI9163_128x128.h | 0 .../User_Setups/Setup9_ST7735_Overlap.h | 0 .../User_Setups/SetupX_Template.h | 14 +- .../User_Setups/User_Custom_Fonts.h | 4 +- .../docs/ESP-IDF/Using ESP-IDF.txt | 70 + .../ESP32 UNO board mod.jpg | Bin .../ESP32 UNO board pinout.jpg | Bin .../docs/PlatformIO/Configuring options.txt | 2 +- .../docs/PlatformIO/rp2040.txt | 63 + .../RPi_TFT_Connections.png | Bin .../docs/RPi_TFT_connections/RPi_TFT_mod.png | Bin .../160 x 128/Arduino_Life/Arduino_Life.ino | 0 .../examples/160 x 128/Pong_v3/Pong_v3.ino | 0 .../160 x 128/RLE_Font_test/RLE_Font_test.ino | 0 .../TFT_Char_times/TFT_Char_times.ino | 0 .../160 x 128/TFT_Clock/TFT_Clock.ino | 0 .../TFT_Clock_Digital/TFT_Clock_Digital.ino | 0 .../160 x 128/TFT_Ellipse/TFT_Ellipse.ino | 4 +- .../160 x 128/TFT_Meter_5/TFT_Meter_5.ino | 2 +- .../TFT_Print_Test/TFT_Print_Test.ino | 2 +- .../160 x 128/TFT_Rainbow/TFT_Rainbow.ino | 2 +- .../160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino | 6 +- .../examples/160 x 128/TFT_flash_jpg/jpeg1.h | 0 .../examples/160 x 128/TFT_flash_jpg/jpeg2.h | 0 .../examples/160 x 128/TFT_flash_jpg/jpeg3.h | 0 .../examples/160 x 128/TFT_flash_jpg/jpeg4.h | 0 .../TFT_graphicstest_PDQ3.ino | 0 .../TFT_graphicstest_small.ino | 0 .../UTFT_demo_fast/UTFT_demo_fast.ino | 0 .../All_Free_Fonts_Demo.ino | 2 +- .../All_Free_Fonts_Demo/Free_Fonts.h | 0 .../Cellular_Automata/Cellular_Automata.ino | 0 .../Free_Font_Demo/Free_Font_Demo.ino | 2 +- .../320 x 240/Free_Font_Demo/Free_Fonts.h | 0 .../Keypad_240x320/Keypad_240x320.ino | 8 +- .../320 x 240/RLE_Font_test/RLE_Font_test.ino | 0 .../Read_ID_bitbash/Read_ID_bitbash.ino | 4 +- .../320 x 240/TFT_ArcFill/TFT_ArcFill.ino | 10 +- .../TFT_Char_times/TFT_Char_times.ino | 0 .../320 x 240/TFT_Clock/TFT_Clock.ino | 0 .../TFT_Clock_Digital/TFT_Clock_Digital.ino | 0 .../TFT_Custom_Fonts/TFT_Custom_Fonts.ino | 2 +- .../320 x 240/TFT_Ellipse/TFT_Ellipse.ino | 0 .../TFT_FillArcSpiral/TFT_FillArcSpiral.ino | 8 +- .../TFT_Float_Test/TFT_Float_Test.ino | 0 .../TFT_Mandlebrot/TFT_Mandlebrot.ino | 2 +- .../320 x 240/TFT_Matrix/TFT_Matrix.ino | 0 .../TFT_Meter_linear/TFT_Meter_linear.ino | 6 +- .../320 x 240/TFT_Meters/TFT_Meters.ino | 4 +- .../320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino | 6 +- .../examples/320 x 240/TFT_Pong/TFT_Pong.ino | 0 .../TFT_Print_Test/TFT_Print_Test.ino | 2 +- .../TFT_Rainbow_one_lib.ino | 4 +- .../320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino | 6 +- .../320 x 240/TFT_Spiro/TFT_Spiro.ino | 4 +- .../320 x 240/TFT_Starfield/TFT_Starfield.ino | 4 +- .../TFT_String_Align/TFT_String_Align.ino | 0 .../320 x 240/TFT_Terminal/TFT_Terminal.ino | 2 +- .../TFT_graphicstest_PDQ.ino | 0 .../TFT_graphicstest_one_lib.ino | 0 .../320 x 240/UTFT_demo/UTFT_demo.ino | 0 .../Cellular_Automata/Cellular_Automata.ino | 0 .../480 x 320/Demo_3D_cube/Demo_3D_cube.ino | 0 .../Free_Font_Demo/Free_Font_Demo.ino | 2 +- .../480 x 320/Free_Font_Demo/Free_Fonts.h | 0 .../examples/480 x 320/Graph_2/Graph_2.ino | 0 .../Keypad_480x320/Keypad_480x320.ino | 8 +- .../TFT_Char_times/TFT_Char_times.ino | 0 .../480 x 320/TFT_Ellipse/TFT_Ellipse.ino | 0 .../480 x 320/TFT_Meter_4/TFT_Meter_4.ino | 6 +- .../480 x 320/TFT_Meters/TFT_Meters.ino | 4 +- .../TFT_Padding_demo/TFT_Padding_demo.ino | 0 .../TFT_Print_Test/TFT_Print_Test.ino | 2 +- .../TFT_Rainbow480/TFT_Rainbow480.ino | 4 +- .../TFT_String_Align/TFT_String_Align.ino | 0 .../480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino | 8 +- .../examples/480 x 320/TFT_flash_jpg/jpeg1.h | 0 .../examples/480 x 320/TFT_flash_jpg/jpeg2.h | 0 .../examples/480 x 320/TFT_flash_jpg/jpeg3.h | 0 .../examples/480 x 320/TFT_flash_jpg/jpeg4.h | 0 .../TFT_graphicstest_one_lib.ino | 0 .../examples/480 x 320/TFT_ring_meter/Alert.h | 0 .../TFT_ring_meter/TFT_ring_meter.ino | 12 +- .../Touch_Controller_Demo.ino | 2 +- .../UTFT_Demo_480x320/UTFT_Demo_480x320.ino | 0 .../Bouncy_Circles/Bouncy_Circles.ino | 4 +- .../DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino | 0 .../examples/DMA test/Flash_Jpg_DMA/panda.h | 0 .../SpriteRotatingCube/SpriteRotatingCube.ino | 4 +- .../DMA test/boing_ball/boing_ball.ino | 2 +- .../examples/DMA test/boing_ball/graphic.h | 0 .../Buttons/Button_demo/Button_demo.ino | 191 + .../Buttons/Button_demo/Free_Fonts.h | 377 ++ .../Graphs/Graph_demo_1/Graph_demo_1.ino | 80 + .../Graphs/Graph_demo_2/Graph_demo_2.ino | 105 + .../Analogue_meters/Analogue_meters.ino | 87 + .../Sliders/Slider_demo/Free_Fonts.h | 377 ++ .../Sliders/Slider_demo/Slider_demo.ino | 201 + .../Animated_Eyes_1/Animated_Eyes_1.ino | 0 .../examples/Generic/Animated_Eyes_1/config.h | 2 +- .../Generic/Animated_Eyes_1/data/catEye.h | 0 .../Generic/Animated_Eyes_1/data/defaultEye.h | 0 .../Generic/Animated_Eyes_1/data/doeEye.h | 0 .../Generic/Animated_Eyes_1/data/dragonEye.h | 0 .../Generic/Animated_Eyes_1/data/goatEye.h | 0 .../Generic/Animated_Eyes_1/data/logo.h | 0 .../Generic/Animated_Eyes_1/data/naugaEye.h | 0 .../Generic/Animated_Eyes_1/data/newtEye.h | 0 .../Animated_Eyes_1/data/noScleraEye.h | 0 .../Generic/Animated_Eyes_1/data/owlEye.h | 0 .../Animated_Eyes_1/data/terminatorEye.h | 0 .../Animated_Eyes_1}/eye_functions.ino | 4 +- .../examples/Generic/Animated_Eyes_1/user.cpp | 0 .../Generic/Animated_Eyes_1/user_bat.cpp | 0 .../Generic/Animated_Eyes_1/user_xmas.cpp | 0 .../Animated_Eyes_2/Animated_Eyes_2.ino | 0 .../examples/Generic/Animated_Eyes_2/config.h | 2 +- .../Generic/Animated_Eyes_2/data/catEye.h | 0 .../Generic/Animated_Eyes_2/data/defaultEye.h | 0 .../Generic/Animated_Eyes_2/data/doeEye.h | 0 .../Generic/Animated_Eyes_2/data/dragonEye.h | 0 .../Generic/Animated_Eyes_2/data/goatEye.h | 0 .../Generic/Animated_Eyes_2/data/logo.h | 0 .../Generic/Animated_Eyes_2/data/naugaEye.h | 0 .../Generic/Animated_Eyes_2/data/newtEye.h | 0 .../Animated_Eyes_2/data/noScleraEye.h | 0 .../Generic/Animated_Eyes_2/data/owlEye.h | 0 .../Animated_Eyes_2/data/terminatorEye.h | 0 .../Animated_Eyes_2}/eye_functions.ino | 4 +- .../examples/Generic/Animated_Eyes_2/user.cpp | 0 .../Generic/Animated_Eyes_2/user_bat.cpp | 0 .../Generic/Animated_Eyes_2/user_xmas.cpp | 0 .../Generic/Animated_Eyes_2/wiring.ino | 0 .../ESP32_SDcard_jpeg/Data/Baboon40.jpg | Bin .../ESP32_SDcard_jpeg/Data/EagleEye.jpg | Bin .../ESP32_SDcard_jpeg/Data/Mouse480.jpg | Bin .../ESP32_SDcard_jpeg/Data/lena20k.jpg | Bin .../ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino | 4 +- .../ESP8266_uncannyEyes.ino | 4 +- .../Generic/ESP8266_uncannyEyes/defaultEye.h | 0 .../Generic/ESP8266_uncannyEyes/dragonEye.h | 0 .../Generic/ESP8266_uncannyEyes/goatEye.h | 0 .../Generic/ESP8266_uncannyEyes/noScleraEye.h | 0 .../screenshotToConsole.ino | 2 +- .../Generic/Gradient_Fill/Gradient_Fill.ino | 0 .../examples/Generic/Julia_Set/Julia_Set.ino | 83 + .../Local_Custom_Fonts/Local_Custom_Fonts.ino | 0 .../Generic/Local_Custom_Fonts/MyFont.h | 0 .../Generic/On_Off_Button/On_Off_Button.ino | 0 .../TFT_Button_Label_Datum.ino | 0 .../examples/Generic/TFT_Flash_Bitmap/Alert.h | 0 .../examples/Generic/TFT_Flash_Bitmap/Close.h | 0 .../examples/Generic/TFT_Flash_Bitmap/Info.h | 0 .../TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino | 2 +- .../Generic/TFT_SPIFFS_BMP/BMP_functions.ino | 2 +- .../Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino | 0 .../Generic/TFT_SPIFFS_BMP/data/parrot.bmp | Bin .../TFT_Screen_Capture/TFT_Screen_Capture.ino | 0 .../TFT_Screen_Capture/processing_sketch.ino | 2 +- .../TFT_Screen_Capture/screenServer.ino | 12 +- .../Touch_calibrate/Touch_calibrate.ino | 0 .../Generic/Viewport_Demo/Viewport_Demo.ino | 2 +- .../Viewport_Demo/Viewport_commands.ino | 0 .../Viewport_graphicstest.ino | 0 .../alphaBlend_Test/alphaBlend_Test.ino | 16 +- .../Generic/drawXBitmap/drawXBitmap.ino | 0 .../examples/Generic/drawXBitmap/xbm.h | 0 .../PNG Images/Flash_PNG/Flash_PNG.ino | 14 +- .../examples/PNG Images/Flash_PNG/panda.h | 0 .../Flash_transparent_PNG.ino | 90 + .../Flash_transparent_PNG/SpongeBob.h | 1355 ++++++ .../Flash_transparent_PNG/png_support.ino | 19 + .../PNG Images/LittleFS_PNG/LittleFS_PNG.ino | 10 +- .../LittleFS_PNG/PNG_FS_Support.ino | 0 .../PNG Images/LittleFS_PNG/data/EagleEye.png | Bin .../PNG Images/LittleFS_PNG/data/panda.png | Bin .../LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino | 12 +- .../LittleFS_PNG_DMA/PNG_FS_Support.ino | 0 .../LittleFS_PNG_DMA/data/EagleEye.png | Bin .../LittleFS_PNG_DMA/data/panda.png | Bin .../Font_Demo_1_Array/Font_Demo_1_Array.ino | 0 .../FLASH_Array/Font_Demo_1_Array/Notes.ino | 0 .../Font_Demo_1_Array/NotoSansBold15.h | 0 .../Font_Demo_1_Array/NotoSansBold36.h | 0 .../Font_Demo_2_Array/Font_Demo_2_Array.ino | 0 .../FLASH_Array/Font_Demo_2_Array/Notes.ino | 0 .../Font_Demo_2_Array/NotoSansBold15.h | 0 .../Font_Demo_2_Array/NotoSansBold36.h | 0 .../Font_Demo_3_Array/Font_Demo_3_Array.ino | 8 +- .../FLASH_Array/Font_Demo_3_Array/Notes.ino | 0 .../Font_Demo_3_Array/NotoSansBold15.h | 0 .../Font_Demo_3_Array/NotoSansBold36.h | 0 .../Font_Demo_3_Array/NotoSansMonoSCB20.h | 0 .../Font_Demo_4_Array/Font_Demo_4_Array.ino | 2 +- .../FLASH_Array/Font_Demo_4_Array/Notes.ino | 0 .../Font_Demo_4_Array/NotoSansBold15.h | 0 .../Font_Demo_4_Array/NotoSansBold36.h | 0 .../Print_Smooth_Font/Final_Frontier_28.h | 0 .../Print_Smooth_Font/Print_Smooth_Font.ino | 2 +- .../Smooth_font_gradient/NotoSansBold15.h | 0 .../Smooth_font_gradient/NotoSansBold36.h | 0 .../Smooth_font_gradient.ino | 0 .../Smooth_font_reading_TFT/NotoSansBold15.h | 0 .../Smooth_font_reading_TFT/NotoSansBold36.h | 0 .../Smooth_font_reading_TFT.ino | 2 +- .../Unicode_test/Final_Frontier_28.h | 0 .../Unicode_test/Latin_Hiragana_24.h | 0 .../Unicode_test/Unicode_Test_72.h | 0 .../FLASH_Array/Unicode_test/Unicode_test.ino | 6 +- .../Unicode_test/data/Final-Frontier-28.vlw | Bin .../Unicode_test/data/Latin-Hiragana-24.vlw | Bin .../Unicode_test/data/Unicode-Test-72.vlw | Bin .../LittleFS/Font_Demo_1/Font_Demo_1.ino | 0 .../LittleFS/Font_Demo_1/Notes.ino | 0 .../Font_Demo_1/data/NotoSansBold15.vlw | Bin .../Font_Demo_1/data/NotoSansBold36.vlw | Bin .../LittleFS/Font_Demo_2/Font_Demo_2.ino | 0 .../LittleFS/Font_Demo_2/Notes.ino | 0 .../Font_Demo_2/data/NotoSansBold15.vlw | Bin .../Font_Demo_2/data/NotoSansBold36.vlw | Bin .../LittleFS/Font_Demo_3/Font_Demo_3.ino | 6 +- .../LittleFS/Font_Demo_3/Notes.ino | 0 .../Font_Demo_3/data/NotoSansBold15.vlw | Bin .../Font_Demo_3/data/NotoSansBold36.vlw | Bin .../Font_Demo_3/data/NotoSansMonoSCB20.vlw | Bin .../LittleFS/Font_Demo_4/Font_Demo_4.ino | 2 +- .../LittleFS/Font_Demo_4/Notes.ino | 0 .../Font_Demo_4/data/NotoSansBold15.vlw | Bin .../Font_Demo_4/data/NotoSansBold36.vlw | Bin .../Print_Smooth_Font/Print_Smooth_Font.ino | 2 +- .../data/Final-Frontier-28.vlw | Bin .../Smooth_font_gradient.ino | 0 .../data/NotoSansBold15.vlw | Bin .../data/NotoSansBold36.vlw | Bin .../Smooth_font_reading_TFT.ino | 0 .../data/NotoSansBold15.vlw | Bin .../data/NotoSansBold36.vlw | Bin .../Unicode_test/LittleFS_functions.ino | 0 .../LittleFS/Unicode_test/Unicode_test.ino | 2 +- .../Unicode_test/data/Final-Frontier-28.vlw | Bin .../Unicode_test/data/Latin-Hiragana-24.vlw | Bin .../Unicode_test/data/Unicode-Test-72.vlw | Bin .../ESP32_Smooth_Font_SD.ino | 2 +- .../data/Final-Frontier-28.vlw | Bin .../SPIFFS/Font_Demo_1/Font_Demo_1.ino | 0 .../Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino | 0 .../Font_Demo_1/data/NotoSansBold15.vlw | Bin .../Font_Demo_1/data/NotoSansBold36.vlw | Bin .../SPIFFS/Font_Demo_2/Font_Demo_2.ino | 0 .../Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino | 0 .../Font_Demo_2/data/NotoSansBold15.vlw | Bin .../Font_Demo_2/data/NotoSansBold36.vlw | Bin .../SPIFFS/Font_Demo_3/Font_Demo_3.ino | 6 +- .../Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino | 0 .../Font_Demo_3/data/NotoSansBold15.vlw | Bin .../Font_Demo_3/data/NotoSansBold36.vlw | Bin .../Font_Demo_3/data/NotoSansMonoSCB20.vlw | Bin .../SPIFFS/Font_Demo_4/Font_Demo_4.ino | 2 +- .../Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino | 0 .../Font_Demo_4/data/NotoSansBold15.vlw | Bin .../Font_Demo_4/data/NotoSansBold36.vlw | Bin .../Print_Smooth_Font/Print_Smooth_Font.ino | 2 +- .../data/Final-Frontier-28.vlw | Bin .../Smooth_font_gradient.ino | 0 .../data/NotoSansBold15.vlw | Bin .../data/NotoSansBold36.vlw | Bin .../Smooth_font_reading_TFT.ino | 0 .../data/NotoSansBold15.vlw | Bin .../data/NotoSansBold36.vlw | Bin .../SPIFFS/Unicode_test/SPIFFS_functions.ino | 0 .../SPIFFS/Unicode_test/Unicode_test.ino | 2 +- .../Unicode_test/data/Final-Frontier-28.vlw | Bin .../Unicode_test/data/Latin-Hiragana-24.vlw | Bin .../Unicode_test/data/Unicode-Test-72.vlw | Bin .../Anti-aliased_Clock/Anti-aliased_Clock.ino | 6 +- .../Anti-aliased_Clock/NTP_Time.h | 12 +- .../Anti-aliased_Clock/NotoSansBold15.h | 0 .../Arc_meter_demo/Arc_meter_demo.ino | 208 + .../Arc_meter_demo/NotoSans_Bold.h | 732 ++++ .../Colour_Wheel/Colour_Wheel.ino | 47 + .../Smooth Graphics/Draw_Arc/Draw_Arc.ino | 53 + .../Draw_Smooth_Circles.ino | 98 + .../Smooth Graphics/Smooth_Arc/Smooth_Arc.ino | 46 + .../Smooth_Graphics_Demo.ino | 10 +- .../Smooth_Rounded_Rectangles.ino | 50 + .../Sprite/Animated_dial/Animated_dial.ino | 0 .../Sprite/Animated_dial/NotoSansBold36.h | 0 .../Sprite/Animated_dial/data/dial.jpg | Bin .../examples/Sprite/Animated_dial/dial.h | 0 .../One_bit_Sprite_Demo.ino | 2 +- .../One_bit_Yin_Yang/One_bit_Yin_Yang.ino | 0 .../examples/Sprite/Orrery/Orrery.ino | 0 .../examples/Sprite/Orrery/astronomy.c | 0 .../examples/Sprite/Orrery/astronomy.h | 0 .../Rotated_Sprite_1/Rotated_Sprite_1.ino | 4 +- .../Rotated_Sprite_2/Rotated_Sprite_2.ino | 2 +- .../Rotated_Sprite_3/Rotated_Sprite_3.ino | 4 +- .../Sprite/Rotated_Sprite_3/data/EagleEye.jpg | Bin .../Rotated_Sprite_3/data/Eye_80x64.jpg | Bin .../Sprite_RLE_Font_test.ino | 2 +- .../Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino | 0 .../Sprite/Sprite_draw/Sprite_draw.ino | 6 +- .../Sprite_draw_4bit/Sprite_draw_4bit.ino | 8 +- .../Sprite_image_4bit/Sprite_image_4bit.ino | 10 +- .../Sprite/Sprite_image_4bit/sample_images.h | 0 .../Sprite/Sprite_image_4bit/starImage.cpp | 0 .../Sprite/Sprite_scroll/Sprite_scroll.ino | 4 +- .../Sprite_scroll_16bit.ino | 6 +- .../Sprite_scroll_1bit/Sprite_scroll_1bit.ino | 4 +- .../Sprite_scroll_4bit/Sprite_scroll_4bit.ino | 4 +- .../Sprite_scroll_8bit/Sprite_scroll_8bit.ino | 16 +- .../Sprite_scroll_wrap_1bit.ino | 2 +- .../Transparent_Sprite_Demo.ino | 10 +- .../Transparent_Sprite_Demo_4bit.ino | 14 +- .../Colour_Test/Colour_Test.ino | 69 +- .../Read_User_Setup/Read_User_Setup.ino | 14 +- .../TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino | 0 .../Test_Touch_Controller.ino | 0 .../ePaper/Floyd_Steinberg/EPD_Support.h | 0 .../Floyd_Steinberg/Floyd_Steinberg.ino | 2 +- .../Floyd_Steinberg/Floyd_Steinberg_BMP.ino | 12 +- .../ePaper/Floyd_Steinberg/SPIFFS.ino | 0 .../ePaper/Floyd_Steinberg/data/TestCard.bmp | Bin .../ePaper/Floyd_Steinberg/data/Tiger.bmp | Bin .../keywords.txt | 12 +- .../library.json | 4 +- .../library.properties | 4 +- .../license.txt | 8 +- libraries/arduinoWebSockets-2.3.6/.piopm | 1 - .../.clang-format | 0 .../.github/workflows/main.yml | 87 +- .../.gitignore | 0 .../.travis.yml | 0 .../LICENSE | 0 .../README.md | 30 +- .../Nginx/esp8266.ssl.reverse.proxy.conf | 0 .../arduino_uno_r4_wifi.ino | 109 + .../WebSocketClientAVR/WebSocketClientAVR.ino | 0 .../esp32/WebSocketClient/WebSocketClient.ino | 0 .../WebSocketClientSSL/WebSocketClientSSL.ino | 0 .../WebSocketClientSSLBundle.ino | 135 + .../WebSocketClientSocketIOack.ino | 155 + .../esp32/WebSocketServer/WebSocketServer.ino | 0 .../WebSocketClientSSLBundle/.gitignore | 8 + .../WebSocketClientSSLBundle/cacrt_all.pem | 3581 ++++++++++++++++ .../cmn_crt_authorities.csv | 39 + .../gen_crt_bundle.py | 227 + .../WebSocketClientSSLBundle/lib/README | 46 + .../WebSocketClientSSLBundle/platformio.ini | 25 + .../WebSocketClientSSLBundle/readme.md | 12 + .../run_gen_script.py | 6 + .../WebSocketClientSSLBundle/src/main.cpp | 127 + .../WebSocketClient/WebSocketClient.ino | 0 .../esp8266_pico/WebSocketClientOTA/README.md | 27 + .../WebSocketClientOTA/WebSocketClientOTA.ino | 264 ++ .../python_ota_server/main.py | 235 + .../python_ota_server/requirements.txt | 2 + .../WebSocketClientSSL/WebSocketClientSSL.ino | 0 .../WebSocketClientSSLWithCA.ino | 0 .../WebSocketClientSocketIO.ino | 6 +- .../WebSocketClientSocketIOack.ino | 12 +- .../WebSocketClientStomp.ino | 0 .../WebSocketClientStompOverSockJs.ino | 0 .../WebSocketServer/WebSocketServer.ino | 0 .../WebSocketServerAllFunctionsDemo.ino | 0 .../WebSocketServerFragmentation.ino | 0 .../WebSocketServerHooked.ino | 0 .../esp8266_pico}/WebSocketServerHooked/emu | 0 .../WebSocketServerHooked/ws-testclient.py | 0 .../WebSocketServerHttpHeaderValidation.ino | 0 .../WebSocketServer_LEDcontrol.ino | 0 .../ParticleWebSocketClient/application.cpp | 0 .../library.json | 4 +- .../library.properties | 2 +- .../src/SocketIOclient.cpp | 36 +- .../src/SocketIOclient.h | 17 +- .../src/WebSockets.cpp | 157 +- .../src/WebSockets.h | 54 +- .../src/WebSockets4WebServer.h | 16 +- .../src/WebSocketsClient.cpp | 57 +- .../src/WebSocketsClient.h | 23 +- .../src/WebSocketsServer.cpp | 42 +- .../src/WebSocketsServer.h | 56 +- .../src/WebSocketsVersion.h | 10 +- .../src/libb64/AUTHORS | 0 .../src/libb64/LICENSE | 0 .../src/libb64/cdecode.c | 2 +- .../src/libb64/cdecode_inc.h | 0 .../src/libb64/cencode.c | 2 +- .../src/libb64/cencode_inc.h | 0 .../src/libsha1/libsha1.c | 0 .../src/libsha1/libsha1.h | 0 .../tests/webSocket.html | 49 + .../tests/webSocketServer/index.js | 57 + .../tests/webSocketServer/package.json | 27 + .../travis/common.sh | 42 +- .../travis/version.py | 0 platformio.ini | 55 +- 1965 files changed, 37800 insertions(+), 139618 deletions(-) delete mode 100644 astyle.bat delete mode 100644 astyle.sh create mode 100644 esp3d/src/core/commands/ESP116.cpp create mode 100644 esp3d/src/core/commands/ESP117.cpp create mode 100644 esp3d/src/core/commands/ESP118.cpp delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/.gitignore delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/doc/SdErrorCodes.txt delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/doc/html.zip delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/OpenNext/OpenNext.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/QuickStart/QuickStart.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdFormatter/SdFormatter.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdInfo/SdInfo.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/bench/bench.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/rename/rename.ino delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.cpp delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.h delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.h delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/src/SdFat.h delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.cpp delete mode 100644 extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.h rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/.gitattributes (100%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/.gitignore rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/LICENSE.md (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/README.md (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/Doxyfile (92%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/doc/SdErrorCodes.txt rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/SdFat.html (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/ZipMsg/index.html (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/clean_html.bat (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/del_html.bat (100%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/doc/html.zip rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/html/index.html (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/doc/mainpage.h (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/AvrAdcLogger/AvrAdcLogger.h (81%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/AvrAdcLogger/AvrAdcLogger.ino (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/BackwardCompatibility/BackwardCompatibility.ino (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/BufferedPrint/BufferedPrint.ino (67%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/DirectoryFunctions/DirectoryFunctions.ino (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/ExFatLogger/ExFatLogger.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/ExFatLogger/ExFatLogger.ino (94%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino (73%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/OpenNext/OpenNext.ino (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/QuickStart/QuickStart.ino (78%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/ReadCsvFile/ReadCsvFile.ino (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/RtcTimestampTest/RtcTimestampTest.ino (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/SdErrorCodes/SdErrorCodes.ino (95%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/SdFormatter/SdFormatter.ino (80%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/SdInfo/SdInfo.ino (67%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/SoftwareSpi/SoftwareSpi.ino (96%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/SpiLoopBackTest/SpiLoopBackTest.ino rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino (56%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino (95%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/TeensySdioDemo/TeensySdioDemo.ino (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/TeensySdioLogger/TeensySdioLogger.ino (92%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/UnicodeFilenames/UnicodeFilenames.ino (98%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/UserChipSelectFunction/UserChipSelectFunction.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/UserSPIDriver/UserSPIDriver.ino (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/bench/bench.ino (86%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/debug/CardBusyTest/CardBusyTest.ino create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestGetName/TestGetName.ino create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestMkdir/TestMkdir.ino create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestRmdir/TestRmdir.ino create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TimestampTest/TimestampTest.ino rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/MiniSerial/MiniSerial.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/SD_Size/SD_Size.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/append/append.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/average/average.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/benchSD/benchSD.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/bufstream/bufstream.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/cin_cout/cin_cout.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/eventlog/eventlog.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/readlog/readlog.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/#attic/readme.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino (99%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/LongFileName.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/A long name can be 255 characters.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/LFN,NAME.TXT (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/MIXCASE.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/Not_8_3.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/OK%83.TXT (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/STD_8_3.TXT (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/With Blank.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/With.Two dots.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/lower.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LongFileName/testFiles/mixed.TXT (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLogger/UserFunctions.cpp (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLogger/UserTypes.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerADXL345/UserFunctions.cpp (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerADXL345/UserTypes.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerADXL345/readme.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerMPU6050/UserFunctions.cpp (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/LowLatencyLoggerMPU6050/UserTypes.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/RawWrite/RawWrite.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/ReadCsv/ReadCsv.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/ReadWrite/ReadWrite.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/STM32Test/STM32Test.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/StdioBench/StdioBench.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/Timestamp/Timestamp.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/TwoCards/TwoCards.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/dataLogger/dataLogger.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/fgets/fgets.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/formatting/formatting.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/getline/getline.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/examplesV1/wipe/wipe.ino (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/examples/rename/rename.ino (95%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/extras/AvrPrintStimmer.cpp create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/USB_Host_Shield/UsbHostShieldDiff.txt (68%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/USB_Host_Shield/readme.txt (74%) rename extra-libraries/ESP32/{SdFat-2.1.2/src/common => SdFat-2.2.3/extras/attic}/PrintBasic.cpp (94%) rename extra-libraries/ESP32/{SdFat-2.1.2/src/common => SdFat-2.2.3/extras/attic}/PrintBasic.h (74%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/attic/PrintTemplates.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/attic/SysCallBareUno.cpp (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/cpplint.bat (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/cpplint.py (99%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/extras/cpplint.sh (100%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/extras/fmt_src.bat rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/library.properties (96%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/BufferedPrint.h (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/DigitalPin.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/SoftSPI.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/BobuinoGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/GpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/LeonardoGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/MegaGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/Standard1284GpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/Teensy2GpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/Teensy2ppGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/boards/UnoGpioPinMap.h (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/DigitalIO/readme.txt (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatConfig.h (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatDbg.cpp (91%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatFile.cpp (82%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatFile.h (78%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatFilePrint.cpp (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatFileWrite.cpp (92%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatFormatter.cpp (88%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatFormatter.h (95%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatLib.h (96%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatName.cpp (88%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatPartition.cpp (87%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatPartition.h (78%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatVolume.cpp (95%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/ExFatLib/ExFatVolume.h (84%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatDbg.cpp (91%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFile.cpp (89%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFile.h (82%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFileLFN.cpp (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFilePrint.cpp (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFileSFN.cpp (89%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFormatter.cpp (84%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatFormatter.h (96%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatLib.h (96%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatName.cpp (94%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatPartition.cpp (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatPartition.h (67%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatVolume.cpp (92%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FatLib/FatVolume.h (85%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FreeStack.cpp (98%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FreeStack.h (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsFile.cpp (81%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsFile.h (67%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsFormatter.h (89%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsLib.h (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsNew.cpp (96%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsNew.h (94%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsVolume.cpp (84%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/FsLib/FsVolume.h (70%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/MinimumSerial.cpp (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/MinimumSerial.h (96%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/RingBuf.h (56%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/CPPLINT.cfg (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdCard.h (80%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdCardInfo.cpp (81%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.h rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdCardInterface.h (78%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdSpiCard.cpp (75%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdSpiCard.h (76%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdioCard.h (88%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdCard/SdioTeensy.cpp (76%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.h create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/src/SdFat.h rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SdFatConfig.h (80%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiArduinoDriver.h (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiArtemis.cpp (83%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiAvr.h (80%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiBareUnoDriver.h (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiBaseClass.h (89%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiChipSelect.cpp (84%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiDriver.h (87%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiDue.cpp (75%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiESP.cpp (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiLibDriver.h (62%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiParticle.cpp (81%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiSTM32.cpp (82%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiSTM32Core.cpp (87%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiSoftDriver.h (91%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/SpiDriver/SdSpiTeensy3.cpp (83%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/ArduinoFiles.h (82%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/CPPLINT.cfg (100%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/CompileDateTime.h (56%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/DebugMacros.h (91%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FmtNumber.cpp (71%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FmtNumber.h (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsApiConstants.h (75%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsBlockDevice.h (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsBlockDeviceInterface.h (98%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsCache.cpp (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsCache.h (89%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsDateTime.cpp (83%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsDateTime.h (56%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsName.cpp (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsName.h (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsStructs.cpp (98%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/FsStructs.h (57%) create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.cpp create mode 100644 extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.h rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/SysCall.h (98%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/upcase.cpp (50%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/common/upcase.h (97%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/ArduinoStream.h (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/StdioStream.cpp (83%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/StdioStream.h (95%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/StreamBaseClass.cpp (79%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/bufstream.h (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/fstream.h (72%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/ios.h (86%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/iostream.h (90%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/istream.cpp (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/istream.h (89%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/ostream.cpp (93%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/iostream/ostream.h (79%) rename extra-libraries/ESP32/{SdFat-2.1.2 => SdFat-2.2.3}/src/sdios.h (97%) create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/ZipMsg/index.html create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html.zip delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_buffered_print_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_volume_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_volume_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_config_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_config_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_config_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_base_class_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_stdio_stream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_stdio_stream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_stdio_stream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/annotated.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/bc_s.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/bdwn.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/bufstream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/bufstream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/bufstream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_formatter-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_formatter.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_cache-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_cache.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_arduino_driver-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_arduino_driver.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_config-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_config.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sys_call-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sys_call.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classes.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream__coll__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream__inherit__graph.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/closed.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000004_000009.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000006_000005.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000007_000005.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000009_000008.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000005.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000011.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000011_000005.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_4944048bb6fb9e219242a59a3faf7f85.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_7e472674a7b7d2590a789f197241f95f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_954f1cc1f567c84d567c4e2ef94e5c23.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf_dep.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/doc.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.css delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/dynsections.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/files.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/folderclosed.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/folderopen.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_b.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_c.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_d.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_e.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_enum.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_eval.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_b.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_c.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_d.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_e.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_g.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_i.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_k.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_l.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_m.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_n.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_o.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_p.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_r.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_s.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_u.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_v.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_w.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_y.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_g.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_i.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_k.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_l.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_m.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_n.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_o.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_p.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_r.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_rela.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_s.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_type.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_u.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_v.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_vars.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_w.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_y.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_defs.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_func.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_type.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_vars.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/hierarchy.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_0.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_1.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_10.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_11.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_12.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_13.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_14.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_15.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_16.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_17.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_18.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_19.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_2.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_20.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_21.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_22.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_23.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_24.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_25.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_26.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_27.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_28.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_3.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_4.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_5.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_6.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_7.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_8.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_9.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherits.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/istream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/istream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/istream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/jquery.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/menu.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/menudata.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespace_fs_date_time.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_func.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_vars.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespaces.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_f.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_g.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_h.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/open.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h__dep__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/sdios_8h.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/sdios_8h__incl.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/close.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/mag_sel.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/nomatches.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.css delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search_l.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search_m.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search_r.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/searchdata.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.js delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/splitbar.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/sync_off.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/sync_on.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_a.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_b.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_h.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_s.png delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/tabs.css delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t-members.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t.html delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatFormatter/ExFatFormatter.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatUnicodeTest/ExFatUnicodeTest.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/STM32Test/STM32Test.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/SpiLoopBackTest/SpiLoopBackTest.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioLogger/TeensySdioLogger.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/UnicodeFilenames/UnicodeFilenames.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/debug/CardBusyTest/CardBusyTest.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestGetName/TestGetName.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestMkdir/TestMkdir.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestRmdir/TestRmdir.ino create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TimestampTest/TimestampTest.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/OpenNext/OpenNext.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/QuickStart/QuickStart.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdFormatter/SdFormatter.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdInfo/SdInfo.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/bench/bench.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/rename/rename.ino delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/v1v2.txt create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/extras/AvrPrintStimmer.cpp rename extra-libraries/ESP8266/ESP8266SdFat/{src/common => extras/attic}/PrintBasic.cpp (93%) rename extra-libraries/{ESP32/SdFat-2.1.2 => ESP8266/ESP8266SdFat}/extras/attic/PrintBasic.h (72%) rename extra-libraries/ESP8266/ESP8266SdFat/{src/common => extras/attic}/PrintTemplates.h (99%) rename extra-libraries/ESP8266/ESP8266SdFat/{src/common => extras/attic}/SysCallBareUno.cpp (100%) create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/extras/fmt_src.bat create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatName.cpp delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.cpp delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.h create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatName.cpp rename extra-libraries/ESP8266/ESP8266SdFat/src/{ExFatLib/ExFatTypes.h => FsLib/FsFormatter.h} (55%) create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/RingBuf.h create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32Core.cpp rename extra-libraries/ESP8266/ESP8266SdFat/src/common/{BlockDevice.h => FsBlockDevice.h} (84%) rename extra-libraries/ESP8266/ESP8266SdFat/src/common/{BlockDeviceInterface.h => FsBlockDeviceInterface.h} (84%) create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.cpp create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.h create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.cpp create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.h create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.cpp create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.h delete mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.h create mode 100644 extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.cpp rename extra-libraries/ESP8266/ESP8266SdFat/src/{FatLib/FatLibConfig.h => common/upcase.h} (84%) delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/FUNDING.yml delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/config.yml delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/question-template.md delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ci/build-ssdp.sh delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ci/final-check.sh delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ci/install-arduino.sh delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ci/install-esp32.sh delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ci/install-platformio.sh delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/ci/prepare-libs.sh delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci-dev.yml delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci.yml delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/workflows/greetings.yml delete mode 100644 libraries/ESP32SSDP-1.2.1/.github/workflows/wiki.yml delete mode 100644 libraries/ESP32SSDP-1.2.1/examples/SSDP/SSDP.ino delete mode 100644 libraries/ESP32SSDP-1.2.1/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino delete mode 100644 libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.cpp delete mode 100644 libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.h rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/.all-contributorsrc (100%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/.astylerc (100%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/.gitignore (100%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/LICENSE (100%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/README.md (65%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/examples/SSDP/Readme.md (100%) create mode 100644 libraries/ESP32SSDP-2.0.2/examples/SSDP/SSDP.ino rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/examples/SSDPAsyncWebserver/Readme.md (100%) create mode 100644 libraries/ESP32SSDP-2.0.2/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/keywords.txt (100%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/library.properties (93%) rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/set_style.bat (100%) create mode 100644 libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.cpp create mode 100644 libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.h rename libraries/{ESP32SSDP-1.2.1 => ESP32SSDP-2.0.2}/test/platformio.ini (100%) create mode 100644 libraries/ESP32SSDP-2.0.2/tools/format_sources.py delete mode 100644 libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 libraries/EspLuaEngine-1.0.1/.github/stale.yml delete mode 100644 libraries/EspLuaEngine-1.0.1/API.md rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/.github/FUNDING.yml (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/.github/ISSUE_TEMPLATE/bug_report.md (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/.github/ISSUE_TEMPLATE/config.yml (100%) rename libraries/{ESP32SSDP-1.2.1 => EspLuaEngine-1.0.2}/.github/ISSUE_TEMPLATE/feature_request.md (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/.github/ISSUE_TEMPLATE/question-template.md (100%) rename libraries/{ESP32SSDP-1.2.1 => EspLuaEngine-1.0.2}/.github/stale.yml (100%) create mode 100644 libraries/EspLuaEngine-1.0.2/API.md rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/LICENSE (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/README.md (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/cleanLua.py (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/examples/HelloWorld/HelloWorld.ino (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/examples/files/files.ino (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/examples/gpio/gpio.ino (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/examples/userData/userData.ino (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/library.properties (95%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/portingLua.md (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/EspLuaEngine.cpp (67%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/EspLuaEngine.h (62%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/Makefile (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/README (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/OSIApproved_100X125.png (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/contents.html (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/index.css (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/logo.gif (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/lua.1 (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/lua.css (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/luac.1 (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/manual.css (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/manual.html (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/doc/readme.html (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/Makefile (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lapi.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lapi.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lauxlib.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lauxlib.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lbaselib.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lcode.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lcode.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lcorolib.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lctype.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lctype.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ldblib.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ldebug.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ldebug.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ldo.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ldo.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ldump.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lfunc.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lfunc.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lgc.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lgc.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/linit.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/liolib.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ljumptab.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/llex.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/llex.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/llimits.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lmathlib.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lmem.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lmem.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/loadlib.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lobject.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lobject.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lopcodes.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lopcodes.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lopnames.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/loslib.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lparser.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lparser.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lprefix.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lstate.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lstate.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lstring.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lstring.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lstrlib.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ltable.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ltable.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ltablib.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ltm.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/ltm.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lua.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lua.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lua.hpp (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/luac.c.disabled (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/luaconf.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lualib.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lundump.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lundump.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lutf8lib.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lvm.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lvm.h (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lzio.c (100%) rename libraries/{EspLuaEngine-1.0.1 => EspLuaEngine-1.0.2}/src/lua-5.4.7/src/lzio.h (100%) delete mode 100644 libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio delete mode 100644 libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio delete mode 100644 libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio delete mode 100644 libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio delete mode 100644 libraries/TFT_eSPI-2.4.72/README.txt delete mode 100644 libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Init.h delete mode 100644 libraries/TFT_eSPI-2.4.72/TFT_eSPI.h delete mode 100644 libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.vlw delete mode 100644 libraries/TFT_eSPI-2.4.72/User_Setups/Setup17_ePaper.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/.gitattributes (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/.github/ISSUE_TEMPLATE/issue-template.md (67%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/.gitignore (92%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/CMakeLists.txt (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Button.cpp (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Button.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Smooth_font.cpp (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Smooth_font.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Sprite.cpp (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Sprite.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Touch.cpp (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Extensions/Touch.h (85%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Custom/Orbitron_Light_24.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Custom/Orbitron_Light_32.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Custom/Roboto_Thin_24.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Custom/Satisfy_24.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Custom/Yellowtail_32.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font16.c (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font16.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font32rle.c (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font32rle.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font64rle.c (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font64rle.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font72rle.c (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font72rle.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font72x53rle.c (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font72x53rle.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font7srle.c (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/Font7srle.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMono12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMono18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMono24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMono9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBold12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBold18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBold24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBold9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoOblique12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoOblique18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoOblique24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeMonoOblique9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSans12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSans18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSans24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSans9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBold12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBold18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBold24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBold9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBoldOblique12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBoldOblique18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBoldOblique24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansBoldOblique9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansOblique12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansOblique18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansOblique24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSansOblique9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerif12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerif18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerif24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerif9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBold12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBold18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBold24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBold9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifItalic12pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifItalic18pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifItalic24pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/FreeSerifItalic9pt7b.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/TomThumb.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/gfxfont.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/license.txt (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/GFXFF/print.txt (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/TrueType/Not_yet_supported.txt (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Fonts/glcdfont.c (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Kconfig (89%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP32.c (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP32.h (81%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP32_C3.c (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP32_C3.h (81%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP32_S3.c (87%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP32_S3.h (73%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP8266.c (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_ESP8266.h (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_Generic.c (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_Generic.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_RP2040.c (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_RP2040.h (81%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_STM32.c (90%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/TFT_eSPI_STM32.h (91%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/pio_16bit_parallel.pio.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/pio_8bit_parallel.pio.h (97%) create mode 100644 libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel_18bpp.pio.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/pio_SPI.pio.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Processors/pio_SPI_18bit.pio.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/README.md (58%) create mode 100644 libraries/TFT_eSPI-2.5.43/README.txt rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/EPD_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/GC9A01_Defines.h (86%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/GC9A01_Init.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/GC9A01_Rotation.h (62%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357B_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357B_Init.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357B_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357C_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357C_Init.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357C_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357D_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357D_Init.h (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/HX8357D_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9163_Defines.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9163_Init.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9163_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9225_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9225_Init.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9225_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9341_Defines.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9341_Init.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9341_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9481_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9481_Init.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9481_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9486_Defines.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9486_Init.h (66%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9486_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9488_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9488_Init.h (92%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ILI9488_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/R61581_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/R61581_Init.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/R61581_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/RM68120_Defines.h (51%) create mode 100644 libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Init.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/RM68120_Rotation.h (65%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/RM68140_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/RM68140_Init.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/RM68140_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/S6D02A1_Defines.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/S6D02A1_Init.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/S6D02A1_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/SSD1351_Defines.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/SSD1351_Init.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/SSD1351_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/SSD1963_Defines.h (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/SSD1963_Init.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/SSD1963_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7735_Defines.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7735_Init.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7735_Rotation.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7789_2_Defines.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7789_2_Init.h (100%) rename libraries/{TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Rotation.h => TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Rotation.h} (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7789_Defines.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7789_Init.h (51%) rename libraries/{TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Rotation.h => TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Rotation.h} (50%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7796_Defines.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7796_Init.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_Drivers/ST7796_Rotation.h (74%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_config.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/TFT_eSPI.cpp (85%) create mode 100644 libraries/TFT_eSPI-2.5.43/TFT_eSPI.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Tools/Create_Smooth_Font/Create_font/Create_font.pde (93%) create mode 100644 libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Tools/Create_Smooth_Font/Create_font/data/Final-Frontier.ttf (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Tools/Screenshot_client/Screenshot_client.pde (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Tools/bmp2array4bit/README.md (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Tools/bmp2array4bit/bmp2array4bit.py (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/Tools/bmp2array4bit/star.bmp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setup.h (89%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setup_Select.h (76%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup0_Sprite.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup100_RP2040_ILI9488_parallel.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup101_RP2040_ILI9481_parallel.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup102_RP2040_ILI9341_parallel.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup103_RP2040_ILI9486_parallel.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup104_RP2040_ST7796_parallel.h (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h (71%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h (97%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup108_RP2040_ST7735.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup10_RPi_touch_ILI9486.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup11_RPi_touch_ILI9486.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup12_M5Stack_Basic_Core.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup135_ST7789.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup136_LilyGo_TTV.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup137_LilyGo_TDisplay_RP2040.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup138_Pico_Explorer_Base_RP2040_ST7789.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup13_ILI9481_Parallel.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup14_ILI9341_Parallel.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup15_HX8357D.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup16_ILI9488_Parallel.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup17_ePaper.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup18_ST7789.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup19_RM68140_Parallel.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup1_ILI9341.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup200_GC9A01.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup201_WT32_SC01.h (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup202_SSD1351_128.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup203_ST7789.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup204_ESP32_TouchDown.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup205_ESP32_TouchDown_S3.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup206_LilyGo_T_Display_S3.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup207_LilyGo_T_HMI.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup209_LilyGo_T_Dongle_S3.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup20_ILI9488.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup210_LilyGo_T_Embed_S3.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup212_LilyGo_T_PicoPro.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup213_LilyGo_T_Beam_Shield.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup21_ILI9488.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup22_TTGO_T4.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup22_TTGO_T4_v1.3.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup23_TTGO_TM.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup24_ST7789.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup250_ESP32_S3_Box_Lite.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup251_ESP32_S3_Box.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup25_TTGO_T_Display.h (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup26_TTGO_T_Wristband.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup27_RPi_ST7796_ESP32.h (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup28_RPi_ST7796_ESP8266.h (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup29_ILI9341_STM32.h (99%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup29b_ILI9341_STM32.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup2_ST7735.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup301_BW16_ST7735.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup302_Waveshare_ESP32S3_GC9A01.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup30_ILI9341_Parallel_STM32.h (94%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup31_ST7796_Parallel_STM32.h (94%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup32_ILI9341_STM32F103.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup33_RPi_ILI9486_STM32.h (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup34_ILI9481_Parallel_STM32.h (94%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup36_RPi_touch_ST7796.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup3_ILI9163.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup42_ILI9341_ESP32.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup43_ST7735.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup44_TTGO_CameraPlus.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup45_TTGO_T_Watch.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup46_GC9A01_ESP32.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup47_ST7735.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup4_S6D02A1.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup50_SSD1963_Parallel.h (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup51_LilyPi_ILI9481.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup52_LilyPi_ST7796.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup5_RPi_ILI9486.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup60_RP2040_ILI9341.h (99%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_RPI_MHS.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h (99%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup66_Seeed_XIAO_Round.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup6_RPi_Wr_ILI9486.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup70_ESP32_S2_ILI9341.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup70b_ESP32_S3_ILI9341.h (91%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup70c_ESP32_C3_ILI9341.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup70d_ILI9488_S3_Parallel.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup70f_ESP32_S2_ST7735.h create mode 100644 libraries/TFT_eSPI-2.5.43/User_Setups/Setup70h_ESP32_S3_GC9A01.h rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup71_ESP32_S2_ST7789.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup72_ESP32_ST7789_172x320.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup7_ST7735_128x128.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup8_ILI9163_128x128.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/Setup9_ST7735_Overlap.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/SetupX_Template.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/User_Setups/User_Custom_Fonts.h (91%) create mode 100644 libraries/TFT_eSPI-2.5.43/docs/ESP-IDF/Using ESP-IDF.txt rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/docs/ESP32 UNO board mod/ESP32 UNO board mod.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/docs/ESP32 UNO board mod/ESP32 UNO board pinout.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/docs/PlatformIO/Configuring options.txt (96%) create mode 100644 libraries/TFT_eSPI-2.5.43/docs/PlatformIO/rp2040.txt rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/docs/RPi_TFT_connections/RPi_TFT_Connections.png (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/docs/RPi_TFT_connections/RPi_TFT_mod.png (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/Arduino_Life/Arduino_Life.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/Pong_v3/Pong_v3.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/RLE_Font_test/RLE_Font_test.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Char_times/TFT_Char_times.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Clock/TFT_Clock.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Clock_Digital/TFT_Clock_Digital.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino (91%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_flash_jpg/jpeg1.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_flash_jpg/jpeg2.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_flash_jpg/jpeg3.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_flash_jpg/jpeg4.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_graphicstest_PDQ3/TFT_graphicstest_PDQ3.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/TFT_graphicstest_small/TFT_graphicstest_small.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/160 x 128/UTFT_demo_fast/UTFT_demo_fast.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/All_Free_Fonts_Demo/Free_Fonts.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/Cellular_Automata/Cellular_Automata.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/Free_Font_Demo/Free_Fonts.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/RLE_Font_test/RLE_Font_test.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino (94%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Char_times/TFT_Char_times.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Clock/TFT_Clock.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Clock_Digital/TFT_Clock_Digital.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Ellipse/TFT_Ellipse.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Float_Test/TFT_Float_Test.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Matrix/TFT_Matrix.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Meters/TFT_Meters.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Pong/TFT_Pong.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_String_Align/TFT_String_Align.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_graphicstest_PDQ/TFT_graphicstest_PDQ.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/320 x 240/UTFT_demo/UTFT_demo.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Cellular_Automata/Cellular_Automata.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Demo_3D_cube/Demo_3D_cube.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Free_Font_Demo/Free_Fonts.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Graph_2/Graph_2.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Char_times/TFT_Char_times.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Ellipse/TFT_Ellipse.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Meters/TFT_Meters.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Padding_demo/TFT_Padding_demo.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_String_Align/TFT_String_Align.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_flash_jpg/jpeg1.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_flash_jpg/jpeg2.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_flash_jpg/jpeg3.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_flash_jpg/jpeg4.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_ring_meter/Alert.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/480 x 320/UTFT_Demo_480x320/UTFT_Demo_480x320.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/DMA test/Flash_Jpg_DMA/panda.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/DMA test/boing_ball/boing_ball.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/DMA test/boing_ball/graphic.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Button_demo.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Free_Fonts.h create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_1/Graph_demo_1.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_2/Graph_demo_2.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Meters/Analogue_meters/Analogue_meters.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Free_Fonts.h create mode 100644 libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Slider_demo.ino rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/Animated_Eyes_1.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/config.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/catEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/defaultEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/doeEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/dragonEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/goatEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/logo.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/naugaEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/newtEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/noScleraEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/owlEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/data/terminatorEye.h (100%) rename libraries/{TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2 => TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1}/eye_functions.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/user.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/user_bat.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_1/user_xmas.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/Animated_Eyes_2.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/config.h (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/catEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/defaultEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/doeEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/dragonEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/goatEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/logo.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/naugaEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/newtEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/noScleraEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/owlEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/data/terminatorEye.h (100%) rename libraries/{TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1 => TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2}/eye_functions.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/user.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/user_bat.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/user_xmas.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Animated_Eyes_2/wiring.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP32_SDcard_jpeg/Data/Baboon40.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP32_SDcard_jpeg/Data/EagleEye.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP32_SDcard_jpeg/Data/Mouse480.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP32_SDcard_jpeg/Data/lena20k.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP8266_uncannyEyes/defaultEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP8266_uncannyEyes/dragonEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP8266_uncannyEyes/goatEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP8266_uncannyEyes/noScleraEye.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Gradient_Fill/Gradient_Fill.ino (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Generic/Julia_Set/Julia_Set.ino rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Local_Custom_Fonts/Local_Custom_Fonts.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Local_Custom_Fonts/MyFont.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/On_Off_Button/On_Off_Button.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Button_Label_Datum/TFT_Button_Label_Datum.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Flash_Bitmap/Alert.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Flash_Bitmap/Close.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Flash_Bitmap/Info.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_SPIFFS_BMP/data/parrot.bmp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Screen_Capture/TFT_Screen_Capture.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Screen_Capture/processing_sketch.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/TFT_Screen_Capture/screenServer.ino (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Touch_calibrate/Touch_calibrate.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Viewport_Demo/Viewport_Demo.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Viewport_Demo/Viewport_commands.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/Viewport_graphicstest/Viewport_graphicstest.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/drawXBitmap/drawXBitmap.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Generic/drawXBitmap/xbm.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/Flash_PNG/Flash_PNG.ino (86%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/Flash_PNG/panda.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/Flash_transparent_PNG.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/SpongeBob.h create mode 100644 libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/png_support.ino rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino (92%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG/PNG_FS_Support.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG/data/EagleEye.png (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG/data/panda.png (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino (91%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG_DMA/PNG_FS_Support.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG_DMA/data/EagleEye.png (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/PNG Images/LittleFS_PNG_DMA/data/panda.png (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Font_Demo_1_Array.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold15.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Font_Demo_2_Array.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold15.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold15.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansMonoSCB20.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold15.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Final_Frontier_28.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold15.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/Smooth_font_gradient.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold15.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/Final_Frontier_28.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/Latin_Hiragana_24.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_Test_72.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Final-Frontier-28.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Latin-Hiragana-24.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Unicode-Test-72.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_1/Font_Demo_1.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_1/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_2/Font_Demo_2.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_2/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_3/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_4/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/data/Final-Frontier-28.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/Smooth_font_gradient.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Unicode_test/LittleFS_functions.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Unicode_test/data/Final-Frontier-28.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Unicode_test/data/Latin-Hiragana-24.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/LittleFS/Unicode_test/data/Unicode-Test-72.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/data/Final-Frontier-28.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Font_Demo_1.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Font_Demo_2.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/data/Final-Frontier-28.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/Smooth_font_gradient.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Unicode_test/SPIFFS_functions.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Final-Frontier-28.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Latin-Hiragana-24.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Unicode-Test-72.vlw (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Graphics/Anti-aliased_Clock/NotoSansBold15.h (100%) create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/Arc_meter_demo.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/NotoSans_Bold.h create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Colour_Wheel/Colour_Wheel.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Arc/Draw_Arc.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Smooth_Circles/Draw_Smooth_Circles.ino create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Arc/Smooth_Arc.ino rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino (94%) create mode 100644 libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Rounded_Rectangles/Smooth_Rounded_Rectangles.ino rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Animated_dial/Animated_dial.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Animated_dial/NotoSansBold36.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Animated_dial/data/dial.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Animated_dial/dial.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/One_bit_Yin_Yang/One_bit_Yin_Yang.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Orrery/Orrery.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Orrery/astronomy.c (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Orrery/astronomy.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Rotated_Sprite_3/data/EagleEye.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Rotated_Sprite_3/data/Eye_80x64.jpg (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_draw/Sprite_draw.ino (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino (96%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino (91%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_image_4bit/sample_images.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_image_4bit/starImage.cpp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_scroll/Sprite_scroll.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino (98%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino (93%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino (91%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Test and diagnostics/Colour_Test/Colour_Test.ino (69%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino (97%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Test and diagnostics/TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/Test and diagnostics/Test_Touch_Controller/Test_Touch_Controller.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/ePaper/Floyd_Steinberg/EPD_Support.h (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino (99%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/ePaper/Floyd_Steinberg/SPIFFS.ino (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/ePaper/Floyd_Steinberg/data/TestCard.bmp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/examples/ePaper/Floyd_Steinberg/data/Tiger.bmp (100%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/keywords.txt (95%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/library.json (77%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/library.properties (66%) rename libraries/{TFT_eSPI-2.4.72 => TFT_eSPI-2.5.43}/license.txt (97%) delete mode 100644 libraries/arduinoWebSockets-2.3.6/.piopm rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/.clang-format (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/.github/workflows/main.yml (59%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/.gitignore (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/.travis.yml (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/LICENSE (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/README.md (70%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/examples/Nginx/esp8266.ssl.reverse.proxy.conf (100%) create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/arduino_renesas/arduino_uno_r4_wifi/arduino_uno_r4_wifi.ino rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/examples/avr/WebSocketClientAVR/WebSocketClientAVR.ino (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/examples/esp32/WebSocketClient/WebSocketClient.ino (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/examples/esp32/WebSocketClientSSL/WebSocketClientSSL.ino (100%) create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSSLBundle/WebSocketClientSSLBundle.ino create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/examples/esp32/WebSocketServer/WebSocketServer.ino (100%) create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/.gitignore create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cacrt_all.pem create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cmn_crt_authorities.csv create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/gen_crt_bundle.py create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/lib/README create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/platformio.ini create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/readme.md create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/run_gen_script.py create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/src/main.cpp rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClient/WebSocketClient.ino (100%) create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/README.md create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/WebSocketClientOTA.ino create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/main.py create mode 100644 libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/requirements.txt rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClientSSL/WebSocketClientSSL.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClientSSLWithCA/WebSocketClientSSLWithCA.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClientSocketIO/WebSocketClientSocketIO.ino (97%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino (96%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClientStomp/WebSocketClientStomp.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketClientStompOverSockJs/WebSocketClientStompOverSockJs.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServer/WebSocketServer.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServerAllFunctionsDemo/WebSocketServerAllFunctionsDemo.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServerFragmentation/WebSocketServerFragmentation.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServerHooked/WebSocketServerHooked.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServerHooked/emu (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServerHooked/ws-testclient.py (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServerHttpHeaderValidation/WebSocketServerHttpHeaderValidation.ino (100%) rename libraries/{arduinoWebSockets-2.3.6/examples/esp8266 => arduinoWebSockets-2.5.2/examples/esp8266_pico}/WebSocketServer_LEDcontrol/WebSocketServer_LEDcontrol.ino (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/examples/particle/ParticleWebSocketClient/application.cpp (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/library.json (84%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/library.properties (94%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/SocketIOclient.cpp (85%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/SocketIOclient.h (79%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSockets.cpp (86%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSockets.h (88%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSockets4WebServer.h (82%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSocketsClient.cpp (93%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSocketsClient.h (89%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSocketsServer.cpp (95%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSocketsServer.h (83%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/WebSocketsVersion.h (86%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libb64/AUTHORS (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libb64/LICENSE (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libb64/cdecode.c (98%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libb64/cdecode_inc.h (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libb64/cencode.c (98%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libb64/cencode_inc.h (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libsha1/libsha1.c (100%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/src/libsha1/libsha1.h (100%) create mode 100644 libraries/arduinoWebSockets-2.5.2/tests/webSocket.html create mode 100644 libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/index.js create mode 100644 libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/package.json rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/travis/common.sh (71%) rename libraries/{arduinoWebSockets-2.3.6 => arduinoWebSockets-2.5.2}/travis/version.py (100%) diff --git a/.github/ci/install-esp32.sh b/.github/ci/install-esp32.sh index 402c4cf2..77a1b488 100644 --- a/.github/ci/install-esp32.sh +++ b/.github/ci/install-esp32.sh @@ -12,7 +12,7 @@ echo "Clone esp32 core" cd $HOME/arduino_ide/hardware mkdir esp32 cd esp32 -git clone -b 2.0.8 https://github.com/espressif/arduino-esp32.git esp32 +git clone -b 3.0.4 https://github.com/espressif/arduino-esp32.git esp32 cd esp32 git submodule update --init cd tools diff --git a/.github/ci/prepare-libs.sh b/.github/ci/prepare-libs.sh index a313ac03..1c4f5cc4 100644 --- a/.github/ci/prepare-libs.sh +++ b/.github/ci/prepare-libs.sh @@ -6,13 +6,13 @@ shopt -s globstar ls $HOME # Make sure we are inside the github workspace cd $GITHUB_WORKSPACE -cp -r ./libraries/ESP32SSDP-1.2.1 $HOME/arduino_ide/libraries/ -cp -r ./libraries/arduinoWebSockets-2.3.6 $HOME/arduino_ide/libraries/ +cp -r ./libraries/ESP32SSDP-2.0.2 $HOME/arduino_ide/libraries/ +cp -r ./libraries/arduinoWebSockets-2.5.2 $HOME/arduino_ide/libraries/ cp -r ./libraries/DHT_sensor_library_for_ESPx-1.0.6 $HOME/arduino_ide/libraries/ cp -r ./libraries/esp8266-oled-ssd1306-4.3.0 $HOME/arduino_ide/libraries/ -cp -r ./libraries/TFT_eSPI-2.4.72 $HOME/arduino_ide/libraries/ +cp -r ./libraries/TFT_eSPI-2.5.43 $HOME/arduino_ide/libraries/ cp -r ./libraries/lvgl-8.2.0 $HOME/arduino_ide/libraries/ -cp -r ./libraries/EspLuaEngine-1.0.1 $HOME/arduino_ide/libraries/ +cp -r ./libraries/EspLuaEngine-1.0.2 $HOME/arduino_ide/libraries/ cp -r ./libraries/BMx280MI-1.2.0 $HOME/arduino_ide/libraries/ #TODO add SDFat libraries according version and target diff --git a/astyle.bat b/astyle.bat deleted file mode 100644 index bd71600b..00000000 --- a/astyle.bat +++ /dev/null @@ -1,7 +0,0 @@ - -cd %~dp0esp3d -astyle --recursive --style=otbs *.h *.cpp *.ino -del /S *.ori -dir -cd .. -pause diff --git a/astyle.sh b/astyle.sh deleted file mode 100644 index 18c50c91..00000000 --- a/astyle.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -cd `dirname "$0"` -cd esp3d -astyle --recursive --style=otbs '*.h' '*.cpp' '*.ino' -rm -r -v *.ori -cd .. -read -p "Press any key to continue ..." diff --git a/docs/esp3dcnf.ini b/docs/esp3dcnf.ini index 86109d7b..9293d132 100644 --- a/docs/esp3dcnf.ini +++ b/docs/esp3dcnf.ini @@ -44,6 +44,24 @@ AP_IP = 192.168.0.1 #AP channel 1~14 AP_channel = 11 +#Ethernet STA IP Mode DHCP / STATIC +ETH_STA_IP_mode = DHCP + +#Ethernet STA static IP +ETH_STA_IP = 192.168.0.2 + +#Ethernet STA static gateway +ETH_STA_GW = 192.168.0.1 + +#Ethernet STA static mask +ETH_STA_MSK = 255.255.255.0 + +#Ethernet STA static dns +ETH_STA_DNS = 192.168.0.1 + +#Ethernet fallback mode BT, OFF +eth_sta_fallback = OFF + [services] #Active or not Serial Bridge Yes / No Serial_Bridge_active = Yes diff --git a/esp3d/configuration.h b/esp3d/configuration.h index 38a18691..a57dd975 100644 --- a/esp3d/configuration.h +++ b/esp3d/configuration.h @@ -119,7 +119,7 @@ /* Use Ethernet * Enable ethernet communications */ -// #define ETH_FEATURE +//#define ETH_FEATURE // Ethernet type (Check ETH.h eth_phy_type_t) // TYPE_ETH_PHY_LAN8720 @@ -136,20 +136,20 @@ // MODE_ETH_CLOCK_GPIO0_OUT // MODE_ETH_CLOCK_GPIO16_OUT // MODE_ETH_CLOCK_GPIO17_OUT -#define ESP3D_ETH_CLK_MODE MODE_ETH_CLOCK_GPIO17_OUT +#define ESP3D_ETH_CLK_MODE MODE_ETH_CLOCK_GPIO0_IN // Pins of ethernet board -#define ESP3D_ETH_PHY_POWER_PIN 12 -// #define ESP3D_ETH_PHY_MDC_PIN 23 -// #define ESP3D_ETH_PHY_MDIO_PIN 18 +#define ESP3D_ETH_PHY_POWER_PIN 16 +#define ESP3D_ETH_PHY_MDC_PIN 23 +#define ESP3D_ETH_PHY_MDIO_PIN 18 // Address of ethernet board -// #define ESP3D_ETH_PHY_ADDR 0 +#define ESP3D_ETH_PHY_ADDR 1 /* Use Bluetooth * Enable serial bluetooth communications */ -// #define BLUETOOTH_FEATURE +//#define BLUETOOTH_FEATURE /************************************ * @@ -283,14 +283,15 @@ * ESP_SHARED_SD //Printer SD Card is also connected to ESP3D * Does your system has SD card and how it is connected to your ESP3D */ -// #define SD_DEVICE_CONNECTION ESP_SHARED_SD + //#define SD_DEVICE_CONNECTION ESP_DIRECT_SD /* SD card library * ESP_SD_NATIVE //esp32 / esp8266 * ESP_SDIO //esp32 only * ESP_SDFAT2 //esp8266 / esp32 */ -// #define SD_DEVICE ESP_SD_NATIVE + //#define SD_DEVICE ESP_SDFAT2 + // #define SD_CARD_TYPE ESP_FYSETC_WIFI_PRO_SDCARD @@ -299,7 +300,7 @@ * SD_ONE_BIT_MODE * SD_FOUR_BIT_MODE */ -// #define SDIO_BIT_MODE SD_ONE_BIT_MODE + //#define SDIO_BIT_MODE SD_ONE_BIT_MODE /* Enable date/time on files * Set date/time on files using SNTP or last webui connection @@ -335,7 +336,13 @@ /* SD card CS pin * The pin used to select SD card in SPI mode */ -// #define ESP_SD_CS_PIN 5 + //#define ESP_SD_CS_PIN 21 + //#define ESP_SD_MISO_PIN 8 + //#define ESP_SD_MOSI_PIN 9 + //#define ESP_SD_SCK_PIN 7 + //#define ESP_SDIO_CMD_PIN 38 + //#define ESP_SDIO_D0_PIN 40 + //#define ESP_SDIO_CLK_PIN 39 /************************************ * @@ -383,7 +390,7 @@ * The pin used to reset ESP3D setting if set to low for more than 1 second at * start */ -#define ESP3D_RESET_PIN 0 +//#define ESP3D_RESET_PIN 0 /************************************ * @@ -505,9 +512,10 @@ * CAMERA_MODEL_ESP32S2_CAM_BOARD * CAMERA_MODEL_ESP32S3_CAM_LCD * CAMERA_MODEL_ESP32S3_EYE + * CAMERA_MODEL_XIAO_ESP32S3 * Camera connected to ESP board, only ones with PSRAM are supported */ -// #define CAMERA_DEVICE CAMERA_MODEL_AI_THINKER +// #define CAMERA_DEVICE CAMERA_MODEL_XIAO_ESP32S3 /* Flip vertically * Flip camera vertically @@ -621,9 +629,9 @@ // LOG_OUTPUT_SERIAL2 // LOG_OUTPUT_TELNET // LOG_OUTPUT_WEBSOCKET -// #define ESP_LOG_FEATURE LOG_OUTPUT_SERIAL0 +//#define ESP_LOG_FEATURE LOG_OUTPUT_SERIAL0 -// #define ESP3D_DEBUG_LEVEL LOG_LEVEL_DEBUG +//#define ESP3D_DEBUG_LEVEL LOG_LEVEL_DEBUG #ifdef ESP_LOG_FEATURE #define LOG_ESP3D_BAUDRATE 115200 diff --git a/esp3d/src/core/commands/ESP0.cpp b/esp3d/src/core/commands/ESP0.cpp index d2de1d55..ed6a22b0 100644 --- a/esp3d/src/core/commands/ESP0.cpp +++ b/esp3d/src/core/commands/ESP0.cpp @@ -26,15 +26,11 @@ const char* help[] = { "[ESP100](SSID) - display/set STA SSID", "[ESP101](Password) - set STA password", #endif // WIFI_FEATURE -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) "[ESP102](Mode) - display/set STA IP mode (DHCP/STATIC)", "[ESP103](IP=xxxx MSK=xxxx GW=xxxx) - display/set STA IP/Mask/GW", -#endif // WIFI_FEATURE || ETH_FEATURE -#if defined(WIFI_FEATURE) || defined(BLUETOOTH_FEATURE) || defined(ETH_FEATURE) "[ESP104](State) - display/set sta fallback mode which can be BT, SETUP, " "OFF", -#endif // WIFI_FEATURE || BLUETOOTH_FEATURE || ETH_FEATURE -#if defined(WIFI_FEATURE) "[ESP105](SSID) - display/set AP SSID", "[ESP106](Password) - set AP password", "[ESP107](IP) - display/set AP IP", @@ -53,6 +49,11 @@ const char* help[] = { "[ESP115](State) - display/set immediate Network state which can be ON, " "OFF", #endif // WIFI_FEATURE || ETH_FEATURE || BT_FEATURE +#if defined(ETH_FEATURE) + "[ESP116](Mode) - display/set ETH STA IP mode (DHCP/STATIC)", + "[ESP117](IP=xxxx MSK=xxxx GW=xxxx) - display/set ETH STA IP/Mask/GW", + "[ESP118](State) - display/set eth sta fallback mode which can be BT, Off", +#endif // ETH_FEATURE #if defined(HTTP_FEATURE) "[ESP120](State) - display/set HTTP state which can be ON, OFF", "[ESP121](Port) - display/set HTTP port ", @@ -196,13 +197,9 @@ const uint cmdlist[] = { #if defined(WIFI_FEATURE) 100, 101, #endif // WIFI_FEATURE -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) 102, 103, -#endif // WIFI_FEATURE || ETH_FEATURE -#if defined(WIFI_FEATURE) || defined(BLUETOOTH_FEATURE) || defined(ETH_FEATURE) 104, -#endif // WIFI_FEATURE || BLUETOOTH_FEATURE || ETH_FEATURE -#if defined(WIFI_FEATURE) 105, 106, 107, 108, #endif // WIFI_FEATURE #if defined(WIFI_FEATURE) || defined(BLUETOOTH_FEATURE) || defined(ETH_FEATURE) @@ -214,6 +211,9 @@ const uint cmdlist[] = { #if defined(WIFI_FEATURE) || defined(ETH_FEATURE) || defined(BT_FEATURE) 112, 114, 115, #endif // WIFI_FEATURE || ETH_FEATURE || BT_FEATURE +#if defined(ETH_FEATURE) + 116, 117, 118, +#endif // ETH_FEATURE #if defined(HTTP_FEATURE) 120, 121, #endif // HTTP_FEATURE diff --git a/esp3d/src/core/commands/ESP102.cpp b/esp3d/src/core/commands/ESP102.cpp index 731d20b6..a51b947c 100644 --- a/esp3d/src/core/commands/ESP102.cpp +++ b/esp3d/src/core/commands/ESP102.cpp @@ -18,7 +18,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "../../include/esp3d_config.h" -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) #include "../../modules/network/netconfig.h" #include "../esp3d_commands.h" #include "../esp3d_settings.h" @@ -26,9 +26,6 @@ #if defined(WIFI_FEATURE) #include "../../modules/wifi/wificonfig.h" #endif // WIFI_FEATURE -#if defined(ETH_FEATURE) -#include "../../modules/ethernet/ethconfig.h" -#endif // ETH_FEATURE #include "../../modules/authentication/authentication_service.h" #define COMMAND_ID 102 // Change STA IP mode (DHCP/STATIC) @@ -97,4 +94,4 @@ void ESP3DCommands::ESP102(int cmd_params_pos, ESP3DMessage* msg) { } } -#endif // WIFI_FEATURE || ETH_FEATURE +#endif // WIFI_FEATURE diff --git a/esp3d/src/core/commands/ESP103.cpp b/esp3d/src/core/commands/ESP103.cpp index 4820c148..cb2acc2e 100644 --- a/esp3d/src/core/commands/ESP103.cpp +++ b/esp3d/src/core/commands/ESP103.cpp @@ -18,7 +18,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "../../include/esp3d_config.h" -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) #include "../../modules/network/netconfig.h" #include "../esp3d_commands.h" #include "../esp3d_settings.h" @@ -26,9 +26,6 @@ #if defined(WIFI_FEATURE) #include "../../modules/wifi/wificonfig.h" #endif // WIFI_FEATURE -#if defined(ETH_FEATURE) -#include "../../modules/ethernet/ethconfig.h" -#endif // ETH_FEATURE #include "../../modules/authentication/authentication_service.h" #define COMMAND_ID 103 // Change STA IP/Mask/GW @@ -121,4 +118,4 @@ void ESP3DCommands::ESP103(int cmd_params_pos, ESP3DMessage* msg) { } } -#endif // WIFI_FEATURE || ETH_FEATURE +#endif // WIFI_FEATURE diff --git a/esp3d/src/core/commands/ESP104.cpp b/esp3d/src/core/commands/ESP104.cpp index 651aa05d..0630483d 100644 --- a/esp3d/src/core/commands/ESP104.cpp +++ b/esp3d/src/core/commands/ESP104.cpp @@ -18,7 +18,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "../../include/esp3d_config.h" -#if defined(WIFI_FEATURE) || defined(BLUETOOTH_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) #include "../../modules/authentication/authentication_service.h" #include "../../modules/network/netconfig.h" #include "../esp3d_commands.h" @@ -54,11 +54,6 @@ void ESP3DCommands::ESP104(int cmd_params_pos, ESP3DMessage* msg) { ok_msg = "BT"; } else #endif // BLUETOOTH_FEATURE -#if defined(WIFI_FEATURE) - if (byteValue == (uint8_t)ESP_AP_SETUP) { - ok_msg = "CONFIG"; - } else -#endif // WIFI_FEATURE if (byteValue == (uint8_t)ESP_NO_NETWORK) { ok_msg = "OFF"; } else { @@ -76,11 +71,6 @@ void ESP3DCommands::ESP104(int cmd_params_pos, ESP3DMessage* msg) { byteValue = (uint8_t)ESP_BT; } else #endif // BLUETOOTH_FEATURE -#if defined(WIFI_FEATURE) - if (tmpstr == "CONFIG") { - byteValue = (uint8_t)ESP_AP_SETUP; - } else -#endif // WIFI_FEATURE if (tmpstr == "OFF") { byteValue = (uint8_t)ESP_NO_NETWORK; } else { diff --git a/esp3d/src/core/commands/ESP116.cpp b/esp3d/src/core/commands/ESP116.cpp new file mode 100644 index 00000000..221eaa44 --- /dev/null +++ b/esp3d/src/core/commands/ESP116.cpp @@ -0,0 +1,94 @@ +/* + ESP116.cpp - ESP3D command class + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + This code 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.1 of the License, or (at your option) any later version. + + This code 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 code; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include "../../include/esp3d_config.h" +#if defined(ETH_FEATURE) +#include "../../modules/network/netconfig.h" +#include "../esp3d_commands.h" +#include "../esp3d_settings.h" +#include "../../modules/ethernet/ethconfig.h" +#include "../../modules/authentication/authentication_service.h" +#define COMMAND_ID 116 +// Change ETH STA IP mode (DHCP/STATIC) +//[ESP116][json=no] [pwd=] +void ESP3DCommands::ESP116(int cmd_params_pos, ESP3DMessage* msg) { + ESP3DClientType target = msg->origin; + ESP3DRequest requestId = msg->request_id; + (void)requestId; + msg->target = target; + msg->origin = ESP3DClientType::command; + bool hasError = false; + String error_msg = "Invalid parameters"; + String ok_msg = "ok"; + bool json = hasTag(msg, cmd_params_pos, "json"); + String tmpstr; + uint8_t byteValue = (uint8_t)-1; +#if defined(AUTHENTICATION_FEATURE) + if (msg->authentication_level == ESP3DAuthenticationLevel::guest) { + msg->authentication_level = ESP3DAuthenticationLevel::not_authenticated; + dispatchAuthenticationError(msg, COMMAND_ID, json); + return; + } +#endif // AUTHENTICATION_FEATURE + tmpstr = get_clean_param(msg, cmd_params_pos); + if (tmpstr.length() == 0) { + byteValue = ESP3DSettings::readByte(ESP_ETH_STA_IP_MODE); + if (byteValue == static_cast(DHCP_MODE)) { + ok_msg = "DHCP"; + } else if (byteValue == static_cast(STATIC_IP_MODE)) { + ok_msg = "STATIC"; + } else { + ok_msg = "Unknown:" + String(byteValue); + } + } else { +#if defined(AUTHENTICATION_FEATURE) + if (msg->authentication_level != ESP3DAuthenticationLevel::admin) { + dispatchAuthenticationError(msg, COMMAND_ID, json); + return; + } +#endif // AUTHENTICATION_FEATURE + if (tmpstr == "DHCP") { + byteValue = static_cast(DHCP_MODE); + } else if (tmpstr == "STATIC") { + byteValue = static_cast(STATIC_IP_MODE); + } else { + byteValue = (uint8_t)-1; // unknow flag so put outof range value + } + esp3d_log("got %s param for a value of %d, is valid %d", tmpstr.c_str(), + byteValue, + ESP3DSettings::isValidByteSetting(byteValue, ESP_ETH_STA_IP_MODE)); + if (ESP3DSettings::isValidByteSetting(byteValue, ESP_ETH_STA_IP_MODE)) { + esp3d_log("Value %d is valid", byteValue); + if (!ESP3DSettings::writeByte(ESP_ETH_STA_IP_MODE, byteValue)) { + hasError = true; + error_msg = "Set value failed"; + } + } else { + hasError = true; + error_msg = "Invalid parameter"; + } + } + + if (!dispatchAnswer(msg, COMMAND_ID, json, hasError, + hasError ? error_msg.c_str() : ok_msg.c_str())) { + esp3d_log_e("Error sending response to clients"); + } +} + +#endif // ETH_FEATURE diff --git a/esp3d/src/core/commands/ESP117.cpp b/esp3d/src/core/commands/ESP117.cpp new file mode 100644 index 00000000..f3282f83 --- /dev/null +++ b/esp3d/src/core/commands/ESP117.cpp @@ -0,0 +1,118 @@ +/* + ESP117.cpp - ESP3D command class + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + This code 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.1 of the License, or (at your option) any later version. + + This code 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 code; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include "../../include/esp3d_config.h" +#if defined(ETH_FEATURE) +#include "../../modules/network/netconfig.h" +#include "../esp3d_commands.h" +#include "../esp3d_settings.h" +#include "../../modules/ethernet/ethconfig.h" +#include "../../modules/authentication/authentication_service.h" +#define COMMAND_ID 117 +// Change ETH STA IP/Mask/GW +//[ESP117]IP= MSK= GW= DNS= [json=no] [pwd= +void ESP3DCommands::ESP117(int cmd_params_pos, ESP3DMessage* msg) { + ESP3DClientType target = msg->origin; + ESP3DRequest requestId = msg->request_id; + (void)requestId; + msg->target = target; + msg->origin = ESP3DClientType::command; + bool hasError = false; + String error_msg = "Invalid parameters"; + String ok_msg = "ok"; + bool json = hasTag(msg, cmd_params_pos, "json"); + String tmpstr; + const char* cmdList[] = {"IP=", "MSK=", "GW=", "DNS="}; + uint8_t cmdListSize = sizeof(cmdList) / sizeof(char*); + const ESP3DSettingIndex settingIndex[] = { + ESP_ETH_STA_IP_VALUE, ESP_ETH_STA_MASK_VALUE, ESP_ETH_STA_GATEWAY_VALUE, + ESP_ETH_STA_DNS_VALUE}; +#if defined(AUTHENTICATION_FEATURE) + if (msg->authentication_level == ESP3DAuthenticationLevel::guest) { + msg->authentication_level = ESP3DAuthenticationLevel::not_authenticated; + dispatchAuthenticationError(msg, COMMAND_ID, json); + return; + } +#endif // AUTHENTICATION_FEATURE + tmpstr = get_clean_param(msg, cmd_params_pos); + if (tmpstr.length() == 0) { + if (json) { + ok_msg = "{\"ip\":\""; + } else { + ok_msg = "IP: "; + } + ok_msg += ESP3DSettings::readIPString(ESP_ETH_STA_IP_VALUE); + if (json) { + ok_msg += "\",\"gw\":\""; + } else { + ok_msg += ", GW: "; + } + ok_msg += ESP3DSettings::readIPString(ESP_ETH_STA_GATEWAY_VALUE); + if (json) { + ok_msg += "\",\"msk\":\""; + } else { + ok_msg += ", MSK: "; + } + ok_msg += ESP3DSettings::readIPString(ESP_ETH_STA_MASK_VALUE); + if (json) { + ok_msg += "\",\"dns\":\""; + } else { + ok_msg += ", DNS: "; + } + ok_msg += ESP3DSettings::readIPString(ESP_ETH_STA_DNS_VALUE); + if (json) { + ok_msg += "\"}"; + } + } else { +#if defined(AUTHENTICATION_FEATURE) + if (msg->authentication_level != ESP3DAuthenticationLevel::admin) { + dispatchAuthenticationError(msg, COMMAND_ID, json); + return; + } +#endif // AUTHENTICATION_FEATURE + bool hasParam = false; + for (uint8_t i = 0; i < cmdListSize; i++) { + tmpstr = get_param(msg, cmd_params_pos, cmdList[i]); + if (tmpstr.length() != 0) { + hasParam = true; + if (ESP3DSettings::isValidIPStringSetting(tmpstr.c_str(), + settingIndex[i])) { + esp3d_log("Value %s is valid", tmpstr.c_str()); + if (!ESP3DSettings::writeIPString(settingIndex[i], tmpstr.c_str())) { + hasError = true; + error_msg = "Set value failed"; + } + } else { + hasError = true; + error_msg = "Invalid parameter"; + } + } + } + if (!hasParam && !hasError) { + hasError = true; + error_msg = "Invalid parameter"; + } + } + if (!dispatchAnswer(msg, COMMAND_ID, json, hasError, + hasError ? error_msg.c_str() : ok_msg.c_str())) { + esp3d_log_e("Error sending response to clients"); + } +} + +#endif // ETH_FEATURE diff --git a/esp3d/src/core/commands/ESP118.cpp b/esp3d/src/core/commands/ESP118.cpp new file mode 100644 index 00000000..23fd06a5 --- /dev/null +++ b/esp3d/src/core/commands/ESP118.cpp @@ -0,0 +1,101 @@ +/* + ESP118.cpp - ESP3D command class + + Copyright (c) 2014 Luc Lebosse. All rights reserved. + + This code 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.1 of the License, or (at your option) any later version. + + This code 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 code; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include "../../include/esp3d_config.h" +#if defined(ETH_FEATURE) +#include "../../modules/authentication/authentication_service.h" +#include "../../modules/network/netconfig.h" +#include "../esp3d_commands.h" +#include "../esp3d_settings.h" + +#define COMMAND_ID 118 +// Set ETH STA fallback mode state at boot which can be BT, WIFI-SETUP, OFF +//[ESP118] json= pwd= +void ESP3DCommands::ESP118(int cmd_params_pos, ESP3DMessage* msg) { + ESP3DClientType target = msg->origin; + ESP3DRequest requestId = msg->request_id; + (void)requestId; + msg->target = target; + msg->origin = ESP3DClientType::command; + bool hasError = false; + String error_msg = "Invalid parameters"; + String ok_msg = "ok"; + bool json = hasTag(msg, cmd_params_pos, "json"); + String tmpstr; + uint8_t byteValue = (uint8_t)-1; +#if defined(AUTHENTICATION_FEATURE) + if (msg->authentication_level == ESP3DAuthenticationLevel::guest) { + msg->authentication_level = ESP3DAuthenticationLevel::not_authenticated; + dispatchAuthenticationError(msg, COMMAND_ID, json); + return; + } +#endif // AUTHENTICATION_FEATURE + tmpstr = get_clean_param(msg, cmd_params_pos); + if (tmpstr.length() == 0) { + byteValue = ESP3DSettings::readByte(ESP_ETH_STA_FALLBACK_MODE); +#if defined(BLUETOOTH_FEATURE) + if (byteValue == (uint8_t)ESP_BT) { + ok_msg = "BT"; + } else +#endif // BLUETOOTH_FEATURE + if (byteValue == (uint8_t)ESP_NO_NETWORK) { + ok_msg = "OFF"; + } else { + ok_msg = "Unknown"; + } + } else { +#if defined(AUTHENTICATION_FEATURE) + if (msg->authentication_level != ESP3DAuthenticationLevel::admin) { + dispatchAuthenticationError(msg, COMMAND_ID, json); + return; + } +#endif // AUTHENTICATION_FEATURE +#if defined(BLUETOOTH_FEATURE) + if (tmpstr == "BT") { + byteValue = (uint8_t)ESP_BT; + } else +#endif // BLUETOOTH_FEATURE + if (tmpstr == "OFF") { + byteValue = (uint8_t)ESP_NO_NETWORK; + } else { + byteValue = (uint8_t)-1; // unknow flag so put outof range value + } + esp3d_log( + "got %s param for a value of %d, is valid %d", tmpstr.c_str(), + byteValue, + ESP3DSettings::isValidByteSetting(byteValue, ESP_ETH_STA_FALLBACK_MODE)); + if (ESP3DSettings::isValidByteSetting(byteValue, ESP_ETH_STA_FALLBACK_MODE)) { + esp3d_log("Value %d is valid", byteValue); + if (!ESP3DSettings::writeByte(ESP_ETH_STA_FALLBACK_MODE, byteValue)) { + hasError = true; + error_msg = "Set value failed"; + } + } else { + hasError = true; + error_msg = "Invalid parameter"; + } + } + + if (!dispatchAnswer(msg, COMMAND_ID, json, hasError, + hasError ? error_msg.c_str() : ok_msg.c_str())) { + esp3d_log_e("Error sending response to clients"); + } +} + +#endif // ETH_FEATURE diff --git a/esp3d/src/core/commands/ESP301.cpp b/esp3d/src/core/commands/ESP301.cpp index 8eb4c004..d1b99029 100644 --- a/esp3d/src/core/commands/ESP301.cpp +++ b/esp3d/src/core/commands/ESP301.cpp @@ -51,23 +51,40 @@ void ESP3DCommands::ESP301(int cmd_params_pos, ESP3DMessage* msg) { #endif // AUTHENTICATION_FEATURE tmpstr = get_clean_param(msg, cmd_params_pos); if (tmpstr.length() == 0) { + String error = esp3d_lua_interpreter.getLastError(); if (!esp3d_lua_interpreter.isScriptRunning()) { if (json) { - ok_msg = "{\"status\":\"idle\"}"; + ok_msg = "{\"status\":\"idle\""; + if (error.length() > 0) { + ok_msg += ",\"error\":\"" + error + "\""; + } + ok_msg+="}"; } else { ok_msg = "idle"; + if (error.length() > 0) { + ok_msg += ", error: " + error; + } } } else { String status = esp3d_lua_interpreter.isScriptPaused() ? "paused" : "running"; + + if (error.length() > 0) { + status = "error"; + } String scriptName = esp3d_lua_interpreter.getCurrentScriptName(); String duration = esp3d_string::formatDuration( esp3d_lua_interpreter.getExecutionTime()); if (json) { + String errorMsg = error.length() > 0 ? ",\"error\":\"" + error + "\"" : ""; ok_msg = "{\"status\":\"" + status + "\",\"script\":\"" + scriptName + - "\",\"duration\":\"" + duration + "\"}"; + "\",\"duration\":\"" + duration + "\"" + errorMsg + "}"; } else { - ok_msg = status + ", " + scriptName + ", duration " + duration; + ok_msg = status; + if (error.length() > 0) { + ok_msg += ": " + error; + } + ok_msg += ", " + scriptName + ", duration " + duration; } } } else { @@ -113,7 +130,7 @@ void ESP3DCommands::ESP301(int cmd_params_pos, ESP3DMessage* msg) { } } } else if (tmpstr == "ABORT") { - esp3d_lua_interpreter.abortCurrentScript(); + esp3d_lua_interpreter.abortScript(); ok_msg = "Script aborted"; } } else { diff --git a/esp3d/src/core/commands/ESP400.cpp b/esp3d/src/core/commands/ESP400.cpp index dfe1bf37..5f8be498 100644 --- a/esp3d/src/core/commands/ESP400.cpp +++ b/esp3d/src/core/commands/ESP400.cpp @@ -91,6 +91,19 @@ const char* FallbackValues[] = {"0" #endif // BLUETOOTH_FEATURE }; +const char* EthFallbackValues[] = {"0" +#ifdef BLUETOOTH_FEATURE + , + "3" +#endif // BLUETOOTH_FEATURE +}; +const char* EthFallbackLabels[] = {"none" +#ifdef BLUETOOTH_FEATURE + , + "bt" +#endif // BLUETOOTH_FEATURE +}; + const char* FirmwareLabels[] = {"Unknown", "Grbl", "Marlin", "Smoothieware", "Repetier"}; @@ -204,6 +217,30 @@ void ESP3DCommands::ESP400(int cmd_params_pos, ESP3DMessage* msg) { dispatchSetting(json, "network/network", ESP_BOOT_RADIO_STATE, "radio_boot", YesNoValues, YesNoLabels, sizeof(YesNoValues) / sizeof(char*), -1, -1, -1, NULL, true, target, requestId); +#if defined(ETH_FEATURE) + // Ethernet STA IP mode + dispatchSetting(json, "network/eth-sta", ESP_ETH_STA_IP_MODE, "ip mode", IpModeValues, + IpModeLabels, sizeof(IpModeLabels) / sizeof(char*), -1, -1, + -1, nullptr, true, target, requestId); + // Ethernet STA static IP + dispatchSetting(json, "network/eth-sta", ESP_ETH_STA_IP_VALUE, "ip", nullptr, nullptr, + -1, -1, -1, -1, nullptr, true, target, requestId); + + // Ethernet STA static Gateway + dispatchSetting(json, "network/eth-sta", ESP_ETH_STA_GATEWAY_VALUE, "gw", nullptr, + nullptr, -1, -1, -1, -1, nullptr, true, target, requestId); + // Ethernet STA static Mask + dispatchSetting(json, "network/eth-sta", ESP_ETH_STA_MASK_VALUE, "msk", nullptr, + nullptr, -1, -1, -1, -1, nullptr, true, target, requestId); + // Ethernet STA static DNS + dispatchSetting(json, "network/eth-sta", ESP_ETH_STA_DNS_VALUE, "DNS", nullptr, + nullptr, -1, -1, -1, -1, nullptr, true, target, requestId); + // Ethernet Sta fallback mode + dispatchSetting(json, "network/eth-sta", ESP_ETH_STA_FALLBACK_MODE, + "sta fallback mode", EthFallbackValues, EthFallbackLabels, + sizeof(EthFallbackValues) / sizeof(char*), -1, -1, -1, nullptr, + true, target, requestId); +#endif // ETH_FEATURE #ifdef WIFI_FEATURE // STA SSID network/sta dispatchSetting(json, "network/sta", ESP_STA_SSID, "SSID", nullptr, nullptr, @@ -214,7 +251,7 @@ void ESP3DCommands::ESP400(int cmd_params_pos, ESP3DMessage* msg) { nullptr, 64, 8, 0, -1, nullptr, true, target, requestId); #endif // WIFI_FEATURE -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) // STA IP mode dispatchSetting(json, "network/sta", ESP_STA_IP_MODE, "ip mode", IpModeValues, IpModeLabels, sizeof(IpModeLabels) / sizeof(char*), -1, -1, @@ -233,15 +270,15 @@ void ESP3DCommands::ESP400(int cmd_params_pos, ESP3DMessage* msg) { dispatchSetting(json, "network/sta", ESP_STA_DNS_VALUE, "DNS", nullptr, nullptr, -1, -1, -1, -1, nullptr, true, target, requestId); -#endif // WIFI_FEATURE || ETH_FEATURE +#endif // WIFI_FEATURE -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) || defined(BT_FEATURE) +#if defined(WIFI_FEATURE) // Sta fallback mode dispatchSetting(json, "network/sta", ESP_STA_FALLBACK_MODE, "sta fallback mode", FallbackValues, FallbackLabels, sizeof(FallbackValues) / sizeof(char*), -1, -1, -1, nullptr, true, target, requestId); -#endif // WIFI_FEATURE || ETH_FEATURE || BT_FEATURE +#endif // WIFI_FEATURE #if defined(WIFI_FEATURE) // AP SSID network/ap dispatchSetting(json, "network/ap", ESP_AP_SSID, "SSID", nullptr, nullptr, 32, diff --git a/esp3d/src/core/commands/ESP420.cpp b/esp3d/src/core/commands/ESP420.cpp index a75a5a82..5980011b 100644 --- a/esp3d/src/core/commands/ESP420.cpp +++ b/esp3d/src/core/commands/ESP420.cpp @@ -157,6 +157,14 @@ void ESP3DCommands::ESP420(int cmd_params_pos, ESP3DMessage* msg) { // FW architecture tmpstr = ESP3DSettings::TargetBoard(); + #ifdef ARDUINO_ARCH_ESP32 + tmpstr = ESP.getChipModel(); + tmpstr+="-"; + tmpstr+=ESP.getChipRevision(); + tmpstr+="-"; + tmpstr+=ESP.getChipCores(); + tmpstr+="@"; + #endif // ARDUINO_ARCH_ESP32 if (!dispatchIdValue(json, "FW arch", tmpstr.c_str(), target, requestId, false)) { return; @@ -389,6 +397,7 @@ void ESP3DCommands::ESP420(int cmd_params_pos, ESP3DMessage* msg) { return; } // IP mode + esp3d_log_d("IP mode %d", NetConfig::isIPModeDHCP(ESP_ETH_STA)); tmpstr = (NetConfig::isIPModeDHCP(ESP_ETH_STA)) ? "dhcp" : "static"; if (!dispatchIdValue(json, "ip mode", tmpstr.c_str(), target, requestId, false)) { @@ -418,6 +427,11 @@ void ESP3DCommands::ESP420(int cmd_params_pos, ESP3DMessage* msg) { false)) { return; } + } else { + if (!dispatchIdValue(json, "ethernet", "OFF", target, requestId, + false)) { + return; + } } #endif // ETH_FEATURE #if defined(WIFI_FEATURE) diff --git a/esp3d/src/core/commands/ESP710.cpp b/esp3d/src/core/commands/ESP710.cpp index 010e6a1e..0bf68785 100644 --- a/esp3d/src/core/commands/ESP710.cpp +++ b/esp3d/src/core/commands/ESP710.cpp @@ -56,7 +56,7 @@ void ESP3DCommands::ESP710(int cmd_params_pos, ESP3DMessage* msg) { } else { if (formatfs) { ok_msg = "Starting formating..."; - endMsg = ESP3DMessageManager::copyMsgInfos(*msg); + endMsg = esp3d_message_manager.copyMsgInfos(*msg); } else { hasError = true; error_msg = "Invalid parameter"; diff --git a/esp3d/src/core/commands/ESP715.cpp b/esp3d/src/core/commands/ESP715.cpp index 84f34aa6..2f7570a7 100644 --- a/esp3d/src/core/commands/ESP715.cpp +++ b/esp3d/src/core/commands/ESP715.cpp @@ -57,7 +57,7 @@ void ESP3DCommands::ESP715(int cmd_params_pos, ESP3DMessage* msg) { if (formatsd) { if (ESP_SD::getState() != ESP_SDCARD_BUSY) { ok_msg = "Starting formating..."; - endMsg = ESP3DMessageManager::copyMsgInfos(*msg); + endMsg = esp3d_message_manager.copyMsgInfos(*msg); } else { hasError = true; error_msg = "SD card busy"; diff --git a/esp3d/src/core/commands/ESP720.cpp b/esp3d/src/core/commands/ESP720.cpp index 1406ac29..1690760c 100644 --- a/esp3d/src/core/commands/ESP720.cpp +++ b/esp3d/src/core/commands/ESP720.cpp @@ -49,7 +49,11 @@ void ESP3DCommands::ESP720(int cmd_params_pos, ESP3DMessage* msg) { #endif // AUTHENTICATION_FEATURE ESP3DMessage msgInfo; - ESP3DMessageManager::copyMsgInfos(&msgInfo, *msg); + esp3d_log("Copy msg infos"); + if (!esp3d_message_manager.copyMsgInfos(&msgInfo, *msg)) { + esp3d_log_e("Error copying msg infos"); + return; + } tmpstr = get_clean_param(msg, cmd_params_pos); if (tmpstr.length() == 0) { @@ -104,7 +108,7 @@ void ESP3DCommands::ESP720(int cmd_params_pos, ESP3DMessage* msg) { if (!json) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); if (newMsg) { newMsg->type = ESP3DMessageType::core; if (!dispatch(newMsg, ok_msg.c_str())) { @@ -156,7 +160,7 @@ void ESP3DCommands::ESP720(int cmd_params_pos, ESP3DMessage* msg) { if (!json) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); if (newMsg) { newMsg->type = ESP3DMessageType::core; if (!dispatch(newMsg, ok_msg.c_str())) { @@ -202,7 +206,7 @@ void ESP3DCommands::ESP720(int cmd_params_pos, ESP3DMessage* msg) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); newMsg->type = ESP3DMessageType::tail; if (!dispatch(newMsg, ok_msg.c_str())) { esp3d_log_e("Error sending response to clients"); diff --git a/esp3d/src/core/commands/ESP740.cpp b/esp3d/src/core/commands/ESP740.cpp index e6f8e6e6..2f3e6bf5 100644 --- a/esp3d/src/core/commands/ESP740.cpp +++ b/esp3d/src/core/commands/ESP740.cpp @@ -49,7 +49,7 @@ void ESP3DCommands::ESP740(int cmd_params_pos, ESP3DMessage* msg) { #endif // AUTHENTICATION_FEATURE ESP3DMessage msgInfo; - ESP3DMessageManager::copyMsgInfos(&msgInfo, *msg); + esp3d_message_manager.copyMsgInfos(&msgInfo, *msg); tmpstr = get_clean_param(msg, cmd_params_pos); if (tmpstr.length() == 0) { @@ -118,7 +118,7 @@ void ESP3DCommands::ESP740(int cmd_params_pos, ESP3DMessage* msg) { if (!json) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); if (newMsg) { newMsg->type = ESP3DMessageType::core; if (!dispatch(newMsg, ok_msg.c_str())) { @@ -170,7 +170,7 @@ void ESP3DCommands::ESP740(int cmd_params_pos, ESP3DMessage* msg) { if (!json) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); if (newMsg) { newMsg->type = ESP3DMessageType::core; if (!dispatch(newMsg, ok_msg.c_str())) { @@ -216,7 +216,7 @@ void ESP3DCommands::ESP740(int cmd_params_pos, ESP3DMessage* msg) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); newMsg->type = ESP3DMessageType::tail; if (!dispatch(newMsg, ok_msg.c_str())) { esp3d_log_e("Error sending response to clients"); diff --git a/esp3d/src/core/commands/ESP780.cpp b/esp3d/src/core/commands/ESP780.cpp index f0307a0e..f4f98ca2 100644 --- a/esp3d/src/core/commands/ESP780.cpp +++ b/esp3d/src/core/commands/ESP780.cpp @@ -49,7 +49,7 @@ void ESP3DCommands::ESP780(int cmd_params_pos, ESP3DMessage* msg) { #endif // AUTHENTICATION_FEATURE ESP3DMessage msgInfo; - ESP3DMessageManager::copyMsgInfos(&msgInfo, *msg); + esp3d_message_manager.copyMsgInfos(&msgInfo, *msg); tmpstr = get_clean_param(msg, cmd_params_pos); if (tmpstr.length() == 0) { @@ -105,7 +105,7 @@ void ESP3DCommands::ESP780(int cmd_params_pos, ESP3DMessage* msg) { if (!json) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); if (newMsg) { newMsg->type = ESP3DMessageType::core; if (!dispatch(newMsg, ok_msg.c_str())) { @@ -157,7 +157,7 @@ void ESP3DCommands::ESP780(int cmd_params_pos, ESP3DMessage* msg) { if (!json) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); if (newMsg) { newMsg->type = ESP3DMessageType::core; if (!dispatch(newMsg, ok_msg.c_str())) { @@ -203,7 +203,7 @@ void ESP3DCommands::ESP780(int cmd_params_pos, ESP3DMessage* msg) { ok_msg += "\n"; } - ESP3DMessage* newMsg = ESP3DMessageManager::copyMsgInfos(msgInfo); + ESP3DMessage* newMsg = esp3d_message_manager.copyMsgInfos(msgInfo); newMsg->type = ESP3DMessageType::tail; if (!dispatch(newMsg, ok_msg.c_str())) { esp3d_log_e("Error sending response to clients"); diff --git a/esp3d/src/core/esp3d.cpp b/esp3d/src/core/esp3d.cpp index c3d6028f..d8177f9a 100644 --- a/esp3d/src/core/esp3d.cpp +++ b/esp3d/src/core/esp3d.cpp @@ -55,6 +55,9 @@ #endif // SD_UPDATE_FEATURE #include "../modules/boot_delay/boot_delay.h" #include "esp3d_message.h" +#ifdef ESP_LUA_INTERPRETER_FEATURE +#include "../modules/lua_interpreter/lua_interpreter_service.h" +#endif // ESP_LUA_INTERPRETER_FEATURE bool Esp3D::restart = false; @@ -179,6 +182,10 @@ void Esp3D::handle() { #if defined(GCODE_HOST_FEATURE) esp3d_gcode_host.handle(); #endif // GCODE_HOST_FEATURE + +#ifdef ESP_LUA_INTERPRETER_FEATURE + esp3d_lua_interpreter.handle(); +#endif // ESP_LUA_INTERPRETER_FEATURE } bool Esp3D::started() { return _started; } diff --git a/esp3d/src/core/esp3d_commands.cpp b/esp3d/src/core/esp3d_commands.cpp index 1a6d4151..8830bd77 100644 --- a/esp3d/src/core/esp3d_commands.cpp +++ b/esp3d/src/core/esp3d_commands.cpp @@ -388,7 +388,7 @@ void ESP3DCommands::execute_internal_command(int cmd, int cmd_params_pos, ESP101(cmd_params_pos, msg); break; #endif // WIFI_FEATURE -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) // Change STA IP mode (DHCP/STATIC) //[ESP102]pwd= case 102: @@ -399,15 +399,11 @@ void ESP3DCommands::execute_internal_command(int cmd, int cmd_params_pos, case 103: ESP103(cmd_params_pos, msg); break; -#endif // WIFI_FEATURE ||ETH_FEATURE -#if defined(WIFI_FEATURE) || defined(BLUETOOTH_FEATURE) || defined(ETH_FEATURE) // Set fallback mode which can be BT, WIFI-AP, OFF //[ESP104]pwd= case 104: ESP104(cmd_params_pos, msg); break; -#endif // WIFI_FEATURE || BLUETOOTH_FEATURE || ETH_FEATURE) -#if defined(WIFI_FEATURE) // AP SSID //[ESP105][pwd=] case 105: @@ -465,6 +461,24 @@ void ESP3DCommands::execute_internal_command(int cmd, int cmd_params_pos, break; #endif // WIFI_FEATURE|| ETH_FEATURE || BT_FEATURE +#if defined(ETH_FEATURE) + // Change ETH STA IP mode (DHCP/STATIC) + //[ESP116]pwd= + case 116: + ESP102(cmd_params_pos, msg); + break; + // Change ETH STA IP/Mask/GW + //[ESP117]IP= MSK= GW= pwd= + case 117: + ESP117(cmd_params_pos, msg); + break; + // Set fallback mode which can be BT, OFF + //[ESP118]pwd= + case 118: + ESP118(cmd_params_pos, msg); + break; +#endif // ETH_FEATURE + #ifdef HTTP_FEATURE // Set HTTP state which can be ON, OFF //[ESP120]pwd= @@ -1165,9 +1179,9 @@ void ESP3DCommands::process(ESP3DMessage *msg) { esp3d_log("Execute internal command %d", cmdId); execute_internal_command(cmdId, espcmdpos, msg); } else { - esp3d_log("Dispatch command, len %d, from %d(%s) to %d(%s)", msg->size, + /*esp3d_log("Dispatch command, len %d, from %d(%s) to %d(%s)", msg->size, static_cast(msg->origin), GETCLIENTSTR(msg->origin), - static_cast(msg->target), GETCLIENTSTR(msg->target)); + static_cast(msg->target), GETCLIENTSTR(msg->target));*/ // Work around to avoid to dispatch single \n or \r to everyone as it is // part of previous ESP3D command @@ -1177,10 +1191,11 @@ void ESP3DCommands::process(ESP3DMessage *msg) { lastIsESP3D = false; // delete message esp3d_log("Delete message"); - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); return; } lastIsESP3D = false; + esp3d_log("Dispatch message: %s", msg->data); dispatch(msg); } } @@ -1206,25 +1221,25 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg, uint8_t *sbuf, size_t len) { } tmpstr += '\n'; esp3d_log("update command success: *%s*", tmpstr.c_str()); - if (!ESP3DMessageManager::setDataContent(msg, (uint8_t *)tmpstr.c_str(), + if (!esp3d_message_manager.setDataContent(msg, (uint8_t *)tmpstr.c_str(), tmpstr.length())) { esp3d_log_e("set data content failed"); - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); return false; } } else { esp3d_log("format command success, no need to update"); - if (!ESP3DMessageManager::setDataContent(msg, sbuf, len)) { + if (!esp3d_message_manager.setDataContent(msg, sbuf, len)) { esp3d_log_e("set data content failed"); - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); return false; } } } else { esp3d_log("not unique or tail message"); - if (!ESP3DMessageManager::setDataContent(msg, sbuf, len)) { + if (!esp3d_message_manager.setDataContent(msg, sbuf, len)) { esp3d_log_e("set data content failed"); - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); return false; } } @@ -1235,7 +1250,7 @@ bool ESP3DCommands::dispatch(uint8_t *sbuf, size_t size, ESP3DClientType target, ESP3DRequest requestId, ESP3DMessageType type, ESP3DClientType origin, ESP3DAuthenticationLevel authentication_level) { - ESP3DMessage *newMsgPtr = ESP3DMessageManager::newMsg(origin, target); + ESP3DMessage *newMsgPtr = esp3d_message_manager.newMsg(origin, target); if (newMsgPtr) { newMsgPtr->request_id = requestId; newMsgPtr->type = type; @@ -1249,7 +1264,7 @@ bool ESP3DCommands::dispatch(const char *sbuf, ESP3DClientType target, ESP3DRequest requestId, ESP3DMessageType type, ESP3DClientType origin, ESP3DAuthenticationLevel authentication_level) { - ESP3DMessage *newMsgPtr = ESP3DMessageManager::newMsg(origin, target); + ESP3DMessage *newMsgPtr = esp3d_message_manager.newMsg(origin, target); if (newMsgPtr) { newMsgPtr->request_id = requestId; newMsgPtr->type = type; @@ -1281,7 +1296,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { switch (msg->target) { case ESP3DClientType::no_client: esp3d_log("No client message"); - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); break; #if COMMUNICATION_PROTOCOL == RAW_SERIAL case ESP3DClientType::serial: @@ -1303,7 +1318,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { MYSERIAL1.write('\n'); } } - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); break; case ESP3DClientType::socket_serial: @@ -1413,7 +1428,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { tmp.replace("\n", " "); tmp.replace("\r", ""); tmp += "\n"; - if (ESP3DMessageManager::setDataContent(msg, (uint8_t *)tmp.c_str(), + if (esp3d_message_manager.setDataContent(msg, (uint8_t *)tmp.c_str(), tmp.length())) { return dispatch(msg); } @@ -1432,7 +1447,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::remote_screen; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::remote_screen; dispatch(copy_msg); @@ -1451,7 +1466,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::lua_script; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::lua_script; dispatch(copy_msg); @@ -1471,7 +1486,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->request_id.id = ESP_OUTPUT_STATUS; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::rendering; copy_msg->request_id.id = ESP_OUTPUT_STATUS; @@ -1491,7 +1506,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::echo_serial; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::echo_serial; dispatch(copy_msg); @@ -1509,7 +1524,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::serial_bridge; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::serial_bridge; dispatch(copy_msg); @@ -1528,7 +1543,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::bluetooth; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::bluetooth; dispatch(copy_msg); @@ -1547,7 +1562,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::telnet; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::telnet; dispatch(copy_msg); @@ -1570,7 +1585,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::webui_websocket; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::webui_websocket; dispatch(copy_msg); @@ -1592,7 +1607,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { msg->target = ESP3DClientType::websocket; } else { // duplicate message because current is already pending - ESP3DMessage *copy_msg = ESP3DMessageManager::copyMsg(*msg); + ESP3DMessage *copy_msg = esp3d_message_manager.copyMsg(*msg); if (copy_msg) { copy_msg->target = ESP3DClientType::websocket; dispatch(copy_msg); @@ -1624,7 +1639,7 @@ bool ESP3DCommands::dispatch(ESP3DMessage *msg) { // clear message if (!sendOk) { esp3d_log_e("Send msg failed"); - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); } return sendOk; } diff --git a/esp3d/src/core/esp3d_commands.h b/esp3d/src/core/esp3d_commands.h index 113285b0..eea72bca 100644 --- a/esp3d/src/core/esp3d_commands.h +++ b/esp3d/src/core/esp3d_commands.h @@ -53,14 +53,10 @@ class ESP3DCommands { void ESP100(int cmd_params_pos, ESP3DMessage* msg); void ESP101(int cmd_params_pos, ESP3DMessage* msg); #endif // WIFI_FEATURE -#if defined(WIFI_FEATURE) || defined(ETH_FEATURE) +#if defined(WIFI_FEATURE) void ESP102(int cmd_params_pos, ESP3DMessage* msg); void ESP103(int cmd_params_pos, ESP3DMessage* msg); -#endif // WIFI_FEATURE ||ETH_FEATURE -#if defined(WIFI_FEATURE) || defined(BLUETOOTH_FEATURE) || defined(ETH_FEATURE) void ESP104(int cmd_params_pos, ESP3DMessage* msg); -#endif // WIFI_FEATURE || BLUETOOTH_FEATURE || ETH_FEATURE -#if defined(WIFI_FEATURE) void ESP105(int cmd_params_pos, ESP3DMessage* msg); void ESP106(int cmd_params_pos, ESP3DMessage* msg); void ESP107(int cmd_params_pos, ESP3DMessage* msg); @@ -77,6 +73,11 @@ class ESP3DCommands { void ESP114(int cmd_params_pos, ESP3DMessage* msg); void ESP115(int cmd_params_pos, ESP3DMessage* msg); #endif // WIFI_FEATURE || BLUETOOTH_FEATURE || ETH_FEATURE +#if defined(ETH_FEATURE) + void ESP116(int cmd_params_pos, ESP3DMessage* msg); + void ESP117(int cmd_params_pos, ESP3DMessage* msg); + void ESP118(int cmd_params_pos, ESP3DMessage* msg); +#endif // ETH_FEATURE #if defined(HTTP_FEATURE) void ESP120(int cmd_params_pos, ESP3DMessage* msg); void ESP121(int cmd_params_pos, ESP3DMessage* msg); diff --git a/esp3d/src/core/esp3d_hal.cpp b/esp3d/src/core/esp3d_hal.cpp index f077c4de..7d2a2792 100644 --- a/esp3d/src/core/esp3d_hal.cpp +++ b/esp3d/src/core/esp3d_hal.cpp @@ -34,9 +34,13 @@ #endif // __has_include ("rtc_wdt.h") #endif // CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 #include -#include +#include +#include #include + +#if !CONFIG_IDF_TARGET_ESP32C6 #include +#endif // !CONFIG_IDF_TARGET_ESP32C6 TaskHandle_t ESP3DHal::xHandle = nullptr; #endif // ARDUINO_ARCH_ESP32 @@ -135,10 +139,7 @@ void ESP3DHal::analogRange(uint32_t range) { // Setup bool ESP3DHal::begin() { -#if defined(ARDUINO_ARCH_ESP32) && defined(CAMERA_DEVICE) - esp3d_log("Disable brown out"); - WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // disable brownout detector -#endif // ARDUINO_ARCH_ESP32 && CAMERA_DEVICE + checkTWDT(); // Clear all wifi state WiFi.persistent(false); WiFi.disconnect(true); @@ -160,47 +161,61 @@ bool ESP3DHal::begin() { // End ESP3D void ESP3DHal::end() {} +void ESP3DHal::checkTWDT() { + // ESP32-C6 Seems not working with esp_task_wdt_reset() + // I itinitally though it was wrong initialization of TWDT + // doing esp_task_wdt_init() is not working + // but esp_task_wdt_reconfigure() is working + // unfortunately it is still not working with esp_task_wdt_reset() + // so because doing esp_task_wdt_reconfigure and not do not change the + // behavior so I comment it for now as note Instead I use vTaskDelay(1) to + // feed the WDT and seems ok delay(1) seems also ok + /* + #if CONFIG_IDF_TARGET_ESP32C6 + //ESP32-C6 + esp_err_t err = esp_task_wdt_status(NULL); + if (err == ESP_ERR_NOT_FOUND) { + esp3d_log_e("WDT was never initialized"); + esp_task_wdt_config_t twdt_config = { + .timeout_ms = 2 * 1000, + .idle_core_mask = (1 << 0), + .trigger_panic = true, + }; + err = esp_task_wdt_reconfigure(&twdt_config); + if (err == ESP_ERR_INVALID_STATE) { + esp3d_log_e("WDT already initialized"); + } else if (err != ESP_OK) { + esp3d_log_e("WDT cannot be setup"); + } else { + esp3d_log("WDT setup ok"); + } + } + #endif // CONFIG_IDF_TARGET_ESP32C6 + */ +} + // Watchdog feeder void ESP3DHal::wdtFeed() { +#ifdef ARDUINO_ARCH_ESP32 + vTaskDelay(1); + return; +#endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 ESP.wdtFeed(); #endif // ARDUINO_ARCH_ESP8266 -#ifdef ARDUINO_ARCH_ESP32 - static uint64_t lastYield = 0; - uint64_t now = millis(); - if ((now - lastYield) > 2000) { - lastYield = now; - vTaskDelay(5); // delay 1 RTOS tick - } -#if !defined(DISABLE_WDT_ESP3DLIB_TASK) && !defined(DISABLE_WDT_CORE_0) -#if CONFIG_IDF_TARGET_ESP32 - // FIXME: not implemented - rtc_wdt_feed(); -#endif // CONFIG_IDF_TARGET_ESP32S2 -#endif //! defined(DISABLE_WDT_ESP3DLIB_TASK) && !defined(DISABLE_WDT_CORE_0) -#ifndef DISABLE_WDT_ESP3DLIB_TASK - if (xHandle && esp_task_wdt_status(xHandle) == ESP_OK) { - if (esp_task_wdt_reset() != ESP_OK) { - esp3d_log_e("WDT Reset failed"); - } - } -#endif // DISABLE_WDT_ESP3DLIB_TASK -#endif // ARDUINO_ARCH_ESP32 } // wait function void ESP3DHal::wait(uint32_t milliseconds) { -#if defined(ASYNCWEBSERVER) + #ifdef ARDUINO_ARCH_ESP32 uint32_t timeout = millis(); while ((millis() - timeout) < milliseconds) { wdtFeed(); } -#else // !(ASYNCWEBSERVER - wdtFeed(); - // before 0 was acceptable, now it seems need to put 5 to have some effect if - // on esp32 core 0 - delay(milliseconds < 5 ? 5 : milliseconds); -#endif // !ASYNCWEBSERVER +#endif // CONFIG_IDF_TARGET_ESP32 +#ifdef ARDUINO_ARCH_ESP8266 +delay(milliseconds); +#endif // ARDUINO_ARCH_ESP8266 } uint16_t ESP3DHal::getChipID() { diff --git a/esp3d/src/core/esp3d_hal.h b/esp3d/src/core/esp3d_hal.h index b505f6e5..da59ea0c 100644 --- a/esp3d/src/core/esp3d_hal.h +++ b/esp3d/src/core/esp3d_hal.h @@ -49,6 +49,7 @@ class ESP3DHal { static void analogWriteFreq(uint32_t freq); static void analogRange(uint32_t range); static const char * arduinoVersion(); + static void checkTWDT(); #if defined(ARDUINO_ARCH_ESP32) static TaskHandle_t xHandle; #endif // ARDUINO_ARCH_ESP32 diff --git a/esp3d/src/core/esp3d_message.cpp b/esp3d/src/core/esp3d_message.cpp index f3b48daa..bd7e7e41 100644 --- a/esp3d/src/core/esp3d_message.cpp +++ b/esp3d/src/core/esp3d_message.cpp @@ -24,28 +24,67 @@ ESP3DRequest no_id{.id = 0}; +ESP3DMessageManager esp3d_message_manager; + +ESP3DMessageManager::ESP3DMessageManager() { + _mutex = xSemaphoreCreateMutex(); #if defined(ESP_LOG_FEATURE) -int msg_counting = 0; + _msg_counting = 0; #endif // ESP_LOG_FEATURE +} + +ESP3DMessageManager::~ESP3DMessageManager() { vSemaphoreDelete(_mutex); } bool ESP3DMessageManager::deleteMsg(ESP3DMessage* message) { - if (!message) return false; + esp3d_log("Delete msg"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + bool result = _deleteMsg(message); + xSemaphoreGive(_mutex); + esp3d_log("Delete msg done"); + return result; + } else { + esp3d_log_e("Mutex not taken"); + } + return false; +} + +bool ESP3DMessageManager::_deleteMsg(ESP3DMessage* message) { + esp3d_log("_Delete msg"); + if (!message) { + esp3d_log_e("Message is null"); + return false; + } if (message->data) { + esp3d_log("Free data"); free(message->data); } free(message); message = NULL; #if defined(ESP_LOG_FEATURE) - esp3d_log("Deletion : Now we have %ld msg", --msg_counting); + esp3d_log("Deletion : Now we have %ld msg", --_msg_counting); #endif // ESP_LOG_FEATURE return true; } ESP3DMessage* ESP3DMessageManager::newMsg() { + esp3d_log("New msg"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + ESP3DMessage* newMsgPtr = nullptr; + newMsgPtr = _newMsg(); + xSemaphoreGive(_mutex); + return newMsgPtr; + } else { + esp3d_log_e("Mutex not taken"); + } + return nullptr; +} + +ESP3DMessage* ESP3DMessageManager::_newMsg() { + esp3d_log("_New msg"); ESP3DMessage* newMsgPtr = (ESP3DMessage*)malloc(sizeof(ESP3DMessage)); if (newMsgPtr) { #if defined(ESP_LOG_FEATURE) - esp3d_log("Creation : Now we have %ld msg", ++msg_counting); + esp3d_log("Creation : Now we have %ld msg", ++_msg_counting); #endif // ESP_LOG_FEATURE newMsgPtr->data = nullptr; newMsgPtr->size = 0; @@ -57,45 +96,113 @@ ESP3DMessage* ESP3DMessageManager::newMsg() { } else { esp3d_log_e("Out of memory"); } + esp3d_log("Message created"); return newMsgPtr; } ESP3DMessage* ESP3DMessageManager::newMsg(ESP3DRequest requestId) { - ESP3DMessage* newMsgPtr = newMsg(); + esp3d_log("New msg"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + ESP3DMessage* newMsgPtr = nullptr; + newMsgPtr = _newMsg(requestId); + xSemaphoreGive(_mutex); + esp3d_log("New msg done"); + return newMsgPtr; + } else { + esp3d_log_e("Mutex not taken"); + } + return nullptr; +} + +ESP3DMessage* ESP3DMessageManager::_newMsg(ESP3DRequest requestId) { + esp3d_log("_New msg"); + ESP3DMessage* newMsgPtr = _newMsg(); if (newMsgPtr) { + esp3d_log("New msg done"); newMsgPtr->origin = ESP3DClientType::command; newMsgPtr->request_id = requestId; + } else { + esp3d_log_e("newMsgPtr is null"); } return newMsgPtr; } bool ESP3DMessageManager::copyMsgInfos(ESP3DMessage* newMsgPtr, ESP3DMessage msg) { + esp3d_log("Copy msg infos"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + bool result = _copyMsgInfos(newMsgPtr, msg); + xSemaphoreGive(_mutex); + esp3d_log("Copy msg infos done"); + return result; + } else { + esp3d_log_e("Mutex not taken"); + } + return NULL; +} + +bool ESP3DMessageManager::_copyMsgInfos(ESP3DMessage* newMsgPtr, + ESP3DMessage msg) { + esp3d_log("_Copy msg infos"); if (!newMsgPtr) { + esp3d_log_e("newMsgPtr is null"); return false; } + esp3d_log("Copying msg infos"); newMsgPtr->origin = msg.origin; newMsgPtr->target = msg.target; newMsgPtr->authentication_level = msg.authentication_level; newMsgPtr->request_id = msg.request_id; newMsgPtr->type = msg.type; + return true; } ESP3DMessage* ESP3DMessageManager::copyMsgInfos(ESP3DMessage msg) { - ESP3DMessage* newMsgPtr = newMsg(); + esp3d_log("Copy msg infos"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + ESP3DMessage* newMsgPtr = _copyMsgInfos(msg); + xSemaphoreGive(_mutex); + esp3d_log("Copy msg infos done"); + return newMsgPtr; + } else { + esp3d_log_e("Mutex not taken"); + } + return nullptr; +} + +ESP3DMessage* ESP3DMessageManager::_copyMsgInfos(ESP3DMessage msg) { + esp3d_log("_Copy msg infos"); + ESP3DMessage* newMsgPtr = _newMsg(); if (newMsgPtr) { - copyMsgInfos(newMsgPtr, msg); + _copyMsgInfos(newMsgPtr, msg); + } else { + esp3d_log_e("newMsg is null"); } return newMsgPtr; } ESP3DMessage* ESP3DMessageManager::copyMsg(ESP3DMessage msg) { - ESP3DMessage* newMsgPtr = newMsg(msg.origin, msg.target, msg.data, msg.size, - msg.authentication_level); + esp3d_log("Copy msg"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + ESP3DMessage* newMsgPtr = _copyMsg(msg); + xSemaphoreGive(_mutex); + return newMsgPtr; + } else { + esp3d_log_e("Mutex not taken"); + } + return nullptr; +} + +ESP3DMessage* ESP3DMessageManager::_copyMsg(ESP3DMessage msg) { + esp3d_log("_Copy msg"); + ESP3DMessage* newMsgPtr = _newMsg(msg.origin, msg.target, msg.data, msg.size, + msg.authentication_level); if (newMsgPtr) { newMsgPtr->request_id = msg.request_id; newMsgPtr->type = msg.type; + } else { + esp3d_log_e("newMsgPtr is null"); } return newMsgPtr; } @@ -103,15 +210,36 @@ ESP3DMessage* ESP3DMessageManager::copyMsg(ESP3DMessage msg) { ESP3DMessage* ESP3DMessageManager::newMsg( ESP3DClientType origin, ESP3DClientType target, const uint8_t* data, size_t length, ESP3DAuthenticationLevel authentication_level) { - ESP3DMessage* newMsgPtr = newMsg(origin, target, authentication_level); + esp3d_log("New msg"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + ESP3DMessage* newMsgPtr = + _newMsg(origin, target, data, length, authentication_level); + xSemaphoreGive(_mutex); + esp3d_log("New msg done"); + return newMsgPtr; + } else { + esp3d_log_e("Mutex not taken"); + } + return nullptr; +} + +ESP3DMessage* ESP3DMessageManager::_newMsg( + ESP3DClientType origin, ESP3DClientType target, const uint8_t* data, + size_t length, ESP3DAuthenticationLevel authentication_level) { + ESP3DMessage* newMsgPtr = _newMsg(origin, target, authentication_level); + esp3d_log("_New msg"); if (newMsgPtr) { - if (!setDataContent(newMsgPtr, data, length)) { - deleteMsg(newMsgPtr); + if (!_setDataContent(newMsgPtr, data, length)) { + _deleteMsg(newMsgPtr); newMsgPtr = nullptr; esp3d_log_e("newMsg failed for origin %d, target %d, data %s", (uint8_t)origin, (uint8_t)target, data ? (char*)data : "null"); + } else { + esp3d_log("Message created"); } + } else { + esp3d_log_e("newMsgPtr is null"); } return newMsgPtr; } @@ -119,17 +247,51 @@ ESP3DMessage* ESP3DMessageManager::newMsg( ESP3DMessage* ESP3DMessageManager::newMsg( ESP3DClientType origin, ESP3DClientType target, ESP3DAuthenticationLevel authentication_level) { - ESP3DMessage* newMsgPtr = newMsg(); + esp3d_log("New msg"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + ESP3DMessage* newMsgPtr = _newMsg(origin, target, authentication_level); + xSemaphoreGive(_mutex); + esp3d_log("New msg done"); + return newMsgPtr; + } else { + esp3d_log_e("Mutex not taken"); + } + return nullptr; +} + +ESP3DMessage* ESP3DMessageManager::_newMsg( + ESP3DClientType origin, ESP3DClientType target, + ESP3DAuthenticationLevel authentication_level) { + esp3d_log("_New msg"); + ESP3DMessage* newMsgPtr = _newMsg(); if (newMsgPtr) { newMsgPtr->origin = origin; newMsgPtr->target = target; newMsgPtr->authentication_level = authentication_level; + } else { + esp3d_log_e("newMsgPtr is null"); } + esp3d_log("_New msg done"); return newMsgPtr; } bool ESP3DMessageManager::setDataContent(ESP3DMessage* msg, const uint8_t* data, size_t length) { + esp3d_log("Set data content"); + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + bool result = _setDataContent(msg, data, length); + xSemaphoreGive(_mutex); + esp3d_log("Set data content done"); + return result; + } else { + esp3d_log_e("Mutex not taken"); + } + return false; +} + +bool ESP3DMessageManager::_setDataContent(ESP3DMessage* msg, + const uint8_t* data, size_t length) { + esp3d_log("_Set data content"); if (!msg) { esp3d_log_e("no valid msg container"); return false; diff --git a/esp3d/src/core/esp3d_message.h b/esp3d/src/core/esp3d_message.h index 253c30c0..d0d081ec 100644 --- a/esp3d/src/core/esp3d_message.h +++ b/esp3d/src/core/esp3d_message.h @@ -25,8 +25,7 @@ #define ESP_STATE_DISCONNECTED 0 -#ifndef _ESP3DOUTPUT_H -#define _ESP3DOUTPUT_H +#pragma once #include "../include/esp3d_config.h" @@ -43,6 +42,23 @@ class WebServer; #include "../modules/authentication/authentication_level_types.h" #include "esp3d_client_types.h" +#if defined(ARDUINO_ARCH_ESP32) +#include "freertos/FreeRTOS.h" +#include "freertos/semphr.h" +#endif // ARDUINO_ARCH_ESP32 + +#if defined(ARDUINO_ARCH_ESP8266) +//To avoid compilation error on ESP8266 +// and to use many ifdefs +#ifndef pdTRUE +#define pdTRUE true +#define xSemaphoreTake(A, B) true +#define xSemaphoreGive(A) +#define xSemaphoreCreateMutex(A) 0 +#define vSemaphoreDelete(A) +#define SemaphoreHandle_t void* +#endif //pdTRUE +#endif //ESP8266 enum class ESP3DMessageType : uint8_t { head, core, tail, unique }; @@ -68,21 +84,44 @@ struct ESP3DMessage { class ESP3DMessageManager final { public: - static ESP3DMessage *newMsg(); - static ESP3DMessage *newMsg(ESP3DRequest requestId); - static bool deleteMsg(ESP3DMessage *message); - static bool copyMsgInfos(ESP3DMessage *newMsgPtr, ESP3DMessage msg); - static ESP3DMessage *copyMsgInfos(ESP3DMessage msg); - static ESP3DMessage *copyMsg(ESP3DMessage msg); - static ESP3DMessage *newMsg(ESP3DClientType origin, ESP3DClientType target, - const uint8_t *data, size_t length, - ESP3DAuthenticationLevel authentication_level = - ESP3DAuthenticationLevel::guest); - static ESP3DMessage *newMsg(ESP3DClientType origin, ESP3DClientType target, - ESP3DAuthenticationLevel authentication_level = - ESP3DAuthenticationLevel::guest); - static bool setDataContent(ESP3DMessage *msg, const uint8_t *data, - size_t length); + ESP3DMessageManager(); + ~ESP3DMessageManager(); + ESP3DMessage *newMsg(); + ESP3DMessage *newMsg(ESP3DRequest requestId); + bool deleteMsg(ESP3DMessage *message); + bool copyMsgInfos(ESP3DMessage *newMsgPtr, ESP3DMessage msg); + ESP3DMessage *copyMsgInfos(ESP3DMessage msg); + + ESP3DMessage *copyMsg(ESP3DMessage msg); + + ESP3DMessage *newMsg(ESP3DClientType origin, ESP3DClientType target, + const uint8_t *data, size_t length, + ESP3DAuthenticationLevel authentication_level = + ESP3DAuthenticationLevel::guest); + ESP3DMessage *newMsg(ESP3DClientType origin, ESP3DClientType target, + ESP3DAuthenticationLevel authentication_level = + ESP3DAuthenticationLevel::guest); + bool setDataContent(ESP3DMessage *msg, const uint8_t *data, size_t length); + + private: + bool _deleteMsg(ESP3DMessage *message); + ESP3DMessage *_newMsg(); + ESP3DMessage *_newMsg(ESP3DRequest requestId); + bool _copyMsgInfos(ESP3DMessage *newMsgPtr, ESP3DMessage msg); + ESP3DMessage *_copyMsgInfos(ESP3DMessage msg); + ESP3DMessage *_copyMsg(ESP3DMessage msg); + ESP3DMessage *_newMsg(ESP3DClientType origin, ESP3DClientType target, + const uint8_t *data, size_t length, + ESP3DAuthenticationLevel authentication_level = + ESP3DAuthenticationLevel::guest); + ESP3DMessage *_newMsg(ESP3DClientType origin, ESP3DClientType target, + ESP3DAuthenticationLevel authentication_level = + ESP3DAuthenticationLevel::guest); + bool _setDataContent(ESP3DMessage *msg, const uint8_t *data, size_t length); + SemaphoreHandle_t _mutex; +#if defined(ESP_LOG_FEATURE) + int _msg_counting; +#endif // ESP_LOG_FEATURE }; -#endif //_ESP3DOUTPUT_H +extern ESP3DMessageManager esp3d_message_manager; \ No newline at end of file diff --git a/esp3d/src/core/esp3d_messageFifo.h b/esp3d/src/core/esp3d_messageFifo.h index e3dd7c3a..6d2eb013 100644 --- a/esp3d/src/core/esp3d_messageFifo.h +++ b/esp3d/src/core/esp3d_messageFifo.h @@ -1,5 +1,5 @@ /* - esp3d_messageFifo.h - class for handeling message + esp3d_messageFifo.h - class for managing messages list, thread safe Copyright (c) 2014 Luc Lebosse. All rights reserved. @@ -19,77 +19,149 @@ */ #if !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP8285) -#include "esp3d_message.h" -#include "../include/esp3d_config.h" #include #include + +#include "../include/esp3d_config.h" +#include "esp3d_message.h" +#if defined(ARDUINO_ARCH_ESP32) #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" +#endif // ARDUINO_ARCH_ESP32 + +#if defined(ARDUINO_ARCH_ESP8266) +// To avoid compilation error on ESP8266 +// and to use many ifdefs +#ifndef pdTRUE +#define pdTRUE true +#define xSemaphoreTake(A, B) true +#define xSemaphoreGive(A) +#define xSemaphoreCreateMutex(A) 0 +#define vSemaphoreDelete(A) +#define SemaphoreHandle_t void* +#endif // pdTRUE +#endif // ESP8266 class ESP3DMessageFIFO { -public: - ESP3DMessageFIFO(size_t maxSize = 5) : maxSize(maxSize) { - mutex = xSemaphoreCreateMutex(); - } + public: + ESP3DMessageFIFO(size_t maxSize = 5) { + _mutex = xSemaphoreCreateMutex(); + _maxSize = maxSize; + } - ~ESP3DMessageFIFO() { - clear(); - vSemaphoreDelete(mutex); - } + ~ESP3DMessageFIFO() { + clear(); + vSemaphoreDelete(_mutex); + } + void setId(String id) { _id = id; } + String getId() { return _id; } - void push(ESP3DMessage* message) { - xSemaphoreTake(mutex, portMAX_DELAY); - if (fifo.size() >= maxSize) { - ESP3DMessage* oldestMessage = fifo.front(); - fifo.pop(); - ESP3DMessageManager::deleteMsg(oldestMessage); + void setMaxSize(size_t maxSize) { _maxSize = maxSize; } + size_t getMaxSize() { return _maxSize; } + + void push(ESP3DMessage* message) { + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + esp3d_log("push to list [%s] size: %d", _id.c_str(), fifo.size()); + if (fifo.size() >= _maxSize && _maxSize != 0) { + esp3d_log("remove oldest message to make room for new one"); + ESP3DMessage* oldestMessage = fifo.front(); + fifo.pop(); + esp3d_message_manager.deleteMsg(oldestMessage); + esp3d_log("oldest message removed, list [%s] size: %d", _id.c_str(), + fifo.size()); + } + fifo.push(message); + esp3d_log("push to list [%s] size: %d", _id.c_str(), fifo.size()); + xSemaphoreGive(_mutex); + } else { + esp3d_log_e("push to list [%s] failed, list size: %d", _id.c_str(), + fifo.size()); + esp3d_log_e("Delete message"); + esp3d_message_manager.deleteMsg(message); + } + } + + ESP3DMessage* pop() { + ESP3DMessage* message = nullptr; + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + if (!fifo.empty()) { + esp3d_log("pop from list [%s] size: %d", _id.c_str(), fifo.size()); + message = fifo.front(); + fifo.pop(); + esp3d_log("Now list [%s] size: %d", _id.c_str(), fifo.size()); + esp3d_log("Message: %s", (const char*)message->data); + } + xSemaphoreGive(_mutex); + } else { + esp3d_log_e("pop from list [%s] failed, list size: %d", _id.c_str(), + fifo.size()); + } + return message; + } + + bool isEmpty() { + bool empty = true; + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + empty = fifo.empty(); + xSemaphoreGive(_mutex); + } else { + esp3d_log_e("Mutex not taken"); + } + return empty; + } + + size_t size() { + size_t s = 0; + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + s = fifo.size(); + xSemaphoreGive(_mutex); + } else { + esp3d_log_e("Mutex not taken"); + } + return s; + } + + void clear() { + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + while (!fifo.empty()) { + ESP3DMessage* message = fifo.front(); + fifo.pop(); + esp3d_message_manager.deleteMsg(message); + } + xSemaphoreGive(_mutex); + } else { + esp3d_log_e("Mutex not taken"); + } + } + + bool applyToEach(std::function fn, + bool stopOnFalse = true) { + bool result = false; + if (xSemaphoreTake(_mutex, portMAX_DELAY) == pdTRUE) { + result = true; + size_t size = fifo.size(); + for (size_t i = 0; i < size; ++i) { + ESP3DMessage* message = fifo.front(); + bool result = fn(message); + fifo.pop(); + if (!result && stopOnFalse) { + result = false; + break; } - fifo.push(message); - xSemaphoreGive(mutex); + } + xSemaphoreGive(_mutex); + } else { + esp3d_log_e("Mutex not taken"); } + return result; + } - ESP3DMessage* pop() { - ESP3DMessage* message = nullptr; - xSemaphoreTake(mutex, portMAX_DELAY); - if (!fifo.empty()) { - message = fifo.front(); - fifo.pop(); - } - xSemaphoreGive(mutex); - return message; - } - - bool isEmpty() { - bool empty; - xSemaphoreTake(mutex, portMAX_DELAY); - empty = fifo.empty(); - xSemaphoreGive(mutex); - return empty; - } - - size_t size() { - size_t s; - xSemaphoreTake(mutex, portMAX_DELAY); - s = fifo.size(); - xSemaphoreGive(mutex); - return s; - } - - void clear() { - xSemaphoreTake(mutex, portMAX_DELAY); - while (!fifo.empty()) { - ESP3DMessage* message = fifo.front(); - fifo.pop(); - ESP3DMessageManager::deleteMsg(message); - } - xSemaphoreGive(mutex); - } - -private: - std::queue fifo; - SemaphoreHandle_t mutex; - const size_t maxSize; + private: + std::queue fifo; + SemaphoreHandle_t _mutex; + size_t _maxSize; + String _id; }; -#endif // !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP8285) \ No newline at end of file +#endif // !defined(ARDUINO_ARCH_ESP8266) && !defined(ARDUINO_ARCH_ESP8285) \ No newline at end of file diff --git a/esp3d/src/core/esp3d_settings.cpp b/esp3d/src/core/esp3d_settings.cpp index f205e671..754ebe36 100644 --- a/esp3d/src/core/esp3d_settings.cpp +++ b/esp3d/src/core/esp3d_settings.cpp @@ -75,6 +75,12 @@ #define MIN_SERVER_ADDRESS_LENGTH 0 // default byte values +#ifdef ETH_FEATURE +#define DEFAULT_ETH_STA_FALLBACK_MODE STRING(ESP_NO_NETWORK) +#else +#define DEFAULT_ETH_STA_FALLBACK_MODE STRING(ESP_NO_NETWORK) +#endif // ETH_FEATURE + #ifdef WIFI_FEATURE #define DEFAULT_STA_FALLBACK_MODE STRING(ESP_AP_SETUP) #if defined(STATION_WIFI_SSID) && defined(STATION_WIFI_PASSWORD) @@ -192,6 +198,12 @@ uint16_t ESP3DSettingsData[] = {ESP_RADIO_MODE, ESP_STA_DNS_VALUE, ESP_AP_IP_VALUE, ESP_STA_IP_MODE, + ESP_ETH_STA_FALLBACK_MODE, + ESP_ETH_STA_IP_VALUE, + ESP_ETH_STA_GATEWAY_VALUE, + ESP_ETH_STA_MASK_VALUE, + ESP_ETH_STA_DNS_VALUE, + ESP_ETH_STA_IP_MODE, ESP_SETTINGS_VERSION, ESP_NOTIFICATION_TYPE, ESP_CALIBRATION, @@ -240,7 +252,6 @@ uint16_t ESP3DSettingsData[] = {ESP_RADIO_MODE, ESP_FTP_DATA_PASSIVE_PORT, ESP_WEBDAV_PORT, ESP_SERIAL_BRIDGE_BAUD - }; #if defined(SD_DEVICE) const uint8_t SupportedSPIDivider[] = {1, 2, 4, 6, 8, 16, 32}; @@ -714,6 +725,8 @@ const char *ESP3DSettings::TargetBoard() { #define TYPE_BOARD "ESP32-S3" #elif CONFIG_IDF_TARGET_ESP32C3 #define TYPE_BOARD "ESP32-C3" +#elif CONFIG_IDF_TARGET_ESP32C6 +#define TYPE_BOARD "ESP32-C6" #endif #ifdef BOARD_HAS_PSRAM #define IS_PSRAM " (PSRAM)" @@ -960,12 +973,19 @@ bool ESP3DSettings::isValidByteSetting(uint8_t value, return true; } break; +#ifdef ETH_FEATURE + case ESP_ETH_STA_IP_MODE: + if (value == DHCP_MODE || value == STATIC_IP_MODE) { + return true; + } + break; +#endif // ETH_FEATURE +#if defined(WIFI_FEATURE) case ESP_STA_IP_MODE: if (value == DHCP_MODE || value == STATIC_IP_MODE) { return true; } break; -#if defined(WIFI_FEATURE) case ESP_AP_CHANNEL: for (uint8_t i = 0; i < SupportedApChannelsSize; i++) { if (value == SupportedApChannels[i]) { @@ -1012,11 +1032,9 @@ bool ESP3DSettings::isValidByteSetting(uint8_t value, // 0 means no timeout so it is ok to have 0 return true; break; - case ESP_STA_FALLBACK_MODE: +#ifdef ETH_FEATURE + case ESP_ETH_STA_FALLBACK_MODE: if (value == ESP_NO_NETWORK -#if defined(WIFI_FEATURE) - || value == ESP_AP_SETUP -#endif // WIFI_FEATURE #if defined(BT_FEATURE) || value == ESP_BT #endif // BT_FEATURE @@ -1024,7 +1042,20 @@ bool ESP3DSettings::isValidByteSetting(uint8_t value, return true; } break; +#endif // ETH_FEATURE +#if defined(WIFI_FEATURE) + case ESP_STA_FALLBACK_MODE: + if (value == ESP_NO_NETWORK + || value == ESP_AP_SETUP +#if defined(BT_FEATURE) + || value == ESP_BT +#endif // BT_FEATURE + ) { + return true; + } + break; +#endif // WIFI_FEATURE default: return false; } @@ -1117,8 +1148,10 @@ const ESP3DSettingDescription *ESP3DSettings::getSettingPtr( case ESP_SECURE_SERIAL: case ESP_BOOT_RADIO_STATE: case ESP_STA_FALLBACK_MODE: + case ESP_ETH_STA_FALLBACK_MODE: case ESP_SERIAL_BRIDGE_ON: case ESP_STA_IP_MODE: + case ESP_ETH_STA_IP_MODE: setting.type = ESP3DSettingType::byte_t; // byte break; @@ -1144,6 +1177,10 @@ const ESP3DSettingDescription *ESP3DSettings::getSettingPtr( case ESP_STA_GATEWAY_VALUE: case ESP_STA_MASK_VALUE: case ESP_STA_DNS_VALUE: + case ESP_ETH_STA_IP_VALUE: + case ESP_ETH_STA_GATEWAY_VALUE: + case ESP_ETH_STA_MASK_VALUE: + case ESP_ETH_STA_DNS_VALUE: case ESP_AP_IP_VALUE: setting.type = ESP3DSettingType::ip_t; // ip = 4 bytes @@ -1197,11 +1234,17 @@ const ESP3DSettingDescription *ESP3DSettings::getSettingPtr( case ESP_WEBDAV_ON: case ESP_SECURE_SERIAL: case ESP_BOOT_RADIO_STATE: + case ESP_ETH_STA_FALLBACK_MODE: case ESP_STA_FALLBACK_MODE: case ESP_SERIAL_BRIDGE_ON: + case ESP_ETH_STA_IP_MODE: case ESP_STA_IP_MODE: setting.size = 1; // 1 byte break; + case ESP_ETH_STA_IP_VALUE: + case ESP_ETH_STA_GATEWAY_VALUE: + case ESP_ETH_STA_MASK_VALUE: + case ESP_ETH_STA_DNS_VALUE: case ESP_STA_IP_VALUE: case ESP_STA_GATEWAY_VALUE: case ESP_STA_MASK_VALUE: @@ -1278,6 +1321,8 @@ const ESP3DSettingDescription *ESP3DSettings::getSettingPtr( // default value of setting in string switch (index) { + + case ESP_ETH_STA_IP_MODE: case ESP_STA_IP_MODE: setting.default_val = DEFAULT_STA_IP_MODE; break; @@ -1350,6 +1395,9 @@ const ESP3DSettingDescription *ESP3DSettings::getSettingPtr( case ESP_BOOT_RADIO_STATE: setting.default_val = DEFAULT_BOOT_RADIO_STATE; break; + case ESP_ETH_STA_FALLBACK_MODE: + setting.default_val = DEFAULT_ETH_STA_FALLBACK_MODE; + break; case ESP_STA_FALLBACK_MODE: setting.default_val = DEFAULT_STA_FALLBACK_MODE; break; @@ -1401,15 +1449,19 @@ const ESP3DSettingDescription *ESP3DSettings::getSettingPtr( case ESP_TIME_ZONE: setting.default_val = DEFAULT_TIME_ZONE; break; + case ESP_ETH_STA_IP_VALUE: case ESP_STA_IP_VALUE: setting.default_val = DEFAULT_STA_IP_VALUE; break; + case ESP_ETH_STA_GATEWAY_VALUE: case ESP_STA_GATEWAY_VALUE: setting.default_val = DEFAULT_STA_GATEWAY_VALUE; break; + case ESP_ETH_STA_MASK_VALUE: case ESP_STA_MASK_VALUE: setting.default_val = DEFAULT_STA_MASK_VALUE; break; + case ESP_ETH_STA_DNS_VALUE: case ESP_STA_DNS_VALUE: setting.default_val = DEFAULT_STA_DNS_VALUE; break; diff --git a/esp3d/src/include/esp3d_defines.h b/esp3d/src/include/esp3d_defines.h index 0a00b157..8c54f2f3 100644 --- a/esp3d/src/include/esp3d_defines.h +++ b/esp3d/src/include/esp3d_defines.h @@ -119,7 +119,7 @@ typedef uint ESP3DSettingIndex; #define ESP_SETUP 1192 // 1 byte = flag // #define FREE 1193 // 1 byte = flag // #define FREE 1194 // 1 byte = flag -// #define FREE 1195 // 1 byte = flag +#define ESP_ETH_STA_FALLBACK_MODE 1195 // 1 byte = flag #define ESP_FTP_CTRL_PORT 1196 // 4 bytes = int #define ESP_FTP_DATA_ACTIVE_PORT 1200 // 4 bytes = int #define ESP_FTP_DATA_PASSIVE_PORT 1204 // 4 bytes = int @@ -133,9 +133,13 @@ typedef uint ESP3DSettingIndex; #define ESP_BOOT_RADIO_STATE 1221 // 1 byte = flag #define ESP_STA_FALLBACK_MODE 1222 // 1 byte = flag #define ESP_SERIAL_BRIDGE_ON 1223 // 1 byte = flag -// #define FREE 1224 // 1 byte = flag +#define ESP_ETH_STA_IP_MODE 1224 // 1 byte = flag #define ESP_SERIAL_BRIDGE_BAUD 1225 // 4 bytes= int #define ESP_TIME_ZONE 1229 // 7 bytes 6+1 = string +#define ESP_ETH_STA_IP_VALUE 1237 // 4 bytes xxx.xxx.xxx.xxx +#define ESP_ETH_STA_MASK_VALUE 1240 // 4 bytes xxx.xxx.xxx.xxx +#define ESP_ETH_STA_GATEWAY_VALUE 1244 // 4 bytes xxx.xxx.xxx.xxx +#define ESP_ETH_STA_DNS_VALUE 1248 // 4 bytes xxx.xxx.xxx.xxx // Hidden password #define HIDDEN_PASSWORD "********" @@ -313,14 +317,36 @@ typedef uint ESP3DSettingIndex; #define MODE_ETH_CLOCK_GPIO16_OUT 2 #define MODE_ETH_CLOCK_GPIO17_OUT 3 -// Ethernet type (Check ETH.h eth_phy_type_t) +// Ethernet type (Check ETH.h eth_phy_type_t because it enum with #ifdef CONFIG_....) #define TYPE_ETH_PHY_LAN8720 0 #define TYPE_ETH_PHY_TLK110 1 #define TYPE_ETH_PHY_RTL8201 2 #define TYPE_ETH_PHY_DP83848 3 -#define TYPE_ETH_PHY_DM9051 4 -#define TYPE_ETH_PHY_KSZ8041 5 -#define TYPE_ETH_PHY_KSZ8081 6 +#define TYPE_ETH_PHY_KSZ8041 4 +#define TYPE_ETH_PHY_KSZ8081 5 +#define TYPE_ETH_PHY_DM9051 6 +#define TYPE_ETH_PHY_W5500 7 +#define TYPE_ETH_PHY_KSZ8851 8 + +//SPI pis for ethernet +#ifndef ETH_PHY_CS +#define ETH_PHY_CS 15 +#endif // ETH_PHY_CS +#ifndef ETH_PHY_IRQ +#define ETH_PHY_IRQ 4 +#endif // ETH_PHY_IRQ +#ifndef ETH_PHY_RST +#define ETH_PHY_RST 5 +#endif // ETH_PHY_RST +#ifndef ETH_SPI_SCK +#define ETH_SPI_SCK 14 +#endif // ETH_SPI_SCK +#ifndef ETH_SPI_MISO +#define ETH_SPI_MISO 12 +#endif // ETH_SPI_MISO +#ifndef ETH_SPI_MOSI +#define ETH_SPI_MOSI 13 +#endif // ETH_SPI_MOSI // Host path #define ESP3D_HOST_PATH "/" diff --git a/esp3d/src/include/esp3d_sanity.h b/esp3d/src/include/esp3d_sanity.h index 55d66f16..55515783 100644 --- a/esp3d/src/include/esp3d_sanity.h +++ b/esp3d/src/include/esp3d_sanity.h @@ -77,8 +77,8 @@ /************************** * Bluetooth * ***********************/ -#if defined(BLUETOOTH_FEATURE) && defined(ARDUINO_ARCH_ESP8266) -#error Bluetooth is not available in ESP8266 +#if (defined(BLUETOOTH_FEATURE) && !defined(ARDUINO_ARCH_ESP32)) || (defined(BLUETOOTH_FEATURE) && (defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3))) +#error Bluetooth is only available for ESP32 #endif /************************** diff --git a/esp3d/src/modules/bluetooth/BT_service.cpp b/esp3d/src/modules/bluetooth/BT_service.cpp index a7b07961..55014c49 100644 --- a/esp3d/src/modules/bluetooth/BT_service.cpp +++ b/esp3d/src/modules/bluetooth/BT_service.cpp @@ -25,7 +25,7 @@ #ifdef BLUETOOTH_FEATURE #include "../../core/esp3d_commands.h" #include "../../core/esp3d_settings.h" -#include "../../esp3d_string.h" +#include "../../core/esp3d_string.h" #include "../network/netconfig.h" #include "BT_service.h" #include "BluetoothSerial.h" @@ -192,7 +192,7 @@ ESP3DAuthenticationLevel BTService::getAuthentication() { return _auth; } void BTService::flushbuffer() { _buffer[_buffer_size] = 0x0; // dispatch command - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::bluetooth, esp3d_commands.getOutputClient(), _buffer, _buffer_size, _auth); if (msg) { @@ -288,7 +288,7 @@ bool BTService::dispatch(ESP3DMessage *message) { if (sentcnt != message->size) { return false; } - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); return true; } diff --git a/esp3d/src/modules/camera/camera.cpp b/esp3d/src/modules/camera/camera.cpp index 4ccbe9d7..18914638 100644 --- a/esp3d/src/modules/camera/camera.cpp +++ b/esp3d/src/modules/camera/camera.cpp @@ -242,8 +242,10 @@ int Camera::command(const char *param, const char *value) { bool Camera::initHardware() { _initialised = false; + #if !(CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6) esp3d_log("Disable brown out"); WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // disable brownout detector + #endif // !(CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6) stopHardware(); camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; diff --git a/esp3d/src/modules/display/display.cpp b/esp3d/src/modules/display/display.cpp index e630015a..1dbcb092 100644 --- a/esp3d/src/modules/display/display.cpp +++ b/esp3d/src/modules/display/display.cpp @@ -52,7 +52,7 @@ bool Display::dispatch(ESP3DMessage* message) { break; } - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); return true; } return false; diff --git a/esp3d/src/modules/ethernet/ethconfig.cpp b/esp3d/src/modules/ethernet/ethconfig.cpp index 413a6e57..112d30be 100644 --- a/esp3d/src/modules/ethernet/ethconfig.cpp +++ b/esp3d/src/modules/ethernet/ethconfig.cpp @@ -29,62 +29,39 @@ #endif // ARDUINO_ARCH_ESP8266 #include "../../core/esp3d_commands.h" #include "../../core/esp3d_settings.h" +#include "../../core/esp3d_string.h" #include "../network/netconfig.h" #include "ethconfig.h" + +#if defined(GCODE_HOST_FEATURE) +#include "../gcode_host/gcode_host.h" +#endif // GCODE_HOST_FEATURE + bool EthConfig::_started = false; bool EthConfig::_connected = false; +uint8_t EthConfig::_ipMode = DHCP_MODE; const uint8_t DEFAULT_AP_MASK_VALUE[] = {255, 255, 255, 0}; bool EthConfig::StartSTA() { bool res = true; - if ((ESP3DSettings::readByte(ESP_STA_IP_MODE) != DHCP_MODE)) { - int32_t IP = ESP3DSettings::read_IP(ESP_STA_IP_VALUE); - int32_t GW = ESP3DSettings::read_IP(ESP_STA_GATEWAY_VALUE); - int32_t MK = ESP3DSettings::read_IP(ESP_STA_MASK_VALUE); - int32_t DNS = ESP3DSettings::read_IP(ESP_STA_DNS_VALUE); + if (_ipMode == STATIC_IP_MODE) { + int32_t IP = ESP3DSettings::read_IP(ESP_ETH_STA_IP_VALUE); + int32_t GW = ESP3DSettings::read_IP(ESP_ETH_STA_GATEWAY_VALUE); + int32_t MK = ESP3DSettings::read_IP(ESP_ETH_STA_MASK_VALUE); + int32_t DNS = ESP3DSettings::read_IP(ESP_ETH_STA_DNS_VALUE); IPAddress ip(IP), mask(MK), gateway(GW), dns(DNS); res = ETH.config(ip, gateway, mask, dns); } return res; } -/*bool EthConfig::StartSRV() -{ - bool res = true; - //static IP - int32_t IP = ESP3DSettings::read_IP(ESP_AP_IP_VALUE); - IPAddress ip(IP), mask(DEFAULT_AP_MASK_VALUE), gateway(IP); - if (!ETH.config(ip, gateway,mask)) { - res = false; - esp3d_log_e("Set static IP error"); - } - //start DHCP server - if(res) { - dhcps_lease_t lease; - lease.enable = true; - lease.start_ip.addr = static_cast(IP) + (1 << 24); - lease.end_ip.addr = static_cast(IP) + (11 << 24); - tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_ETH); - tcpip_adapter_dhcps_option( - (tcpip_adapter_option_mode_t)TCPIP_ADAPTER_OP_SET, - (tcpip_adapter_option_id_t)REQUESTED_IP_ADDRESS, - (void*)&lease, sizeof(dhcps_lease_t) - ); - if (tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_ETH) != ESP_OK){ - res = false; - esp3d_log_e("Start DHCP server failed"); - } - } - return res; -}*/ +bool EthConfig::linkUp() { return _connected; } -bool EthConfig::linkUp() { -#if defined(ESP_IDF_VERSION_MAJOR) - // patch for https://github.com/espressif/arduino-esp32/issues/6105 - return _connected; -#else - return ETH.linkUp(); -#endif +uint8_t EthConfig::ipMode(bool fromsettings) { + if (fromsettings) { + _ipMode = (ESP3DSettings::readByte(ESP_ETH_STA_IP_MODE) != DHCP_MODE); + } + return _ipMode; } /** @@ -92,9 +69,33 @@ bool EthConfig::linkUp() { */ bool EthConfig::begin(int8_t& espMode) { bool res = false; - + ipMode(true); end(); - _started = ETH.begin(); + if (ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_LAN8720) { + esp3d_log_d("ETH PHY Type %d", ESP3D_ETH_PHY_TYPE); + _started = ETH.begin(); + } else { + if (ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_TLK110 || + ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_RTL8201 || + ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_DP83848 || + ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_KSZ8041 || + ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_KSZ8081) { + esp3d_log_d("ETH PHY Type %d", ESP3D_ETH_PHY_TYPE); + _started = ETH.begin(ETH_PHY_TYPE, ETH_PHY_ADDR, ETH_PHY_POWER, + ETH_PHY_MDC, ETH_PHY_MDIO, ETH_CLK_MODE); + } else { + if (ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_W5500) { + esp3d_log_d("ETH spi PHY Type %d", ESP3D_ETH_PHY_TYPE); + SPI.begin(ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI); + _started = ETH.begin(ETH_PHY_TYPE, ETH_PHY_ADDR, ETH_PHY_CS, + ETH_PHY_IRQ, ETH_PHY_RST, SPI); + } else { + esp3d_log("Ethernet PHY type not supported"); + return false; + } + } + } + if (_started) { if (ESP3DSettings::isVerboseBoot()) { esp3d_commands.dispatch("Starting ethernet", ESP3DClientType::all_clients, @@ -104,7 +105,7 @@ bool EthConfig::begin(int8_t& espMode) { } res = true; } else { - esp3d_commands.dispatch("Failed starting ethernet write failed", + esp3d_commands.dispatch("Failed starting ethernet failed", ESP3DClientType::all_clients, no_id, ESP3DMessageType::unique, ESP3DClientType::system, ESP3DAuthenticationLevel::admin); @@ -120,7 +121,7 @@ bool EthConfig::begin(int8_t& espMode) { ESP3DMessageType::unique, ESP3DClientType::system, ESP3DAuthenticationLevel::admin); } - espMode = ESP3DSettings::readByte(ESP_STA_FALLBACK_MODE); + espMode = ESP3DSettings::readByte(ESP_ETH_STA_FALLBACK_MODE); res = true; } else { if (ESP3DSettings::isVerboseBoot()) { @@ -130,20 +131,9 @@ bool EthConfig::begin(int8_t& espMode) { ESP3DAuthenticationLevel::admin); } } - - } else { - // if(!StartSRV()){ - // res = false; - // - // } else { - // - // } } - - // if ((ESP3DSettings::readByte(ESP_STA_IP_MODE) != DHCP_MODE) || (espMode - // == ESP_ETH_SRV)){ - if ((ESP3DSettings::readByte(ESP_STA_IP_MODE) != DHCP_MODE)) { - // as no event to display static IP + // Static IP or DHCP client ? + if ((ESP3DSettings::readByte(ESP_ETH_STA_IP_MODE) != DHCP_MODE)) { esp3d_commands.dispatch(ETH.localIP().toString().c_str(), ESP3DClientType::all_clients, no_id, ESP3DMessageType::unique, ESP3DClientType::system, @@ -158,8 +148,10 @@ bool EthConfig::begin(int8_t& espMode) { */ void EthConfig::end() { - // esp_eth_disable(); + // ETH.end(); _started = false; + _ipMode = DHCP_MODE; + _connected = false; } bool EthConfig::started() { return _started; } diff --git a/esp3d/src/modules/ethernet/ethconfig.h b/esp3d/src/modules/ethernet/ethconfig.h index 69040d08..de5aae8b 100644 --- a/esp3d/src/modules/ethernet/ethconfig.h +++ b/esp3d/src/modules/ethernet/ethconfig.h @@ -55,12 +55,13 @@ class EthConfig { static void handle(); static bool started(); static void setConnected(bool connected) { _connected = connected; } - + static uint8_t ipMode(bool fromsettings = false); static bool linkUp(); private: static bool _started; static bool _connected; + static uint8_t _ipMode; }; #endif //_ETH_CONFIG_H diff --git a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp index 4a1c7af2..fae399ca 100644 --- a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp +++ b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp @@ -127,27 +127,11 @@ uint8_t ESP_SD::getState(bool refresh) { ESP_SD_MOSI_PIN != -1 ? ESP_SD_MOSI_PIN : MOSI, ESP_SD_SCK_PIN != -1 ? ESP_SD_SCK_PIN : SCK); // refresh content if card was removed -#if !(defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1) - if (xPortGetCoreID() == 0) { - disableCore0WDT(); - } else { - disableCore1WDT(); - } -#endif // !(defined(ESP_SD_DETECT_PIN) if (SD.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SD_SCK_MHZ(FREQMZ / _spi_speed_divider))) { - csd_t m_csd; - if (SD.card()->readCSD(&m_csd) && sdCardCapacity(&m_csd) > 0) { _state = ESP_SDCARD_IDLE; - } } -#if !(defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1) - if (xPortGetCoreID() == 0) { - enableCore0WDT(); - } else { - enableCore1WDT(); - } -#endif // !(defined(ESP_SD_DETECT_PIN) + return _state; } diff --git a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp index 506e4e1b..15927a83 100644 --- a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp +++ b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp @@ -123,12 +123,7 @@ uint8_t ESP_SD::getState(bool refresh) { if (SD.begin((ESP_SD_CS_PIN == -1) ? SS : ESP_SD_CS_PIN, SD_SCK_HZ(F_CPU / _spi_speed_divider))) { esp3d_log("Init SD State ok"); - csd_t m_csd; - if (SD.card()->readCSD(&m_csd) && sdCardCapacity(&m_csd) > 0) { - _state = ESP_SDCARD_IDLE; - } else { - esp3d_log_e("Cannot get card size"); - } + _state = ESP_SDCARD_IDLE; } else { esp3d_log_e("Init SD State failed"); } @@ -463,6 +458,9 @@ ESP_SDFile::ESP_SDFile(void* handle, bool isdir, bool iswritemode, } // todo need also to add short filename const char* ESP_SDFile::shortname() const { + #if SDFAT_FILE_TYPE != 1 + return _name.c_str(); +#else static char sname[13]; File ftmp = SD.open(_filename.c_str()); if (ftmp) { @@ -475,6 +473,7 @@ const char* ESP_SDFile::shortname() const { } else { return _name.c_str(); } +#endif } void ESP_SDFile::close() { diff --git a/esp3d/src/modules/ftp/FtpServer.h b/esp3d/src/modules/ftp/FtpServer.h index 5f8b058e..723308b5 100644 --- a/esp3d/src/modules/ftp/FtpServer.h +++ b/esp3d/src/modules/ftp/FtpServer.h @@ -31,8 +31,8 @@ #ifndef FTP_SERVER_H #define FTP_SERVER_H -class WiFiServer; -class WiFiClient; +#include +#include #ifndef FF_MAX_LFN #define FF_MAX_LFN 255 #endif diff --git a/esp3d/src/modules/gcode_host/gcode_host.cpp b/esp3d/src/modules/gcode_host/gcode_host.cpp index b83f62ba..228a6638 100644 --- a/esp3d/src/modules/gcode_host/gcode_host.cpp +++ b/esp3d/src/modules/gcode_host/gcode_host.cpp @@ -317,7 +317,7 @@ void GcodeHost::processCommand() { bool isESPcmd = esp3d_commands.is_esp_command( (uint8_t *)_currentCommand.c_str(), _currentCommand.length()); if (isESPcmd) { - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::no_client, esp3d_commands.getOutputClient(), (uint8_t *)_currentCommand.c_str(), _currentCommand.length(), _auth); if (msg) { @@ -331,7 +331,7 @@ void GcodeHost::processCommand() { } } else { - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::stream, esp3d_commands.getOutputClient(), (uint8_t *)_currentCommand.c_str(), _currentCommand.length(), _auth); if (msg) { diff --git a/esp3d/src/modules/http/handlers/handle-command.cpp b/esp3d/src/modules/http/handlers/handle-command.cpp index b86256c9..e844b0ac 100644 --- a/esp3d/src/modules/http/handlers/handle-command.cpp +++ b/esp3d/src/modules/http/handlers/handle-command.cpp @@ -74,7 +74,7 @@ void HTTP_Server::handle_web_command() { } esp3d_log("Web Command: %s", cmd.c_str()); if (esp3d_commands.is_esp_command((uint8_t *)cmd.c_str(), cmd.length())) { - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::http, esp3d_commands.getOutputClient(), (uint8_t *)cmd.c_str(), cmd.length(), auth_level); if (msg) { diff --git a/esp3d/src/modules/http/handlers/handle-config.cpp b/esp3d/src/modules/http/handlers/handle-config.cpp index 4bddc14c..43e96065 100644 --- a/esp3d/src/modules/http/handlers/handle-config.cpp +++ b/esp3d/src/modules/http/handlers/handle-config.cpp @@ -39,7 +39,7 @@ void HTTP_Server::handle_config() { if (_webserver->hasArg("json")) { cmd += " json=" + _webserver->arg("json"); } - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::http, ESP3DClientType::http, (uint8_t *)cmd.c_str(), cmd.length(), auth_level); if (msg) { diff --git a/esp3d/src/modules/http/http_server.cpp b/esp3d/src/modules/http/http_server.cpp index af12856d..08299927 100644 --- a/esp3d/src/modules/http/http_server.cpp +++ b/esp3d/src/modules/http/http_server.cpp @@ -289,7 +289,7 @@ bool HTTP_Server::dispatch(ESP3DMessage* msg) { _webserver->sendContent(""); } } - ESP3DMessageManager::deleteMsg(msg); + esp3d_message_manager.deleteMsg(msg); return true; } return false; @@ -346,13 +346,7 @@ void HTTP_Server::end() { void HTTP_Server::handle() { if (_started) { if (_webserver) { -#ifdef DISABLE_WDT_CORE_0 - disableCore0WDT(); -#endif // DISABLE_WDT_CORE_0 _webserver->handleClient(); -#ifdef DISABLE_WDT_CORE_0 - enableCore0WDT(); -#endif // DISABLE_WDT_CORE_0 } } } diff --git a/esp3d/src/modules/lua_interpreter/lua_interpreter_service.cpp b/esp3d/src/modules/lua_interpreter/lua_interpreter_service.cpp index a7b44c17..7f62fb67 100644 --- a/esp3d/src/modules/lua_interpreter/lua_interpreter_service.cpp +++ b/esp3d/src/modules/lua_interpreter/lua_interpreter_service.cpp @@ -20,12 +20,15 @@ #include "../../include/esp3d_config.h" -#ifdef ESP_LUA_INTERPRETER_FEATURE +#if defined(ESP_LUA_INTERPRETER_FEATURE) && defined(ARDUINO_ARCH_ESP32) #include "../../core/esp3d_commands.h" #include "../../core/esp3d_hal.h" #include "../../core/esp3d_settings.h" #include "lua_interpreter_service.h" +#if defined(NOTIFICATION_FEATURE) +#include "../notifications/notifications_service.h" +#endif // NOTIFICATION_FEATURE #if defined(FILESYSTEM_FEATURE) #include "../filesystem/esp_filesystem.h" #endif // FILESYSTEM_FEATURE @@ -39,20 +42,21 @@ LuaInterpreter esp3d_lua_interpreter; LuaInterpreter::LuaInterpreter() { _scriptTask = NULL; - _isRunning = false; - _isPaused = false; _pauseTime = 0; - _pauseSemaphore = xSemaphoreCreateBinary(); _luaFSType = Lua_Filesystem_Type::none; - xSemaphoreGive(_pauseSemaphore); // Initialize as available setupFunctions(); registerConstants(); _scriptBuffer = nullptr; + _stateMutex = xSemaphoreCreateMutex(); + _messageInFIFO.setMaxSize(10); // no limit + _messageInFIFO.setId("in"); + _messageOutFIFO.setMaxSize(0); // no limit + _messageOutFIFO.setId("out"); } LuaInterpreter::~LuaInterpreter() { deleteScriptTask(); - vSemaphoreDelete(_pauseSemaphore); + vSemaphoreDelete(_stateMutex); } bool LuaInterpreter::dispatch(ESP3DMessage *message) { @@ -60,90 +64,105 @@ bool LuaInterpreter::dispatch(ESP3DMessage *message) { return false; } if (message->size > 0 && message->data) { - _messageFIFO.push(message); + _messageInFIFO.push(message); return true; } return false; } +const char *LuaInterpreter::getLastError() { + esp3d_log("getLastError %s %s", _lastError.c_str(), _luaEngine.getLastError()); + if (_lastError.length() == 0) { + return _luaEngine.getLastError(); + } + return _lastError.c_str(); +} + bool LuaInterpreter::createScriptTask() { if (_scriptTask != NULL) { deleteScriptTask(); } - BaseType_t xReturned = xTaskCreate(scriptExecutionTask, "LuaScriptTask", 8192, - this, tskIDLE_PRIORITY + 1, &_scriptTask); + _lastError = ""; + BaseType_t xReturned = xTaskCreatePinnedToCore( + scriptExecutionTask, /* Task function. */ + "LuaScriptTask", /* name of task. */ + 8192, /* Stack size of task */ + this, /* parameter of the task = is main or bridge*/ + 1, /* priority of the task */ + &_scriptTask, /* Task handle to keep track of created task */ + 1 /* Core to run the task */ + ); if (xReturned != pdPASS) { - _lastError = "Failed to create script task"; + if (_lastError.length() == 0) _lastError = "Failed to create script task"; return false; } - _isRunning = true; - _isPaused = false; _startTime = millis(); return true; } bool LuaInterpreter::executeScriptAsync(const char *script) { bool result = true; - if (_isRunning) { - _lastError = "A script is already running"; + if (_luaEngine.isRunning()) { + if (_lastError.length() == 0) _lastError = "A script is already running"; return false; } _currentScriptName = script; if (!createScriptTask()) { - _lastError = "Failed to create script task"; + if (_lastError.length() == 0) _lastError = "Failed to create script task"; result = false; } return result; } -void LuaInterpreter::abortCurrentScript() { - if (_isRunning && _scriptTask != NULL) { - deleteScriptTask(); - _lastError = "Script aborted"; +void LuaInterpreter::abortScript() { + if (_luaEngine.isRunning() && _scriptTask != NULL) { + if (_lastError.length() == 0) _lastError = "Script aborted"; + _luaEngine.stopExecution(); } } bool LuaInterpreter::pauseScript() { - if (_isRunning && !_isPaused) { - _isPaused = true; + if (_luaEngine.isRunning() && !_luaEngine.isPaused()) { + _luaEngine.pauseExecution(); _pauseTime = millis(); - xSemaphoreTake(_pauseSemaphore, 0); return true; } return false; } bool LuaInterpreter::resumeScript() { - if (_isRunning && _isPaused) { - _isPaused = false; + if (_luaEngine.isRunning() && _luaEngine.isPaused()) { + _luaEngine.resumeExecution(); _startTime += (millis() - _pauseTime); - xSemaphoreGive(_pauseSemaphore); return true; } return false; } +void LuaInterpreter::resetLuaEnvironment() { + _luaEngine.resetState(); + setupFunctions(); + registerConstants(); +} + void LuaInterpreter::deleteScriptTask() { - if (_scriptTask != NULL) { - vTaskDelete(_scriptTask); - _scriptTask = NULL; - } + esp3d_log("Delete script task start"); if (_scriptBuffer) { + esp3d_log("Free script buffer"); free(_scriptBuffer); _scriptBuffer = nullptr; } - _isRunning = false; - _isPaused = false; + esp3d_log("Reset lua environment"); _luaFSType = Lua_Filesystem_Type::none; -} - -void LuaInterpreter::checkPause() { - if (_isPaused) { - xSemaphoreTake(_pauseSemaphore, portMAX_DELAY); - xSemaphoreGive(_pauseSemaphore); + if (_lastError != "") resetLuaEnvironment(); + if (_scriptTask != NULL) { + esp3d_log("Delete script task"); + TaskHandle_t tmpTask = _scriptTask; + _scriptTask = NULL; + vTaskDelete(tmpTask); } } @@ -152,6 +171,7 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { String scriptName = self->_currentScriptName; if (self->_scriptBuffer) { free(self->_scriptBuffer); + self->_scriptBuffer = nullptr; } self->_lastError = ""; size_t fileSize = 0; @@ -175,8 +195,9 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { fileSize = FSfileHandle.size(); esp3d_log("File %s opened, size is %d", scriptName.c_str(), fileSize); if (fileSize > ESP_LUA_MAX_SCRIPT_SIZE) { - self->_lastError = "File size is too large"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "File size is too large"; + esp3d_log_e("%s", "File size is too large"); } else { // allocate memory for the script self->_scriptBuffer = (char *)malloc(fileSize + 1); @@ -188,24 +209,28 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { esp3d_log("File %s read into buffer", scriptName.c_str()); // check if the read is ok if (readSize != fileSize) { - self->_lastError = "Failed to read file"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "Failed to read file"; + esp3d_log_e("%s", self->_lastError.c_str()); } else { self->_luaFSType = Lua_Filesystem_Type::fLash; } } else { - self->_lastError = "Failed to allocate memory for script"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "Failed to allocate memory for script"; + esp3d_log_e("%s", "Failed to allocate memory for script"); } } FSfileHandle.close(); } else { - self->_lastError = "File is not open: " + scriptName; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "File is not open: " + scriptName; + esp3d_log_e("%s", self->_lastError.c_str()); } } else { - self->_lastError = "File not found: " + scriptName; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "File not found: " + scriptName; + esp3d_log_e("%s", "File is not open: " + scriptName); } } #endif // FILESYSTEM_FEATURE @@ -216,12 +241,13 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { esp3d_log("Processing SD file %s", scriptName.c_str()); // Check if the SD file system is available if (!ESP_SD::accessFS()) { - self->_lastError = "SD file system not found"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "SD file system not found"; + esp3d_log_e("%s", "SD file system not found"); } else { if (ESP_SD::getState(true) == ESP_SDCARD_NOT_PRESENT) { - self->_lastError = "SD card not present"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) self->_lastError = "SD card not present"; + esp3d_log_e("%s", "SD card not present"); } else { ESP_SD::setState(ESP_SDCARD_BUSY); // Check script name exists @@ -232,8 +258,9 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { // Check script file size is under 2048 bytes fileSize = SDfileHandle.size(); if (fileSize > ESP_LUA_MAX_SCRIPT_SIZE) { - self->_lastError = "File size is too large"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "File size is too large"; + esp3d_log_e("%s", "File size is too large"); } else { // allocate memory for the script self->_scriptBuffer = (char *)malloc(fileSize + 1); @@ -245,25 +272,29 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { esp3d_log("File %s read into buffer", scriptName.c_str()); // check if the read is ok if (readSize != fileSize) { - self->_lastError = "Failed to read file"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "Failed to read file"; + esp3d_log_e("%s", "Failed to read file"); } else { self->_luaFSType = Lua_Filesystem_Type::sd; } } else { - self->_lastError = "Failed to allocate memory for script"; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "Failed to allocate memory for script"; + esp3d_log_e("%s", "Failed to allocate memory for script"); } } // close the file SDfileHandle.close(); } else { - self->_lastError = "File is not open: " + scriptName; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) self->_lastError = + "File is not open: " + scriptName; + esp3d_log_e("%s", "File is not open: " + scriptName); } } else { - self->_lastError = "File not found: " + scriptName; - esp3d_log_e(% s, self->_lastError.c_str()); + if (self->_lastError.length() == 0) + self->_lastError = "File not found: " + scriptName; + esp3d_log_e("%s", "File not found: " + scriptName); } } ESP_SD::releaseFS(); @@ -271,30 +302,76 @@ void LuaInterpreter::scriptExecutionTask(void *parameter) { } #endif // SD_DEVICE // Check if the file system type is not determined - if (self->_luaFSType == Lua_Filesystem_Type::none && - self->_lastError.length() == 0) { - self->_lastError = "Cannot determine file system type"; - esp3d_log_e(% s, self->_lastError.c_str()); - } - // Execute the script - if (self->_luaFSType != Lua_Filesystem_Type::none && self->_scriptBuffer) { - if (!self->_luaEngine.executeScript(self->_scriptBuffer)) { - self->_lastError = "Script execution failed"; - esp3d_log_e(% s, self->_lastError.c_str()); + esp3d_log("Check state"); + if (self->_luaFSType == Lua_Filesystem_Type::none) { + if (self->_lastError.length() == 0) + self->_lastError = "Cannot determine file system type"; + esp3d_log_e("%s", "Cannot determine file system type"); + } else { + // Execute the script + esp3d_log("Execute script"); + if (self->_luaFSType != Lua_Filesystem_Type::none && self->_scriptBuffer) { + if (!self->_luaEngine.executeScript(self->_scriptBuffer)) { + if (self->_lastError.length() == 0) { + self->_lastError = "Script execution failed"; + } + esp3d_log_e("%s", "Script execution failed"); + } } } + esp3d_log("Delete script task"); self->deleteScriptTask(); } -unsigned long LuaInterpreter::getExecutionTime() const { - if (!_isRunning) return 0; - if (_isPaused) return _pauseTime - _startTime; +bool LuaInterpreter::begin() { + end(); + return true; +} + +void LuaInterpreter::end() { deleteScriptTask(); } + +void LuaInterpreter::handle() { + static bool notificationSent = false; + if (_luaEngine.isRunning() && notificationSent) { + notificationSent = false; + } + if (_messageOutFIFO.size() > 0 || _luaEngine.hasError()) { + if (xSemaphoreTake(_stateMutex, portMAX_DELAY) == pdTRUE) { + // Check if the script is in error state and if still running + if (_luaEngine.hasError()) { + _lastError = _luaEngine.getLastError(); +#ifdef NOTIFICATION_FEATURE + if (!notificationSent) { + String errorMsg = "Error: " + _lastError; + notificationsservice.sendAutoNotification(errorMsg.c_str()); + notificationSent = true; + } +#endif // NOTIFICATION_FEATURE + } + if (_messageOutFIFO.size() > 0) { + esp3d_log("lua_interpreter message size %d", _messageOutFIFO.size()); + } + ESP3DMessage *msg = _messageOutFIFO.pop(); + if (msg) { + esp3d_log("Processing message: %s", msg->data); + esp3d_commands.process(msg); + } + xSemaphoreGive(_stateMutex); + } else { + esp3d_log_e("Mutex not taken"); + } + } +} + +uint64_t LuaInterpreter::getExecutionTime() { + if (!_luaEngine.isRunning()) return 0; + if (_luaEngine.isPaused()) return _pauseTime - _startTime; return millis() - _startTime; } -bool LuaInterpreter::isScriptRunning() const { return _isRunning; } +bool LuaInterpreter::isScriptRunning() { return _luaEngine.isRunning(); } -bool LuaInterpreter::isScriptPaused() const { return _isPaused; } +bool LuaInterpreter::isScriptPaused() { return _luaEngine.isPaused(); } void LuaInterpreter::setupFunctions() { _luaEngine.registerFunction("pinMode", l_pinMode); @@ -304,9 +381,10 @@ void LuaInterpreter::setupFunctions() { _luaEngine.registerFunction("analogRead", l_analogRead); _luaEngine.registerFunction("available", l_available, this); _luaEngine.registerFunction("readData", l_readData, this); - _luaEngine.registerFunction("delay", l_delay); + _luaEngine.registerFunction("delay", l_delay, this); _luaEngine.registerFunction("yield", l_yield); _luaEngine.registerFunction("millis", l_millis); + _luaEngine.registerFunction("print", l_print, this); } void LuaInterpreter::registerConstants() { @@ -354,21 +432,45 @@ int LuaInterpreter::l_analogRead(lua_State *L) { return 1; } -int l_print(lua_State *L) { +int LuaInterpreter::l_print(lua_State *L) { + esp3d_log("lua_interpreter output"); + LuaInterpreter *self = + (LuaInterpreter *)lua_touserdata(L, lua_upvalueindex(1)); String dataString; + dataString = ""; int nargs = lua_gettop(L); + // esp3d_log("lua_interpreter output args %d", nargs); for (int i = 1; i <= nargs; i++) { + // esp3d_log("lua_interpreter output arg %d", i); if (lua_isstring(L, i)) { dataString += lua_tostring(L, i); + } else if (lua_isnumber(L, i)) { + dataString += String(lua_tonumber(L, i)); + } else if (lua_isboolean(L, i)) { + dataString += lua_toboolean(L, i) ? "true" : "false"; + } else if (lua_isnil(L, i)) { + dataString += "nil"; + } else { + dataString += lua_typename(L, lua_type(L, i)); } } - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + if (!dataString.endsWith("\n")) { + dataString += "\n"; + } + esp3d_log("lua_interpreter output %s", dataString.c_str()); + esp3d_log("Message Creation"); + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::lua_script, esp3d_commands.getOutputClient(), (uint8_t *)dataString.c_str(), dataString.length(), ESP3DAuthenticationLevel::admin); + esp3d_log("Message created"); + if (msg) { // process command - esp3d_commands.process(msg); + msg->type = ESP3DMessageType::unique; + esp3d_log("Message sent to fifo list"); + // push to FIFO + self->_messageOutFIFO.push(msg); } else { esp3d_log_e("Cannot create message"); } @@ -378,17 +480,17 @@ int l_print(lua_State *L) { int LuaInterpreter::l_available(lua_State *L) { LuaInterpreter *self = (LuaInterpreter *)lua_touserdata(L, lua_upvalueindex(1)); - lua_pushinteger(L, self->_messageFIFO.size()); + lua_pushinteger(L, self->_messageInFIFO.size()); return 1; } int LuaInterpreter::l_readData(lua_State *L) { LuaInterpreter *self = (LuaInterpreter *)lua_touserdata(L, lua_upvalueindex(1)); - ESP3DMessage *message = self->_messageFIFO.pop(); + ESP3DMessage *message = self->_messageInFIFO.pop(); if (message) { lua_pushlstring(L, (const char *)message->data, message->size); - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); } else { lua_pushnil(L); } @@ -396,8 +498,27 @@ int LuaInterpreter::l_readData(lua_State *L) { } int LuaInterpreter::l_delay(lua_State *L) { + LuaInterpreter *self = + (LuaInterpreter *)lua_touserdata(L, lua_upvalueindex(1)); int ms = luaL_checkinteger(L, 1); - vTaskDelay(pdMS_TO_TICKS(ms)); + TickType_t delayTicks = pdMS_TO_TICKS(ms); + // Check if during delay the script is aborted or paused + while (delayTicks > 0) { + TickType_t delayThis = (delayTicks > ESP_LUA_CHECK_INTERVAL) + ? ESP_LUA_CHECK_INTERVAL + : delayTicks; + vTaskDelay(delayThis); + delayTicks -= delayThis; + while (self->_luaEngine.isPaused()) { + vTaskDelay(ESP_LUA_CHECK_INTERVAL); + } + + if (!(self->_luaEngine.isRunning())) { + if (self->_lastError.length() == 0) + self->_lastError = "Execution stopped"; + luaL_error(L, "Execution stopped"); + } + } return 0; } diff --git a/esp3d/src/modules/lua_interpreter/lua_interpreter_service.h b/esp3d/src/modules/lua_interpreter/lua_interpreter_service.h index 7f85fd19..c38d606d 100644 --- a/esp3d/src/modules/lua_interpreter/lua_interpreter_service.h +++ b/esp3d/src/modules/lua_interpreter/lua_interpreter_service.h @@ -18,7 +18,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #pragma once - +#if defined(ARDUINO_ARCH_ESP32) #include #include @@ -39,28 +39,30 @@ class LuaInterpreter { ~LuaInterpreter(); bool executeScriptAsync(const char* script); - void abortCurrentScript(); + void abortScript(); bool pauseScript(); bool resumeScript(); const char* getCurrentScriptName() { return _currentScriptName.c_str(); } - unsigned long getExecutionTime() const; - bool isScriptRunning() const; - bool isScriptPaused() const; - const char* getLastError() const; + uint64_t getExecutionTime(); + bool isScriptRunning(); + bool isScriptPaused(); + const char* getLastError(); bool dispatch(ESP3DMessage* message); + bool begin(); + void end(); + void handle(); private: EspLuaEngine _luaEngine; TaskHandle_t _scriptTask; char* _scriptBuffer; - SemaphoreHandle_t _pauseSemaphore; - ESP3DMessageFIFO _messageFIFO; + SemaphoreHandle_t _stateMutex; + ESP3DMessageFIFO _messageInFIFO; + ESP3DMessageFIFO _messageOutFIFO; Lua_Filesystem_Type _luaFSType; String _currentScriptName; unsigned long _startTime; unsigned long _pauseTime; - bool _isRunning; - bool _isPaused; String _lastError; static void scriptExecutionTask(void* parameter); @@ -68,7 +70,7 @@ class LuaInterpreter { void registerConstants(); bool createScriptTask(); void deleteScriptTask(); - void checkPause(); + void resetLuaEnvironment(); // Wrappers static int l_print(lua_State* L); @@ -85,3 +87,5 @@ class LuaInterpreter { }; extern LuaInterpreter esp3d_lua_interpreter; + +#endif // defined(ARDUINO_ARCH_ESP32) \ No newline at end of file diff --git a/esp3d/src/modules/mDNS/mDNS.cpp b/esp3d/src/modules/mDNS/mDNS.cpp index 130d8f5d..dbf93c2e 100644 --- a/esp3d/src/modules/mDNS/mDNS.cpp +++ b/esp3d/src/modules/mDNS/mDNS.cpp @@ -252,7 +252,7 @@ const char* mDNS_Service::answerIP(uint16_t index) { return ""; } #if defined(ARDUINO_ARCH_ESP32) - tmp = MDNS.IP(index).toString(); + tmp = MDNS.address(index).toString(); #endif // ARDUINO_ARCH_ESP32 #if defined(ARDUINO_ARCH_ESP8266) diff --git a/esp3d/src/modules/mks/mks_service.cpp b/esp3d/src/modules/mks/mks_service.cpp index 7de53b12..4c7c3836 100644 --- a/esp3d/src/modules/mks/mks_service.cpp +++ b/esp3d/src/modules/mks/mks_service.cpp @@ -120,7 +120,7 @@ bool MKSService::dispatch(ESP3DMessage *message) { } if (message->size > 0 && message->data) { if (sendGcodeFrame((const char *)message->data)) { - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); return true; } } diff --git a/esp3d/src/modules/network/netconfig.cpp b/esp3d/src/modules/network/netconfig.cpp index 870608cc..a5ec78c0 100644 --- a/esp3d/src/modules/network/netconfig.cpp +++ b/esp3d/src/modules/network/netconfig.cpp @@ -48,6 +48,10 @@ #include "../gcode_host/gcode_host.h" #endif // GCODE_HOST_FEATURE +#if defined(ARDUINO_ARCH_ESP32) +esp_netif_t *get_esp_interface_netif(esp_interface_t interface); +#endif // ARDUINO_ARCH_ESP32 + String NetConfig::_hostname = ""; bool NetConfig::_needReconnect2AP = false; bool NetConfig::_events_registered = false; @@ -231,11 +235,12 @@ void NetConfig::onWiFiEvent(WiFiEvent_t event) { case ARDUINO_EVENT_WIFI_STA_LOST_IP: if (_started) { _needReconnect2AP = true; + esp3d_log("WiFi STA lost IP"); } break; #ifdef ETH_FEATURE case ARDUINO_EVENT_ETH_START: { - EthConfig::setConnected(false); + esp3d_log("Ethernet started"); if (ESP3DSettings::isVerboseBoot()) { esp3d_commands.dispatch( "Checking connection", ESP3DClientType::all_clients, no_id, @@ -248,18 +253,24 @@ void NetConfig::onWiFiEvent(WiFiEvent_t event) { no_id, ESP3DMessageType::unique, ESP3DClientType::system, ESP3DAuthenticationLevel::admin); + esp3d_log("Ethernet connected"); EthConfig::setConnected(true); } break; case ARDUINO_EVENT_ETH_DISCONNECTED: { + esp3d_log("Ethernet disconnected"); esp3d_commands.dispatch("Cable disconnected", ESP3DClientType::all_clients, no_id, ESP3DMessageType::unique, ESP3DClientType::system, ESP3DAuthenticationLevel::admin); EthConfig::setConnected(false); } break; + case ARDUINO_EVENT_ETH_LOST_IP: + esp3d_log("Ethernet lost IP"); + break; case ARDUINO_EVENT_ETH_GOT_IP: { #if COMMUNICATION_PROTOCOL != MKS_SERIAL #if defined(ESP_GOT_IP_HOOK) && defined(GCODE_HOST_FEATURE) + ESP3DHal::wait(500); String ipMsg = esp3d_string::expandString(ESP_GOT_IP_HOOK); esp3d_log("Got IP, sending hook: %s", ipMsg.c_str()); esp3d_gcode_host.processScript(ipMsg.c_str(), @@ -268,7 +279,9 @@ void NetConfig::onWiFiEvent(WiFiEvent_t event) { #endif // #if COMMUNICATION_PROTOCOL == MKS_SERIAL EthConfig::setConnected(true); } break; + case ARDUINO_EVENT_ETH_STOP: + esp3d_log("Ethernet stopped"); EthConfig::setConnected(false); break; #endif // ETH_FEATURE @@ -523,12 +536,20 @@ void NetConfig::handle() { bool NetConfig::isIPModeDHCP(uint8_t mode) { bool started = false; #ifdef ARDUINO_ARCH_ESP32 - tcpip_adapter_dhcp_status_t dhcp_status; - tcpip_adapter_dhcpc_get_status((mode == ESP_WIFI_STA) ? TCPIP_ADAPTER_IF_STA - : (mode == ESP_WIFI_AP) ? TCPIP_ADAPTER_IF_AP - : TCPIP_ADAPTER_IF_ETH, +if (mode == ESP_WIFI_STA || mode == ESP_WIFI_AP) { + esp_netif_dhcp_status_t dhcp_status; + esp_netif_dhcpc_get_status((mode == ESP_WIFI_STA) ? get_esp_interface_netif(ESP_IF_WIFI_STA) + : get_esp_interface_netif(ESP_IF_WIFI_AP), &dhcp_status); - started = (dhcp_status == TCPIP_ADAPTER_DHCP_STARTED); + esp3d_log("DHCP Status %d", (int)dhcp_status); + started = (dhcp_status == ESP_NETIF_DHCP_STARTED); +} +#if defined(ETH_FEATURE) +if (mode == ESP_ETH_STA) { + started = (EthConfig::ipMode()==DHCP_MODE); +} +#endif // ETH_FEATURE + #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 (void)mode; @@ -540,12 +561,13 @@ bool NetConfig::isIPModeDHCP(uint8_t mode) { bool NetConfig::isDHCPServer(uint8_t mode) { bool itis = false; #ifdef ARDUINO_ARCH_ESP32 - tcpip_adapter_dhcp_status_t dhcp_status; - tcpip_adapter_dhcps_get_status((mode == ESP_WIFI_STA) ? TCPIP_ADAPTER_IF_STA - : (mode == ESP_WIFI_AP) ? TCPIP_ADAPTER_IF_AP - : TCPIP_ADAPTER_IF_ETH, + //Fzor some reason esp_netif_dhcps_get_status() give always !DHCP_MODE for Ethernet even if it is set to DHCP + if (mode == ESP_WIFI_AP) { + esp_netif_dhcp_status_t dhcp_status; + esp_netif_dhcps_get_status(get_esp_interface_netif(ESP_IF_WIFI_AP), &dhcp_status); - itis = (dhcp_status == TCPIP_ADAPTER_DHCP_STARTED); + itis = (dhcp_status == ESP_NETIF_DHCP_STARTED); + } #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 (void)mode; diff --git a/esp3d/src/modules/network/netconfig.h b/esp3d/src/modules/network/netconfig.h index d886ecaf..cbcb26b0 100644 --- a/esp3d/src/modules/network/netconfig.h +++ b/esp3d/src/modules/network/netconfig.h @@ -35,6 +35,7 @@ #ifdef ARDUINO_ARCH_ESP32 #include +#include #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 #include diff --git a/esp3d/src/modules/serial/serial_service.cpp b/esp3d/src/modules/serial/serial_service.cpp index 486e55ce..32bd2361 100644 --- a/esp3d/src/modules/serial/serial_service.cpp +++ b/esp3d/src/modules/serial/serial_service.cpp @@ -37,7 +37,7 @@ HardwareSerial *Serials[MAX_SERIAL] = {&Serial, &Serial1}; #if defined(ARDUINO_ARCH_ESP32) -#if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S2) +#if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) ||defined(CONFIG_IDF_TARGET_ESP32S2) #define MAX_SERIAL 2 HardwareSerial *Serials[MAX_SERIAL] = {&Serial, &Serial1}; #else @@ -293,7 +293,7 @@ void ESP3DSerialService::flushbuffer() { // dispatch command if (_started) { - ESP3DMessage *message = ESP3DMessageManager::newMsg( + ESP3DMessage *message = esp3d_message_manager.newMsg( _origin, _id == MAIN_SERIAL ? ESP3DClientType::all_clients : esp3d_commands.getOutputClient(), @@ -550,7 +550,7 @@ bool ESP3DSerialService::dispatch(ESP3DMessage *message) { if (writeBytes(message->data, message->size) == message->size) { flush(); // Delete message now - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); done = true; } else { esp3d_log_e("Error while sending data"); diff --git a/esp3d/src/modules/serial2socket/serial2socket.cpp b/esp3d/src/modules/serial2socket/serial2socket.cpp index 2f657cd8..4b134212 100644 --- a/esp3d/src/modules/serial2socket/serial2socket.cpp +++ b/esp3d/src/modules/serial2socket/serial2socket.cpp @@ -167,7 +167,7 @@ void Serial_2_Socket::handle_flush() { } void Serial_2_Socket::flush(void) { if (_TXbufferSize > 0 && _started && !_paused) { - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::socket_serial, ESP3DClientType::all_clients, _TXbuffer, _TXbufferSize, _auth); // dispatch command @@ -195,7 +195,7 @@ bool Serial_2_Socket::dispatch(ESP3DMessage *message) { esp3d_log_e("Serial2Socket: cannot push all data"); return false; } - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); return true; } esp3d_log_e("Serial2Socket: no data in message"); diff --git a/esp3d/src/modules/telnet/telnet_server.cpp b/esp3d/src/modules/telnet/telnet_server.cpp index e39de7c0..d09ce198 100644 --- a/esp3d/src/modules/telnet/telnet_server.cpp +++ b/esp3d/src/modules/telnet/telnet_server.cpp @@ -22,8 +22,7 @@ #if defined(TELNET_FEATURE) || \ (defined(ESP_LOG_FEATURE) && ESP_LOG_FEATURE == LOG_OUTPUT_TELNET) -#include -#include + #include "../../core/esp3d_commands.h" #include "../../core/esp3d_message.h" @@ -200,7 +199,7 @@ bool Telnet_Server::dispatch(ESP3DMessage *message) { if (sentcnt != message->size) { return false; } - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); return true; } return false; @@ -221,7 +220,7 @@ void Telnet_Server::flushbuffer() { return; } _buffer[_buffer_size] = 0x0; - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::telnet, esp3d_commands.getOutputClient(), _buffer, _buffer_size, _auth); if (msg) { diff --git a/esp3d/src/modules/telnet/telnet_server.h b/esp3d/src/modules/telnet/telnet_server.h index a70508a4..d70eb78a 100644 --- a/esp3d/src/modules/telnet/telnet_server.h +++ b/esp3d/src/modules/telnet/telnet_server.h @@ -21,8 +21,9 @@ #ifndef _TELNET_SERVER_H #define _TELNET_SERVER_H -class WiFiServer; -class WiFiClient; +#include +#include + #include "../../core/esp3d_message.h" #define ESP3D_TELNET_BUFFER_SIZE 1200 diff --git a/esp3d/src/modules/update/update_service.cpp b/esp3d/src/modules/update/update_service.cpp index 2ecf50f2..e6400295 100644 --- a/esp3d/src/modules/update/update_service.cpp +++ b/esp3d/src/modules/update/update_service.cpp @@ -63,11 +63,11 @@ const uint16_t ServstringKeysPos[] = {ESP_TIME_ZONE, ESP_NOTIFICATION_TOKEN2, ESP_NOTIFICATION_SETTINGS}; -const char* IPKeysVal[] = {"STA_IP", "STA_GW", "STA_MSK", "STA_DNS", "AP_IP"}; +const char* IPKeysVal[] = {"STA_IP", "STA_GW", "STA_MSK", "STA_DNS", "AP_IP","ETH_STA_IP", "ETH_STA_GW", "ETH_STA_MSK", "ETH_STA_DNS"}; const uint16_t IPKeysPos[] = {ESP_STA_IP_VALUE, ESP_STA_GATEWAY_VALUE, ESP_STA_MASK_VALUE, ESP_STA_DNS_VALUE, - ESP_AP_IP_VALUE}; + ESP_AP_IP_VALUE, ESP_ETH_STA_IP_VALUE, ESP_ETH_STA_GATEWAY_VALUE, ESP_ETH_STA_MASK_VALUE, ESP_ETH_STA_DNS_VALUE}; const char* ServintKeysVal[] = { "Serial_Bridge_Baud" @@ -226,7 +226,7 @@ bool processingFileFunction(const char* section, const char* key, } else if (strcasecmp("OFF", value) == 0) { b = ESP_NO_NETWORK; } else { - P = -1; // invalide value + P = -1; // invalid value } } } @@ -243,7 +243,23 @@ bool processingFileFunction(const char* section, const char* key, } else if (strcasecmp("OFF", value) == 0) { b = ESP_NO_NETWORK; } else { - P = -1; // invalide value + P = -1; // invalid value + } + } + } + + // ETH STA fallback mode BT, OFF + if (!done) { + if (strcasecmp("eth_sta_fallback", key) == 0) { + T = 'B'; + P = ESP_STA_FALLBACK_MODE; + done = true; + if (strcasecmp("BT", value) == 0) { + b = ESP_BT; + } else if (strcasecmp("OFF", value) == 0) { + b = ESP_NO_NETWORK; + } else { + P = -1; // invalid value } } } @@ -259,10 +275,27 @@ bool processingFileFunction(const char* section, const char* key, } else if (strcasecmp("STATIC", key) == 0) { b = STATIC_IP_MODE; } else { - P = -1; // invalide value + P = -1; // invalid value } } } + + // ETH STA IP Mode DHCP / STATIC + if (!done) { + if (strcasecmp("ETH_STA_IP_mode", key) == 0) { + T = 'B'; + P = ESP_ETH_STA_IP_MODE; + done = true; + if (strcasecmp("DHCP", value) == 0) { + b = DHCP_MODE; + } else if (strcasecmp("STATIC", key) == 0) { + b = STATIC_IP_MODE; + } else { + P = -1; // invalid value + } + } + } + } else if (strcasecmp("services", section) == 0) { if (!done) { done = processString(ServstringKeysVal, ServstringKeysPos, @@ -310,7 +343,7 @@ bool processingFileFunction(const char* section, const char* key, } else if (strcasecmp("HOMEASSISTANT", value) == 0) { b = ESP_HOMEASSISTANT_NOTIFICATION; } else { - P = -1; // invalide value + P = -1; // invalid value } } } @@ -333,7 +366,7 @@ bool processingFileFunction(const char* section, const char* key, } else if (strcasecmp("BME280", key) == 0) { b = BME280_DEVICE; } else { - P = -1; // invalide value + P = -1; // invalid value } } } @@ -366,7 +399,7 @@ bool processingFileFunction(const char* section, const char* key, } else if (strcasecmp("SMOOTHIEWARE", value) == 0) { b = SMOOTHIEWARE; } else { - P = -1; // invalide value + P = -1; // invalid value } } } diff --git a/esp3d/src/modules/webdav/webdav_server.h b/esp3d/src/modules/webdav/webdav_server.h index 2c69f1ce..51b1195c 100644 --- a/esp3d/src/modules/webdav/webdav_server.h +++ b/esp3d/src/modules/webdav/webdav_server.h @@ -45,8 +45,8 @@ typedef ESP_SDFile WebDavFile; typedef ESP_SD WebDavFS; #endif // WEBDAV_FEATURE == FS_SD -class WiFiServer; -class WiFiClient; +#include +#include class WebdavServer { public: diff --git a/esp3d/src/modules/websocket/websocket_server.cpp b/esp3d/src/modules/websocket/websocket_server.cpp index c3aeb3a9..d2a7b51a 100644 --- a/esp3d/src/modules/websocket/websocket_server.cpp +++ b/esp3d/src/modules/websocket/websocket_server.cpp @@ -64,7 +64,7 @@ bool WebSocket_Server::dispatch(ESP3DMessage *message) { if (sentcnt != message->size) { return false; } - ESP3DMessageManager::deleteMsg(message); + esp3d_message_manager.deleteMsg(message); return true; } return false; @@ -330,7 +330,7 @@ void WebSocket_Server::flushRXbuffer() { return; } _RXbuffer[_RXbufferSize] = 0x0; - ESP3DMessage *msg = ESP3DMessageManager::newMsg( + ESP3DMessage *msg = esp3d_message_manager.newMsg( _type, esp3d_commands.getOutputClient(), _RXbuffer, _RXbufferSize, _auth); if (msg) { // process command diff --git a/esp3d/src/modules/wifi/wificonfig.cpp b/esp3d/src/modules/wifi/wificonfig.cpp index 742a2327..162353b7 100644 --- a/esp3d/src/modules/wifi/wificonfig.cpp +++ b/esp3d/src/modules/wifi/wificonfig.cpp @@ -22,6 +22,7 @@ #if defined(WIFI_FEATURE) #ifdef ARDUINO_ARCH_ESP32 #include +#include #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 #endif // ARDUINO_ARCH_ESP8266 @@ -30,6 +31,10 @@ #include "../network/netconfig.h" #include "../wifi/wificonfig.h" +#if defined(ARDUINO_ARCH_ESP32) +esp_netif_t *get_esp_interface_netif(esp_interface_t interface); +#endif // ARDUINO_ARCH_ESP32 + const uint8_t DEFAULT_AP_MASK_VALUE[] = {255, 255, 255, 0}; IPAddress WiFiConfig::_ap_gateway; @@ -468,8 +473,8 @@ const char* WiFiConfig::AP_Auth_String() { const char* WiFiConfig::AP_Gateway_String() { static String tmp; #ifdef ARDUINO_ARCH_ESP32 - tcpip_adapter_ip_info_t ip_AP; - tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_AP, &ip_AP); + esp_netif_ip_info_t ip_AP; + esp_netif_get_ip_info(get_esp_interface_netif(ESP_IF_WIFI_AP), &ip_AP); tmp = IPAddress(ip_AP.gw.addr).toString(); #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 @@ -485,8 +490,8 @@ const char* WiFiConfig::AP_Gateway_String() { const char* WiFiConfig::AP_Mask_String() { static String tmp; #ifdef ARDUINO_ARCH_ESP32 - tcpip_adapter_ip_info_t ip_AP; - tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_AP, &ip_AP); + esp_netif_ip_info_t ip_AP; + esp_netif_get_ip_info(get_esp_interface_netif(ESP_IF_WIFI_STA), &ip_AP); tmp = IPAddress(ip_AP.netmask.addr).toString(); #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 @@ -509,16 +514,22 @@ const char* WiFiConfig::getConnectedSTA(uint8_t* totalcount, bool reset) { if (current > count) { current = 0; } - static wifi_sta_list_t station; - static tcpip_adapter_sta_list_t tcpip_sta_list; +static wifi_sta_list_t sta_list; +static wifi_sta_mac_ip_list_t tcpip_sta_list; + if (reset) { count = 0; } if (count == 0) { current = 0; - esp_wifi_ap_get_sta_list(&station); - tcpip_adapter_get_sta_list(&station, &tcpip_sta_list); - count = station.num; + if(esp_wifi_ap_get_sta_list(&sta_list)!=ESP_OK){ + return ""; +} + if (sta_list.num > 0) { + ESP_ERROR_CHECK( + esp_wifi_ap_get_sta_list_with_ip(&sta_list, &tcpip_sta_list)); + } + count = sta_list.num; } if (count > 0) { data = IPAddress(tcpip_sta_list.sta[current].ip.addr).toString(); diff --git a/esp3d/src/modules/wifi/wificonfig.h b/esp3d/src/modules/wifi/wificonfig.h index 9c6df443..f5b0eb18 100644 --- a/esp3d/src/modules/wifi/wificonfig.h +++ b/esp3d/src/modules/wifi/wificonfig.h @@ -44,6 +44,7 @@ #define AUTH_WPA_WPA2_PSK WIFI_AUTH_WPA_WPA2_PSK #define ENC_TYPE_NONE AUTH_OPEN #define WiFiMode_t wifi_mode_t +#include #endif // ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP8266 #include diff --git a/extra-libraries/ESP32/SdFat-2.1.2/.gitignore b/extra-libraries/ESP32/SdFat-2.1.2/.gitignore deleted file mode 100644 index b9d6bd92..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/.gitignore +++ /dev/null @@ -1,215 +0,0 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/SdErrorCodes.txt b/extra-libraries/ESP32/SdFat-2.1.2/doc/SdErrorCodes.txt deleted file mode 100644 index 359ee00b..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/doc/SdErrorCodes.txt +++ /dev/null @@ -1,50 +0,0 @@ -2021-01-06 - -Run the SdErrorCode example to produce an updated list. - -Code,Symbol - failed operation -0X00,SD_CARD_ERROR_NONE - No error -0X01,SD_CARD_ERROR_CMD0 - Card reset failed -0X02,SD_CARD_ERROR_CMD2 - SDIO read CID -0X03,SD_CARD_ERROR_CMD3 - SDIO publish RCA -0X04,SD_CARD_ERROR_CMD6 - Switch card function -0X05,SD_CARD_ERROR_CMD7 - SDIO card select -0X06,SD_CARD_ERROR_CMD8 - Send and check interface settings -0X07,SD_CARD_ERROR_CMD9 - Read CSD data -0X08,SD_CARD_ERROR_CMD10 - Read CID data -0X09,SD_CARD_ERROR_CMD12 - Stop multiple block read -0X0A,SD_CARD_ERROR_CMD13 - Read card status -0X0B,SD_CARD_ERROR_CMD17 - Read single block -0X0C,SD_CARD_ERROR_CMD18 - Read multiple blocks -0X0D,SD_CARD_ERROR_CMD24 - Write single block -0X0E,SD_CARD_ERROR_CMD25 - Write multiple blocks -0X0F,SD_CARD_ERROR_CMD32 - Set first erase block -0X10,SD_CARD_ERROR_CMD33 - Set last erase block -0X11,SD_CARD_ERROR_CMD38 - Erase selected blocks -0X12,SD_CARD_ERROR_CMD58 - Read OCR register -0X13,SD_CARD_ERROR_CMD59 - Set CRC mode -0X14,SD_CARD_ERROR_ACMD6 - Set SDIO bus width -0X15,SD_CARD_ERROR_ACMD13 - Read extended status -0X16,SD_CARD_ERROR_ACMD23 - Set pre-erased count -0X17,SD_CARD_ERROR_ACMD41 - Activate card initialization -0X18,SD_CARD_ERROR_READ_TOKEN - Bad read data token -0X19,SD_CARD_ERROR_READ_CRC - Read CRC error -0X1A,SD_CARD_ERROR_READ_FIFO - SDIO fifo read timeout -0X1B,SD_CARD_ERROR_READ_REG - Read CID or CSD failed. -0X1C,SD_CARD_ERROR_READ_START - Bad readStart argument -0X1D,SD_CARD_ERROR_READ_TIMEOUT - Read data timeout -0X1E,SD_CARD_ERROR_STOP_TRAN - Multiple block stop failed -0X1F,SD_CARD_ERROR_TRANSFER_COMPLETE - SDIO transfer complete -0X20,SD_CARD_ERROR_WRITE_DATA - Write data not accepted -0X21,SD_CARD_ERROR_WRITE_FIFO - SDIO fifo write timeout -0X22,SD_CARD_ERROR_WRITE_START - Bad writeStart argument -0X23,SD_CARD_ERROR_WRITE_PROGRAMMING - Flash programming -0X24,SD_CARD_ERROR_WRITE_TIMEOUT - Write timeout -0X25,SD_CARD_ERROR_DMA - DMA transfer failed -0X26,SD_CARD_ERROR_ERASE - Card did not accept erase commands -0X27,SD_CARD_ERROR_ERASE_SINGLE_SECTOR - Card does not support erase -0X28,SD_CARD_ERROR_ERASE_TIMEOUT - Erase command timeout -0X29,SD_CARD_ERROR_INIT_NOT_CALLED - Card has not been initialized -0X2A,SD_CARD_ERROR_INVALID_CARD_CONFIG - Invalid card config -0X2B,SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED - Unsupported SDIO command -0X2C,SD_CARD_ERROR_UNKNOWN - Unknown error \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/html.zip b/extra-libraries/ESP32/SdFat-2.1.2/doc/html.zip deleted file mode 100644 index 6d6b00ff5b6f71d5c9a25ef3652ca202e8aa668f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2261073 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%0A-8Fq%*?Wa!m)a?HiMqa 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 z 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

*`h?$sWxFA?tLx%LF#9{j>NW6L^lQ=@u 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 z zU%9d;VT|SF8~~(ZFr@coaNSka)s0o1UrXGsej(LH*`9r6z={8MAuZ!Bcr`UQd(Ovf z{jWRRjf3NRY3Zg@KpGhpm6Cu}C60wIem!)w{vmjKv2q2~)5A4UB@}AjU#^sL82a{L zs8X$TvD`p+eK!UXz%cJ{k`W#y*l@4S0@aoO{&V?ZE6!~dKG=*6wh zWNCq6+8pLpJhuO~+RfbFy9YxA)R+W3J0)@igh{=lSh7UG`!oTg?r{7#qW%L*XqI|$ zQ9%I|VQ*--23Ri}yQ|E?Lj2Cg#!E}*OK1)h;@~aWpgK`m$XLLM^MMefE;eS=Y~x!J$zhpIWTx z?9XuV%V2D((xM`W^AC%&T_@xqEo^TWpkpR(Zn&K`U1q5uKgPNLSz)lbZolk@sZEqT zKfhZ%Q$U*&Iz3a2`#ob~a4>S1e1D9OA45REA>ploMlg=Jel6YHoV&V;)YXMXMh4iT z+cXUf_LI3u@A*1NN4NNyn=01 z;FgvJ`EWd*5VkD?Tf3~5)44zT^}A53HdL-G{=|yV_pq=6pEFv@o2w0pcH=f*W78F$ zZW3~G%Z(8SxlefD2LJ0!EqypDvkVSDINOW+PL`OyaND?{_buk(Zvx$EjHtJUgw4dC z`TBsLL%v8f-4`vk#zu0hk%fb!Q3^o38~NWfUW{c=wEDC+yR45Kjn>P{-A@tv2=dp* z+FIFWDx5^*_wO$9zEYm!^S@#e@le^DKf|4Pf<>&ZuCA@>tXs-1?)t|Hs1eNj?p5gV zw;8vSf1L5Jd}^T!oyrNl%oO8=4$Xf3etb5Zrv8zJT_}y|ed^6g#TMYwuMA1w6>RsH zX{iKNXvLc956ZZ)?6GyH<-NRt68^MrwO6;eSYN9`C6mh(g!v4Tn(_p(xINp}&_&P#IIsm+AG?`XK0ZDiI+gV$CGOL3(>w-jVq`ScWSwJoXi=0P zW7~G}V%xTD+qP}ne6el6*tTsu>GaI%>7JQiaKGKP*FLqY*7gX)Tx@QxrZk49U}XX% zn-a&bxBp2KP3pgKPcsH7z5_Fs|J)Z&mnDEhObX;LUPl%pytA@nTpx+Rjcz+Le4SNj z!;_M#@T*}pn=;PDL-W+ns;G=3%{<)kU#ND{F}H7tI--4Y)fSX`AeFVZi=av^WCsBO z6P9Qk%aTUVE-z%Q>-AG|db?vypEpyN>C_ijb+vV5HqN?!jp`3;Pwtj_0I(O}SKc$Q zG)zEZV+&GwZeK4d4%6-WZXG_q@Ak>*KI?*eG@ptOj+}5g{nc~_zCjWqou07*6IG`D zIqo?K*{%XC)2bM5gIbC@n0t`)tM)be>5sx9AvHgON~0Fx zVvfL?7o?R2Ry4iRML732R;$sbsj2CX4&^Y1XXRX(sv?9?UQA&2MRcocXK5Jx@LBX(g#A+Mqn@^*XV&x0hT>)3-7h_0J zOdfPCDkdax4Vn@hewmFbmqEBi@soXB-Z&Eckoq%GYL@%wRgr~WEN;m~Q!7&2Pn zBE#V5b~|VT!N)?I7{A@1nY?e^3y=BXZAO>mePKB+AXx(l{8sYfZ`(NO_3EYTG|)`t7(_^6Qzk@WB*&&h>r)2-LA)Ej!_*hm%mp2E~9o zp&1fym-)osT;hD`#L%*8(3?`be};nu*}f_!vxRboL}hwSayMkVq~S*c)7p+YoZE(} zP{Z(Xte>Z_Q-4#wKW_NQhFD(PA|+4=+I)B$6JwRehTX4<;`VrU&(HubJOp#L)GR6% zWY2n5f_>YsX~DSC;`zB+o20Ejm@yu#|2YE{XfKfe`4_Tv{?45q@iV|KJhIKtfMRxR z;-MX`tT~bd0?6PaW)=t&B+w&>9EPCqlTsf6ZA%sNd!x|Ey|urRCkNg~l@h@NYy#+& z80v1qEWe6_9UW)JLWV^TsW3mC6g{psU@Q5n3j$6BB+p?K-SQ*S@QwI*rbARCXFNnU zth6}y*1s(s0z#_u@sQ>*YBb5^)Tj@e3OX>O&Hr=L$T|qY0N$JLFD3&(|91v8S3+9a z`Tb~M;2OZj)r{@lL0#5~$WePyDfCvL6vjLw9qK`nl}}S^hMqDrA+aZ`mcv~@2(PWX zkYB3Tt;6WDexha8T{xv65k+j$XuCAhujd=D%7>k`4NXJ<3skxoE?fYbk)EA_A|kS} zZBa}P*wriALbPBT9DJtRbBQ%-G;SUHrK`OH!9j1<;-z#%d>V_jqCJPpOX4Myiz6qd z+*HNUWOz0ht~)+4G4M*1MS#CHm$;td@aX7i9LbIR9=ag#MhsX=(p$?eQmYe@`3*U$ z`_1;)$`@H6r3TNdl8WlzIvy9_0pOV*-gf=sIWj)}&F!UzzW52AAmgv``($?)8f)`o z@0>whNT&mn0AUp7mKQ?!6QLgr2=shtD@X7K($vd+)qzT+Icv3qF)L@Sb9BQhu)NWB zi4?Wv1B4L~<=oE{F@12;GPtKgoZkDEt!%FD{eqWsUx8_6uo$;WqXR>#DvhUhmQEls zo_&JtXsoM*1qFYZBsql(;VAXGoJmmb@ijfUWnNAqdAy?~NOnydvAkIwE+&OZn84l) zrB(aixNme_%-7qYhrGV&_`#tEII-2nlyRu6E+X$7Cx%H!__(vV4Bu0k6ew#MG(Ez`4JM&qYxFVf$@6o?b&Yd$Ye( z=ky}IVwhdfX&&L~p}F=2nOL2v1|=CZ_4xBYMLR5fF~=r8Dl>(nVYUHJYDpUXbHGat zpnR`;rf756MXH7NkxuTKww*`=le63^511bEB_CX4%Xwh=G>ILi{C#6={?A_OiL3?V zxS%Jn$jJSkp-J-(D>hk$JW1t1{vb-<-7jY+!NOgs5!JSC*=2}1v;6TP-DSX^*woJQ z=NXlxEbxq7Xwv;qsWjRn+7HMv7U-}l4A=oFj~8F5$g@sbo3y!ed51mqX0UF1pN=eJ zrfYa08y+#Ru-QtJm{m1Mwb~!s^u4>i@uRmlPh z03Zny008|zD?m0DwiY%nHhNAbjur;idhF)3=FT?O-5M88>*7d1*S&>mYmrwp0rBn_ z)(2cL?0?aMpzZPU$`VXLBuQe3U{@EHzHe5Ti0k?s8pd>WC{@hyzAi={AC0` zd^&Ch6@>{m`LyA|b?7Bip9%ggHxCAG4-iK#2cI@ zJiWcC`BW#kb<`Upo=ARggme5-g#((TL0M{IX;DW?$)g)v2G+vrwW?G9s(N7-ydpCQ z@L$u^*H-Fpv378yQKOZtkr{xwdoHqqcp+uJ4rnDZ8x?-hcT%vxUT6{EOTp(Trino! z24JH(fPJ;t@F5SA7}^;18>S-lFAV&{^IPBL&Ma4Pg@arM^pbX`g!;e-rcAXNUk(_N zwA2?wC<+i)ALmADXfdS%LTsp{=qB99;iS+3Wl$rgg4s+i2ArVgnO2m3Bh)X51Ref%l^iK}4Ax6%MH<9`$uO7fUB}2g` z?!ZU~i=?3aCcP{?gXK@u6f>izM!l8HXZCNYq(to-k8o=U^PxD(IBXHrgGp4;&f+ZZ zr+n9IG#TO^`Zvn?(t)PjIkA(3Uks$`3#={6_9_&_0)oPJ2jcOmN(p#`;1r;bsK)lNtV;^O*Bx&b9oQL={bVOkiRw^n7N3mhu{Qf>){Yx3R70?fK({F-vfv+N0W-cH zZhy(_{H_?3Bw*JlwL0~j+C|LanV{`}NQF8H#ZUB!)PO!B_Qn;5K7}zalFGOXng!)* zMC!s=rSWN2ekzT&+HGpSB8XJ+`=8eMlBRfk%c2IvC<<||1{9=3C>x;mTUk8|n}Y7n zsu%B<)7sc7zTF+dZDVKs@KGYu{ZBo)!fwd}CpC}>C(RO?d7>E4N?kYW-X(Kp@tkJM z+?6U-a)&IHRt38zO*@HX?b)`eTzZt0;UxdgewgpN*kusds_gSjJ^^gQXNZNX*WY>w zCfOnIAontM?9@R6Oz=o4x(J8VJX-jt(>HFt`%{#fP~tbr+E0H~Z{BOAdPsJX(knb? z5=_4v`RUkQJ;gjKlMj;VB=Z-K4E{#m4|NY5bjZ@ttHVcsds1I~*ExVEuh*)q)BA5`>EkdApluY&48>A5KZT?`WE&^*PwNwI2L( zl%-&0CTXS0>(B=Us!%^?B)#xf-a#qzB2EzsUoGK@{2mDEQf3BBXvw#u9z)-OOBbj zJ^xwu=s4t94o_u#cA)jhY1$^O#;E2j;?6i|HH%I-&19OXC<+~O06WLvc1d%e%imX) z`zA*jO8UCCW#`CpzLP^QtWidacO=9LI67<(Q4ew}D{^7HORM>b{~NA)0n#?HSFW#% zm-{NCR8GXNC=h^u8of|E8y8E95G5mY-j?GZ1eO7YAvf_4lthu*BM>g+%589LuZl^( z6q>lb3Elh%^k^A7R;LMjIA-J{juS(St3D&U*!T9J z@HhfU4eWMS(vhc-(L>Cqk1;vBegtb5PA0`@ne)U}FDB6loKa$@e|TFi{!niRjREf5 zPd>EA6o$qPI8F#1yd=Dn?|;+AD$X8)28J?#Aa)Q&YGTYl_Q^WI%=r+W%-O2W;_Bo8 z8JUB&2Nn|Ro8JHGd%dwQIcCGwAtGlme(-?w-rLy39siuA?ew)~4!r7c@p?3b) z>3Lx>(X7a1ojh>M@{^y(#>QEgPrYkaL9VtA@7r_*n`YZAwerkwYFoV`ThqX5SjJ;j=GwT;> z#U9BPH_X9^@s5u<)|b~o4Ck_?=kV+c%a9Uu#z zIp#6}M*T!+X{h|__Bm#&Oxyew9V5wyF%7z3Z_Ltif0yzI(UDH}O#U;HG1+80fYDL1 z-0>;0*fA*eLDCU?N|UaVorCcD)ANDv>r@~$3((VKSb-b6x_g~#$QXDg#tWk#! z!!u4vSsd7gOZzM7IA(9T2!r`3KgtsLuk zRNXcYXsO`_Y3cr|J+8jDXBs0&xB(eHpm)aAof=Emrk{nM3*`b{z6EN$B7zBu}KGt4^Xb4ACrYZ?DDf)15BQQf99x#F}zK&T4=(%{FO^Z7)-)}4>G!?_-^d-8fS!Bpuv`B*X~ zoTH2IY=vq9c%dyU1As-3W|oSz}>{2@&w54f?1y<;hi83oX^BUhnk za}&i`$`nOopc%dQ3hy&zpVNSr8D5sot3hXPrjOZ-M+5qhkFnRU{FR%4xs3f)`n^GY zS1#Xl!0U8p(MCD?o`C67C+ON)Ub5+qAcJQwkcKil#BXzg0S-85A zg!X0^tV9TzAdA3;=-yid>=!U_{7n0*mygypQHyRODtQ6Qjg@Piy-S9H@=)rOg8QhP}%3Y%7+`sAwG*l+0no=z=^ z43%P~!0#0Z0RVh|o00#kQThK(r+Ru8wno;p_O@ojnJ&s&J1sXtQO)eb&Bg4)&>@PO zJpA@yiur9^DCD-FzUB_Fw!?v_O+493RA%L4hugZsh&a8cO<6?2GTy$do&rKJ4v^0qZ-LhcA=t>UYK z$rpKS{N@HfmJX556FjmTe^m>HIu`B$lbU7q+AgjWa}9To z27Lx@AwNzsvgT#c{}ybJo*PCqyEYAj$Fp8ssy$^Htz50>nl@cCd@|X%rEYc@$ydf( z;jGc1?4p6Ds!lGR;qjPsrP!9P*pKkDrA>am^TEA6FRp5r<#`ib#YfA#Lo_>aQrnyA z*Ezb2s2>y)`yA}{_Sacb{$kIyYa!l!7bJEp@C;q z+t`iZ_(@)>X}|UeJm3Nnd#Ac+2;gFCjo&Q*&x;Dmj3T=R{PtK}oyQ{=QTYvlE^os| z-38|c-@gTCbvK*^FFwIqhFlPDCkWG9vLuoI+Fg=VmWE?S}ocijTsP-1+|?Y z?Pju6NjgJU#9ReZ-6waBVd**6-Phyh)U#uLH%S+td!o`pAZ+vqZP*yM5_ zs65?bTap3NZO{vFfaXV}>GAaHoKMkFes^epEAZiv-E~CYzWC-CSvKR9PCzy7aq!HV zHqwb7hmfZ{m2eC76a`@gxp1jGS+w)S9L!a@xU{!x9XP#UN10!cyxtvO=hZBOEzz5D zOHJ(l+|szw_^g_Ve4N}SMZa|gMfHU({7nS(WihA?Cmrj^^i$tSJ4ZoKv0QFVUt82v z(16Fqv4L<6^77pmp5aJ`^e!`C%A42Sze3h`<_`C$9etmWsPtO}DE%bPdm-;GzWri& zZ22U(GMZ)VJvf@_Uhl6hT4j*r)fk{0_;f>ss*7OM*{`UeyiGG&OGfeI zrPBq)5U@A?HMerhY(B7}dPF4sbPfJE zF8s)a?W3F?nB?4Ps>!kX5~P0B=@|;+P+OQ=h-_~~2ux6HhE+NQH`x<~J1p)Y>9cVv zLQeJG>(^n>^7@`?!h3nSN_WCy#@leRF9SW5szc^$}o3LZ$i4#Uf`=&E0cJg$g z7X}_y7O=|O>OzDtx}rB+0L_EIy}r`h^DMtX2pYNXkFn<7{|IX0_u~_K2aH3-&5iWP zl70JTonUDM-Q3foF1^TMwCDl3 zJEz-*M~${WGc}htTc)F+Aiys9`XkQn?9Jjw7SNp(eG(qN+1;3J^vH8PT@RB;?tz=^ z=q}`%T?r-ldMzZRei2Gb;Lay{O1M4_3l*#?H?xW2lsz~Urs1_eeWS@<`j#5J>8&#H z?W+SL{p9D~wM`u7YTsfi)c&B!GnA?_<-zP5Ijd=t0w#mqnCkqK<8^<3_+MJFZUZ!V z!?odbr8*Sc-Z7=Cg4(<;<{A`@|xMQL+p(lw74sZ8&2Q+Lo6VYrE6>U%^?dTiY zS;pCN>m6WtuRNB>c{6eruKu2(O)&|%G98GhV4)Bt^z@?;~UBj(uDv~PI^zD7T z%~ATq5xYJDQX|z^xZbAwlC#kvao2cr2;}&tM&QofGq*@WhVQKA7M#>zMdTIxG zd)t`PL)GT${U8P5UNVU`sF7!$o{R-qya1`-8K>K*Z;4;@&QOm#=SMvV*pZ0qDZnzd zGd(1vSddHwA}(cdeCvtUa5_Z#)Ke$ZKOCZndH`Fd3pz?*jbGZXUrW%kqKIz~mKLzz z%3T*ZWu$|SMktG~w7m4JUl7x9J7)Xkn;TYPE9xKM)sC)tlOvybS4;XwMCPa@-e=G2pwHyQl5Jpj+=<(f|=m-G+iY>|3uvk&laJ?oSn;q_y z(rZ~4T5~ywE@JP92MHQd!J?VAu{2Yq6G=Wm9Ux9W77bJsmJL=??YK3vnKMZ`gbZ4!NQb0bv6sCT^6ckEj=;gj73gh%EUpsy$KL~ z^*cH>i3tfvCSACq_n5EkFL13rfc;9}iP&)}<=5)C0&`@X+fz~oT@7GQi@-zHlh1V- z(aD1&GOONmukQHJeIHd_mZ!Z!B}Nr(*{La)37@A$PdsAYiVD}+-GbB&K3{H##igZP z+uvo%7#TGSt^$Vaw!0GCTC{J749KA3!io0W4#6>>h7k|;dY-TU=l})*vv<>`_Wsd> z)Pwy<`KdlfJXgOm1afp>*HUJxaaS7=MrX%dp`Gx|&v?3pjznnRxs7NQ79d|KN3(507Z9 zLPLdeVPOw`dai!GU}zPp0XMZ`j&qY#XQw8Z$G5BQ7G>Mi3asZ0&`5hr@|5kjatcbJ z&8IHs3}v=Nld=W@25dwVw=P2`Km|Rn!vT)5?F+Q{#jGhQbY6JoG`UIDtV&s;rQ6 z>=uokG-N0qIEZ;|;XL24*YkSt_P6fuj|1Pg8w{7ynW~z#x2s-@zP$5x^=2|G2A_G$ zO=lT>*u|%x{TUMr6Np63V}-egQ1$pU*Bo0iZ7K{W)+Nj)D6%G+uuEI<@k(@(95_Fq zL>!maEo`M|HtvjbuCJLJBL>@yxS3IMAWp&3d0P8(Z0>1O236s!ly)MWyrYr((e7s% zI^P;cv?r~LdP8O&E;Rxa7e!5G`uK#pp72UFg}Oq-1>GkpC}PICSnUA9&|X4P76aQW zA}0N!gBa(KjSouuaERIeZkf5i)4dVmAESrP!v_%liS`(LKHds9HkpgXw-uYytAJY= zdpiYw2Wl&}%(gzchu=m4eOaQnNr!{yj1ncO;dOOswwZ4haP!(#Eg2?nd2v|LquYQI z=W5PRLuqvV=lnzeaZ@ebS;OqRHOH-S2y}#Tw^cqt-x99)#$cvi-h(btgJLyvoKJyQ z&{4zW7oBk{_+5A(y?-#7UjBj0J+@=chT)T@^G6*4E^oIvCC$El5B5bnI*1xtr9`9 zF!s#fOPx<`j$^2wEbJOePyIgY&4(*#2j!|Y4_AyLUsyn=&+|~6O?d=AH5Q>oVLpR| zFFlp2aPPCdEgN2?QONTLz~Y|$XmUdD6I4kfGu14!s_~A3L#Mrc`?!e>i9h8)4&dKj z7Y(0M=Lane%rW014S>d0>5fjA2cyqx3t;8|SrohpUd?`rw@1@bA@Kb%2=yh+qm4 z_qwVL(?s#GlVfrF+|)sGo_j* zPF$NAT75iUHiv(sYR5UvU|%66QY4aB%q%c9~t zj&P2Lu+Xr)QDzUF%jO@6Jv5xkN5 z-y^JGRxU0n6Vl1?$mUC*NE1U#O7$=sUl*ww#gC8*b)#Djat*+pxwCCwwuE(8$X{n$ z+Wq-+(*emlBsg4}CNta!seTho29cJK0x&n-K6IMmBS#LeQcq(^{u}0Gp~iP+n3$#!0<)7~zb9qONM*>4)%E;1+-<)!cQx_1!s0SWNk#ckr0UqOHr~x$gwW%2V9{_Oi zh$FAuiGF4(MZ}7NQ{z)ee|S+S6d%zkdokF8#YsZ;jQLI_+C&Me9WDAqY+T$nlLN^$ zIPh?jHvE$#rgFJ2I9^#A+w!!|nhn{J9Z?kM9bhKf>obX3B{BXf9I=Z%8PJlf@o()k zf$9teKcYoe7L&_6Av<69@B8+5(#Ji^7#QcKPP#|2m05GkFld6bIqfoNYMIqIq)~)s zRq7juaZ8)2)-YsHA}zScHo7;fI+l~^rBZGOc>1xAEbC`78SB(aW=YmvuMb%vWGjQ0 z#H5^zQZ3ZAnvco7$X8ZUpboaxJW0taYfjK?MkgIp$xxTH4bYDY%x_KlnxAsR`*V`z zs;K=4xYXPVDr<+m-i%UxlRV$iwSZAdcq!@uH9q*ZjFL6YZp`$O&a&a^{kJJVeux|Y zHD7u2E75`XS($a~;gJWaRdDir1r^IE+^I7V*%XYqI@lGpfz4=}F|T}HDD12t{LV?z zwHIJ+xdvZtzgyZ)?S56;4=#-R_dYG!8PMA)w@p}vv7J>a44{8_1%i1iKhe(7cuo`t zY_!11drg&dnL^R_K5irJ)@wH+b1YIx;RLdME1feC6dRdc2i)uj7{%Kvb-P(o&O;QN zdDPl|SU|{3PWE1@&2N2)Wpy4%7X@;K{1#GipfO+D-G=QfnI4IQ9w`Sy>)V={Jvk%U zN&$&v_O&O^*F>|vI>6EUK}1n0!^W7b9C`2?1;hIS1>o4~u6$ADc<~B$=Br^!RhbS( zDh0`t{F-0i2jE=($=dB)@kHdv*O$~}gsX6MyP&MkH;h|;KkmBF=F_o6EPSuVZa`7T zrH19had<(CvIYhQdnJVU)uBuv9`Jy6RtnVx26&9Q>BYq?d6&)_1-`yE7Zumm|OYssDbZ(P7p zlnBC%{ne59ddq3 z2=3mFAQixJueT#wADYCz+eKuaTrWJmIwEe08N|7z59*1S=;NFkJhP2B*N*je@7ywm zla-V-P=g16KAn<5;(>~AB4n%|$m)jRqV|UQOzexAfw{?pBb)(*>lQ>V1s4p6Tgjv& z24jLwko`Fl*s$b0f?M{Tm#z<4u!XTJ-l>F+w5e%Q^ub7hOz6OQ)FKp#$>sXAmHZwfDJP-~%xzlDzl`}S zi5f%+l6jhta=L9SFjQa6N6tQD=R`KS1YkY)=AZG{AJld`5@np2@I1AQ=TkChNYRfI z`x2r^fF9JwRdZA*vOZY-{Il=%au77B{!) zzssb~)j!}1Hf;uq(-y!wJuwc&_B91ZsNUZjBl(?3{jnX-_80YQ^k$Hufen*kCMfe* z;oRKv*FB4*Q*5~%6vfKKPr@fBKxSQbEpkG{QfIq%2Lq=?QT#+2@6x2DVa0TJ!~7^oO}j$yC@lV<>lXlg7;f&C-cNd?=u!>MWj$ED5Qxbda*(& zqzC3Rt`LI&JQBcvM!f^W#1kne(d6<*N5w;0JG#0Z-oi=Rw-vEI4?<@-VHQW_OG_qJdl&E(sqVRBw4zc4$kzzPtY8>8_09x->of^x@^cWhww`^m=)QXzBjT6bB3#_6 zjL~x1M_stkb@xGH(dFs=e4+BWxm#v~5LzSA8Giy_|1luq6FjU?0U}Z(Jb+txS-&La z{RW2XZoVp!xAmTroV%B3LP%f}yJ8{6lQ=>{7iL$jJb5jdZQC$FHWQ35aK?!>FrbQt*HTtyH1REC0MW-X@;C&*yd)u^6=#B$3ckF=o z=XqugLFHu7h*7=_hUsVHCvWRo3NtE0{RHdK+|t=MyTEcH*c>EqfCSz5w_+HZ#^C#D z7i_TV{tFB7*sdbOYBZ7sEh$)<)$GkbnFj~WC#812n$dNow`$06qHDYKvyNK8s@N=g z+w>POdh*nMEM{S89pT9&4{7D8_KD4k2ldK@HE!$ZJ&Y*iF6A$eG!);tuC-ln>rR%y z1SUHv1AyFO9cD|Y4(%4N@g#7{#-5?vS82?((ZA1YVTHaZH8yF@Gn|HUW%!@?yHrDx zhV4QCgwN0)EX=G9)a06AFySw69r{ z*KaK*1~ap*8oJlW1D@F^p}p|KLj&0&JrrozdJH+M$?_^@DqMk1vOQVDo*w4Maj>xG z7=G2_k|LB0TKtpSZelOZ`G&xdn!OtPXqZhvw)A=_aOh^9SQV1FJ zTWE$dekP)l(#}pNRsu8M0rVQV?23w>dBWASjx)dGlhYxXFU@Vgi~*8hWkyp!dtSF9mQgljp~4z!oJ7>Z={DIH70|fSo`GJWOr) z5dWsRyM@G0`(<}M{LeVQ>4kW)7O9PINccEmYQ9LY`rU~UGd^GnXxW}*IZF{Z6c)az zH8Fv+eJ5;7q>Bc3Gw)D>?0~!lpsN54^*3BHx}u?F@<03T_xqQ-xk{ApvFv|NqRy^{ zKT1Ifdjgyh{go?hSszABXhfar;4>)|d(nRInnMF}@AFizVlndvtC=3{yvkT0$3Hv( z(|7}3v~5NSE#6ulYX1uDKv4G2h=wCRmsTaDt>6rAOWuz_ZA|Eus#-Vk*N03@1BhSu zu>(ckm5cyxP=LB~MJ}!FbbXsR*U;k&Xa~WtXldVUR6A~}?=!jpRY-v_v`Q8oT$H91 zPZ5eFOzTgoxxOB@#wVkbCMe#G3pJ9iAQac~chh4^FM%uq$W9C*sglX(yOrj|FVVp) zLD~3$=TBnyE_fJE6r|YPq6$Y5aedPmy+kBK)q!RuUV3iP%zl)|m!AqQ3oVDo%l zkq*`WUJI|t&u{aVmGhWstBUqS{B7cA99SyjO60_aqbU%QPh?c5dEcnsVZK(9MiFGm(2;29*h)yQ;0dw9}Pf4Xy;dB?tbH z`3V>$+F}72KBl6`0jVMX)3S|rQg*m5r;MSPds7w#%>Vn$Bd5ra40-7EPy;^t#ak18 zat%k{Eh?5=SV%ajnv%ZClrJbD+ovpk zcPlI;WKfWjvPYky{pkiT3Sn`1d0U`e73R{4*H2-_Wymcd?-b2;3@`m@H~kJq;@A zJB!*FWxQ=n3Mj8HwR2@_f;HBkCtz}dQDgg}!Ir(z4GqVC1b{7%VRjI#ahMBRN%n~2 zV`PxxaQ{{#xJnPa`SBP!-2jsL^twr_>qeuGUR98#WXz67LX0W;~x)xM*x=v?vX(eAf z6I{MB%LI6<`+ZkhKUUSn%MsLw;BBxB3YXgC_0k6U(UjMnp$jDVQgMlTh%I}v z$cs}59YzCzrVD>g^jNDm;clBj(n3S8(bUekjw)u8VaF3W&)85H$>ddCYDM+Jh!rr% zca(%KommGqwV)ZKm}n>#QZBGHT~x8n0BS9eVJIytH->Mkzy4_-`_5ZvbLgr1cT@Kc z8?Zx_r>8!;&-oG9>}D=*^c6%Muk!WvHOD}&dj`G%90$gEyq3Q-rd=vmD&^(n_1bzX z_a_TA%e~&IX=LnYCRAaJIP;&dK{;;u90r8@m?Wh{aug=$C;ES*7!$uJ##u5XwDT`0 zoc{|7BmO5S>}X+Yrf2A4`hO5%Oe?4TmS->D;qr|&65ODEZXk(K8o&kvNdn;Fjjy56 z)adSJniVvXO|Gw-7jeeev7(Kwb|*JiFey&EoKnZPL3>tp-yZw`xJ9cSq$Yp9)b81?;vz6u)GNT&Xk zYCJ-9e+m-lwDXEFk-Ni=WPX1Rc8G7?_p`My?#T#<>;@Ur?u(Txc?pI{^||$?3{nxh z7LfL%d9H17rst|xX%HL!JY?Lcq^~3XP`zSnto9lrG|~`;%m|QF8B&7F3)Uh8g09W^ zY{J<>d?i@~$Cf4`0ZEC>`WYoF8t0l11iE^5T@~3J@6(Ab_qc@s*sskMFG4pzV5?a!E zo;KOm(eyaRCsf?YZdBtOdr9glu^pYT_(b#dz=!(j&qx~R9R?RR-(3s36nj5&2wv`= z^3gMR2Ips97vfKZAQwLZp8_Qh$AB(Qy{`o}0ME!z@c0Mt^(>Uz2qhc$u*%P0vP4?U z6HEd#!61}3!1thmeiCWFknJftvtaob4%Yi0a4?JkT9wb^yegMRM?Al~IBFEhk>0JZ z1V)vS5qvIkRq&)xv1aoyQ4DB^IY%xGk5Uwa63Nyw+X|F|gi zUxKSqMR9S;Cdk8nG2F>@L2!jCgYW0_Up6>zFAc#60~dp+AvS~kXC>*>X8v^(F~Cn2 zyGg2}c}dD;A4nw(Ouq>-yF;I1(v3^L70nX+f1cl3m-b;JoT0 z8i8MzRmZX1Y*0GSfMG8$LnQHFu(v__2-fZ@cg;A8ySJx8Y9oTVNTzTb3RjjweN1$)P?A{(vc(0K-aRfEPh7>Zd=e-evzn_SVc?T<4z&Qcv z{~HbVzyo{ENps*y27MDHeWWwubkdz+y`pU$?oCb46oha z0!vQ0{nqC?#P>tJQfuKd(6Uf2g3zz_*)2&2hih69roS`Ek~g+jlysRSZgYG8D{_p* z%LbWyBT-4D+P3$W3jSE^YU$7E>MmK*O^&cZ#ZxB`)2 z%o?gWPp#OL($)mQrGcsG34!NvD&H`a?bPCOS~r`#nr#u&t`*hpRJvex<|^uMZ~f2o>}h@(XoLC%f|EABg>7%c=K)T`CV zQ~{KHm%sE6Lb$tjAFo)dXwi2R*E#n6b9jwk=08Ev`OXl&WiN#3{pvJ0JgkM@I_|m# zm33&pboT)5=z(&#s(IM}c&+9$M)gOZq9IMTqNBXk{cw~mA>EcJtVHEUM%kv+&6w`D z?5nl;&Tb~G5qO4Y(;MU>iKLfN)0X@2rGle4Mq}622EUouL>FXU?X*lOB1qMR+%#fI z>QYH|x9+bvK2U|5074g16(0MkBC3XmNYxoWo1$|`sG*%Qip4J|{l2PjBO>DH@%>?& z$oS?%*8qb<-Kh>AZcV6Ig}cft)p~>JcTwmiV~-~Ekk6xKI#JcSZu%fS1zlU-bK>mf z+P-l1;UUwz&Dc3w;9+?J{nrPB#wX6{6+4_Zg)l@Qf z)TRF=Dbn5DFN*mAqoK1@6-hH<+^`{gl2(f5lPW(DvCZT{HEX#KqmbTuZ=#5Y#L8pl1e;~~`)nQClxt9cmU(+X&M$W&zGUs2P#U`I3|{E~@o+*W1&bzHcN zTe^mibp=)=1G<6 zlcWh_DIbz4dgJ@x;aU>aB8`w6kD5M6~lqG?U!pC7w)7#nHzULBUO2gN9j|_@2**(d+hoc|UKsvttF$>Fuu5?=84{aCxZ%3I0kWj?B`x`2F57eR1W&$fA9F z^WxB;)29r)-S{x$?CrR5rSU=!&cxb8yUt*`U88%VgwvSfVVo2X<^+*Cv8TXW+b;Fu z{u~^cA>00&C@=O168^B?$)g(y3X|}Idx3xWSThX13=?b2x@Z%+(Cv;rSB*GN66;1}40hSUzzB_~mGCO9SX0lELS^a~3k$B(qL zyT?C76<5a@cS?{CyHDxjXzQ3FdTuSvJ$&H4pE?fekGJXvjr%npx7*|$gh^UbPH}W{ zcivD*zrkaCv}(MagaLFum39eM$bQ88ecR^{8*5#*JSFug)UwoXR zMP5tqkq3(ag#4Ozcq_1p9VN{WG*Aoj`no`!0%d()vq{_m`dX2j9fe$VGm`7`-s53= z(rd@#;p4&W`fxiV%PGlcX4~qj`FO~@TV=pU;0Xu-V7G#N;sOAGoc}Nk1R2#stj5L# zzynaDoMH?(_lL`IBMKQ1z|#uVW6jN1Lu~Dvtk`oV2$?E=0v*Sytcw)ok`DtzLxJN; z-D3i_q^iZ`QiD(~TZ~d)jualw<#~fgh8a0d*V%A>v7a4he^HYLvzI;GdmioP&F58@ zzw@RZW!3d#W{jst!;;he4}>Qd7IVV&e*k_!fxkJ9iTObW0AOJ5;{gDgP}5KV%3U}B z8B{0$KvZ)loyu#fs-e-(f}R`u<;$0(B$8#$n?W#?osVy|)z=jQq2LvUZ7nysqrrh4 zjB{r7PK$zbHh_AR;t8kRaR7kX0t8?{0RsS7|NStx;2U{)AP>jq2_b`dE1&-5hjVDmCgo5s;s>dD^T9h|8Z2w0a9@T49T! zgOX}l=xk`(*SahGBabDr{ZFYEH(KIvW?glyr60vO$Q>T$>hzyk0qtq#wus0pEZt7G zv4v%e;l@$i6t(oa?v2r((j{d3zvtpcsIt0*w$sASZsSki*{{lLeAvV6D}-rS$K+rz z$cRIwDC_A@y*>({v>X-_MniJ)SZ)tOf61iv39%aFa%je=gb|45&1i03+B)^X z^E$_KKTN%ZE<_2wLyRj;a9Rt_FAV!p@8Vl~ZB?pjj4&IC~o5ZaSA+8@nQN@KNSc3 ziQl@oel@q33!NLWSYOuJiOVA7^Rp3XT06!ySr`tOm-Nkjsovuuwim#SD8i^lO{)M` zPgfX)(%TOM2SyOTzSM>`&^aeH+q2Jfn*VSBjYf_0W2wO%!h;L<_R%Y{^8~~rF9wVT z4#_3DA-y_ayDZMOl`@WGEmp*@?zEBlHQ@@bB7Xxg1uQsiKeNvW?qC#fA~T@{m^8M{ zK$S#^#=Z0t0Vu{ z@>{8UQjTiHshIFLd#*_kqtKxYxl6#>coB|i(-`QEH634GNgou>v{Ft-5e2n@QF5b7 zSZK(k0slvdt~q|68~98uy0+QBeHusE*4DPMvEim-8J(X${^!qSW#w2?B)?hEIUN!do!N(fQ)Z?S9-i;-$0}fkIWBynL{5U&1^$j#Cy;mI?o;jp zBkyHp9WpZA$M*ki6$uP9UN33QG8jm?}kAd3jPzTY#+Ihz=Db)<*X%Fbw8F z5nnn(qtP&~*5|A^dZY2LFE08jddm3o<~eN=KpijLe820Nf1m#yKo2KU8yX*ftE}Ah z-}gM~!{g(uH=obyCd?ciI0t!pbtqb>oM@=a!1bpC)JzTc94LTVSul(kV7ib+36LTG zFM~BN!6in$zzHjrD8=nuv-+F{fLVDcPCW=U4C+{WMWlN!z=wfck>SL!KL>hDq8}L6 zj$P0ZuAt#H*+9!B*UQKsto(w;;U%kU!e^6pN-cr{g6$$?15U6l1P!Y;2)~8##U*g} z`@zr+aNzyVMc5B6oV}B++?u=Duq4EqK#$%ark^=2 zoP+yhf>Jd(4R_NN;guJlRO<6L6Rt2Dr%Gf~X{p|uW5yLSGD0y%8~sO89rhW`lIZ^j z1u^y&Dlz}pz)`6IhRGZr(jXRYh~-qHKDoK=a;47y+G@br!nYU%g5TTPf{S~JjEqSs zDd8upp;=iHRk~~#k1?W7H{LzKs*pz$bsn3Mly6g0N(D;3v2lm2U)MtO@#v*!;J}~Z z0RtjWh?$v;FaNgACqmzum_XIZOMK9IcF8qX#V4w9k}aq7pHUgl@QfNidI z_8Q80)^T%iZ2oTeba*I=fp=k5&z+~m?`-s|*^?fGewiV1bWm6rS5_9Fs0M^Y4MOc) zQpVE0`aj-1wg;|4e`9e&1#w)^ouR#4E4UTlWCipbR! zes~BMaq`>h3d=_z^qQLu{_Uf1hlN5R@M8!Ry1qR&&B&NDSb_dB0*ERb6oj}vr&mzC z<1uMsv;V;(5W3E0w+6QiNQZfgP{96-WmAI|*a>p-@Nli8li%ocYq{Jslb_$(M2f=N zMGYn)Pwl)vJ~l9?y_z#7Y--qj!$>%mDcXX3LF6(Lv$+^muRZVY(`}NWQ=m(aYU%5P zgYT}seEIV|lrGvhR{P>`(f<0ld2ereBBz~}t^>q5*9OCY+S%FV2ry0ezG-nb{stLE z>*mZaz#t_HdF8&b_V=%(ySwqp@+~%;QHI{6v+=!PKaz*%W+jJ)Gqw($5{%=Al#AlI z^woz()LfjLV&Y8Tmc6HQ`mbHI0m3Gty&L_n`}=KLeJA#&`u~RfShie~sbW$h<25A8 z&Iw^hIQVQREGenRdf;Y#PL4WT+;^cPSW$nj{CjAJs8wGXG7qXOqnf>> zuN zbMC|UMieh<(YIqGtst~rNH{Un&N+D^6Yhz~J$CIF+B;r!LPgtMh$e)efrMk1?esUnlhg@*hw<5O!2871n4Q7tXEgM}J%gR1yCc=W_c#!y$7 zSu}nk+HOzpJTgA)ZtJLR=wdYeakj*32B8^@SinzNVOVA8vx_s@?$Z-B2$7DJ)9L}; zZqCRU(3DE=lQS%SyJF|ypl7c0&dVTIM3qr!X0X3M2AySeQUt~;-TAj5;VLq!(x~3< za5Oz{PK+etHSkbWNh0Wmnfd(|wQB^gkx+c(#`eT&LulyN%7*drtNE%>sBoTS_1{gWh04rXV79F64OUG&nU8mL9A7^UB+%Olzm@rc zlgosO3S~yXoWbw(W=|H}U$U^21qY&;GZw~HSBL0uTt=t~rcZI2Ur~Z#E)zK;(?5b& zrcj-=G%c5KjNv)Q3pFc_Rgu;D`SOez60c<#3GJ))5#8(kTKD}S9vM=E!H2e zJ-sTvjgYcwnyt263S|Z~fz+VC#-H4G5oS_SugpIV^Z|#rfd5In_A^y}MHa|HXXoxl zzqqp!jHu`vr2WoLwwp&p&;5nSC<1{9I{SMW5y3zxa!E!FHy zG_AI!rKKoxadA`3$BRy)$q|w!T2RCgQTFp^W@aYOgzd?nc2ZK(l$`>Myf0r=jU^7u3Cn9LLAwB{`p| z#V?Nzy6p%t^T4*_h-5tv4-YvxRMTb@&iYkBfv5Mc{Lcd1s^Q%fF~Sfx)Gl2L(cath zP9^ypLDLri2wokOov*5*GUPo|_Bx=Wx16%ljE6WTqKr%uuqHUFpBo!Ha(8)f_%~uF z5E~Um0mFMZk_wAJZr>iqrN`#ohVXuDQeYuhP31+v3t?+6HILja8Ue?sZ{JkO=&*&% z%G)}QFLT??LDw@ko4H?;?>e_>HBD^87Wwy(rEj^f99JExXP=}@08F?W0^5Po)wK-` z=L?kB0_sQ~!uQQD4y{dtD+I7F-`ntGJmtIdiH6Lpi`gZi+h=j(qU=-Za_rW_X9&SnCQX=!W65}cg{#OFQWMztk1$ebV31PQ@>`tpt9ORkhR*R+lW zi3ht2B`&jM-x}mPI)2BDL=A{;+-vSl4-<}*9I#$Ln*M}O6%O^g`KQwAgI7OsV{fU3 zZlkY{Z#tQ+=+_IKDP56j`A+`4w*?QDJI6@TBaMI^C{j-4b!kDQ z*4)Dd8-GaN9c7XFfNZqZFxW5YqDqjphSFwFvsBua2|mkbCOs$7%xEE8O*|;LMB963 zx?6l$iZ~mn_^ieazY1< zAsT*S%axRs{qY0yOIniAtEl}qta(GjWd82%?)?30uABIVfGqe#i+MlyozzRrj>Zgr zyC_~$6C^J6W_!cX+T&E{>FCC@C~|u20`t{>EHoTUZI2bxNja&iQsrc2*{`!fT75L$ zYHDV@awjl-VHhO~URa7XHO-!p7Q}J`rmLSmUP~AM$SEl=*Houzv73Y-y?2wsdh}wd zi<#L(ak6FY1?&H08Ow60a#DW$t_imm~T>OqvQo$0(%l=(=d?e@);eq_Y!qVwIC2DirMjYX+I z8}D|G0HmWCd9LOOpFaKm@k3upN#gwD;wxtnq)=b@Or6Zv`OwqotkNC`79Vr(EfW(w zs6}E=&#Hcf*xd-94bo8$CKPv>z!iIL{Gw3MB&tlgM6*b8!;!AV^XRuVIo}^F+{@QK z+~~)$tlc-MfgrpKiO?tCA8II-CLE^7xR8ty9d$<|nIYll=DYmq24fRSAyg8G^c9J0 z6;0b4jR8nS>+;)+Q@WFxy=4AR`*{@pNw_hgx#coWcXzvupn~?~3POwi$4ITP%W}!X zM(hJpQBn#P8X&z9lVTTPBj&)^+WO0*#k%PtwNMzP-QVr8vikZ&rFaqypx4B31}Wtt zJ)F@I_W496I^v?)YYz__eGwJz`YbAZ+4q&He?oedMKUxWSlHodA*Y<}qY;F?U z;H2bPr^U109LdzcYadOGU=|S{%p>pu>PK2|Q;Qe|@Z#459||~4RY76phsNz{uy3;g zAADxUz{(0$fidm+GsglynjAZ4*>kEn89RyUt5iiDL&N7;19Wj;vx|RULZ1AWXG*)> zcGIGYHmOO4b1RQek>OhxzcM?&Uj58vK<9tjpUn35;cn4ZfSi{*U4#di)rHC}NqKj5 zxjQ>@^mpi6Zm!v3(k~?k2de4miTBW)z~k3DENc11n)EKVgHu?j1ddP{%+HjYso%|O z-wy%jRR0n-G$eH1m91sEzR1o#BIBVFchpa7mt253FNkk^{rU)Zl{Pjq!evsMDXj|q zmhOLiP&M&;F-BJ>|Bs(_VR$$Y&Q2XE2?k;Wwl=-m+A_@)bro`q^hh5VNGUHrM=B%+ zGHh~g3a}@X9Ve^@I}rLsSw4{!cYLTB73%lUWHT6lZrqqfhKV>_WZD_Ug1g0&!N?%E z>YJP4wY9tpXOQn~nnu1zEr*13Mut)1H^sK|al6tPLO44tLJtfCUhGZ}N{U{8!p+EQ z(922mw0XRint;{QgEp-g;^9)MOK!oX_G2ve@5ZCi&S%LW>w zU6j}(T`D$NoIps2225iiBsuX5!3+Z7b$6kWGSV-%^zga6n=6HPg`RTH_jF^5ld7U#+U>Bs_~yCC6Tw(x9CxHe3O&mzZ*Okn$H>U6~Lc#RA{6gMt*($i4@?Z6bqY& zi}-Vu8UVI`m^hjs42&UUeHa>&?~GB8^%+brVr;wCAiW(T$&VJLB&K@m*3OTuUAo0Js zGk-b4r|G-9cCq4{8Yvg1Q_9WtbG?bu;z`k4o^gG>w;xlo{d-wxNvW}@0o`j9OQAP5 zHo?VjkIv63u_93;;@{#`F(wP+y^xTI8bCy zS#4>s*cr#hd|C8OE12CVPiyUNdv@OZJFTdT%=IxX$2=M7%2GW?r}NXm^0Gf)2j;ox zx0^ekqm`w{3F+sl_y!w6^pg&+Uq0way41wL2yOJ-K~GnInaD9?z(LZ7bb>YI7%%Is z2P3ye@Ld+%Om}dB#syry-AG_cvZp^8}V^ z=O|=<@IB_9ZD=fyJL2aMzaL~#yCMYEgg$E)70s4yiMr~KWoHUQNAHG*TguA~qw#oP z>FOLYF<9@|lc=!!t+a!J2*@N;x*924ygelYgqj1dg1}dmfC5J{y!WFQwQB_IHO%&(BN0 z4!laKa-DbW%%((A^0uo`R8v##!916qvnpyB1AldN>b$3)UOGxns!O(5gSeMnSd}Yz z4MZ0p?!9}y6RM^1<}!|aWKr-cJ<*F6Z>}vcJNAjHv>u+TcrVWMHOSdW^3Ob=V_G^M&&dXj4UNOes$&lHa>~p^ zmFA&Y+9>)eK@VRV=^4NB3(XYkvYGje4@%hQB_^)qNP716+%-tjzZdLZX~oG{-yR$0 z&}|eFg_oJR*fFGXz0E?d`Cag~5QJrO5Z|e_0I7nU4hfb$MuE>bIX*rct{v%=bjMso zSXii!rx?0bR8KdXRZUG5V`CM+HNu>gnHgi` z3&dqnB)i(OJzXuOW0M_9x#jLYJ&N^Gr@b{a)KDKyX=!2m&v7z*#Uy=EBqz%d(PyQ- zGfsPV;eIeX(r!BuFB#xFu>2iq2sRFD@>AS9acBd+M~Z4~J@W z)YY|qHzyzQ)OA0Y3+L-lzPRw36m~aNP(c6O?+z?|x4$>!uzJR!TlV8EuC3>V)tfhH zpLgQvz{*8BzP{;fYRrcFayZa!%i_YLRGQxrT%zEPvd~DO`b<- z-6p3aWf&MRKcsBNIM$LHt!*Tt0IIukD1pzpcjS_Rz6Rz$a}*_Oa>h7f3p_ELa6U7Y z?;J9e{nEcrD&4W>pX>2BhU{m~TrucBuUwhTK|Xq!ukK^ji_U*fyIQGXeHX2K|HXk` zF|ks6c&uTfsk;J#_9m?`6yLi-c&`bDVkdjgU+YH3pCg`2ZDu-OW5nswiX38leEo1%ddSY zdYDbsE||5Zt?74j^YHKpZ7YUTE-x=5>xfUMbY^(e!ltzVJ1{Viich+-4GRNsD3kp^ zx62-+$6xcPrZ=On0gyvQ;jMh7oW+O#1yD-^1QY-O00;ofB4Sf2XbW~b4gdg>H~;_- z0001Ab7Ws;VRT6TBy|zfg+}Zzrk0jd|0&$u)yS+2pX$z8d-bd#li<6&v!|vqsO&`tJ+(S3FXP1L6 zQp&3Osn%81-lT_qznENIBCS$IlL-5<%iO@no~rh*6{O4<3*#eIeRz1NJk%;dG*u@f z^^qgfICS#0%yOU=!iaLZcOoc0&OJYF3q0#+G}AOCv{*|qfsZ+581c1b`sc#EZ!6uv zXVhoq$ugu0vgN3)F#5@_1k7v+tYuXCP z$8*|NrqrhqWfP0M0XLaq-A!d^MH zu}9mIEOVJhPsijOvm?}r$inplF;YF(ig4u8Se4^AvgNnR44u0kMI-9ai261?Q6-kW z6VLVkK(mNCpdoC<6+4a<6j86O#BAx&ct$BO$v~Hh3i$%gMr=oJ$nsCV;Cn1*6$GT) z%9lSEG+I`^#LDT3DxbUzkSzU}+T1nbP3RoIF~yNRQ{~5ZWqb`Y!3@7bhIQ_COF^WY zyo`Uu1yB>uw*s<+58~bvf#5EGJ&PxsIXlia|U2nhjT15t?gmC=2_F9?y0|^Up?5t z;J|2(r#@vz|9NEXMdTk@%$*&P8Zohn8+Ef@*EPp%G#a>0O~bZZwJO0@t7bLo4byy& z=ixE&+w>7aP=!4*bTycuU(~&O3T|zX0a1LOZ06KgX_L z_VGPe*~*6>T%QCFD4qrIZ3-KmBFFU@xO5PT;JLoBuOzo)>cJlRBw!W3e-H}%d9a8n zM2o1cM3jMAS3Xu5`gy=HP&+u>09>#_xC@ui9NZst3H1F!u;1wNfZlVZD%l2>(z{Ls zabQh)i39>)yzp3z4sxN6IvC~-w`yc0*C#50=P7ED#4PTcqJ&+o@t(Z&h2hgicnZyoyMz>KL@D)u^WF4a2D#dc!77YB*Ze(rZ;KA@X`D z90!|L3u_Itj_bOuTc*)4ZL8U8*02G@69V8G8G4?0gi(^MDL#aYLP}maTtZGJ9cjwk zbiA0)akS))ffIJ#`80++R2C~J_)J%R;e^rqcbaY-=N5y9yFM+?>D;0bEWW~a6zo{b zqb#gnEuP2;xjdIppYSb;1JGXXK{BBs}Fo4{fuPn7E6{ zofAuQAi+ah8TWVqgpIod#myxka)Jn*cP3h+#6N0!31Nt{^brQ=KJXx7#}&c8l-~7i zZ$U&Pr4@wMG|aH;an%M9tyC(~0m5||cj)IFrNp$I$p+In6Jz@tptH8(4JV4C}qIGhQu zNnH9Ub>DRyiMJ{nJ`7VF^NBm3$^;@D6*G|L?vBe|3H_;pa@hkC=p2XOVE7KpAe@5e zS+Km*vpGPz8nqxvU=Ok{v^FW5fGkNwuSCdm(Ca{X^n%(4k}~FXTm%U`+ni!M^KG`i z#ZvyE5eAij1~pA9)k}IqD;Z7Eusy}NYujXTKyDjplcy96vt-swT1zWwy7oMY4Npu7 z2v;nSL$5bEnOeQ|44DKUdIAj^FpN@DE9uRzhSkjyRRg=fmb$>aeIqdK8goLmT5?4YxP>O zhJYH!vW34TY{QltW=}I9^EV$l2%)W5t*3@wLMWQLQ|bf!%*%*fPr4x z4tQG*MYIm%nVznhM!_OXLmUKHQB$th5=nsAtT1?N-OI|1nSLr-YS~cdm;mlvNU%o< z7un*2tOy3;?JUPM#Nx>Di514_6J^ao@-qBC7?eKp(3F`})Ff|d!JWn9da1b0iaA#Q zwd0c_9kZIAnem*D{t+`48F9tuzczfL8=l!R6T;vvEhw5bRrG4oln*YOp_|C{*>=OF z%>8S(T@7;9-oBO1Ufp?bHE8^gnKOA+@W#d1##v2LjBTFah+-@~#wo1Du#NRPwQX8! znvP*Ksz%Ksl&1;z+dh@_DAEv@LDwgf|>mP zdR40$MLzKYTCa4PEyggdW|KPAmJaBtN%SVxoK}q(^=6A=qiOw+#wccb-57V{$!NPl z8+-F$HQCuu&RfOSULCp?Z*E+59HQ6k8Z~Oz zsam#0bjLDCLw9O=t3h7nPYGMkoU!tlo)vHBVz4s!8+c%`n9mm0RyETk8rGV`vRbvKWmOH0woLo2tOKgcRc26Hr`mZl0~Jduo9`E!sTkq+GgE`= zW}VbpPSb2T#I72K4X&WKw3bb*YQuOVGwtqy-powJlIGr!6J#=_eQ`>Hwc%)t@sK9o`b(-{cggi{<(!}V13!#h?2<1=^AryO{E-7G&jQ4=Sf?sNi zS>%dq6{SR{oQL$W=fYl>6garhY|N1^VvvCISwi!GxDNlMLacCMd2T!_A>wk>)`G!g z%qNAigjv;qU%KIM6oSwNzEkxl+)2{|m5?ixB`OkhA7;UPT@r4}MdSlXDqu(eDiaj> z-6lRGE^-8(CoeYGfluVA`%z}N39P^tzujeL{^JJ>IF_7nJA^CaCXeD7e<@;R2iAmZ z8Rw*mI2SPk`@3KQem_y%BH563>(Chb*(iy{8DWOk; z$;I$?f?&m{b3OTthUchr{Tcl>xbBru|M#0we>_IR5gJ_GTn_p$H@NOz-u4F9AJ7@V zT@S%)2jIJabTUMoV1jDUA9G|^{ZaPq!Nu!W`;p!qA#X^UI+emCs0On zF}lO+$q0reka9H1KtBz}{SxYo24k*}^U)B{b9Dm5P#^)g>%PRoRgKmx0!#S#cHCd_ z((89F0oRxV=NG3TNxqBN5pG2@3b8hQ4}^O8J)HzzSqT?+Tj@K>!iBP0&hZ2RF1?4q z(@Q$d9Uk+Wl_E(dFYRA|{{1_%(S)AGx8g8)N5IiO={&h~Yk4IpER@sD*)R%NpqwVx zf}Zpo^8R9WY3M{;S468Jd9pU?{Lnf}&o#m;?CJ{r$@)#m4Xz~DWKvvan-vgQ7c-hd&)Lz?ubJA7eB z=t!E~=ORX7$CkQJ;lgiopJMd8+(&jj|DeMZHzPYb`mGS(+Ma)#*NN+&;zF=2wO4iX zj__01N~Zo(xbWNjrx^Xt@RRGEe{3(>dGhcwM=Dm)mScqP>P{>C&pTCN_nSIZ;lgio zs$%rJol122KeRvXJ|cOUKNV|d{k-ElyAq(@;YF*v!0F}I)h|t;(SlCi2?DnEBa~To z2qPcyn|+uNXnf<12jDm0DcNhKppeGB8u7i7|BXN*WHI8)s2)<;jB5Ro(#-#3* z|H)qZdnEpYJJ%=lF|mob(6~-N`LR|45Z_M~B!9%FKottM62JdxD>W^-6P2tKR~5ms z;zu>0A}It+Ng=t`(jV?{(x-d>15ir?1QY-O00;nTB4Sem8;%EhGyniDHUIz=0001A zb7Ws;VRT?wGjHbouvo0_zPE1Gk$v{AIvt^=B8!blfr)^CfGsZv z)<8f&gaUs==%~OudIjt_z&})oqAVEU8UCBwUXqA_K#L#`meBIZI$rVgP?~#2JG~w; zqbIN-sGo)@63wV7s_Q3dmq)1GQz%HuOP5ZiEV4GJ>3@4A@pYEKdM!U?D!+pHgVwQx zB!R9a>?DpsVMNJ-=XxxA=h5rCSaQ1Xo{t4A`##+nCc4LrEP?kP3p(Tg;oS&{w=`=}D=o$a;7t*Q;un%b@tUdU!EcaJ&Xd`1uLsMSLPw&s(A2 z*tgLemh)_c2}vq@BWAkEVN139qnB*=M{u}Pb&;GI0*gNwFMh{Zqj1l~71#Q(WB6G| z!XWZ)h`ZQ^*B`=Dq_3sFvM3fDG&J#{vfX7BrA5ui zhwZr&`s3qVrz|xP_Z#O3@`7e8I%R zJ;b-`>gh^JnA71E6Cq!26U{01QOy&=z{>~*Z2`-~@HO}{>v%prL%|cWY!D4uL$Q@R z%m}|U)%Zo<(z3-CKRu|Y|FJ+QU86IvLfz)JTgpt{qacQQ!rh6lNPk*;-}`x2j;+|R zinxFZG}N5}Iw<5ciHujea=kuaUHfJiU7@cp6rvm&>Sjcu)k#-1Y=qXT8llvGMO2X_ znb$R4s@d#96v66n!2F$LKm}TTpA;U>Oq%$A`NiX!r9D6Q;LqjCjMc!jWAQRE%M2cd zqTl%9UpmldE|vt9*;=2(w4*ao!b$&mUj@#ZZNfSsy$G<`S{l)yRSNK7o+9VL(yUs_ z`FG`tOkjoAEC*(T!vf@WmkHd8th(pk9Q(fb@ds%{2SRpCx;DBU@MnO3=2fmEGN9~ zv;-xf=|>hOzUEvrQ@So?S+e$yXV|>MfK5 zgOj4<kBIr!W&f2{l^YKPY2kpPj-W zNngJr|L*U1&H^ozk&RiI7Ck&Z?%+r`rKht#Jhd{3h-#|UKx&sa$acD4d|YnRMcNr= z+Pa!c%u~~mO*lI}4QOm^TsFZQ1QMuLj)jGMf0CYRaPVNh#uRHPiG|T!P6i(tQC+>{ zbmrrddT})6?&x7iv2xiUH3|MfKe^q&xtVz>x6h5A3rv#H9LFfOGjlmg@M6U5XE@5;gR&#)5q&hV`yaH+eAFXuJIFPDj|Z%7S}hqAFIsK zabhJkrg)osLHR!O8Vpf2_A3}lSxqP=Chd4+Hx0`hau$1I7il7%Z?srnTZ~=GhT*vG z;6(ffm?PiZS<-E=53foV%-$VjireS8m%PuFMAF(ZF(^_Mz@NrR1nd305E zJ_QE^6rEl>gfG;+*v9EE$DxUqwX(wE;jQB~SFl7z=1UM}0C|%DKCW$X+M#K2Gl-Un z`DuLhw_C0BsOn<#;E#(^PR9$tq7#+b0v6*q?-y#JJ2+7TG~6r+KCm@^B=OFW(@Pgw zr4dMe7&ij}s-Tgv>;kz-numlp-18wzpkePH19BMr>`@ zXrc*TM-EXZNXsb>gLUS`*!11V*!5?BX98DqZB#J3iU-c^Dh5104&=gSm=wiLN$@zALPIaz87!4VVuzv8) zFs>BXux{L5p zAa-=DLHeR~fau)8i5VycJe?ry`q$wS){fQg#osrQ-q49tI1OA#`8KQP*XJd*QjO1F zL#|{V?}*{vAOUWeYVoVv5Xtjg!*;O7s&s0I-r7?k0_$y-sulV)k|w8R%aXvCkoae^@dUG}<(=th zMz>Np!3Lxcya@z2I5oLQCP(be>73CuKBaIdZ*3YrDK8@rhJGXiM~qC@{^a48jUHvN zG`6KAA1{Z6k{Jc?FfGjz``*R+{u;kW#|90vK4^4AbYBW6!t!8BN~iuWSx=7_H=P~= z{BjZCa-yZioZcVmho?|d11_JNR;MtjTSsnFP_W|xGtWu{;m5O$uwia9xtB`mQ@Sum zIW*u#Em{B%M|1pFrROT6CVzflXERvDRd`Jbt#^U1iiuI0wXM}Xaec25FZoSscPO@m zqtm7i*rpqp%P)vVVUOn>AN5KLdk`%G5LsC6*B~ILLr#Y|1>gX%+6`IT-(?kl?{)fj&j;j7@#Id4~QZs6z!)YH_K}4zV(0dL{nGqO~6=K-4#>y=Rb0M_Mbigvo{0gcSHqz)+8N;V?3H6$Y!{liZLnkh1;~& z9dL$(-_6FyXqt8!BfkY=sj!A5VJe;%z>3|%*`2WH7=aYFgJFqPx5y~+#O(ENSVPUtn-z`4 z8ymf5@R;A~??gjr^1Q%*=WZBI!QX~Q4DG%}UhaHG&dbxU_J5YXJotmGS>hI0R#rE5 zJY$VLZH*mAT}yH#_IkZ5Fv{bSnH&L+q=9s+UzVPZj@C>bz0rf zH#eUo4`=IYEXPj}oGK+^sax?WVi4X3o^1(iobPy_qbivpd_Oz-WVWs9=;(39H87^V zwOEhrawLd5SH(1dN3Q$QXziV#$EhZtjW%^KT9u5WBT)*ccu<{X6}_-N_WJ<63W?{Z zH}P3n9PUkEubTVm*rF24Ji~U*ZwdML;GOl{pv+8OASnaAt^{RbE`>d~X#SL({2tAW zi%&^GS?~N4RZxI=yfoK6lpMVM@|&DEK*{Qkm&WP%`K3K`MM9Vcc z*tKu$>^!xF+~k+D@w=ToQRCzHZ)3y`ASgw;v4KE1En(EGxmv7hd6Fz_Mq&tMA8~gR zB(-w)_jB+`-KF<_IRa?9`0H5EdAB81nKXUIvzAg(TLU$lfq#iy^vN+9R?0kHGWS_kVaDaLdXP zXJt`wLBKXyLcH+6Hj`us_Wh@erJ*r(#R#U|gY7b@emB`3cs5NH(WRRC_4!ZnAT@IO z+@F%qWWsJQczB&#ny9Ff@Q@Ly-%a;EKdy1P{MC9jHbzyh8md{w@963pnwly+^@sOt zUmX(}(ecZduX>Nxn}4j3ms^t2CGaN7b+O4oj8m-NS4!Nhc7_Vl-nmk0v7$`>%}Sj5 zXyh8w=q}VOMNbL1D)vuF)y8ybCtwqlv$MuL?U#;jZeSUi*^6T$OqAKGSFy7dHiKmB zlg_i^*9QOvcijAq(cD{20a&ju+S%iV>&5r)(i0W>=F^o1lCWyrb8EqdTAdB8O9R*8d$(?-`UxNB-b4k@QVsEA__t;H_B$k>;~o)Pivx#a}T& zM>7TJxwzC|T;-v4&eBQDlZb@kZ?iZJQ?F_Hi0#|S5ck03Efr^AddPK2R{h(<<3W$J zRVnh8+Hvc7$K=Nq5WZAaQ&OHiz*b3eTW zwHbLDkzHC%r?#@)=iM3Ue~Qtja!M&AxVmDD(v%>Xk1;g{$|$Zc5+7@R2`90$)709! zc^8aEm7i_f4W;UToGa}ZmsrX!zJpZvjVCEF?f7wyaF1_&i#AVXm-aPab#iG8|4>p% zM-ZCwQH`ok#9`kN`^l-19fg`clqLt_i&hjH)?am8GhB#H<{lhf*?;wDH_{MN`e))e z=EKBcjOXgSKjpc=;P8aapS}+5HSWBVFG5?B|ES`O4*Ox6aGvkBr19(HV(4c)e03Z~ zY2jWoIdCB*pqKt%1^oZG`+w<#)X`;M>#>8ZBn3+%c0JPcbocml&m}fjRw7pPAidw` zRCMUN`N^`gZ@9Sd0s{j9m4N^0lQr#|Lz?NoX1ZIa*Vn1_e%=;W@-@137U8k6Zxs!2 zX$m*yYrJo6_t4ZziS`%kc_;+_CAF=JKPySPz!~R9QhWPY#?qjDqT~#(3uIZW=Il8r1S%uVhf%{dEEE(_ zy)MyZot)me9gzj|m`6rvaKwLdI}(h;rw4u68}msV8XOqtYg~hMyRT78mTA{>IT+Hm zwM9k|z19sRGt``>^yDj?9T8WSlz0C?`MjUp_^d8FTD4rB-k3mczrtIRhXn|^9d32-~^fWlTf0riuP zp9m2f|85SM`Dtpkd}H(VE4V-gn-eI%7!3}%p*d@rYNaFB@fDvuvBGeTB!Q~g)Eu!i zs@vki4bZs$3jH{42$-R^jz2#|)ohgFZF!LIz2roVsR0&c1Brx0yqtm;qq~k7s#0XL zh9+;d%K;sq{R6+n_$s#lvy7m(8*2*Zs{mANLji9QfP_Ft(reH$4$xoa3?)pfH#?Do zWpH}oly1RNpP@8(K#%y%ZnTiI7l_qba4f4iR=dK&%W*a94Y~e1?Eh_pFsC|HaOw26HxIG+SV!e9eP)Kn}7Uo0fsx%-4 zDB))?7)$c@{Pn1|!&-;(m%~}puc3Wi!)1bcjg{sNEfM7*fVZrs3Ms@MU3ig@Qj8~Z zNz!TvKi;cyyX;fgu0G)V_^_snqJk9nHa0@*ZNg|7cd-~%S0lIjtBf~# zaMi15`bid%TAPYJF89rUIXtsVO1{lg&Ro1XC>cb@_Fc;-$d{p~6%@q${vCF+88ue> zJ6DaF%Th%ZV7kOF&?<07yXZa}gsxTOJ_=XadKpzb^n)NjPt&p`rRheGZ`!;1mu>CCgVZ=^*M#H}d1|=;4BVXc zf5AiUnset!VG}}+2~7;qrO#B1Y;`kuf3eG3^JpPOI^l48lwJ9FK6r%I)L%974$yQ%X7!cetwdsW(fPYYNqPtEv;;j~H z8Dn4Nd^PD^4G9i5?}SDWHqrtC1ccPvLxoqN>+61?EkQwMZfh<5qXk|XAiX!+uXjxz z?-JLE{>=8)@`fTJOTdN3gg(BVfF33J2crg3>3ZYHmb#atu6CM?-)+cR z=}iALPj^rLdp;^q)8w=xmcnt2CM%n~yg|mscj*i0gWx==x%E_|r+8s1P?>sRIAOkX4STlID@UhhIjMw6v`9g-NOPf#WonV!CoCUWbIMP5tc z=XX`(?;p-KER_CtvVbU>x)l+4YvW{14d#d$5_}(_v;~6&0f-2cs6auNeF8u;1rst= z0xRCBy(zpo>5Q9f_ZEae{Q7{Z0nfIkCcz=JIHeQXl_H_N zVVov|2_25k&VZE?;gNhWl*AG`Q-)@`Q2R9Be1Y`N1-&=qr_|Zej!voaXc?K;mq`a1WAcjJE0BeS+W32?6a^$G|{2VsB0`WXNn|sIO z5~GF(HxnS%)~KP_`cWY-uQ$r7S|GFK2xW$4Z0ziW{~ON39KrqFkKj#aqYefjg~f6{ zwMm6>0XZEn%+_kEE`K�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:Rql%wYIeUVC39jNKe#EpahH z`NS|-z22XzybV}*6(BnQq9PhAD<)BiA>@pCTWibqkvG%*&44gAqPDlawkI$H0IDq> zEHj}JuLcvo@JN?SvB=0Y=f}pTlFa4+n5Ht5pgmy2y2GB&(p=pWV3;m6hZ6$M@OVZ?N1psDrS0+r9u*T43H4*1VAnYmvf%n`!Q`Q&Kv2_r+53@;+IHH&gH;NA>FuB}+a63<4PEwk=`yh3TpI&eRwPWD(KJ z-h+LEAL|67S=lx-lF<3RdX-fIBz82V(g*v~LxO_7V&cX=&QtD8ofEYHx<3j%st1?b zZJ(p*=JZ)~G?@{|-iXN}S|IQi(tLM=papIIiefA&FBkrMNc$AioEfi93TM|71|Js} zkV~lxu5&JEZ*5ftMn9z$x*}AUb;nP4=e$4PL!4STo2T3VoF|S(JOx$IuN7nhA_uek zl!|>rnd5_%mP%FRkQO@*0lc1Rsiro>9^`}!;;s2M{oOM_!Er1CpSQ+ihN^8DA+U*v zcqu0Fn+F}e>Q@irYk*UmV?|K&#ysly*h*CNr%^9~?T`W_n6qJ5LMSnd*7vEcr%PP`1$x46Oxk`z}-5nFHrKz zMO~ex38#N)@9e|^6qK?2Q~{bN2&l3qRcNfM{ij8<44^|U79DK^Yin8%W;x(uC1rm8 z%+l`&X@*YP-8^^=22!8zA3ETX%GeSR5VW+m;#J$uJCAAhEE!-Tw*ycMnFuQt_EAp$W%tIl2=ZI5d2*vnX$pm)-#U20 zX5!6fLnGpRO8SNdxWG@9m4rzz3)J$qb|y-xTy|$P^0uglX*Riqup8yz5u}V(lU7$J zk;3UMpB~(`43?k}art2T`1Au&0qwrR+_L+0)e8d7Ux=!zbwWV!(&bw{ME3tQ3lHLy zR8=K=Wh>|pFFEQ0zZDdr&(zc4$Jp%APPV0k@ zccyqUje9Q5X6q>4zCGuwq9x+8!G>H$gL~oMbkE9Eg$aH#?m>q-x(>DXZ!Rm_#`Q2D zNEVaG#Dc8hLaWdMtl8wdvCPiq#G9-K*BW9}!%yAaA3$wUegXUiIC&)0X6AM@VS&yB zQRav;%zt}8152W!pVsNcqGQrpMn(uYG`gDgRPzjxjEtzfZr$~e9?BWDYWdaHOc>18 zx$4#m2sM{1pyB8~IULthP%qIZe~7M)68s+h`g)Aw#S2*UZ$&8_RDzBNV4dO`)%jys^6NN`>8~WAW9$H8Pt>>&JO$% z7w3PlJm2y&c$V9-{9!)G7G}*62~pAe;$dcV)a}b~4Q|I(JP1yea%`4Pcdppj*@dO> zcL<1xTKf9Pgs$0;Sy)_R6XLq_LG~u_l;f)wU)Qhq^z^(hyYo1e$>yl3oopW-t|+67 z#wym6Z-vb3MCm`Lo7E0bGD0qeXnA{53#e@ohS+-usxb7nDr-|VR~z5+3wLBWsR3Xz zelE5vobT2HQ}A?y3D6c2uQS6#6nwJRPEJ^tr`GCREqGAC3Dn3@Tyz`UqZ^ z8_5Z5>5O4vZXF+9U7Rnc)_{8Uy>Wi<;6d5AVE^DC0zjXHms@?(ZzZ}PqhP;C2QfQuN-s=U9Y?4_&TlnR6^?cjA%KRsnXSOsDT>?ud z`5_?zr%?TX3qUNAt?iRfpG?xtmGHzWK={H-4BDS${rCY*cv$H9y!l9?2BW3m>^8zhQS)=V01)?O80IZj+gr*$0!pO~ak3>Y*BY>&msP z5L12q4=M$>7+f}m!rC+K<9JQD$ogGaLZ^pguh;rJT6=mDg}A{TDfoLH^~IG`aEghG z@1j%-)m!Yh`MVvjm!d*56=^<~KXl)I%gqC3VWQ$WPNsOJ#ArS(AdtVYVNh^5#D=tZ z^PLZRU-ESOye|i@^OEu2RF+asC)P!>q z>h`Nwn6cG4TWW4nbEfdglom5}4b3Jld* zF*^j4h^tB@lB^GjCM#OIfgrMae)k#gLnu1;K!t%!GT0jXE!LjQzc*=}%$3%bDu7?= zcJLIHVDLwo5!Qzyt$}A$RQTjR6Jn5H=*-|!p!wC^-5!7jFSVIvpP15Inzjuz{PXLS zjT4|^xbk}wlQ48rZM*G>N)G(SG**W+UT5q`a?{q%&ig66FFOl0Y}U`C}9u(zQQa|L|8tod}GaC1cAPNhJ(Zbtk07)&VQY;Nl_AXZU0#jrWh z)hf^OlmnQxsFhttSCK+xFi+qtbmTrv4AmbNPpRoQM z(7Et4cuVrF7pkKpwwoKb;c!;*{%PEI_oK^|OUx{w0tX`f6mxSVFMyO!@DI}2C#cgWpSG&M^wS2acYZ`Mdu9sE*lDP5 zzSxEcwcR?yJrT*hM@XU85}fiSG_n15564iP%#xaZO5payfoEY!5xccD4R1%{&6}Zw7jy_38W#|db%q_R zj#5K^AU9}X!Hh)cHu2xuC46pP;vB8+_`jv~U38(M5&?$I==TryYh4CO7Z<^)YQ3Pv z_GyFN86T)3czsWgX%)*srT3;aW56Tz0%0&>pSv3oPAfA;Uc9_0KR@Pg-z*l_hYHpQ zTOaW7T-4Z6kU`@%7?B-9chs+0)SxgxN8x|EW(TuF8Rmj&qr+=>Fa^qZa`J+tCpkB|1V~a^AY#-@msqcFuXvy~wC9-*5-V#2tRVC~ z2hUWMb4vuNDNyV|j%$WdX?h5c9%(^i1UBC=8X9SGb!WAml!w_(OgbmZj7gvax+?1w z-P-w?86?NG)Ap8+*87vDx9gLRJmQhNpC`+&TH4x_UmM;~$1^@9bdQe_feM!e>i^pXdMLctgq zk=$<(G}W*pS&ktA@HpkF?itAbrd6?`VVptkVCaX@zBJ_i;GLDVHDgn z8;G7)MCaS(f;57ifZndolL z{CMzJ)DEPF6A}rRbJFJgL6i{|I>T{#lPa;H;qS#o`d3-08o+>rg@?1bJGcVHe*6$9 zc4HuOK_U`{;*q}A)TD*l>0L4P?Y+I~PMnHWPPX}CGPTiDtPux%#&*PhS$U92qyO+5z2 zK}Wh2AX5ALc0al1QQa3M&LILlIKVjAt#5wDX2(lHYKi#9!eP^(N_w4waGdMWNPN#6Qynla!SO=BofgIIG#qd-=)+5o>_8KqmU9+X&wTy|Jkzs^IZ@O&v1K zqrYZvETJNiim3~ZfDDy#VQ#J{Dp3WV-$QqOsNcH0o&{`>o2PGRv5rou*M;4Xeb8~Z z5d4^y0UCB}IydCP!X`HY)R4fD{phW%`??u#;@b%5$Rwci8FiMO)ow$>eP~1$1RKyV z0@%-dH7?e1kL&A({gZLeQoF_P4y>WMW!yZYZREahU%zg7z@+|;duU}X?aVJNEoa?K zla-3<(evjUe+P_^0S*jVRs#6391CkZKS&-b)X-_TYpPzCR@%E^VI&ii8tFQG_yDa2D+?I6 zcPw+AQ#3T(?OgAO%1ur>ACWhtj~QdD1OV60q<72p${JY=h_U^hYLUeyLpt8Lv5+9i z*Udf!_NUwUK!D+rf!SY_R?&MkTwB4(Rm3jD-5!YP*SgST^0#Jt(bZ-l+|Uq z&7T{UZ2KduiReSpOJ*_nuqSl31|lRWx%h=fK_QrpgX49%$tft77P!PGmz{4fGq^17 zZs*(QnjXHgB4Fl4R;Zn=jR~lAbX}Y%-TL3Eg?U=k`0ckET;S`V0fN684Dnh)5MD&C1^C1d^{aPHwh@z)@sfR8PEhg zL(Fe+7iiMBx$eH$rRxjs&w+4CetvWVgKCPHuAy9oos324Ik$FPaP^GLrndPzev`hb z;Qf8ryZWk15F`ss9Gq|-$NK=iA`@SD8uSwENjFCePakhq-iHL)ftc^V4wJIO)v5RK z)|mi6vxyP|&OjUGp>hLRkn9W9^PNX0R9K;6w!`wk1=hRhv|L|YLC1UpLVJPfBGZRi z%3XlsGcsdB0vMlQL_)K$%z8J&dpGT~OGp67U7@8q%QE z#iXP}suV=%w+AdkyfU2aV>X->v93-eLzx&3YbFbdqM8oqq-Um zbruC@g1C^W^)7usz?P`Sq2O-lp^-H2 z)kuJRVPvyU%1zHc`updBHPXC%Noqai6+T;^^WEDMA0Quib^nPJ>Ni;JO;N9R!Fh;r z`jk|Hkwm})7vTLT=dHQUmXEtY;bDf(Wyvcl4nxC66O~((yskE3{wR;$P#V~F{Cy$- zR4O#KzOYarDJ2z{o&9{O!k#|Kt4u8Pl6R;_5V#Iq-6M8y57xH{gJMo3l$9|(xD%yR zs3`cm65&L6=c~yS>tjXGDwlf`wFr2fNLh3=5%~Dz5X8V{PFdbwdrvf6;M~7Y+uq); z;6xH07abizCJ>jd2E$V?HLL-_Q4RtD_x{(U_=`Tg&iMwn*B{r1G7|ySZvEftn~A}J z%T`y<6#n4$a;tHo`3|c;?6o5zo95cKr8ysmcM^}of?zd9|4S`~(d zaY6q$h6N;<5&SmfXl?l^0XOO2F6po&_#u^ep@iX*5eW|mN?cq6Rp0bmSrdg(5)2pYEk0TW;lNP?>)l zEr`@V*?fldP)_1#^%Pul$QQ8o>{qbK?nkFfEgxl|S!z5cg3o`?&9kuqX+w{SLAQ*B z2<>h-7eL|nz;*)lf^ ze_`V3UUM_1NBoP7RY!&j17QR(+k&VU7{x#A{bhe-eY{>GBsP?V2JlT#h!;FqMN2;D~2mf2ZMVy-3_wxcrU1_559l&h%t zT*vn0y`TuWw)LSDHd8shgyiI)i0oJ_tl_6bL`ur*a`FS>MVhK+^K<`CFIy;Tv_j{ReMU1JT6{ zuh08{j(rwOxK=Wca zSDgOctuLEfNg$}cSg3p9McJ1K5qC(d{TG|+T;^Xgm3B)vc zI#BC=BgcDxRLxVNxe3k7dsb8eYqbD&y3id<4RX=6HCfWHG>6N)$W#CspJfI^L|9;nW2`tNy|RA9q8(&vYdfq3l*jq@ z3twvLEQ7;8Hs|Y^WW0QN){4VMZXPVqV^)ic>1jqu*qE46yH|f=gi3AokWP1!1AfSE zg+wTAK$0U*$rS+q(E5Bc#8k%~K;%nYlY<<^a@MMRz~_S%bTNj zv}vd)^=Ns@r)_^?Y#SE4Wl9-Z3pMyKu^bT7)6?2Vz6vpXxvg`gLxb3?)M%XjebA%T zK4JuDs;zWnb)mHfdY&;TRO_LU5!FAAVd!0kYpjp&d8%tA8=UPv&(%~pTN{@CkAJAK zx4u4|b|WA>kk+L{gJ*D=M}Gfq=5^3vla*s?G*-xUaC?>Fo^cWXmR7>)*!Qnj{Ii0K zgIg;gkg~8$^=4;kR8(S=FE4LnePn~UH(>}RhSnJy=%^ZSo!&(34~2zZz27ELK&`Y7 zzPk#{p898+mk(DS{7XfZ8mOnP*Sxp5Oa+Z4I(sAx&1gRlK-UR8J|+Q~C;~kPL4~OR z%|7+T15|`HP5HI7^z5HFw@1^6C{(kslFCa;G7`n`QByzM*q8(%K;D_Izn+e%e?r7r zf=L>K;B_`@aD8b>-=CV&W8fC_j{DDWzKTSNLA!m0^;QrF!(djhi~Q>bH~VM8!Zr(g z&88v$_~m(9n~l-={z(GwDEQVF_OKk^>$h5U9g88Q4WcK~Wki?f#P)=_B%YP>Yc6uX|C* zzF3ZQOyF^(8!IODZ}k%pg)7w4$ecw<89K2>>jPgTbZ7pfTy4q_WnNi&!1T>y}bmWjsYT*HZ*)2YHCD*M~vRb!~2mS z*oY5|xu5I&4w3{s2?WI)iHpl~dtL|)dTea5?dCChMCVcm)WlF48d8pnK1Ay8cgZmN z8|QpXs;Nb&Ve#$a5v2GQ7wLJUr=Wp*prWAOJChr>ImPKQZTR7_IZGT9PY|<~T&APx zlQ@^sb@f(4C(z zrzWta7pT6~oT)oegD{eSZ%pDZ|7A$Wg9Q1AI4=CJ1)+H(a5`1_9`e>Y^>u*UU7ZYv zohb!=W^e_cEwm~zX{%4v!+h_?)EnF$TZ~oUkjm`*Z_Ul)d5QY!C0&kuiPfYXD(RH!KX#`0 zAF6?~dAY48IwtKqRMvl#vH4uQa$VaCu{NFph9>z(tLK+n-X#^B9nmyC>rS5F9uP_fC&BYX_}ikTT|1ZjPM=UHk?TN}>q zE_wn-HZicBW%S%!3WFr`jchNZ2GT>C#E*%RM12>m;NZDKr`pigA)3! zK1dJ5mX8LmS_cM{oGS1E+9D$4t8w9f`wZ!@LOkY8qrM~s0wJFl+S(S2H)oZZneuXS zg5r_44}i+vKTGTV#1)0EFK?T#{2vu26G!sdPec|F8Hx22Ck|;r@9;2({c3Mf28E2F zp`yNt397t29rX7ldU^-}JlYYUc)U?nCG+z7D{)l{Zsoz27JW%g4F~SI^M`Eu`a~&a z(~S!~^pr6CJ_7VeO0iD-(x0wLvzeMIK*QkGR-}O)X590)F=2KcYp0lp3dzcNmf6<1 zMx~+LC=;(v>I{d)eOhIAsM!ax8FtL4u9$j*O=Z0z#)qb+Ys*U=Zhu>44lB}>sHmt5 ztN(44?H@V>dKAr5dALdhpj%>UD&2;48lYX@4@ zZb4JKt^xrVHsNvzddx%Q1uw9#PQ~=+o6OCoDvH;+JEFV(B=EcQLGuXE6uPtJ&dyf} zQC9t-WCmTZ(W=G#pU{XSpugGy#QyJuIrr@6e@i52B5u27bi;ttfI zN8m2wl^NQ9MG@Pr^;1FmzeqD_l;?H&yM^EKH>H;251_#hQodJMq`^TWfnv7#>hK7i z_U*~rU%!5J;Oia3fv11z!EgDuNtOlNeSd1Be{U~8H}}LX-}~Sf9>-<@e?5aV@3ZF{ z>~&5WA;H-7hMi%$z-5@H04v7ky30bs=RztH;HE#+WdaC_!MFytH&)<+3gq zngW^pkAhGxP{plxkrjuI;;3*nYV3r3E@+U5xgwxPAR$~l@u*z)KHb(R)UH)jel|?u zPw-Cj0OPiZ7r+q@5mRB(t2O063klrK3Jj}Om-{-0_V~iH8rE6C5CnVtoMX2Qy zzA*VN5{QmlW>tlPOZU7BxvMK~e_!(B$9ukhBQE^t9d73(3`yLS#)4>U%qFn48JW%=St%mFo5HvJ8YrH1W zvAU>63KOY#Bjona&hSY;uDjm`u+BT2?dl*QAq71a;q4rJ_i?O9X)vpcDxB2~@x#ZD z_xtsFt=GilZ;NZLYxyHchm#HYrKC8TJPL((6FWtSW(_UR9-Mb1aUFBQ-^#bnJ8J*QGnSx2>VF)MH zvq}2wD*AKE^6aM^-;G9F{lhpWjiveLoY@WjbT`6?MVSgTM%(z$gpQsj$-jtKM*Pl` z;?Vuve!?J-hV)@Yn3hc~4Xu3YHz$IUfS3KyKYNXU@IjSk0}cA-wS^?~kJ2L`d?AXS zgT5kUiTB0K#m=$ij;vTXi)6f|E${Trj!3qgv{=?`yk4+(5GbbMa?8Nn#%GA68|SVi z8;`yb=1mNYg~wQa(~h+4;z#;0wxnKg=;ja}vt`fBGxq6tE7#aG@hxrHQ3bxw7xXr>Ke!$EaDq`SoG12)IfvIb1WM^27U)!UieYBcbNO zmHI-{1xr8jal;v}$fJ&G&C(uE=?ji-uCbQ2QQckT%}ZPl*6}07so1GUsPF&Bg;te+ zC(U*InPx|wI~dCtaEQ|qaN#+?C93|G&^>7o$7@o0Yfnq3{7`Xi~~X${tpfiSi!nckTFQPQ{nY@s}tT1zy21OjrKbH`A*@%8eG$# zXY79T*kIBeBJL$tZU??-y3D)76Fuo<2YCOed^X>?B5U6BS3b{s(8$_p1UNt4e7d>c z^#TL>I1nW8W}?i^EZ5Q}&6hXYJJO9_)bm?@(>R{Go1QB_-*uN|^A~4XGhgPNyz+Z| z<*yi5srP-Zw|%K6DG=dxHi;#!-dHIfsIQ*nzbX2<{L8;Ie)f{O@gDSzB$|}%-(M+a zZW3#tbMDJEbnHIX-Yx5hW2LLo)SR_VufHG9VZ%ILJ6MN4*WYnzJ9bi_qIYr0YJ4>+ z-6)vcXGp(?Km23j_WOwUn_?F!+wv?ptU8?^L+j*f^vvjTjRs+Z{cB{Ust{S>h%?!_ z=JTF7#(DM1kj9x6nc$)s9|qEbuV>$5M>#hdHJPJ{V&!V6=`1UkUm2zp1eYd`!Q!OK zTYJ!M?=znC58=F0K0`4d4SO_)!==1tpxLbFEp-32BVhIcJNS=yp-g3|TD@2L zdoP|FgxXP%nlI$VO&wKfceW&MULKkL@=52f)P@sCbG-@gxa_U8YFas}EaF@h9+1&! z8g^#kG)WqRsr&j}^`3DJaJdvWNt0%dxCJIv?BOF^=n!sOE0lu z%tuwZs}CeRsva1%eeqMRu({Ry(g*3o6m%b>#g0uYJ;9BNm0^v8rSi|cUpeq`uTolX zD$c#%hbeThoc%h(=xFs`)pS`n8eNXl@_jykWN01Q!OwmA@nB`MKzB=9GX11)^i{lx zcC*E8KjJbYrwemuZkBZcQOK3Q#bs9|v$RIlyJ<~dlSd4d^B;GP!W9avmAV9H_}|X+ z7n=6^k9Z1Rfc31tz=^E1DDCf1Ch{yT%@1$Yf+n0)&Vos!G=AveO#?5ac} zwaZ`2v@5Ut9G0KE-i}$^CInha_wZY-?5WL1ZY0MeWCa=(&FtZCvX1lOD{UO~ER=5E zoOM@wW!^R__PuiL6(bs5dArxTd0?qP(~Mpmk^NO~Y18=RJT^>ggO^J&a}4(NR?EN> z%@{zV%H}CkMRV@xbtO4{FTa;Wxv!iT$Qw%{u-_-VS~Zw(*3nK~m^1k=dy=okEK++O zddN{*SP>3i9ZgJ%ipXFy_60g?;^uKDma#i8zfQ2CGLKpfX!h&*!p}G`#z(g2@ter+ zeRoFfFe>sWax8UVtR$lfUg;ri2iMC1g+-e}!ob<(*rD1dXK+&1*U(?NDI~kK7W(}l z>EgxLKR)TWLZPwO%sm2(l@s#?s+#s!YVG`m4QU?cRp$Xy-w-}%Iuxo9*WL=eGy5hz zPSw?{_MDx|g0JP>@E1_EUXAL>4p*$M@OS+*0xP<=F}B_gHw3W@152HIBI=e=jzFlZZk*qEz!SF4WZ0`Cv zFf2(O1)B6M386QyUST3gbNweFIvLl_v%l?VS#M`Er7_+rF6WKA*!6b2Q*a)xA4IQI z=!rY58MZHQFH%odG-S^9PWO@7$(%SWD)XsahYeSq?3Tw)u;TbOelxbXaA$Ds)!e~g zAZ;F8mQGcx*JfnLKsif<$(H*zLshZ5pk8pkwNmkX?Z$9x>emD#&n?4QrPrQX8L30# zZbE29eqFI6 zpufKU>#Q?NDu#&g(evSX@`FI323B6)OQY=x6?Tu~d^5`!D@nvF|F*KpAg(zAyq@^T zpw!f=35T9>$`~o${BHiUnS}MN|5e_1M>UnLeKYEn>mVQ?Wu%ET5do1Biohr;1Q5gm z2nZvHsFWD#H9C$0A_VD36Y0{7^p>cEL^?zvKp@dXO6V;l^miZT&iCDW*L}Zlt@q#e z4;Bm0Ir}{O+0XMUXYaM_z}F!Wt&@Ev_WlN>&u32Fbar+)>7ackSxs7Cx?<-}Y2#db zp79>8S0fp^K5rTu^_iz$yPdr8UXFR_XrWd-HQn<)+}F=fUVulbZ$Lynd{caJGIyFt z%AY>3kPzcHz>H!y&zFhm`@5Ak`=j^S$N2gAwJM~0Ua8%l6p36G5-`2`IgHX}Gh7GSg|F8VzH+B0JT|7tWtIF$q~&T_t{g*+Lh}<`8uz zUrV~64QgUZFZ z>qUjbDnHntcsl6RkR8NG7<-;>i(5CoT{*v*`h`s1@lNmVUL6dY;KzS@s<;_IDq~58 z%&?F>2Ivcj`JK-1v9UFi)6?kg?%2UFb{YNk6aPr7PyY72* z4F6%En&sfZS5d&BUXgh4!L9GhmlTbAt4?V;8#8-d2`|Eq2#OzmNRL`(Y|v17c{OPk zc()WufdoZVRkyVkl^?~S=zRZU=cFD=UvKzLZLQJvqBN0sGayrNcJ?{ys(z2*M#^9S zt%68Fu*WyQ-+OJL;PSOdVDZCV_ty1kWe>3Cr|`ZVrk4XKo|V=asBQOSZyv6_86b;Z6ap^MOD?)r|{HF zgQfi5qVGC4QY=XQIwImwDlO_Xn6z9vr{zX}6Wt)!1ccSI<2Mc*aT%^U0Hy7siOF`} z4F?B>@vd}*8yCOWh0Ipd8>VBG?6Nm9-z#JynfVd0Q|}3lKjPak1NNC0?kBm^>CuX< zHV$5c@9Mk?VH{1w4rA_g4-1G8mIK{isdUF~lC9&qyoK^>3QEZg!yTu|$RfMy?yqtdyTCYZD z>GJ{gdnA)1;$p_#GeZ%rA`VSPJ;GvXV(M=+RGU{KpAr8CfO9!+rQp^@w3HNWePDuI zr`Zg$q&@1}%;`f*q07rl=ubtH<%N#^cz3(aW3fegTN@;dTz4fWH&=zvFfamYTEXY# z7-%{(*o^_*+LmDtel*$H`4>bp%l}-T`n5A#E7^?M+7Pe^VKK`5r_($g19RRhfciJi z%!Bb(xA3JCZn#T=KAD$00cyB<;6C~(k2@%G=U8E78-i0vS1clIdRx#t_yDW=ZXW|f z3wH)@Kq-r;o>8anY+KJ~-5efBj_S)b!9NxCmzQvJ?Mm}Ge^7j2ac;S$#-g-(;GNDy zh7|#g+T0<^L^%G^W5B-uyFmP%(NX^0zs0>YwY&A_ug(WmfO&x)rf@pl{mqW+fgoQ! z1wjUEE{3$?qa3yZX6Gy%ef#nT0~r`hm$rCoW(o~d##qWuvTxnN zvk2U%_|AGoEuqiES#)Q!htg`m&N!k!-xTB+GHX5WRNPC;j!`a86?7%WT4)dMr#xs; zUqo&9e4Nj^mELu+GaaTRgeZUdAgRu=OYIbaHx9b(aft z)+eKo9V&`=ccTqVs-EAcMw)y}1iyKhR~QK1?2DntKGB?FL@-WW{A5Tz*i-~Wbt5wskB1Vr?L9~GFePxj97wH9foD5b0AQO=w6 zv{a3WNS(37t=!7x%!g9qh%?#)_9e1Xf#29j&i6+AB5^+HK~)=PA%aL$3tzN2d1J{w zBam*0{A#^(SU@1x1RYskj>f-tLlA6n!48|O3Y7H1UeRmg%)%Xss|AiiR%aFqIRmwZ z(k4=Cn1BkAVSufGQc$85*oI@+ZC2Z2A3FT#_q(7Q@9wcO4Nlkvyl#Dj6aW^@i?I?l zgbgUF0*fInYUuK8-Q*j6MscB2?5O`ngqXTZSIuSRfDw$2A-f(y*r38rh@8|h^dI$$ z)*7B^TIQxF*-|5KR2s6fPD>lZ6%wM*VV)g<+iPy>A*;9M6^_bMmDDk8Dur+-y-YO4 zIUF&9+PR7$J5lgO)-6IWQf>N2w;qIUFVkXqVG=?-A{mD$h#ji*uK?m8Vv8a>ZG>d_ z5C3%F0?;Jo0O}yI#DSEaya14svAK+hUR#!aQC^+gnRauxdh-uj4yMkZiUps z_^`LuN>2{F%sx5~RyKy+$cn58bvx_pUqj5$z3NgsT4SLnXKxq4Zb6Qx@wjfx!lHtf z4aLR1brhI!S3I^ixfwH+IMK$L_ZK?T*+XJ5?`tHPzCW-#TPE}u8V#-;DrB@r`I@6= z12Y&Nu@7W$`sGRit7(1exenun13fE53SE3PAZEFHBhj9gI2Hr5AutPRg0-WoMWh3~ zRe_7q$QcYR3X9#Y8-LZ)YN_v)G>@eCl>)!f z@QqyLI&&1Wy*`akvbDU)*zX?KL2p$fED~vllx<31)cf?Oc~_C0LNqMTAj5$!nPf=^o-4s{()Z|y;CTXd!(jb9wmI)h#7>LG%g z6G75G16l?>yl$zR0P4tfb*9CIv(TN_0%-ZDWFkxk5;HfT!2(zMMCnyu_#&BK*w0t} zMKuok@f&hHJ5v|4fmRh+9uLztTzbhbCn>nMX>*B2uVa*>X zGT+=en)#&yU6>WDt6G2ip~S<_v42)TgKurmD=iNjlJ&1DFC_I(H#8UudX)7GRJzk7 zcUaC=t$!SFzzDPjn+EVCw z3EnT`~Ed zL%L=C_^;;rXAEo4tSaJ`;)DTe*c8*abAEUFUE1C@KZ99~!h6bkFFMl-^$8)U8j+x<27` zEbcq8f9LOheHRj3ewdC~KpppYIO19I#yskTr2%UkGAHJ$x+hmD^TzOq^GS2q4U7)! zYdU!LBC+3AnrT5w4Ej$PtH+ExzRMNAXp9qE_;+Nw4IM5)bbG{-l%6xeBHI$yCTJqd z6Gmb;Z|W1t*a6|(i%L)W?%Sk%;H=ip16`FlDyG(IQ)(w%m|1gluE_`4nNg3(c-X$( zH!x19>YAJ|LMhzotdqGIb3}@^Ic|-atq})x1BoVd9?X~=#x@XeUTgn-63B90p8~vh zqgR@*Y2xIN`;Oq3LfRpLH$pHSst)+3pzIhV<07bp z9TflwO+iLc(W(u~tF#?sP(LR4$-b5ZJ|2J>IdCwa*?wDFJOrfCA_h`d3+IkZWU`gq zd0_Q(a}f;Z?XeKdSn@OxhDF}?#IDtWmpv9y3s(n_rw>^Tvg307;Jw1G1ipKp9Y7AD zMGsu~=+4OSNz?#6bQBp+JtTnKm_-Ay4j`^iR|wfU>1shLKF`=C4n}hncF(Lng=IIJ z&?j>h3H1|F62Qg4BQESoRzqoESMt|@DZrsMx;f`NQ!!Q~8QvQZ!el)7#M?JCBt>@g zxi(YBDA>gdu6XLZVN!lYt5V^J1i!(G1t@hVfbP;M*SrL+3|J2>vcto6d$v{hs!MiQ zjk%tjp!T~A0-)qm;r;cFkbOycgrSaskMgY&?`Pu48h|yEbhk zkYTLuF~ILq*+pm_slV#lI6D%l0*3@=n!D-?$$$~f@`n5Np6@=Uf{aBqu?bPxXs_B) zK>Sw_YfCT&geOp;cIz;Nke?2Om?$s^Zy?Xe3rBn&TboE}?M$P^m`I1oSnAI{f(*}H z1j1aeRA!g=Y_Si`M}j8ksk%Ni@MDD9`!INI4A+Vz-joJPL{7Etn+6gu(5N7J<^I-c ztr~uXNj5>Dw9B#Urds`wyt)`qjkAI}+o#J4;Cmy)*D=Z!8T5iE-lfT0H9SOrsGSXp zdcfRQ$O9+vMJbRe6lq{vYyp2K=&bZ+LXM|i$%~iwr2G4cEDB!O)*=eyYN8-10%r2# z7?Zd4%-Rq0U4X3Y!3w%(`u!&1(|JB+iQM)9KV07EE#Na@8OC2Rm0?pi0yBI` z0j^&zkz+h64BGjxYwb#!4ri>ch)VEDOT!@At~@R4GCTyzw?LlBn-6ula>b^#WB3{x z`T#(G-@%9Gg63wm^xKv-!BfhCB!jcbT4wHPlz$%!ynt-y_(l@UkSnspsJb&-BMKO zZ%YbVH)!*3p`xE%7{sO=-Xol#>TH#oPwDZ>aK)M&MYDuUD;!J9J}yz6fAjS@IM2jqhG%!?4rsy3^5rG zl^P_EO3K$gEi&q^?=t4E^$isFu2)*h%;T?xy=sQ)bT$`mGOSR+D%-O(@92qaXAvPq zZ^@QtesYrbUmAC|3tfPxg1&EfH{1)J!QrG27G<*r#D#C(l#Wu&4pmZZm@NN%rxG(= z?ocN)dlc#~b>gOpXEW;=a=D90^rv`b_?m+0U5--BVDf4`04kQzsUb>;6vzaGl{n~C zs{&S7iM6^)6t*1^_Zc4%&tB`aMDDW2XF#>Bhu$|>vgR5Q!cZ+@T$8@sz_?rw9aH9^ z*HENlge(X3yU#2O0X38CYX`kZY3$N#8>cY83mM_-Dj48b)%~W*k<_5<=K`{FzP1kU ze^l#ibHwSumptcDn|W@`KdQ@&6MOUTs3{Z1_)6Q^9@AMJoOT_0FTC4mK0RLXe9)KC zxBau%REu5$7;p6>OG-jjITF4>*ZKCS!)1{!3W`E$#E(1=R6I_q#D)dA>Es0kYYGAf z9|>a@V?YuKg+>Oj@`foQJR&g?0&|9Rwh+X!BLTE~g3tzN-ZPEn9KK}LFcnMPvGKsk z9CsklR-b>d+6e@*UQyDf<*#}U-Jq~dY{}h_Q&JBNbSK?9d;a|G%Ar))ydubDKIXM7Ru;O5^XO z$3)lr6!H~|w-_vUI`4|aeDf6I%uoX3+mis$iJzJOMwk<>6fc;WUS31ccp46mA%-h% zZ%&Y*4?K{8Q`lwFudkLAE~}+kC;%aI$Y^_!sUEztptJBn7ukQ^C>Gd+JmZo^C@+up zs>W0gOhsOZwoF(kD4wmMBqMtaoMWLvhC~Rr#DjYWrK!KLM||G? z0ez${9g*uXM^^ZIkE}?g7G%^MpP`RFaR0?Zr zja0Fm^4-);=IG}aNc2pdHYVR>KMDdX|KalMrUU&q-rt6A(nWEmdM}cJ14~CTVtVjP zVKe1y0gu!caijc9l?dZ|9H$!T?w;`)-AFPeCCC3-D}YB;aCh zMyqJVc#NH>nv)1@bj7o2XG@lD?mVpejMrmy-=YJ81sDuX1d>kjYN5A)^m=atR59qV z8CUi2O-^15nB{AAx#r?-mD&-(1Vt-L5LA3y6|u;=5f3WZZiUtS(pN{Tx?4|(-UUO6 zZfzkHB+bmHrly|H&CTVtL`Fu!6BJrMJ>^N@lU0|LbagGOu8D-vLgkp3-)i6gYQiY1 z&3b{wk`wsk)p4V) z_Yk~eW ze{JKZQJ{g~CZwNE`MRCn{k*%4le*uBz;fE78c8}w)Gz8DQQu$IGg2NpV;^hH=L0z~ zO=JPADm7R^@bQmSXn@P&@l?(H&=k%@!#>o4M{D~YXt#c8-;;!^{fXM2wfxJyE|;Q1 zx5n?MR9G12)YMZe`d4q?JyqM~1)eT~ja@Ruf6zFxoOD)^Qu;GxU)?ZexywtLi*_-29s90bZIDU1 z(*0UKtaDatHzmD+@l?5EGMu9eSAdegfOJ63(ZG0im}J(S{{vB00OU(8O%%O#}hS6E}SdtmETxfSIfUt z?>aG6NczLBSpM(NW1QO`J|SM-^Y}^{Wn6o=oAY42*Qa9oA6A$Ac!qrHJ!LZ!R6L&~ zWUK`3T*cQ^PZkbPUaXv|jaKvU-V4^<^*CbBUj^`Q$3Ff~jetny6cXB+LX4}R!yg+@ zy_0P`hg>>Rgd9}L=3vg90{N{sJN#6u%AeHwV7Al!wti+^pVJ!`Z|U0Fj;L=gxRaee z4ym1c$C#JsOY&OnaQ|zs4#Q99T$!zlv75N>;#t5_{+jZK{Z=Yv?A~hqJ#R4k-V?w> z3v`99IyLv~yHrwDA)SA3yyxTPOiGuO^grf$$>Tvhi0tsmbnDMkZrrN4btJ~nMklP4w(j6YB_f^#pcxip+c=`w zPV*Rg++&M&xF7c2r6;;tMP&KgAU7eUq$0S?M`rBnq!$#YZ4RenE5ybDr{mQ*J4|pi z)$;i=0-1g(!sMJ>|z&^vaW;@^U@qd)9lytx&O(H>jP zF3CO@mGjW-XrhB^&R~obH{trf?!e0byk(GJxlr>wN3Yi77axQ1J1UG4{}=r|9z#YT z%cj9!E-#i5$X*-P z+!)cU1yA0+(EjK7j{i4s{fD}h`?3288bZG~JxMtCuX-a7J5=BiTq<5|@$!Enb|6~b zJUNx(SM|`%c_ehX68Y8IL0512r1jtM1#cV%cuEX$}o5)qyh@dEVInd-W)A)NCw! z8Yt+FwQzU$kj-!0W*JbXs-cK}k_zXb7neFv9UI}$*bh5e`e@l+zg>fpVF)FI%ZPJ! zo1{>p;!txee67Ps^Y}5Sk`&q@yJ?kZgcUT}VkSU7gSNb$sxB-3%MobmmI~=zC!~Jn;sxp$O#s%9n7ys3$h-`$ z9lg|$1lv7D^dF8B{bL7ycTxTq-=Y`K$MuNt`Sxje#0Rd-Ooj_*!E5v8D+^m&Ti<{H zMM>zk>)>v&b9cHke%TdT2dNBmIQIusx`w+YNd{cMycaCB@#jAd2+`lQ@R{o!yld9I z03I~u*82Yk0Af6TBBAZ8U%lBzPk+z19WzN7`F%g3I(Y3P<43TgIcrK3+-QFm2o$c~ zk<)1wKurhiIP+Ie!kk0L@Hg*C#E9jB9|%2OC24@Nk z7hA_Uv_x3h?~0j=AwxuydU|do(T2F(HO7@cE-i9 zOP&4Y@#$wp8g98_Ci1bimIw1sIunMrwTg3I{x($q%Z+EMBeH&hkBmly^J+K-WdQ zV^>2pT^n%Squ?vleUF-6>8jh$S2m?zH=rx~4g^*rpgfCNki;LoJ!lzu=X6@rfv+w$ zYWfe>`q9xW!26*c6CRYwe>%G6=(S`Zt>a&ggUd6XVJm>X{D{B}A3Nao?PY)?w`v7m$eti@Il|I;b38| zmgjx{w(rL`^8Q+t#JH}0?5jZ_mhMwrrX4*q?3KozrR3v#OX0MK139n4L5{^0k-D&9(3dI*G!yfv@LtFKlkL{g@5RU7YL5qd zta8ly4n_q)eGm;iz`JL8JxeP733x|XPpN_3KKBkt&5va24~ML~+3RDJ3^$8OnvYbC~PPy2t&R?p*2wEfjYKEXu&; z<7q=hZstLb%)0(2o1#lOI_AyaZ&y!S-wVxOb+{jzR8wLLmDxeb|0%Km>n(rLZV_(R z>-4TPG&KBq=m=acattsb32^m_0k>qTx9@H+boS^^;E{L#$Jo2H{NKE#Pe5Q4&bW@%?%IA~vAX>Ma|E^uyVT~~QD8_L^GQESx=iW^())LK;% zjis^g5h+S*Notp%O6|%`O3~O;l-if-LeS8ns$!|7_AR#J+BLOntN7xd-?`^Ib7tnu znRlLd-se0s^Uf2vr4c7Ph#dd`aGDtFBj`PuUZYu==`D;O976AyQD#Q^fYY;5&|IEQ zxAZa5zljXV{hk-@&ubvk*>YseV8Z&uI2NV=hxX(;guNX8981}HYy(aQ*ghHia$CfX znJroG-}g94T}dd80hxq1yetd+EXS72ewCZ|37cmCGZ#;dw^WZFLyVbm@Zm`p20Pi? z`;}&C)qk*8ekF4zFPrA~FuML|{95xh=JMe+rnoi%Ln;GUh}$0>n1vI3-X=LcAtZe@ zJj#E8!uHy+p75COVyDdV*Stj6w#RJP4Oib+qX|~pznH#!`9i@5fKL$C)-iH6WnCI% zj>LADDNh`aikzHW+Ei##pDQ=k_hS10fD;6#9O0s?0Vie38HAPm=?FZ56Zvc-q(1`Z zB+vHpftN&>EkzW8K){`xW{>lkOiSd;`uS&0*5MLd&h!e}g6lJ;Y_jepcz5s#dgC9% z`um$W`w?qDxurvLD}Y}7N+gfw5g`ja-7&ZUvFJ8v>B(5Llpo})Qq@1Ao4a-`-YT9#xQrn{sc*wB3*J{iNvB>C>7*wvEgPbE?hc%Yf()mbvUxMMgeJ3XX}pexltG8 z+JQ$E#uGVS8~VMG!aZ2~j>@jQO1359yYCLky{o!Yhj5ouMC@PAd^Qm9aaHU+6VX_< zXvwYcqr%#r8+iPFHh!yIq+}=UnsW-(c`en7G#Uxh%RdV4?}r{{dLs*u83&~^Z7(N2 zq60~>O6ovdt>Bg-T7yG1@ONWS&zHSnIO8OX59g-i45Q5#qh2E%-Z{D3fx==|Yi?an z@m3%WyTmM)E~zqhzm?r%QH+Q|W1m_|AF2e*)&yQa#_XEX$0!*4U;8{EsrvBtLJ(xyuvR z##%fGeBiZ#7wI4*CmV%@X>uyw)C&v*zaIM-vPqK8GPnG}^7GLQR@b5rK~y7;l`cseCfVan(na)wgRi7Q`IMD9K1R+h^eE5inwvAFLha)^ zC$wwA_E%H{F4$MQFp!{pO1bd^aGu$S-OD8UwBQuW*IZIj^%fIRDGygsF-zH58!qSP zQw#%%M!@koIfkfT)fc!7?k)I(uZHdzW|>Pz{PtqLz|1)KC)ZM@%zQFdP=mTX=@ICn zme!YiJtSE%Jy}~bX1M%KSD%Fh)*C?g-1WtzZL+onweqzpex(yMJ)znVwl6*Q`j?P$ zOD+zFYrNHS7{kKs(vbx0>N}QEa>m|LbmsfkL2T{LWN}d!OwEQ^?l-OU2_`!=!>YYU zJt|j(d;QVjg=8|&z`$8TUjCA`bu+SGM^*I#U(dbG+2iY#uLS91`}uSuw#{G`X>!tRRlLK|1| zFp-9ocZE*e>WJx4{HO#@`CPH+ng-uFDp#i7s)axOOP@FKo_$76HG@#$jc zsf8nmXM_AI})Vlwa6?}_0ciA zD;SC`P41@cSgogL11>h!lvaB(*LXqYI`{jK$(xCEMaXV+|S zWCV7G(GiTEtU*l&7)h$C8V(W{GU?V5>gw!#JyCQNHjRVRir3J%v^0l%Zd!@eD&Oa@ zQfebfo14gtjFEz-KP>d1S@NL_tE<)MkqYQ^bhOZHxF0hHqJ0%@cy4_?2k!I{P*_Mk zg;k#aK|1F<<3PxdKH=u!x?qT~jg0HVnG34kwx~|ldeMa!;nR8T|qn~g`E(9IW zuXXI%vz;Boh~A?5psS;f#njZD$`p;Rt!ndzu9Y78)9wVqxt89-y;ldoyu3_yvIgvT z4<|Ya$B$}iex&B*f$GYbAEo@obN~Jj+~Kz{K?q_-4|xES9JygDV@T+2)8pd&OvWe= z5sO)`dC)#(U(+dW`m6a`aUs$CBqbMB*H{F-PzSIXyI>!%E$wHN@s=ThDKx>b3#>LJR33c1X z#D)>whgt`%|IE#=4n~W~$UKGEFg}{})yHB%SFWs|?GghS8OS7^?&dpI+aHK2Dgv#v zAsJ*L6!he0v$2H*B~7ZmA#|4y13}Ww#;bI2uk8F#+Y26^W@2A!+|mcARKin1u3;kV z{ER^3#}o0{&~gS2eoOs3cX%-n%Gz8D7oS4bBg|Cy_F{5h-BJYsE1ewH6dAK|02~|y zPSnQHzDtZ4@+;m!ApS{6(ENAFV)W_DbD!?1iYxnFsjQ6BH!)GfKq@~Y<$qB3FM&Wx zGY7YQd~PTZk3(qhWm2-hSp<~?=BIo}p&?L4=y$JBUynoQ+jyIM>pHh0FTpf_`JI;KFq1|H?Y!otD6 z6aE79_13pT39*`*NZS{Bh#~LS_9Rhy^sAe7bU9<|7pMG`;cz29_oT>mq~1eWaa`N{ zqtP$}yTh!vZ?U@QMK`d}0+(J8I2RmLc~i^!N-K_pA#YSqQhw-qs|x}_-W`oUPR?g% zqi-P%pY`^VCP<5Jdo*G8bd#o+7_v|AOlu|^dVI_YaQV+CiP}jV{gT|AI|WHwM(E#l z1-b04G6{iGo-{Pb4kp?#>x~zm*vA6VjzAE#R@S{1$fW~iH6r|BOoob|grLSkw^|$h ze{MxcN?+vLe1AJvSJidXrhI*HFyM&NsVs<{jnm6M{51I|Np!x7C>NK;J|-SOu|&6V%zxqkrN-OH$NpKg3u#1daj z(SqI>hlk&AaHtFCTCS|r1n8nr(4Acy;NNSwK6i;UySa~%Kt4lvi}O#z2uV!r9L}Gb zLfgTiI}DYT>naf;TNX8VYWoHkr?0x;*B7I-89Y(BiV}Hffd0J~M}IXVJ3?VF1{C@W z^k$N~)(s&`UcRX0-IXd-djb%t#uN*0>~fkp9I>&Idn4l_bWz5=pZ3qli2g#T@QvW4 z5D`FgmAU#^@Gt!V+0>nZmdE3m%K>=K9ERU%39_*R!k!)uZbT&=+z>-ix!5BPC;R;;)SeL_B+Nwd?i-L=NXYOU?H1TLA53X z33~b4wn(vr>eLr(EycTi@IE(E>oB#^;_H!%K23k>*>571&p47LELUfXLyew?bu6o} zX{g7UG>{cPpM;{WO8YCWpZCQXf9}UZEVe2TXW(#7JkpK(73lc z$&|qt?n%fl0n(v{Knk4c>8F%z$>1Jidu#z=x8}d^(Zyg$vPoyUr*^8RurBAS?;IUT zx%jC!?mA!Y`e@D;A-cQ28VZX7Whv68b%sD?b*YHN%>GD&>y&2gGh*1mVHOHIvqj>&JO z`%bAFFA~fGH!SiQ^xKxTBZ}~XwzV0JXo^{!7AE%M#|`v@n_6Z2kYE+ibrPqnFn=8o zHg6NU3Org84IKp$I0%QO%)=pVOR+3qA-$ZEYs}72Cnd`uibcx^12@HKKr=(Ov(z)D zNzhA!6-}WJzSVr$Ri2~kAf#wQeVWq9qZfu`esmEA(eG%UQXd?L-K^|onTAptwzZ6H zLYmDf1>G6ASb3ID;M!$g8YHYZ@)fVJ?9~ux)YiWKv83sy{58`qFAO>IHbSzAGU{=} zWQWuReKU$vZ*It+@2dD7XM!1ihYkDMy=(=M=y{v|h#O$2fN*27fgcjAP(WZ(oPdm< zN+m>M6vYgfE#ehLY#w9?CIQG8f=@4uGfI%VK}z&bs8lNQ;mE)##XR-^6M!3!hGCXq zFNkJs&D2CY!Gx&x5~SG$M%mk)|lY zDU&YX1D|AsOAqaZww&`nm;Um|_!<2xgun&>qXnKtl%4(ak+qj;bmp>Penu*!g509Zc0$oa}8 zFrKp(o7fhHXRA0MC+4Y!#IPHug!>Efp)?BqlY9O?TkRQ9!WJo|U{$UbEOZIrIfq0W z;w%##qAil#G87v~VGJC#0A%32i-uahxdiEhODb;7Y~pIQ={8zE#*J#Tj&1ClUd^jw zyDaOhVu5jCU;tVeTz-oj((s5^qi(%rHr#rHdQDRIvFDrEvzunKqU3CAmv;%Nn0}R- zR)t!YU9b9P)vkM_L94!Hx^~5Mm5}#a;rqDdHnCN2)o{)BY`0adw>-DeY*cU+gew66 zjd!s(O_$WEXIYS)nw3@^S1iw@o?D~7Rr9?@u76(4ZH4gNO{~0%fAJ&Y0QUVIs+CZ= zvq`)Zy0hhCfzu5~A680zh-e0zT}jNK0L-rZ;DXV|50+g$FHGj?8A7SFpbM9#Fx!zG za(ZDWexi%0D!?y=0oC=Ua#dJ+Xu9NlXuGPjd5j%hBs*6kWg_z9G%u&2D9!=L!C(TFd=LV!+c>4=a#^lNvM-TuS8f=4zk_{VOz7o@Ao9W`q3Giu%b1-%2Zo1? zJY-4m0O9aJgnkdr`4+vP^e}L9Z*ZZClOgzDxT&lJg(qInq|goZ^cE2Vr5d3L>^I=u z4VtAmnG3f(w-#r)-}f0RH){vZhb}JWB3R61{>%-{DJXs^qOwl4ZSW;pid>e3f^27kw#!K`PLjq;Ra>F zA_39Uy8)6u*r2>VdQOpsZka9JYSeVAQWwe?uv&-t@7tj7@RN`PJFgltw4Mi0ER;8dWxYq6-IqjjPB8b?MBB6owu64FPNEab=)g#(O*sY1(W55Q zN=AC{nE*fla=v;p^oax}?1jDUPMysxyJa3QLTi*%`aeY@g$@lX246>tZF`v7=tn>U zcz)1R0Iq>F7MM#$TAcxMg)f+If(%CEiN1P;gsGQN(5V((6(E*poF{%D<0tqsv6<2O z6o8`QP6>6kK40AoG@ZH)FbXr>4KQwz%yfGTSn~;7dvS(19TC5nOz?r zgBQFsP^sJbDAPdo+)*E^0!Ct`fYoXH*6$)Et4noBXTU7g>W|y7T<0o#p%jdNTNl9>=-k`^Aj0Gv)fx5knkU-4iC$S;QQ$cL> zczj9Da8GeP^8gp^a%@11<|EysY?d0OS}nEDs33%&C`$%_#K$L~3H{P(YUPaeb$TP1 zUu#-0g%t&s(m$iqDD0nHUn8^M(fIP|1-g3L@gZQk3W-`p%}yXPJ@X z*eC+qfr8dR#YMaSg2)6SDv=r_kML;^olrVqco4q;Iksf){x!T&QU%C!Aa1TGnwJYj z5ORcIEns0VZ-raq(R+Y?i75%BFmzR=aKe4qM^LIt>YoTT7nKWjl0)~pus}@iKkZY= zNTu0k7(d}sDb8u>GMUf3m)obw-83Bj0>V%O;SgwPcI{h~o8DJKx=|?AAvvl&y*JuL z>P?wq0ZLSvPr%S2BYE(4+aabyJ!D8pw^2Aox=%{awMCx|#9TY3huuNrSDY3wu7K1J zH)(6Pf{4Oo7%1@!lxmOPGr>h1xO3vFO0;V0k(F}aI*Wb;Ocebb0_m<$tdcY zcv}^$+ZEO_hq9Fw&j+8KdD{_WFkZyu)SrLDauw5`rw>+?7ysV9A^Sc@i6ysi@Mgz( zDzs;~fV=e$ULbb?btz^na06HaEuF=142)VX;6I+W`%J!pW#Lv2-tT`eD!vS4KH#Yf zv;^OFC7Uhq=D(7e-~K+bh-I6GX+&MJ6rzYMrYkR7!uMitJB_gA|;oEy2 zO_#75=&x(efal2Ed6>u?SPG{mmqUAgI?!BKJZr*m4A+qt6UggMt`Gx?T!8&dihg6& z+(yI@+ICy^olDo_XAaR_n$ym~DKFW$=tIa^>5K9lRao6vyp^Uucl}Ozx*X|rNmmZ! zN!zz@;4QE-;~4jTn76j`7k3eR&Hrn@l70FyJ~5m0)M@v?=GC3qZbR=x-F0vv6WJ@7 z#jL@H`|#E{d^z5Se^XCOKjM_B**b~b*0RJ9uH_t{-mQa*?8cOT|YGWb={`5trZT>)bx8ad$P?sX8G9JlDAL)et@VkBx z2x4J8l-L21sebQ=GoWZfjTu&wziy!>SxB2tpq(|UG_LcqjN>XG9P(V}SC1?Ppzfl? zP0QDLMszRF2mOBu!hbX$t^~wWkAHd(E<6AL#s7~W=PZJzKweu35Jo(g zrCj8efE*8kSQJ4ZWU(v^sRZ1fNAhAUBwqXjqHxZOLMataKmdrOsGjwd1weEcfdZJA zPHXSBJL~;B&Hp&Z-!{|Zyt(B(>pm;n%)o47cw`I$06-(w_DoB8%~f)>q^x{#kFhtG z5;lu#QV!4Y$%^W#ZUzKUjsH&|)CfPaJw`SNN)8In^JWsjxy4}kn7zJAyf_tr+--B* zoy%n=0?>Z|DLC%3+sxbadLK!GB}pw$umSN|&0lEe3hagUv>T|SgFHQA?6hFv#sF|% znqR|wdR}|k=JT2ON&fvT{>qhx=iPlz0%4=NY9a;nbGP;_2WSXDy|`MnO-zy!ST*!* zCx-#^z5@X6hS_Tg7I=7g6c5^c1S?jcu)n3{(Sp+z{{E2tc{V_be1alBYy0*5dK9e` z-Oh5HRY@Fheo%CvN}xVsC8w7U2I++jM6drYPqk8fl)weNuvSHIl@Lq0q#dPQ6^&k9 zUzvWdC$#4+^(R?`YSPRzcS%l+rtKZk7{zeGwkVzY3qc;WamPgF>h>r28WKw*&yFZ7 zvzHyNU5|Gd(ONEry?(WajKy)Bu+W70s4CpTvvH_Kj8<$<++}pw<>>h%7DmzcS?`Tc z!y47<{@iMKjy~nS!P*w9Dl?Air8BU8AKR~9?rR>TBA(~9=PXqIsH4P^Q87oBN~fj& zC8F7iL3IP*hl0!@R8w!uMiGHVB*_!G2s@&%4?5l>_cQiMXNF16CT|9rzcb9tERF47 zA?Ob4cJVvs@j+gv{KXg|l^ugMoKV3o!W#BzeQwR9*wq_aexgR<8rzs{N(hk~8!Ia- zi-=x9tb9X_<;}(7-vvsPo01Y&Qwg)i;vZqMSk~_x>@$>yzuYBDGrpcX%p`ayN9yj} zySBE275&vVjgJR2hGOQ=f;7}iohL{gbF4s<#m106RVk|WPIG^fw#XY+P-l!$Ll=}i zJZW2(718psH>SQ)BAvulfsh>mD$qCZG(SX{RSjAj(&t7cj=O0Ini-p8iq7vXGs zEthV~FDGMDj#JisBS;oak5-Rpj#Ww_8)+F;VS3zJ1~1M=7pQ^M*_};m6yOE6=o!>K zVcB-pOcNg!(#qq^Q3r>4?aa%sDFOb#O9bDGSv3kO1qx6@bRzJ{xOX% z+LW^VzV>4Ji5;6)uRBy5)%8$UZbM4FfOq%d2y=dFq9;9_~HcPX%7mTu7=ml1oz)$AsQZTymA$Q~QG(BWk*Y6xlj4y}ydAo6%|B<)N3K1qQU^tGY#bZ9Cgsq5#Cgduw&)EOcNer@@ZLG zu}>JO&(+5J`T7b3yX5T?1kF1_maI&*AH{XEBk2A&2;Nh@P)@X6c$oa}?RxgzgVZR;shMV8rNK=CJn4x zn+wld^#0+*B;ZoH?Nm-r#_pjWH%A5+2jub#qG7zESG31S5-&~c{!zPUMnWbs-rPR7lzzm4&B^V&4MdIES^COzVVc%n6S5byW z)se^|$6gwtySN8gt6qFnC2EvD5(Qafldt4}GErX^S;h?yN`9+YjHJ1C?qSc_>1g$= z7Q<_K`)TJ6Tu8Y;SXBenZ=@F#0GSwqnmdZ-%2F5I$jU8vHTba;=aYc0-?+5kw{Ifi z7=bKR*)UiZzQq~$5$r2sHz_3?*Aaj#Lf*L57u4dIcv**ppq4a@m!MoJTC9>LD;(3s zRFwY67=(9P6ZvDeO+TUuWEF-@B9Np5B*E({$z!f4PndB>1Gtak=&a$NV!kq_PmdXv zW3~zxgV6YQw65(hW*_UZ=}{k5zXM=%S@jKFU;@SlF}bh zx|ij@3dZY|GdpzFy^&M?h@qD@%HuaqaPdS)hZYX6a;tk=U){71yhHq3isoLJNWE(c zmufG-nR$4~sn_)S-8O@7JDHb9*3z z9t2Dv;Iz26`E%1cg(iM}t#f^cjgmVHj%LIJG`rL2Qh!H#l;T3{n~P_4TzWq#eT8oP zUmkU!YlL}>3jkDxb5^IeXqHRJm#L*92Bq>>@67PnI znE**i65JVO1qkSk{C%2@YDX#SgS<7 zXRXVu_$D2PQ1r@59TzMuZD)+-dtQg$GAM(`#x{31;%1sIa?KcKPZ$;N_N}wB_-Y27 z=!m=x%LK`Xq^0k^FU(^m2yh~gbTmI4tbL4cD>n?E*UHt06nq{`zBN7icQE5O<>ci9 zhwBUP&QWoPmGrs69#vJr$izf?^E-V-SrNMA-a5mIIB3Lom!NEcmAPP^e}TMy!*!dQ zxnI@0&Xby1|s(1(uVL}t17*mT&a7^miLMftY3Wtk?|ptyU(Fno7d@}g@Mg%NF|k~9cjKQPRsrAAnsQEzuVT@ zy3bU^1YV`eP4Dm8XD~HDS7z5UgC90HIc4zg)TQr5!eT11|Oj?2awc zTpXL3YqH#Nh#1fVQ)|1hwR|2{DyO9rLKfT?YhKbP3?JDWlu;rU+IZX|uq!bG*DGd- zh>*Nv)-;tHZl1XP*z<2q%&RqS^jXcbMLR;R9ApGsPz##rhIQS&2DI~&#+e+Tc<-U( z`Bh{;fE0b>7ay0cLB9vs@|RUz@SJf{D6orb5f@il5F@D}L~zNlWK21h6RQMc>=Ci| zMwmnQ+h9wBuqz6n7*aQF{P&#kdr*NAXG2Nk0UKOpf`j&pfFdcj8_G}oMVXlq?|;Wv zm%p+Hy4M2RTAMNAmCxyRzbOyCN%dlRW-1B|CW^NEe1FswQwdF(EZx)2DSmYW5(6`T zpn3oOr-A-Y_V!dh?%ECx06+)<0Ps)Y`Jaxx|EIk3zY(|8b9JOBr2dZD2rWKA=LsDP zMV53n9jTERg$}JK?4*}wrwQ2Sl8Q{E6;(${S{;cQT9yG&$%wy$RTf)|F)|_#NzXb+ zvUQnh6OVbT+^4;-;N8sTX0y}bnVjY)?qsJar;@G-c>fMm-c_j6)Alu;b^?6ddKGx= z{jDuW`SD9J_8O5r#$>g43)h%kwW zKvdY-sn0524YrH@myAlXv$CRK!+!5uH-qGjBL>dmZWH_OJw&S`6)buP4v360$1s;h z?1PZAC9hO&YJZ2uvC)3AET}b8qdA=&&pwk<3?5fTVg9+0my7-nFJ-5WST5Cq+}<(M zi9wx&Iuum|Wu!70jFo8$Zm&}gokWaOcQalzot$jN1w!>!GxU)3F=qDQ0_B!`nRHgmHNnS=sd zc81ya%%=kalzIHrOu&|W5ebv}3(wkfwa3sFQNmR9$aG_F=B+?Ay$3s*fL%2oKTXGJm} z!i(U-R}QZ=L_RqTTdZzw7C+%{H|mATW4J+0ZYyW z<(5Rz@#VySja&MDZ?p{Fe8GSHVt_d=G&&nr+i=yDvbbCAO2N?2F*96p;cSr5CZ2j^G)4NTE6QZ0Fz*1faYLJu;Tv-f)3JVMQ*(Xa;a zzk5S3`av%G(rezBMG756%ViKQn*j|cvgQ^WEO~l*`t#?N?O2rZa_a7<;lMZfa?{QF zU%b`r{7S7QBzfhHj$S4%QOkAxqz0QnD%L&9ua`O0)~`B+vLW8nlh3B>vG&{K>FsW7 z^2VN{R2lf^L*;CJ`Z_z94vGocRq%kWK0h=jAwo$Z)w)IshMD4el*LExu*n582IqXk z`&kAC<--Y*V(wewuo=1CZm6~Av0S(L}yK$yp zN9gCQ-7%S$$tqV+obEP_+~=b0u|{Sls{d%$$nG7+i>^0Y+Dmy?c2s9pNx2|AHxRkE zCv2|rb*czS5Iyo>j6=7XmsnPaxBvOd2iGQHhqvTZ^u;t41-13o#W2n-V(0wV@L~My z{0=7<#Q^Bo)AKt$dHa3qp)p|9ho0zcb*RAB=&Iw%$KK*4I3aTU`Z9cKORnaXytOn7 z4eaK@?mFfv{8Cm51wbTfB`T`+(p)u(tBZS|d%LmiG=@!vj!Y|i22ai7`K38iMNRJx zr7q{+OyW4+KdZXjG6LvaXXPbss&rYE4M}F&Zzg3eKz3#h&^qF_A|F>}t?((gyLB>H zb0j1*=xYSTN3@n4QkLCNK+AB9bYXxjDgIYdH|#vw)oj^#N_{lkTDtS722BA8tloI| zo_`IZUwij}O6zzLQQ)A1ELRzu^_T6>1A`9EXJz|N=}QXesaOpo)Hu8v#;g(6Nq5xm zvS#Z26VA7EN!DtoB6(eERxJ!Z|lN??8mifE($vJi8CGohMD;g_@%XGwJlF z?TMe2F!^YJuO|MEA!6yDi4t($tO9$o9v=UT#2K&R%g#0f`XVvR@IV~p>>oprSELVS ze-GS%RFYHz+8Z|WM7Tjn7+uPut5Iz2%--i6#m*|uli3B_Uv0|tKJ6_?V59~vhq&={ z7Xk31wMVp-7r*Q(6IxI-va(P_X@tBB?!f`&u1)&-Em(8&Bx-#u4j!bOr>C0O-|sdt zU>#GU zJnKZ+*(A%@9p?6C>l5;?HCj8TqzA9qQs2o`$8xTRCvSz?(UtwYu!GLuc38PP~TY^8<^xMY>sX^JPOr0|$*uW9F99g}?ycy^jG&aYm=oLHhkPg~G7!(oG2 zptPo8^VL!`A1B<<3382N8iDzUF>Ah4up^oaY@I8jQT3R@ZJ>Qxg;bD5rkhhkvPo+E ziLf(G;Q6fH`};c9DfgE6EexG(uj5aQbGrTM^o2ov=k%-Nn4_P`zx=<-L-8caMC0;r z4mR7XJq27&y>osEa2cXZ9+cbr@UZL%N+eRufA34RK(mCBpit1tu)&N_odk$r7y#eS z#VO5Ex^Yn|cLiFs(uj$Jk7CBVhcf!x?=?~GW8MrKudve!M==YVG2rF)v@EReh{2Bm zPFSGRsbMzV$h~`$MA{`%qiE#$4}Ov;bjU{Yx)C&DH3DSRYG#aPK*5)w_%c<)UdN&X%oAotYn?wxA{33{lNXk zF;p-H5Ry%W{A13%(LY@Bbi9bQbe73467en@J#Jl!@Lsuc;mw+L$DiA!qLHh%Ub${% ztDmvM>!`9HSC~~wvOLi3?mBPVJnIM`8lcOvA27ZWYiMYn_nD3wOjHUmF_RT!95p#B zCbB%deN>y8sTu`G_|dl+q?h?JuoEA`HoxE+{=CpDkyM=Kr+4@;WSX(J3-e7&OHt#i z)kp~uO_P?1^XpXHyn9g|Kwn;B%Kovvk&jqr@Y}eODi3@XCryvkZ`htcKPP-w!2D!} zO0wf(LN7=|n+%2LXm3;_b);lm!2~fNVJ=w}2c9`=uNxbn(G1~vD0PI7-~_SF z(cSh(G6dE1jB44WrlX)%+}!>n?P$A4UC@-&_r6BlfAf8kui;y{jj+x!470y)ETP^)%pH zl;6tcK8+hj(N!q*o70liy_+10t1$AYX__CN)R3*Jqqew|z$GkU1EUz3#{Hs1M}Hh3 zAK~$Ay=<$bwQ6eJ7oZ_JEL^$&2m(#nf6^|NpW{_+>F8vG0MkN&^B0Bdz5TUku3KuN z>z)OD>}p0v;IEI^J=5AYD?FWV`$|bFMQzSdwQuz5S+E3Et6I1}2ek%uow8=3ty6e- z)B^!L_taIoecJf5eTS`Aw|xG-Bl=n-sa4*s5Kwrpd_X%@jC- zHxuN=eMkTDa*N#&jO5u_kxT!e|6R`0@BB+z30?AGvUIPMb#lo;_AV!ePZ{$;YKQ~h zRastjdKj(rhzbqe1(_S2 zKUEeXtr{#&J(hQdNq%)5&q1Yz=?&v=5nXqfmX@dbf*LYD$9I3zU2u5z z{lKcXj)|`4A?u31V+7MppOb_fr8}5@gBp^Bb{{bu2iPDX+|R@n{a8f0an-l!CFf9> zqTVmxX2OWy2uDsBe!Yf<(9w){hns=#!SX4wjJL6J$a-LgN7~GP0n?KzY z&-{h;FulO7SZ7ZH2Z~wODkA%wUU0BgdUb5oVz_pL6hUpA(8fst)b!|q)AnDgu`XEU z#Tu#x^CNy`&9tKd7$qDJl5(Ec1rlxs$lE};CwLlo;W@?1N_SAy;CKg9IR>l+s676d z$x%n!eiKw0K!GIO;|`mNgwF_BA}=5q17{&@kRx|22-@B21dN~{gwMjuXSbhhM1m?i z2Db#c3}~R?j4 zYy7Gyxu_A!SYQw7lx>YI=%GHU1Dn|>*EOJWPMj6}l@k2ZDth1!;tD``mEdpCmngA+ zlOzR10TUOybW83V$epMg(1lZF?)P|;%A|_BT_-S?jY<{&Xw%Wms`Q-SO%089NC@(H z-af(K2d67GYiJX_5_+$18AaAXbnZ0(v8%*WBqynNGzUR%{UWpp@RgSTyrj0#Gam1( z*Jo^Z$`5tG&H~|`H1X#)@PZk)_cQ9n<>9>Ay_^9lO@}ML@=n_sa`?jgb1XT6{#z$- z_HGDR$I1B&k2F5aVaAok8=HNi-6Gg^2~)f@xGGX`2U9X6oNPc>TI=D(-`;odIF!M8 z^#!%Vb*D1jDVitbfjO;Z_R4`dy}RS^&!DwY;TLOAHuvHdr+w++b+s->J?;NN2Cr|& zmLro|zC*0Zr~VXc3V(Gzz0QSpZ<<&eoxsMX#om#zse#JHk`0^n1sxsw+}GB2oKcw6 zNkm=Y-CnnXdWOCCKjLbta4}}d?sUdco1g0NHt=;qa{~=?HYWt^$emN@4ngKLlY)4V zwWSpmf)(cuB60d^uh+N1+#G_O)RH)1y6+`P-2hvDz0wX&ui_pBM=KzZ9a*UHbEVk! zn&_XDqZs*@hmQuf$}?Jyozu+&WDwJ74YuS046E=wXQj)AmHt*3l||*eQ(J!j30(F? z)9JsL7@y@aWH2{k>4`f!rT!7US{D>(p9XdoE>vvSatEUZPvu*znJ(VTp&%7*(p9QQ zdGxHv8K}G=8M*yKDpHA;^M(F@g0ZLSCS3~{000#d0D%8&Q~qaf@;|pQ#{XQl{|koA zU|IizVGrJZqIKrhNj8`;C+8$baR8YL(gdI;=BLX4L1EPmJ*@gKaOj`oqO;0Z+@)iZv)gAV&+og3|-1}-@eVfxC5LTK$bE< zBFB0d2zm{l!muoyXN!-f8SwD&qvKPJFy>;;*F2EMCxN)WY3^_=5}hh_@pL7kI(VDVTjEOU7szl|@bO;Klj zgX4xViWpD3-(vCiZqfBgXAMC(mpdR8gnQ^nVV@Nxla4W8H_pPB6%OwQ-|w!n9*rdMra&2Ly8b_^j`EYz{iY^avCFYQF2L^ zh|JwZq}~@zCUcng!-F2Da#u(Uhm`SbnKc0KgJLa1v>UP=op0kOpMW*K_QZ9fm^|8`Ke!ej}qmdGZW0NlZuFu{T3D zV~4-{At8=Io6*+%nQ#=LkR3}GcNjore?tsL0r1WAY~swauEFEYjh1bfAdRGe>pOTy z+RX;lYULHxxXX+dC^3qqMM1IAklqhrx17X0Y7D$Y>KUjo7}#t0kYqKHpd1e0qHrAs zf)a|S35yuksSu#?QPQhnX+E5_nyV7`_cZwe`h8l+TnI1}Gy^;||MfViF~!MQ-^$Kk zfNF^ly*I~Q1rUk)?=Zl^HXzd!fPn+uu;HTq%u)T=jm&#fgC z=!3lSFIdT!-!df-o}Hllf{v9G+1ECCI(pMMy-zx)yGJg?FN4FKDL#zVQ_Kh8&!3;y zEVB7(j@S`i<;EcG1qbzU@`CdxoYuF`6E=H;J^&33s1BKIW&1hfI-`5GQ^-gNJC?ev)bO!a6~x*B$v28a)Ec4 z*bV8rry8S?3ePIi)DnnlBi2C*pp7_c$Q2WhvZBXv^$>yNzxV;rJZMzU>otFm8R4CGFXbzrDm0E*=WX2la?sns76k1 zCoMZsiPThSQSB{nXMn)Uy4CfA#@%ozS2lLrreeMF3g(p6a*sSri!f%Bo{^F=SFZCx zPn4RdX;kVMoHT9HbCp(Yx|s*7>O4-eRg-d)I{GYe&^20@RjSoyRbs|nYOQpgYQUZm z3sp(Kl z4wCWIMwY9jVkwI$ZO5faheo0Yy+lkYjt`V(P)a?H3scir%m-rl_Eu=4Hs_ozY9q!^ zMYA?&#(0xg3E9G%9+rPkBn_n^Wk;CnRU?urbR%7ja1))gvNTv1M^{9v)&ggTF=S6B z(>eObdkGL+J&8y_jx9>H^OX3@7Ng0ipOPG_LOt4By8W z&pt}3Vvc{#{Ufw+t^Qg=_1X*DZwHLy6g1jHLUl5D^~ZPk2~SIi5uze3nxTQriX?b? zl=Fag)S)fYWYR|uIwEX*1-1FIuBdMxQ6W<> zuy|7TDD?0s^ao{difD$xLh}kkv?NQqT4GaQ)AWkl{h!j3YfK#ENx`BWqtXWvvJwWm zl>2=_ic$}|8pycBq5etW-!14g8(1!i|e)9$Zb3l>QM( z2gg9eM(Ij7et;Nu#E=>jhUpNvgQFU%jm|y|KoMd=#SAt)MjUTXOC!n3)DX9wELR8h z?ifvq{5CyDLPK2F_jNN%wh`TAEbDIf|2!1$i_6dd7McCQh1a|PoNVYLng2bUUb5Tu z=VZIq4_n-Ox{4zyUV15dGV>t%ONiPnsSaVyG*wyPVm4ISSZbSQBUQD0%e0q5`zE+> zChj??ms&1!f{T^WeNCt>>;>NYJH0r}s+8+zcD*RXR!X1AV<4;B0r_1yrIHN!*wCC5 zj6MgkSqCDLV3TZ&42dU!-Jf^>n2(P=Y zoLrM)J40|Ivz>dUu!VqB^EdFq)b8X)qx&vNL?tA`BhKAhd#CU2L&Vj=coc;2o`c=E z6GD_kLpY>17@#nA5>f;*xHVXaA`L+nsq+i5I2J~$JaGQrWQ@kbqj>z>P>Bb-q{r37q6E)q!lZvQdfb`5HL6keU?nA{8 z(VskOzf2Trt&QIFY1e{00b6=bIWi+9Drs~ljKZ_aXlhZ6{bj4-pA_y6afQebA zNB9rqcI0D{57F?; z9~TM-J>o^St(LJRzf-??yrJ#yH#?Sd!gsnN+?ViG<3EdC*RW-xf1;e{KViWcIxOMA zl2ktNI`E}`xQe^z4}Z$CDYs(4w(;cjo)em0mJ7-x3Ken%yZoz!+k7{F{w6CB4>P50 zD&6qyJ{_SfS|9$-HuGaaF>)2}yTl0Nmf*;<7vz5?=fPb&`V*lz@!}DB70QKRNRmLX zUs2KsE!R5}wTs5wlK0TkZ|ivnw37jG^l?Hy{bH<1y3{(Q3S`ge3)Sapv?t2LPd8*w%G_F{d&PHsV+peq zSXv}ORw<#6T_{4Ey>WEY!nSKL$2GMH{x47=19zL@i2L7xWX}uJMAYLHu%e;7-2rW( zYbN@5HuzYL0dnauVTMpM2$G#Eyv(x9-wHcZh`={5n?WXI7=Fds*Ygo0_%rW;Ci51P zlVB%xKhAeG{s2r^l?Hw=qtxgKohr_~6cH!3f-dGZ&P0sS><*3)m!JTZr6dShuX}e9 z_0Q+s=_XxpeiZ5*lbY566FC(L^Z%L+uKmW z?ihcXCEU}A;9^4pSb`-a-HBsE{=L}7HJ`iv?X~u`_C2LR-QQn#J$2pw%rjs`)$9&G zf?t@QzdJfMz_PG-P1xJ@#-X_j=|4;X{|Yy)rhpdi68@I7ACD6h_KqWi_bxfk>t;SY zk?UrPY`HCo_}PmrIm*L%DFaNTS7;z7%tvhW9LC4zb3q?=3pr-(%M$mFn1A!ZSGSu} zs8J(?dbs}al@!VWcR?;=SHzjqa+|3W@#wyR@Mf`Zy0 zoA8iwjSnD@il@#<2oRu<;A5jGzf45}0t?=U58LCfgZ2@DLPT3}^aGE*NUYI zyoLS4dgK`zI$=soq5n+!AUQ;OuA#8Y{=P%fA0(Q}aum5hBkm9WyZ4R|gir8l);Jg? z_{R6ATvi7cDA3@ykEXOx^z6U}U!z{txPxB#wA0w(-QI;<(cPw~)8$DYHgzeNn)hcF zJs~UO+?977s*2HvgD>^8CO^B!MRv;wGq~nz(GUCgMW}uTIVcMwgmh44@Y?O0Q$)C3 z0uC{Kd~s~7{$fTARJB116CX?NC=v-vsj)Fvi`UoG`X$cOW`mKAu_Iu{YW4IwjtZox z63n@gH#cS`Xx0Y3Mn}CtMay=2g!V<`5)QQybPi4}ZRc9US`GEjclMK3PYnz5;<~T=+my(uc@ddAzWl5zaL3+<2u8^=DPFa)DBk7< zU!~!aaF_(rGP-g`Og0MPzwTaD(YHE*Euc~J4GykOr`6!+{t3XeJQJ_Sy?N~K^Mn;Uto1$ zpaU_G=Y$AjLO=mV!9f)MWCYe$DSiI+fu>Ecg^-T|Vb4`YmF%8;Z_gtgR~gTD zVUV&2%d9rCh-9qQ5G#%6v;Sr#OA5p%!F}UC>jKSzDJMF<@}N1H9Msu%_fK!Y)i;dR zvawemUFFZXsG2wXdz;CQj?W7wn4mir30L^_sUciC9c*GpY-{cOGJGo#_wqG_c++)c z3DW`BMv@gWN5}N1`RJiUQF56(~8S2hwO4=$9qpawyQVo zImdzZ?-CZ0Ebl--POV;){oeVMylg+lavg#4@iAg)xpBQqb8CrseV7emM~-2mH!iA4 zlAg^gD{7dF@^c(dS!ZT#bDC8bPmAqx-v>%F4L?=g@fM2eeR-!DPlwqLu~e`{1dx2=D0aSJIPgsLLQ#wPC7=+FH{8x zDdk_|4;`ztm#tg0HoL#48TSp>IG^clx7aU!HLrTxIhbAfFGhW{$f-IO@8nw6#7}z* z#1)ZB%$9Fers!OJ|GvkDYshDJ*Rr6pE=ohF-351-**%tTvMF7Gm5l*MqoA)4h5-fY2 z+onEynBz7?dr)EEEW4m1JhFZ)JubY5kVM>l$gU$$zd;G8!CRjO=J!tKD78le){0vI z%BrdJUjNq+mOQx(RHw7@5C(=X?C3`r^-^}(gA(TA$$dv#QJJ7}VM!L+O%F*=noF)<_4$wAmTw`0!y{n~i$h_>d=o@qU* zy%1XHKtxSr6rH>=pqP)AoP*Vo_sf^1K9j-XF>HGuFXRM~TVEZAXKT%D>zsCk8U%IBuNTooEu<`uXwOS!i`$6VEF6mkPylTJSH#_%cBg}ZtYX@N`%XS33 ze^OY;zN+I_z zL)J7-86J@Naw`WDDmgdN2U8NWI+{|~96-2+f(VR2eR;{1NS~8usd>|c%gDb(w9F~fwO!(TnT$_Z=#(Od= zj}!`#nmv+Y<-s)%Va)94{@QB^te@o1y<+UbcDtj+#2q?k)-^Laav1;e(|<1~r}(@{ zTN23_%zj*+$Dyua|DFP*dC8#<^=OI`rk{c!?>}f&^`!)TXMdHaE}F6CVoDqL(^MES zhIJqPzJ|j2WlK+UwRP1k7J@alt>Q6o)Z9q;@yJ-OeM5g$`!*IKYYqi#IYH5IZtbB? z95-J?Ni#<;r@wtrst&u|Krquiv(T~iw)s0Ve{eZXOnmwbe4W8BQm zD5RbjoSa-HsPG2U$5C&szj+;B(rqrG(+E_+36PZt?)5APHAIxm5*-GQsOw4^H_iqT zmT#L$SXQcD&srJ@pEn69DEpzI>LpCAmOUYo71n0Ba?dvH@3ZuVItyF@<+66ZkVsQlhy_PykcGXB2 zjx~PnM?fbRr)&5B&5c$xl|}1i6*Gos3*V6$lTlPc${{!q+d%9^6`3tVh}pFqF@Fxb zx{z5`-x|5w=6H4C#RPX?8l->F(%9=iI1S^0+RYr8RAP8rgw$XpBqRjMw_1jj8DEea zixC{~#|`76oxl5;kbvO(dg3Te7yM?wC ze79{#WN{LN)z?P$c2|o5z;JU%NSw|9buWbiU0BTHhjAKc>yl*Fuid_<_B7m-P=sO+J4`87QRe)Wp^x9nfE2cw1o zM;xs*g)g~BU#_iw=|y_Nd1czXE+fDlwdh!Yxc~YDU;~$2qnHPR2d0C-Gav&~o@rzL zHz`!th~-~pgWM|F1>*N}!>~(6`<%H+Y%;9VzBYvvyxC~TF7nGOroWl316L++-#eOB zsf??ibJ}@*2q;KNAe^c{0?xwQxe0Z0fLB^GuSsYMRG*mN+3G7&AGb~Y>NO>M<*W1T%L>IH1z$lb67(NH+}yML^DOLtHH|G7I{bF>(A&|0oh|^VcrseNTX(c-kX_S z)2Vc>n!_m1I%VNhb9?j)gWtc-=G^3QRJH#M(>4{rf$##NVPKJ9^76rSZI6$U& z4ZO6+IWAX4u*rm7d?dY|l`y4_Xkr*I55v-_Rvts%KnHk9Lre&K=Jd-7NYg4PF!&ST zq^MoVCyc8O)&&R*$ahxIWC+D1#SB&?$F^J@hh2NM(Vh8LNGMeVmkhYH`H@j7HRxpC zS|tn+QNhivBFl#cgQR33B(q>S(Y5iRO{BtmUDZu(G-|W7Y1r)iQ%$T#pM@y{qthH} z`nJD0*^lh&yVHIp{EiMz#!+VvdC?3H&Q1y7acLq=IA|yV@`c48Un&%)u2I({Rf1OV zpOcpa;qe^?l>8GF-qn}iBojjUw%?ic9*D$)^=35_Zcy`0t4%mO(N4u-7hTP(O%mz@ z)~C(OQ0ZV#$vX5OjLuLDCQOh5>f=xa?)CtYskrYp6Wpuj2Fo|k*kZ#Pum2PS;IOL? zikUI|=w3@Fh0XO@!jFuPC*Y0yTeECCh|(BHx4C#OYF<-|z0jvlCp@kXBwVcd{lTZM zooeZx^QQCJE%!lc^dAhn_p@{8 z-oF5hxH-ed23mADhfGkHh)%00KJ;suTwLq^NcR#FC@+K@w0R#REFZ9E;X0!a(Me%1 zdhW11W`8XnD{`Cp7Kv}U+_r>>Wa-G6<_s8X0btq>#7_?P^}QEli4#76PByDKG>1<} ziiME>%4B(GcBO*Icl?C`Dc~!ocE~YY(mB|`!;eJq5E@L^68%2vYnDm`)mfWLeS4Uu zyLuQlzCbpuMRN{XtZV7=E2U*@d&9ubZ-blHp8$_xbH0JFhNUU*41ik$Zwa|ouQ!13 zGiW>yYdB70`Ne9R*YyW1$re7v{Oci(>01>3IX!1N zvSntI@Yy_6uP`ctX@S9_T+doG zUl0O0IhSh`Ebai@F~DzoM*oOa{+O^NPRK|!Kn^1}}RKn*ak zYXhN~nCc+`!GmVH&2#|amU=iMjat5_{10%!V00jr28ds6%M!E1(bzSN=s7cjhd9_z zh2{@enu^VOKCpA!N<>07xW8h2d1Otx){HQZi0MwEuh(_p#=mxhDR> zA-fhsIRdIM>DybEJBbbkgwzX1CaAhdil_$$Hojg*M>wre$>%TDljZWxIMi-Ot3=il zhYY(jUSD4Y+`27ARs`FN74_WjY{E?m6Bs%vC0BCXn(#>tduy6>2X+H#Lz*-hfFr`$P#S4vb{fA z=tJ6cOAZL#>T@7O4b7pMT7Ae{le8Q>Ztmmr>!XHeyg5vNzq2q4Qy!wLrkNXF90t6r zJw^kMKI2iyAe1To9k*VcTcnTG2?U#OjF&u}tSpFd*-|l_t=Au~J;D8@vJ+BV{MFl? zzZ=~O!GC_amG%udZi$Hq0BpqlKzYoYqLbx60zd*Yx;&;9bhi)bBxL+Hk(@t9A;$mF z`;FfQGLz;7-A^nOw%(nQ=={M`C0gnO`M?>x3Sm=*oAux??o{a_OuHpPzQzRfSOi4| zWx_AX0dnssF`+S99~d356!S{7tRP48H`q({RaXolecTMt%)wG5(fn4v^uJU^PTT1! z_kI7fxM*jt;8o+k#7y_YWipvad;+S6Ov9P7s$3>AbOv5FFHn+MfS;9^c0UIW^IlF= zTYgGEAksQR~+< zE;EIW|{sL~z1o0*zWHQF?!FRhjXoK)iipsH)g?r*6FbBQY?^>h%GG z=#gYA&Y+^;RjnceA?rEur#I-X|kmVKj3O zE{@iKCv{IZ`j8%UGeiYN`h8Zem*p4_G6RrYFG)Wza;; z?&!c`U|=xmhR6^929Y&K-YB+7M<;i7k@u5w@K&C+d2>V-En&Z3gbidIZWHbws6gGD zN`;xy?@z|#xtQXnBd)68c;J?nQ*MP2;V057BFf3<^--CE^qg#wY1=_ zk!2UxI&Di!;l}I3XJ7HG0{qb=08$UTzO-WXJklw2OAtZ(b{Y3K2JhW`uN+NlzRyM?Euk zeIOZnf~+~sQOkJtrjYV;P!JN38q5^ozD~g3&Qq>t2c~?E1IK> zw)DJfi7_MZJ+IF@L8L|1n}(F^9(B^iqiget_C+SKYoc-4Fk27F697Tn(@N|M-NWEDaEr27WXvq#Q z=`48@i#<=&kN4(q+C#B}@ZogkfO%O=o${apiAl$o`GE{3i@C&4Rw!$&Z&0^|0V zzx9OfC-H|%T3bUj$4h=lraV*fU%jt z!lILLl129pmU^*GtL*N`qN7s*E$T4pj(&xM%lcfHH&Q)UYrsM)q$t=tdnAv`-JXY1 z;+8;CD&Szx&rWu%Fm(UupI-=mI9-2!%zAf>fciZdf!0@6Yf*2YwBdBRj_ zD;A(Cz7a^{m+U`3{}3TXB$+?LSgAUk_!;wt3up(QD)DoAIyw%Xeh82tEfo67*@8~p zAO#i=r~p)%Im4(m1Z3Jz{b`YaUxadb972ybN6?VSAueF%IU|3o&Dsfc3MQ=*o%(Y1 zgmAXT9(Vpy&a}UBMW3v^!ChDo`4%0`F3cPKtVkI#RwU8<2_t@g)@uj2^5^NMvllEG4Wq2&T)<@nUsPXZsUN$t%lav8S?1B?=kAAbMvFI}zg zjVdr#sWfpEV5a{6L@fIs{Z}n2EN2&u{;(7gce>4mH>2|F*n1P?uRh8z@V%Fo%vXvH zQDgeA04;C4SY@ccFn2O|+0cxN5{=i-lWOnHRH`|uObtRl9O{}F=UPp zn90|TA+P!QKTJyL{KjcHHl>$}k<>RhFJAC*IxNaK@7)UZC)cnE^Bz7a$`A1YNy>TW zl35{+l}?zrTLEBzaEiwU?rdA)HShhxeHL73Xu_AN?@jweU? zdcGVZcf4Km%;yTrj zrU(y3r565knHV$358$)9UHFvacm`4|>$_rXt1)Wudow^}X?QKv44mIZSGgaEd!J53 zn$KzG->cBU$VA@HL+w1A5E<(y*z7hd;~2Of6(c?#<#&lZUbe=pK90HeNu<*>rEQMO^ioTLLjk zoYvf-Y82XAtvuvBG{NTFWa?Q8Pl$5DQ6*|x*W2dS0-%m zlORJ)Fp!aKG5ZvVwAG?KwfXwGe0{tmZpwJP>5fqRf^Kk=8<6&anj>_jq*E~vNF0vW zwWP(KPZ24^vxfm!*KU|m%pZBq%R3&R-u-^IUK~)#`?8U~Uru+d3|qe7t&iD}vFq1b zxinN*sTv-cL-lI*6X_CNbQOyXPNdWFHH9Tr65GX1-r4;V<8e`HWgi73lbc3}xFH z?M%9rd>mpF5A2kmsci_U_h3t-_|A;!NF$PK(BL@U=))Sv;r9q7#k`U1ca_^{+}yX+ zUd8qc2EbVF0mrGDGYGI6+kF(4V7)*h?+j9o`~Lg`EPQK-FtPT=Q1+*GFU&_zdqd;c z@@u`5K7JIgKN)2PS&!JWfdDJu-dcaV;Z&v5c-0<6r|Op2X?44;E6T1}`E% zzxOD?OwcHci<5u(T3fX@r3P-y1W47@*9>>k>HcpofWyrt zhWEt^*ZPUfvv4S?+G;=VSjP7z8o%gS%GIcDK0qzSMy+zljII!nJ7#Lro^x@n1djQ5 z^F9-;CTnTEs`d8Tt1rWXqYE1}`aZQB#-K_SACZw;6tk_49CC!D{}A4%7#AOs?%yuR_llu>xf z=;yrq-cPJ0L+b5*2Zb`QClSkvhd!6Q?zygrA+l+1W&u&rhgWCsJvX3!K-6Kl7?-Db z9fMf`2`^`UdK~>V-%DfHt;8Y9Ns49Dz0dL%|4;9a2K$}KoA}h^%rT1nPMR}L?{giM zRz~#@RRpS751^m(uAZ(lW9e|+S&wqNKOo)Rk0fl#H34QBBx>-hGk3EN6gBJvxykfZbcv94>! zoN_I*Rvz(sX^mz~v<8>`{KKEwADS(A{RohjBLkK^k2L}LVSXKw)L<8@w-zptD4C_< z@EP;*c-eVtP`^2ug&~L@EX$Vw}Iftxaot;z(q*e}_Yucq0Ez!TmffriiVv zy}IptqktaTH8o(l?TLHdvgl>1gCqU1;C+>;p6R&qoYzu|z-2S`6$sgCW#&w?Yg_lk zyhc0AKk7zBWynTSTmN;*zK20>((K=XVoIT;d-IF!BIkfNpP!5gPB-4{U(}?JSbj?_ z4CpqM^sL1%YHCFHI#rU))$soI)gq*!-3*Xp)Fn}W+8ycjwIdBVH5FBO;3HDc=iDA4 zp)CGWRgVy_0-EO6)~;zw3-wvTupb}ZL(^g=I$RmbeEA7?xhFp2`r>5&sK;OD>kb_O z0f8-x2tWVR?(Xgyj&=014>ZkLiU;SXQ}?KoBulI(N^x*->=h>*MVrE9NHjEkz9nu3 zWUKldEC+L>ijTBd^j?c!-?-#xuH7rwkv3?d@9w>z${0^OiHiDw%u=LEB4qsL@oBQu z>`_Zg%QWQ=QA{jxX=6m1BH?0 zNABpDn3*_>(yi$la^TPNCHKi`Xd;`NUsn0>3#HCkRy@FbXqpZVg_euPo#Zq$R3Rtd ztyFk$aG_Re8glZv>*Hv@oir3VRYhdKtA`5!vGG~$?r-_7nIAk=1eCoDnF(bcN9MTC zIGcB-9^l}-EYR6a%gXgUA-9+jz6Zi=t&c7mz(Yon*6=j}p_a)DwpOgNY1DmI;G?Td zv!1swID%0reO4+{-HY`TVfPQon04*rbt8{MX9xuHR!xtv!F5NR{rzodq$n)}Ql+U! zI8%Fq3(gYM5zZ2f9~cxwtm1$XT4^T%pKaKZDmd-UkwgX1By+l`r0ukxX-1W|zN_0S zQ<}E@&)5p`hxc&0Zt6;S(FNAHr`>-1_8CpSYWZ>0GU)5#>^D`L%F?JRD_$iMN$VC@ zkVEIW^7nnU%hrpv%VW;BY1=j5GnYdv^CvE6s*kQ>SUyBreHg2%EEH*?c>6u6EP2{E zZmZ;1&g!(!6+6NLd7bnAy>O=7ch47x!)x4CDZfK;2)f}K|8%A4kvCTy8B*}XXv@ES z@>v>UcmGDuN^kowQpAZV>Z@J*AfA*ivZhf&U z{v@-Pc1^pvjqd8L&E83ClzU&h9ee6@;oBOUp^?rU<7i+Tst%{yHebFB6H|pqYggp` zzH_9ejGOJb@E!d$zg>E2I~2V=<#23T`V?L_Ch#^wBl=U>TzEmf%bfPrbmgv>?wS7S z8#2Wn^YajSo^rW6qW#!OKmVY$6e}9>TDrBtZLUBB9r7UeeB0}`%wDzTKY~p?W z?%Acu?_0W7o5#QQR6^EjAc;;Vp0udT7JRCoQ?dD`g@VO9Hcv}Of5ZG@7Nup`^^i@w z3KNkIc4DJh=NBYVFx8aW;N|5H(F%ylYsuIp%>Ezm8{-l`SZ~->@L>t<3f}!#q#dE`*_{@TpiPDtmN~^uO8n(5rwbH<{0Cd(J4BcCso;kOjn<@ZH17yyJi41 zBT=A;RhYQ6g{tp042I|y557Gfa?vW#L2nNwC8m0){byPJm^+p9kl|`oPyHqX27{HV zAiBH%*&i%Ym0PGwqw4F+fuMp>LDX8eaB!-y3(-j4_m_Y_q56Vg z26Ceqp(;SoU-4LK%X|Bh1nSB~5Al&mB=v-fr>8KrsQY}B4HLmXJI5~-N4k~rTG>4F zRdb7+7HT~4aUzDzXz_6jn3feZ51(%P4-Y$abp@4q-FRPYN@drA+kfj<|luAea*&f&rXtg8Ln3$|^Yz4L>7_q7xbWW5Io zs-ggJ@OXm_#IcFSS1>Y)c5GpHMj9a%m4q{K8k`C!5Q;UnhqS}s5P5(CA3fdfps@Q5 zYyC=6VmD_BCtQzV_~?Fpj;c*tp4GDHzG;tR%X9!_zy6>@fsP@2LLZADDz=+HI915$ z(Vssn^gJ<5v2AU1&v~7h;@Cuje(-pijO10R7pFH#nYDL7(b4|Ku`Lc<7B%WTjfygH z07U)rME5KFu_h%mJV-9YGzq4f))j~LC`4y7)d8WWr^?7sbXZe~*5o1}kPl>yS--i8bU53kg(ot6-|UXz4Wn+L zUh1@KZvLeFgyf`A@iN53n2>;23(eQJQRTa4r8NOeCPF$@R0mb{7qGSe!bH%W2Bryo zRHBxvm7`mgysk#Kustz_VgV5}Osl7{z}leKHRZr;tSe+>fftfdw~9OM`<%mE+`(fz_#HtB@g$a9q|@2mzHr6$2Bv zG8r0gTm?UWepu}-Qd05&KfJf1V{VRgYZOl!Rf2ZkXWpJXNmA@#fE@mBHz&JvwN7i8 z&g+~s^75*H``yQ-nw+%BjODRHM4(0k8{=qnC%U=hYY8H-0@Q?qeGX{5uG_W)aemHF z?RQu57K$wArD|z)GXzit)uQxId~5C4pT>%iNHZ!rdN+>lAsTr&xzpOI)Su7334#u^ zsKWPnF~9A^Q-UawF81KtODk5ibl081&$I`>ACVe!c^-SBD2dfrBk)JdI-jKeSz60S z0QqhVd8OMM`CT8SP3_PBAyP^jow1psg*ehr&?D!3L!~B4rR!I_*`P5GtVStYe``ym z%f~2;mzwb^#4@f&*>twiy#&C``QsQKYpLn+`V(Ttd3dD6?B@^vxKSk(hQa5M?ihW- z2KR%)v0=%jr8L9q^F90R@z?ctzOqUQ17wyJYlMnG)u{POr_3CWMs@puVbh>UA&5GF zh;0p6noZcK!VDx`<&Oum>eh!C-Z?+BbvxfD38T5AI$S-GHeG)AqKv1#z2<{j6kmhq z2&zR2z)@jTj|vIP*XOF#6I8!o%k-uvJQ8C1kqHU+wesIcIy2hFq!yyesn2-V{VZl` z$?+-AUydJt<>CrveA{0pPmCrhX}MUpC-YqRQW)#8L2zuWb7bdBnCT;JdSw3Fy+4MW z2+xyfgp@-l_$dQK6;#C&b>FBMhb!6W?eV3Zh$v?MAkiWYaB-ulN{4D+F=|vT6#(QH z4o?WQY4iWX82cw92uaKpv0GNiBC&y&4FNdRpH#7!F9O<0O3>+=BOJ58LGlPRwFXal z>nZ-H^76UsLu*adZjq01p^%SJuL*CKBE53-gyhr%lu>;Erd^gw$<+jR=dvuo1;4jN zemOrU7WIl-IGhOCe%CnSZvDgQshYfnOZ}wXjItb)~4mmvR3=S@LO6vrI$`kThVpM+&pnoNnBU6l8UGJUWaRdj; z!*VqO(~)v(PrBnd9*-8$e0|E6hw3R5bXHZKzLI^~y%G>8Oe{QX{{cja-PYy9{)jMvUU+WFbjTrKA7t@jP6 zKuY6XOcqHa(VC;a14B(C!%wyWrpZxzC9Yh96+po9hO%Y4rfvY_B~}B`E;cX`b|&&m zog0mOB{Xqn9rL-))=f9+8uOvNQDr^Wk!P5W&{|`2i2B!S&bWtCV25TT?D! z0pNsJXEd3{(i{A1zp^$sO=Rf4;^~G)P+1wD?FN@BrN3NFM~HfqI~`lTe`ApfJ&Z3ah#HX!-y^;#h=P z;UGmKlzu=;tqE;r>mNcOGN=^dz7+mlPDO=?ijaUQ!8$reAxrY&aIm(a-IN=3iMT%D z#HA3={srX7m)R;6((sk?UN6|nP;Amreo-7M;-LChd~f0w7Fvl>mL}N^37)OLc+wt< z-8}bRxS|e3^Jk*xe&=URRVLHb_~X?Mv8KPeoZeXfPFM@79Yj@xD{V|bK#v$0$f|Z? zkVhTqCF)3a60r7=!H<8%yw4vByC%c8#%P{%JF)`$1?l;vs`yhB`B@BP{LfuoC0#MH zp|cI~iyh(E2q_38FiIMzMw9$3=vVd@>dqGn?~+ERs_<(7wgk-H9usL)6Ki1C*5DOM zFSL?I3lf{*)+iUFcIgw(<9A_YAM8T$gM)}+jwmEnf2^|#dt}V9`L<|Qs>(LB*yD)f zU9IzzI99SR-WP{B;oVfbv&x?h?6hFYyo$i)`E4nKJx~4`HT$msbd|UMElBPKom-j( zDnKlCV4z|}jiatk$j%Lg?b^%6O(W;~CE?1uk{{LzXx7f$aL53Htm{=&LvRlrlcqkrS>lmDD3y=&B7=r@M(O{ z6Bq5~BSRIxG&OOAJniEUCXPQkK+cD9%(e~Z>Y|Dvy=f9pZmtA8jecNYvl|WPoCrFa zK15a088skhOa}GO`%@ciT#ILB>ek9`vVbq{h><2J$rlP$sb_|8{EfRQ6EA=?w z&-pc9g-&2`v5X4+0E6lvsv&*ZSLk_Ztll-#fFj1jKS0Ses?khmQHo4 zKc0}2Z%4T=D>=%SgEU{mo~e<`X$+&tuH^B#JUibi>O^%_oL{U-q%{?eQJ@+Ga4Dp8M1jzh^v<{(4{wkMoCr zIECM;g@MNJfdRwy6OKrUZiL1?5*93kOn5YPm_jODJS_BSU*upGn?UBpxdpPyPAZmN ze|*6P;4O+uYaxuGySE;25He&VQy~Do0?1clJ@KkHd4eMUZBqbHBh_pKCDY33Q(aWg zfT{#u>){GEvTV)xzuH!>D3q6+Z?$iVO;8eYmZL$B^EyAS_}mb;;7!0M3<@tnW{+q+ zLQMZSwtO9H;gKyo_dT)BGzyQqTaz%FriF_+nal@~)LDyt0&ic?nNkB@0SC*;I!MUO^!Gm(J$)aKa+GfH>{$S4?_89M}q9AIWco z(?&DMLy-U_Gz?%TO6QNvSB!0@TaFOof4AcPfogU5nPnzg6o~!3JQ~t9`J?&{b#4`51@y` zkW3LaBc3Z*Vvbfqgj2lrp8Xw{Vqn)??LbAzewJSpv9ylNH{X-S^f&1&Ts+;m5ATVu ztFESd77i^E^hgzzm%6*{As~%6J#Yt_6m(wa1`KawVLfQNNGn&;Vj%rmv8*6>Brjg3 zAjS+V0hHS4Oq25_U#2JSwR)AUHvDhB>yG&CNzsmZ3=dj@lK&q=6clDN(E7f+w-zKk zJI9I*@aA5_86UfTZOoQi!AKsL)tgv2g!b@vaq(AOp+On8LFFSxy}>yE(U zR3rcO`gqCHN?WRcnK}l9Y^3La#V`k*CIAUrV|ylR{g2RT=^Y~*eJI3fEOL=K2a{GV zn6h*n(MhKqiUm4ZQ36Ge2M3PX--Y2Q$P-6j``>^Lkh05 zKAihs0~IhAwIRJ$}?&B@tr6P%((nF#(T;^y z_>RumaBkBR5*K_tia3x*AJku3IuJ9*UaXh?{7C_@=2!id3Y)3X!j%;$n=<^%7p=&d z*~P9%NYvqSuD|yMIbb~_&v>M7WE=4KwQ7KBL#3TMhjel>8g zh6e_|fIwR4&9tri3$%xBS2f=%${)y{Y?1(m%2qe_IzJSIQCAg#26_etT6XsST<+!P zAOr%RG5hOY2o?6dcIUMk?KPQl3iLWlmCXDY-u$xCz*NAn84dZOI-D|6(~Arjx;;)1 zV9?M=LKQN_rc>UPwW6(rc=hTP`^-05Ny&$=3f|DFQeV~CW<6<2HWiZ{j_IrEOXSnk z>uc9#5(@V0ahS}1i}hcx>4Ixv-Y4^@?Pdtt{*mS_DKiOR35*(aG>2>dXoZO(gv}I$ zIU;hdh6EmQ0;1^QL0uyWum@;QD3aQuYG5!|V?uhg`i8)uE`pXT*lXsIN0IbpCt^-L z=rcd2%H}6v+>b2c9Iq^?b*|RGyPjK} z)4MgjQ5~Uv+tyUa27M(ZbS-8Q02b+liK}?d@+Xl?EkBl!I;^Yxq)sKP({U9?y>agD z5!I1pohdb|23DO4w!Lg?>t}Wwg5^(>*g8FJr(*w>Y(}r@DJs9#ZhFVcXYym}Q)PYp z6#wsbhLOn-Il!239x|urTsb=3>hu=`_YO+afB3OF+IL&U)|n|(!*`Y_^0mOGC+=3? zs^^H(Aq=dZ5xvsSP<*`a!EnppyDral> zafwQ0O=(9J$vrxXiK}sEbRQ}|^whLDwYlhdOl#}Rjm*WDt^ClHxQY~g8zKE|66}`F za;u2pgM8LyA@A%yrMla-ffro`5xUVDg6^w89y-;%E#ZW z%+PM`#_)Q@%WEg!s5Go3s0~(3)5~kMk?yf!Coy#0P^%-G25mkv_Z39WrMMR| zMt1ED&;HWZy%b#OrR}Ska6@F?q(?YcYwkuzYXJPrelexHP33L4@$PS91Wy5UVyuE* ze%1B5wpOuC$6Hi(x^rTwKkmed{e#`-Qr_|I!K>3SlHx$I&RWWd*YS9)rK1kETcr_= z@keMCl@Y^DPgIExaCl|kT~Y4{om%U6%)00kL>6pK)auLrEu&W{?fIcj_VxoIghG2;uF|zZR$yO^0XtM?mewg4^)cHMFx}rYi%&sa`U$Xx zgl}y&GVW9kQXnSY&{6rbhlzETP>}$ zb%b>269R%4rc;%FyVP38#u$Zh3FYuRnI?9ZyJIXS%X54FdNBpB_9c;i`t*r?%71#L zJ4UwTik6@M9*FPs3dG0fm8~r;qK(R4^w8Dz3M*-~l0}pIm|4PF9VsH1YCq-3udkii zBUE%+T3Xa9t+kOx)yb3*nx(2B%prek^TdD8=60wrAJeIImT0`%r9)(9hvG|X9DC9} z<(LhX4n0MvrWyAB7} zL#yjkT}t!*ZPbSqQFMha3`oLEydf|kq!grFf~8Komq^4#vD4apKqNE(tDKr5#NjUG{v!P>Pz~GDO){XR#w?K0m zTwD(rHGgpqTkd(d^CZ~?ca5M1bEnNNQU!#Jdn>|rTM~2PL&B9|-vhvabrZEU$zxVC3h2;9m_m=ObCLLUxJJ*dxG*o9E_8r9)SV zs6rHr!AW37%EOP$@R&7nm;E9c!FJ{7pz0jNM44e;unDkP#QzzFP$IiHg_nX6KR@%K zUWoArEG!7W^#$tSOh$w!+`=jM037W(++agJ$~AH-j1LAp39$5$o&P;DRvzx@+7Uwh zH^c-C0kXou=?eXfc_R&vW~T0RBr*f_CGw8Ut~4Qvq?w zjfx=_q061#3q|)XAI^=#}z^YSD>T`MDq(9kr|Lp9$M&Nh8tzo#iZjY|Dt(ype{4 zj~Z~Zo!O3)t;fYit@0=qynQu0>OEEGh5;s3MvL={&(nIDDMJFRi}-V<6UpYt+n!fh z8V$#_Dj#4nGUn(b7Q+@Jd3jO~h7CE5dlT%6y)RyDk2@>`p4Gb?+eA{Iq$BI=|CMRx z4zG_DmB1koh?@!F>l}ao`Wo@wUNC0xXFvY;Cgb)O*SB7jX#bUew??JVe)LuOT-}oX z-=dyr_w%BSJ63=ibSgYC$-`HM6td83T?@AUsV$o||+1tfw*!68>yyocb|H|*V<26p75mypy8&g#;Sn+rUEVL}f z3WXn%MBkdM2X*l)As)UdGVpk}nKrZ)o*;<4)yVpM6*lkSYD=!I&~(BKI>=g>cAhB%T!)iLwcGl{)@-Zv(Q=saow4B{#4 z_)R^T0K<2M!0s3UR8_|{zJLx`lvI)5f$Y~e`5gc)pKQ`RgDJGp>84@Z(2eS;;qFzI{vVir;I`B{}gVx;%dHl$d~^ z=21*e3!kmtLEtaxhS?H=8pZhC&Xpd&SJ_@Q9)cp7$RMk+-KDv^S=%%I*p^P&0AQ$1 z#dAk%{{r}J@*aeR1WkXE*IL*dyQ_OYjMQ1rQgkb^U!Z;#zDkrMllc|=1=MM#){M(W z#|@Wec64IEtUxvG^50c>g$|yi6vaDAdl>Anoh+2N(D&x>-xViSZs6vLOc>SGj$+Z( zxrHI;vy3SV=}(g?>hbj{n?Xt4(^}w@s1J3&G*^C8B+xQ9hfO6iDpO@!gz)j&qYk$UmdTWv zYs4$D93dcPOQcaw9G4(W4Eh-;$rH3WC^t)CKi;2w*Yi_5l$SEnLQWC5mofzWN8 zxuMt8c9w4NSz7eP_|~p@*54MI*XX+x9Z=Cy{uX1QYb$YUrqNW7r9lT%jCPjV-}n_P zF!7H8^n90)rVy>GpZ{;#Kke^-%ju@!Z97YIH7`f`+&gmT-^SGX+0n;iW==b`F+INe z@pmT`)jj?pNtE&vLk=mCpeb4r{ zba`UArqgTATJd9drWHS9dVN+r-Ftp4*YC@-_lqm7Oz;g!D&i}8*m}u!jcI@JeBp^} zXSk@In5Sl2G-v1EQ~z9*HnGnxR&5h6{J#0y;Ujmq?-rQ2X@i=U;ZD=%v!r<*>+l6^ z?A`kJZP)ulx604IZ}pf3)_zcDo6hWF$>{r=pXOU`DixS!`}_8->T_@M)2}NleNQUZ z!#GSs4cCD;(6d$4qYF0w_)#HaR})bp(RKWUui-7OQJ-;+0SG)@{an^LB{Ts5P)h>@6aWAK z2ms3>VpBPkvJ&1C005$D000&M003WeWM6Y|X}xd$b_1_7D)HZZf&JxOAekfHe;JSX6t_UJ(6rNPbDFprnaW5 zyTP(_o~wc1ysRjaiJZS?Ee;Nl!Q)5BWr;o+hBU{vGet~Th^9vLx>wa&jDWTmE6k`d+P!x88B zI0~cmnA4djqcs{0(VEw#n83$~W*D)$2lUTLaDS|{;wYn0b})DvQw4eA>R8F>V2y2Cnl@_`;SoJn?r204oW)70Vmp3( zf^slZqpB}9xDV*VI8L%s{fB^L!(&441CJi?iwX)NFc1z8QV)mpSg_54ETkuWa*DG< z)J(`Eh+=+K3j;U7NkG$@xK0zV)*lD$B)F#uluf@^hv+m2De6(5CN%QsQB6?&a1;j7 zA843RA1sF5wCbg)f)W}YD{1x=(sW2E2%Uj#bCa?POsv#Pf^k;9^Er9{)HvKqN*{oB^>>d{0p}3{nJ@09_e^uU;6ZlpyyB z<*fgK4i3t67&34|G3#`I3BZj)23MZSCD^SSu5H^1L=zjrBEEHdWpnD%b zRl#oMh5=X91z5c7M<(;2%kw{X(Di=sh#4 zGVQ=Z`@l~i4$NsUh(O>=Ct;SNy;7*7K8CXWl@{rV`ngHqenFZKVpA9%-p2viQ}-3b zZ@Y0qn7tq#3Z>wW80_cCDl1rVT?ChsR)tvL=mUV~5CUz8)07wRYaZk#As;|W_rOpi zKn5;~Xs8r}OOV{U#BeROj!m=fIt?FV$E@2}$G+-Wo{9CUm|&G>7DqJ7?aVObpdGsj3-N({$VPRa3V;;!xAqR981t zH)ryCEqot0+&b3mhJ`KN)7^$?H$2y=I|ep^dCmZ!@hbAF>JpoJng-FSZZvFcXr4+v z*P^~=`JPkAU(DR5OxWngJ)ie~{=xeJjQcZG=S;=OCh$@!PA8)gPM#S0a4ysj5lvyR zJK!}a0J9~&FvjS|A2i+kRH_W!D2V96h>l#EK;;YUCGncNER;k2S>=H!SW}$^%URvi zJan$941?gT?iYX)8{kFV(sW?SAbe^A&MDo4O~=74 z7NO>raLddj~Y)F{x>$JwnujgzxEizXZm8So*M@d8{n= zph87hN`ocA{tdHYRSeCnm=0gzEz?@pDW*(Bj}R=D8CaEuRng2wMbou49CAWvsjcQX zthH`v8(KfBf2_3#hi~3*fN!yhfk54ij#lWSTU;hn-6Yd`jX)dItkkuN?!36M0Y0FD2BR@}3*svh9q0)aD~DCSb9AnZQEyC@sX-rKoEp3=G7i`# zfry1{LY<bpEph^{cL|=H&zr_i zMsdp!YC#0mbxR&W1#1r^Uye&`0Byk?!G=erFFNYCYyI|F3$ZpUIBPl&j~bxaSdZp> zA4)(+%=`%TLcWm7lJYDMx)p#b10iCzX9X)v9j=FZQRgm+C*uP5FiYVJuK77|?(xN$ zF`J5fm`;y}`U&4}61z<$AwaqS!tP-%#k8;sh3C}Im<576w(@1$V+y*@FZuqRupG>H zZS|8NzeJ-q-^`7(EMBwX;005k@pxIDYPEQYm~*btgwWJm(1aCnJxc!$etnK`h@V{KjBgSVQGtTU=Rj zuocTIDb}!KsSU@e!#dl8b+Aqvw(EGNg^6RUhUu!W0%N}1dn+_9#Vz6JXUN`f-}YO- z+@Adxv&!BGKlaCzl6@gq`TyBH8AzVN^_3`E;T^w0RAM-eZtK2Jb=Nl?QnyvpsIz?l zPupeh$YsyHb1`$z#qh6H&e2r<=jQyUqLSQAa`tcMCY=~w!*eVb+b+e1?|N=s_jIDd zH(hhxU3QaPc8JBd?d})jwtwB}wE4Pv$we>WDEG_)Ff?24Zn+w7=WfsSu<3XzHVjHV z!_w4-N3r7=u4`MA?sUwQ%bvU2{%-EB%e^hv;_bX`*0s9tHgwY`js^7rTpqEAW@49k zhGXrrx8<@kZ+E&spAF8wo4+-=zvX(ooxh#Bg?-{{4UMXG)o&P%YG9&b+pqfuF?Kqb z%VlT&KD{|V|8Cy4RJpt5YP_AheaCE_Q;;UnvPRpsrfu7pwvB1qwr$(Cd)l^b+cy8U z`_6efaU;${y=LsFsE4dCbFXEM*<+zVV3m6k2otO7X22TI59VCdd1c#vHMMOv{jhj@ zVykpx(~eh$(b|uw!BOuk_CMY?i6r+_}#`T9RYf zB)SK8*d`La_H2!j)CHq5>r{sgOUfFF#)Tz!cVOb=4DQbD_wO@j`dwR~GzRNi4rR+;M}&douNC@KScK{t_X+c?#6F|-*@4w0!ikGktVxQL522Zplpgmy zb-fuX8abQf#VPkZ{HPMF3A~5u z1d`SKZ3{Q8X+g-+#8n-HOrv7S0^+g{slQcsAS#y~c2;%N09;`gUN~5#$vb$+Z6MX~@=4!`#d{*~j!Q8wO&X_`NQ8_LDH!o~-9 zwl=y)m^rj&T!aZy&@Y;R*N9H!YmW~JHMVO3H5YgvgaM?l>^c2l5?0E4^);#tCT=v8 z51#65Gt^l}C-oYAoB&C~HWUqbC9x~k{&tDeyi}b&wQ<^b( zN|Wd{qGoPQL5*np$KVkpr+mSyKr-S~YA|G&3X- z)#S0=bt5Utuda}W*$kveVKfn;{=hZic=$tT?%&C#l6|L5DLk`b;|f~{pl4cvpjI<< zS50vFOqmg`22_!%V1l&pK?Pg_e*{^P_qF{c z2hhI(IfgLEi-l-+mm_oX69}l;D4_{Tm#PbV3^xW1z7Xo{K-VX4jx7+| zoauk31yS3FFfYA<{DKl%dE+u$?gBpd((YMVezN0z#stmL$!X zaM`)iRaWTqnEz}a)Y1V?!LLn~etD`IjPln*{ceHSu9PknyS#9m3z~#6U&oQj^1XiM zMqj#e`IsUs>!u-`or0#T;Y2ofTSrz-FQ3mA&xh&kId?N{XyTrB%3n5%nM{d_Cr!*; z5#i5$0xqbPFc-OY%$qsPPj4LK@QA!(vk+zKr5XnVt{F=+oA04C^&h?ZBqkUf>U+wb zE+z0YUyFS|A03k&%^TVQCehjnHjJDWef5S@lf#f6mCPQVko3JVwJ@YafRd9x#;tdN zE?6hisK~MdFHB^`(lB>!Xf3q2#K6QAw{A7HmDo~HyQ8~Ti5wps|E3<9#0h|npl4CB zV$q2^ndPNVM}mM69r~5d_GpnRh=#`Hr4PhT{l&EpeUH>N^F86fotMl3Uf}H14ph)| z;7XXBl;(eD*s9Yq9T&-~W>-qPX`*(}A03V!U?vP^e~xUf)r! z_!?h!jQb*Uso>gQlm&rYeOQ4Vc*z=qEVlkR*j6N&^-qaF^1sUAiAiaM6Fa;j>$~88 zp6r1Bp|$~}vcXh$q}6SBxkpDF`xbor=Hf^y7#BHAB|e}s7D_T~y^rjOUJK4y=b8el z4%`ak<8~k_T$L8$glwqiIlwBU8r{%^Kr)Pyhkc1MrzR0Ri|1Wc2dgTgzDXhrl z{we=XTlcR7SY=69EgtYnp!TMqbPsPE->+-geemFU0!9Do_4Mh+e)j88sfV0WR45T|Mv<5^RhoT_F9t@emW@IkbZ=&78LTyZt;%8DQ@mL>UvFpjv;@iqHmBV z(wph>(|8UYUfE!Xm{Whkd_)90)cIf$DlOJhs>lUG)d@T8o)VDZ!)7ew989|*kZ$$0 z+YC#O8LSHk50DpEit+0zTpcFwDzN*MZ(VSN({=Y>dF&S&=YB$x$GiWuF)GFR<*kQz zzvM8?kD)bQ(X|C0T>v$i(v)#>G&sxm$>C7c2>HTWLKnUvM(M0#Lzl>*b z;{%-@XXDLpSk9kGbz*ewFN~>feD&fPmT%AZ#+&49PjY@B)$xQXvTy(QmC>gq>2>O8 z|MqBL`ObxA`(Kwi^uO+1(IeYU3L3?wOelr1z5b0vO({GsN^&@QxF94Xtm* z#lw}AxeU=gvn$F-2rWAAL%3sjLkpTeXORK*01s77zT%&U-%6FA6x0w5`~t*UwY(ki z$>!}r0VVqll)v&~KZD8$ikuaNj~?(=KYTtAT#n-uzqrAm@LLv}Q;X05J{U$L3yvAS zrmXH)D-TcsMb!Gl1z>2;Ljp$5^ZVVd-cq`VdB?<6V5yiWRR9LA3)S~d>6BvofEX7GY z+*ZZWkkinNa3YeW$?d+Wt-b~{QBl@Wd%=j)F0RvQ52u}5x107C?w1|@7w^-Z+bv~= z^sJHGK`&)xW!5bs`khV6ooDA}oz3|osIpf0&bhQLZRO-%4GSDPHBnLC)TMhtE&SAc-}`vCX;gh>sztQfw7bhC3I z?x)lRn{{flkfh zhpJvQyfxe=SdC=CaT4Ba2Z$7eE2?pbTm=>ncpT0}teQj|?c1GtoYZ{vnRaHMPd_ME z@mE~H??ze>(TdL}<%EUU!s^ANbLONJ#qjP7?vIQ43=Ts2YAPz*AL#KXSzY^q!q_C` zuMR=H62D=X^lmC;awv8=QPzzXrI;&oi(fU_#_Q(i?A%J;FW(P5F^tka1>K3R&O#h4NY6ZI6 zKpR~D1SfQY98VX|Vz9n(rUzvc_#kqZ`A*bsA>PYM{}l)o0t*--J+3v&s6KqkjhwjK zfdg@miT$&r@j)pBoD_b*>@uGDP(XyT-iB5lG}QP`@Uo(m`*&P|A) zZ>CUPw+=f82gaf;i#X&`J-s+{U{#dkC@WrK(#DXihdsf(lUurT;&7=F)m&^i+oTUy zIXWE)rOFxVmR5QJ*F`CTcHYAAomu4yz?wRiuw~ZbQgg>h2?7Fp{fVQOFKJDz4`fr$ z#!(PlKyXNa<6>FwTFyQynj{2RAWDAOwG9yI)Fdf;uWk6PIEA<)9~;w*39qN|yHPvp z5)^2wJb4X+l(VCnDm|HPwO9Y1)Dl)BOxoFU>#?nUn(GlxPZ+eWxLUoAhfV)BvoM)m zzIw07*tC%++tM}nV%nA6$Z$pwdR}`O1lMH}?LjRs7Gh^|wV9-W)62yLdet15M0lJ8 zva2Si<3~zu-5Hy2DZ#lF7k)nN_@MOsCYom}kdG z!DEz3mzMfgMi93qAI7D7NrbBcobRvOi#)FpQ|cMDf8;@T>Yc<09o6ac^ECqmN+WuV ziNqiE`+^p%vii$P5X@`8F>BnCcDD`s-FZ_#`8BG7(U+cLAdzPGohBh=GZ=t=2muB& zE6lOH@fy(gF{x`VI^vEszXBuxu_+C&E!X3$Ulsp~hi%#erd%9D%|)MJYq!!s2y?O`_s8$DPr~ zzh%|W2OqK!0S~*vnJ)xsLvtt>{p~pXX*eR@_e$CMX*dxt}5RU|Co7c z(U+c$)>LLE!Cbcna6H5Mtwm==?TvZF=ze}!ep2mYqMq)kv;3``MT>ZH8$Mk7ZEqW_ zm`*!ir{+!h99t(ltu&i16Z6wIb*rzWv2s^Z5fr%{C|yX_3l`JX8~0&y_*^=rEj{m) zr=|A}{=&c1?DzJ<>Npk+;#u$%ge{zt!~v#AZ;}(!v)gZ93Yu-kB`WXHEaAA$GfE8U z`g1YDD-!KGIR+u9t2PgnL)ERNez`<_$~B+9j=#i=tHjfOoFf>>4LPAFju=mfCE<%<0F{~xv<#E?s{Z|;|;%e4YbaKh8|L#XA}N)-$msu9RqsjvP!pa@c-Y6 znGfK|yE6j;^|Al~;r#Db%)-{ln%>^l%*6{_d1-!=JUp0?aGOwAvUPznCOO&JZIF=H zA4(!f*o}m68-4-qpYj8KVY|Ec&9Bqz`KnbK7h%fo#^=K)_eFPrk80A;DA9;6a9|{XRaA z+mq3@I5hZKl@Y4Oh{!}4#w0+x5_6klz_51nDjnAGi|{x+Tu?2zvMrf4iZeHTrmDsO z(TZoVBiqLT#qA#7&t-F}!fefJ*J?~yc75J`=YOH(BmEY( zCy(X9FUXe_<2Q|(n@d2|NxsaMmQpaLIn^*VWw-voFuk3!;zGF;5h5Fkn5DQ#Aj_8g zRb_dN>FH>=Q{8F5z`YJ8FZHG5ty)>$oZWoX_i%h~dqZDMPjg7#J#vt;$|8m$*U0y|_j8i%4)%HrFcwMjJ7mRObP zzP*x1W@%o)^m^ptQ!!J#WzeIt4(stYI9~KcW?s6*^HF1{Q!w z2de?M5UAL)JwTeBnoZ$2_v-T;UnSiLC7&AgG=ehsZ=NE~+_ z7G;1jlTx{0e0J8&)B&PEXlB%e$=<<)jI_tbFK~=s`tqw+`^y*rVUSXaM2@7LU2jMRkQU|g85){BP9E$5

_rW6g%N81}=XYs-qoTd%wN0(I8 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

9;m8GaqWMZ?m}j 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∾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 z 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຾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

    P%&Mn4HpB3fOj= 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�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

    ^`BG&FW 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 z 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

    vnTb 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

    G<@Gb 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­`zh>IlvZ)Nx~A&s5&a&}2%6KY*sf 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

      8S3n5dG(|*@Qhkc#{C%KUi(~oo4 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
      taS`Q;z-rd{pWG^&FG$Y$_UgSW5hL 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�jTu;oT7p}+9}JAVt~xu0~Q8QdF7|SQG)g$ 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 vU8C;Mrrf-E$-a%+6@+4WA(eVR zXnXQg45%T-|JrDKz{5igj>TB#Iv7*7D_mqICN7dF)iLsIvmO!~MuacAN#qZkR9GT` zqW|3c%T16<=4LIwCdF$tD#0-ECFsTS+0a7-KGQHwhz81ANb*R@C?{TFoImD1HAU@Y zlo7q>gaurz&eLkys=3w0Tcmr;?(H?&V;%Hi_0k~I&Zi2LEE;}7w^d)PND>%}iL|UkYJC5N zwc~bVO$E9LjSfC)E(4H_KT$;Fa;^Z99EKow{{O=qfK!M^wpKqVjzPuUy+_~Xvkl*a zc4SW$!b`xr8Hlgoe;K(AtsRjIi%xG{^zVb{KwAZU7$^pQ(;o&A^S=xt^S=fWaNvOu zH}i=8aS-|bSBspA0}i5)m<*d?$2O=80P*~{vZhxjRVrWIWB}`o-X{?DFGt7Rgt%c)jd`09fas5;A zFg^u(Rl-m_EtjDJrKH}|cDYWB+x%$z-AHXrG1kLd%!k z2}dSZ@oGw`Yo}wn;2~Szrg4XB27M%yHxlW3#Y-%cq7uf>msJ{ z`^?*(A_1;jxw(5~>cq`3-1K->Bxej@iq2O0k2U%KFebufJy*cWc|y98cM38 z{3q-o>;5A^vO4W>InV~Ehwi7rgwjFo^lg^He~EC5K$6 z3x)utTM^QS7~CXJD9n=~f&i^`7B?ZXh-0VE1q(KL`ZFGg^2l|rSoG2y%&chSys z6&Dkes3RF41PYR0fVT_+;)l7p0@4fPh3m)ZZwHP{DV2u+Qdh8Y1}ttI(g^mDuUmC- zdRj=xY{!Tk2(&{tiR#gR!L{pFt(;wxr#4|mzrMasQh)&JH7lfH_H976AvzEQGk-OK zhN3>OgE+7xN%3%T9XWI7Nrxqkjg3uGm@CmFJ;VeHaHq~rD9?OUq)DPc53QJf;vYmE z$1N@6yU~vHWR;s>*;~nyHM6oBX^DnB=zeTmoSV&(Ti$UAzHE9pX;ba+-63n(Q1o1f zySk-|=VN+d8AU&H#WgA-mxzZ*%O?dnv5^N_hgq>c(r{^X*J#1U>6gKl?&$g4>tv;u zk>L_qyaU;h)Lwg|QiFqWuqC|8{f-oE*hcoQkj7iB4J4J>+BY{ezG}olRi!*O81oZa zn8uYws@Oy-dAb?Mkjv0$mo`LQVYpO5Sb$~e9%p0fTL^Ho0=SfA3SkLUZf&ApP5!Wy zPN8LCp`qNlGT^Y3{oi{~YiirSaEElrVEgw{iR)~15GTl>+*Fr1*4SUufOW{_$FyAA zZ)j=sr|wQq2djpEEu5`jtUPo^4|~(5BHnCb!HJ5A+34_a`Z(;jBr<`n5OCJU9lRDf zjXnp(De=|AaLdr~>3WFc;6S1Za57U;6&EGeu!2HpeA;NbXB^ z1&N^|bibF#nw=!AID4#|LWz|Ku_@ntlwAaKwW=ZMjA;9(IECI~5jr0p|Bt`SuE{+t zCV1<{I$C^uFHe`sdU|pMym2bam1X4y_O87U-op<*+Fg04Q;901edoT=v>}cY{tSBt z#Xi|*X|TN#ZXj_B?eZ#(dL>o65vj0aEEhbef4ML z1R~gLzrNqfIf7kO7?*VJDxOCoRagLHB3rC=eYGPnkpnDYW%|4!KX=lj8S%Ynpj{9Znj<+5cqXN|0`T5%X>`HC_3bcmwAr4-u7O!Yma72vw7csD7X zoKCG~^9d#8#TwI=5|Y}VUoAX6jXXU?(xoE6Ys@nGw8KT=J6rdMg~1hUE3U)0E`G&Z zT-z!fm$*H~XomNOc(rH>Z#8JfVay$?xn1}yoV`74_l;-q;Hp*m3}I<$lwyT~VWy;2 zu=Wh>!VNxsb@6Whda(|8SxTDxq7gS34Rx8Nj`O^Wk0*aJeCmv2m;0SQ&eGX1DQZmf zS5u$@LkdomRaAe&Gr-sV@p|p}xM&jNk>o-&Hd(5S9Ce23$R*EXy0x-g@*=#SldRfq zVvEM)o{mw?cKwB-9=(xlw*Yjy(U6$@uBa%~O+WuvH*Y|cO0U8Y*60cme0Z3$!l5Kv z0lvhorONINySnkIkt4U0i?${EiOowp>n41KpO-8mg-NQv%FzU&7j1VNLK`VUC!CR^ zQQ?l1;aAmey1-n0Q!a`J_Ud3qX}{+D{nrZltn)DNaA}J$wXzrDtFuS=WDpQd=||Us zsl}BQI1^Y9*$&VX zm^I7n9ZlOs8{ZB zi)Hivh461BJWdSX^-lt^$2K6%!?8oAn$Y>bY07%OOHwU)WBE%}xEsrfAg*41z`M}!#3 zr?Cq`8{X+YEl61_)$5{|5%pwN3@Mxl>LSt$3u^L?0a}vjOee1xHRq*^d(&ZQMhm*) z#5eHrLx(oKpOfhS&huYh?25U-h~97d1JC~@ss~E>7ten?NeZxGN$qCJuK%;rRnFDz?y19Z4)-dGjn=s-j9kpNfK>T z;Uvf?Ek)Za(SD)gL49GNnZ4VhqOyh#BqWsRo*UoiEY*QUj8NcA>YJNG!@^)z41l$g z(`xX+G?Yt~qubrA_h-#nkwXj^K;!rgu=1zO7ZF7?utLn)Ga7qxGubj^EZVu)osN-J zSR7LhJQ_s?tqlx7>+0%&-{L_E`L(ogZ82AJp~NMqXNC?+(8-GKl3`GiIL12*@zPHP zSOW&`c_&2H33pD~O|>H}mXB@Z4%(Lv%Y+h4=uFOB#+%mOM_1m>sby<(t&tp?%9+EV z7G1B#wtKz_)U>sQeSJmZb-ye-vrp`e3afNgISe;Ry-{5mwMY$xVhtxLfyM!Gb$jnW zKE|L)!dzUpB?|Y0!}O`ePi7Bff?`L|T*sl8tqo`7rpT~#<*syFrf&@?eBqvfu+*W4#(%I<5nn3 zPTs4^pN?gl8Xbu3^aLv#Ah?Ti~n7FZbcTa3N6Ur}`P;pdX z#Wh$jF0t7sdx9ZO7w*q0bJTW?HqTWtQf}!Oc2HOya(4&VA~o4TyWbv?clhuL=4}?N zoud_QrBauQ&m64nm>M=Rd3n&9?bgT^1(dWf<7dSVj7t*`Qd=~|TwZP|MMkalzCPPU z<3|8t`F3>$skBAzdVf0cWtoi+YE;W9@_fEDn{a`PW?|T9iqUr1PPpc9XTCyWwZ#cs ztupcQ>CVjS@fxAe5VT_6;PkPepv2)K`=L(8R z1w}~-(*a-$cXDEf3^8$ay0mh!z|GB#eIoZdZ^~Vz;`q4;LBVrv<6(5=7T6vo*ZPIa zYQB;7L0Nz5eY(Xt*9c$f@o0E)3FFpGiEs7KpTSIC{!vi?DvVdr81KqqmSl&4X*%{# zc4M!(PUkhzqnvK%@cRdhMm}#W{5~&mBO|yU0uC;{Ie^9QzSeLe*Tefp~gurX=hdfyVl$jl!)%@D)Jyh;&V=~6c$`U!-5?i z7mSv8R*Hh`0&HFTs>=#;w+B8wNrBM$%5BQ~M*k822l zyrJTqrqBlAxKCJ|~RshamP`zUsd?n8nopl5Zl6!wd?p^f#!r04TXH-n_yDV( z>k4@nx^+T*1AWme2@Rcq0GZ0bVEXRu zzP?=;wP#RbMBsiEpP$1jZ|Zb=7B%>!N54uhP%4i3(aeWa(VM6 z4-us2Gvg0??ScOOwpj6*haPsi^end~y17bkjX(=a zWyR}fb!7rQ11WHfPL$Yg?XIh7l3&4V+k}EM_07oKfyr zh^+q{wi(K~i@8I0X5^&>FX>hs9Bc7fj6{DAkkp_)?r6C?9XgIE!7L{`m1l>>hQKb1l;tY&^@fzGvbQKN%?j(7>Dfr+376#wwDhj0zrMSa z7Rgtt!*g^gv4@K2n?w_E7mx0k`;>U2EYL6It|t_XWolab!Mn;4e zgFIDNgoISBRwLmyQZM|k$S7L%IR-ibxwE!tjUY!a@)iXF05{@!c{k+qG&HU9^JS-y1d zmUfyveBV(N?`=EV}Wdr6y}b{cRBP$;^* zTH|T%EHp<5)iLcTJf(~P^{T!|2PW_Oht-wgBC}_d{f(FF(X+FhTz6FS>Awh7mn+g% z*P9FvFIttfTR7j3Ra^$OS4@{5Kc1QD2!qxZyu3YarDi7Mraa^*l5E2(-#Jq}U*@A_ znRemmHCTk;-d1tYZsxN^W862v)@VN`81RolNI0iDIwhj|FKi*xE!VrVv5ZAv2kx!c zV$u3ix(0oEIij91gJ;YYCpMr4*S95R!{e};}fIkgSsmR$@&k!i~KI0k(& znlx8&dvwD$O<;~%unWkd6blg8KCo#|EwOn0<%AZjTJP3pMXoK< zb;QHIrY$|qLf2RG>(#)rVvcYDOv>Jn_3ON?DC+9j;9WFl%Qi#a=Jpn?s39X%LP&Y5 zk(n5m$9E>Amj#)i!u z<&1fViVneA$pi$-xL}a2@LlN|`FyW8+zmDUwMyl^%UYCLZqUMznu=)Om?GKUew>&c zI8sj88pvSNHB!I?1+`Xf9jT}Wc(WPL+gv9F`+08F9ZaKO1=-qID?D#|SB56mwUP!n ziw1^1_+&UeQ*{}uYNx__JlOxd(taPdq303T8Qh)}dhDFowVN=>HQpX9YBae&P-X~I z7?qR2%m7hL)a|k^-2QH}1r>tHaC=DGLUH%=P}rB$t5meY?Nt)8 z^fc3zVj(U_#lgW1?<4PZaQ)xjWrJS?XdgV!Q`p$pJS=nC$)K2`T7ZATBWl9cN>FqK z^(j<~v*0*QO$c3OH@~^%>`N&aQRO;;5ROVmu@LH$UNTRc457%efS& z#g_k3ll{vb^3SXmF2VBQE(kKV0J9ZP>P9jmhjf$gpgNXkzRrJ2UM} zcXj`Pz4D84k~z0;T5cak8zZ*N>0@)un8doIMKr%3Hf1R&^~7_)h7HiJ*ZIcR_+9`6 zzY0MIhI|yk8~|s2vun7T$?mVD<1%!5tNFar^O&GFy5u!B>RWV`UUA^6%9~N_X0@^` z-?~^xAhg4gg{*@hDNSkUT+Eo(dIxSbx(=M;*`0ZB z5;j*#8!n>zn;LI8*fEviG#>dI!>0IDW*0J#U#)xAFCw0rM-SG_?c_F9lcP01rlPGs z6f3E)klh`Gr;WUzy*;(NOnDV*U*85~g{8g61D9DL+z>FVn!nBQTzIUu^hq=r%JJIx zBpnR)rnZ+ZK3AGaMl1q8^&@E%LcFFeFF?~Xh%;!pO2*W=U6d2zy8APPcwl$4a&J6- zU1+?CsEbN`VbH5N(NlZ0f2(^x-O$Dog}~Ow0DlEB;sItz~Vu5)zW4bc$*QMn)r3(=VUtY$y|ka?8r3T(F`e zqoaQy630&;Ij_*0v8I=s-|3n58P=?{f`z+opSPX9gi_hx zMp?Flx-KuWvu~O{W2{lovX|8!cRIzJFGjUHWcYk2XMUU-0B$)#!qNj|Y2wtz5iXly z#eQf#aO<>^F7&l|^~$vnHNuiCtdkA79rl8aus7?JDL1>@*FlQi$74rMSQ@C;b^Iv$&*a@D#;{9@+k%yQ1p`3&)o8hsBBT#?b){Y6q6hJf>|LDTo|+;k@8G@H4qqqQnDY?-_*en|YB5v8Sa z4mYOg2?@R;Y73@wc`%>KCL<}V(@`GVrm7>Cn4+?V8ca>XYr|2H1)9$K8OnreKCSNc zHMG>p;tZarMxP+?4LuC|bqB{(PptHdOtlW8xT+j{GWl-`m@h21>trJRUUpng}j zR2)(08h109OASvZW}#M^cR+i^{roLlv~lV6S*u-c*E8{GILV6B#|yD<8+&vjB~FrD zzErf%hqcUT6|r;hyPioxa^#?9qiGWz&ojsJJXX%&3ks!4XtPgyz|m0z7Cv884FA*1 z{Tr)HglHhRy+r}4p4SyU1?9xfD?n~5!%h|0qC%-MC=ts6qynwLyBEHa(tFp#10Mg| zgA>SmXGgw0{^HS)C7YP2DemcBR1&tuQ0QnY9M4*%tWn(OFW7U(+(56Bp`jrnrL6X^ zC|s4^9p+iflaD0u1W7u6vZc+>v?*1;zrJW!>zk+rbmUdT`g-g5CPAwT?p;>bS9pa*BRM8l%cqFyz z4FJ*gzJs@2=XDWtd#->RTLo;qV=}f~G71PcBud&Ob;wOQ6*^#%e;A6)aB?&;LD%#3 z#;nwSWFzp{Wh+#aP%dlw81t3HaBnaUb+OH(VCULI9k>VLxvgv=`N5Al7q9Cfa%X2= ze>L4l4w@vTpSY|iCvDmtII&Mxx@tKoODDRNbz`^r<9FoPaqZUhup^s?vI?BVLgK)Z z>0WIedGQ*ZU(w4h$}EgISPZP{KZbD@X<-F-Jo zYMCtEfAz3~1YFtxYuA2<*J!h1!X$0vLti+fMWQG0bI#HveeUth#GCevi&XVEDr9ak zVe~cZbmK>NY08!cMQWsx{-#jdRsYPxX`SzOmRok0Q4F7-C`q(CZ-_guc33j5ZZ@gv zfZRKOiE%dL(Je;X!*-55%_}&i+#7yR4|wxM2O@|dP2b!@#VqAMTgNF=M%lixo-VWI zHLl8#F+4ap()JifPJb|5)z;m@dw9F2XRLUy?LwSFUX?)PF$#xE(%RD;6=FdW2g|WE zA2nM>7Tl~g*pC^Q09nAnZM*C`rD0D98Y13e6gaeN2E&<(4$4pB8@!rUy`}-V+n3Aj zhuhoLi0o{EouZWN(9>yM*pS?N7O-E%GPtoLe39Dc1`$Q=U6E@HQ{2;IW?A)Jx;eOQ zW3ajOTI`1A-w8!TUS*K@BCfNL(;^0p4lgepG5lgnxU%y;IPTilmZEbe7bGqBx0Z&#J2*FH<^E){`{go&3Y=1b(PsgC! z|Kg?LB3`IYll1HDwYA#!o#D6eo1HCL?C?%Ft_JHVJD^`&OUcT~;;s8aSfDVPFL2Tz z86RMJFuq~v?hXQEu)4Z>*Y>u_9C4h8^cUg6)@K4|w~YdBc-Yt|T;Jf5?5DtECa}Jv z>g-5>mN)x{wXOV~O(BAxQzvI+Gj|0y1c_tVT|slPaUpQimcYP3 z8pAx~EiPeEd<9YdTNcym$FLbRMu!lKioQpu+$0JEu&c{LTs}T42`h<-1+& z5yBH)0|!j<9fG@Q!_Gnl+3P-JOG+}m?@?9=Q_nH&tNirqR(@^Us(eSlR2=rmmP!&9 zS#X(QP1{p@kJ(vljA|p}zV}X1>>gZMtFNS0;hTl;(f{1M@%|%+WA)B+e?u<_Sry{( zBT80k4A!fR_?qyC<|WDcjwp(!%;Wb$tZyf_hvclR-WS2hJFxJSDtC*aLj$CUDQ6 z_-^bpFrK*0IVb9Dw6LxY2?yeSWP{y$Bc*8Q(hxuZp7ri-LR#ODUU!HL9anKzVVOf$^I9;v%k>G`v-bRRobxP#9j@UIfQ(uF#8n} zk}ZkxC_4%~{;;d*7J>>ls5ru*7U`Bn@iC1y0}jgj1D@*uZ=Hp0>OGScc4CNI-m%Xk zwTZ(e5Z)VB1mUkh#7$C9z{(Z^f%uLSC?YM3tDR5o8?rbfX&|LD8ayh&{ea77F- zw4t0I-JnWX`YM#CTl;tvdcCv+THCnQQ(ok$D@C1m!`eW##{qCquEO{zI_z^l1Ogke zL6Px}&q!1r@oVrk+>c9rqwG9#D9{(X#jD~X9s849EsIyhwcqlWXzwkCMN(iIkG zenkYn)1vm~eBfILRkp;(i8DO)5)o;o7ytcT0aG-q=Xq)H@O1i5*4YQw9=ki7(Zv?I z1Nk0UA&QS^`6t}wst;O9`2Xz|qvL5qhHOaw$-g5>wqdQ;35-ntrhg*&*IJN&E{F&1 z`yV9RVomn`gd~*ne{8EPIcYRCyn&5TIxuESX;O6}ibfgIDT*kVZ)g4qqSO6YII4)- zFw4a@y}zOYp&38QkY%^AUCB3`GE|GoAC0xsL1;i66N-y&S31XGg@1{wuAAwhiT+gg z$Rk?*E5uY5c6I^|+d(S|XlPyf)up9FXHZ*N#1qQ7Ba)5~#xSJ&)Aitm< zsDar!LOULb#K+%oxfwwxEk+$Omzto>T@~QFL=!wPz1a-;Pb)xVOwn5w4-Gx|IUwTp z+6-u>SUn8Xp^B@wOL~nH!~3mAl=*@*y!X3OVSj}!Rrk-7NO^l-1qZ(~=v?=HGQ1nb z8c%BTpFwSvsLLD@FDP(|6Mvb^8&)dmaN@xe9;Hn0m%dSjf~9*ZO^G8L;@La#RxAZp zR11?gKi%qq6mIVM257;L`-~Kb~`c$P`fr#{u8rEAdg`IsM%3QW% z0Z^FmdpkOrNF{mZ4#?mb35qp#^w1~rIn%WEc`KTrESw=BE^Jn>rb~ssMYVbGXHzCk z9`=KZ@S)kbnAFy^%C5_A*OpmR@ST#iE54=mg){iB^#eiked7sS15V;wLxVFbH!6Je zTFa*_1QoO*B-3O1UDHI`=S1HUeHyqY*bEZjEtM@z?Coo-?7SRVh(CDEf2q@J57`sV z$Rc?*(GOL6E(s@ZdJ)42@97B8mTaeE!;9l*A8D7CDfMVxT1uKJd2e&EI$mpKop8!e z9s036>5SJ$uHiIoE-A1uI|XMOPluY#h#1^o+k}rdV8((i5#MG};HXZX?ugd2ll;xd zqqE8>%OG^=ralKM1NL?;%eGH z2;WXlI`bBq1nDqZ-I+}mN4cux4-fL-)t^cW)X=}~X-9EHLIcr39m}CIzF|q-MqafTWC%n zJ8V_5Oiq4U@9>^nd49gW&dAFv#pU>NvEfVcL7Tf`lw}|e9JnVI_f%O~UH(J=6!C1c z7Sv<&28S0x(UO8MK#`i1qWSXx^>2mENCPV|_Iq6>`MV8coMLyEKrk$Xz%B?Bk)7_~iy5&{% zX3%)tk|Ds@`~}A%Fstm=Ge3MAC@KEPPgtcp*c?$RS-@*cER(?s9InH|YZVm@z$1o$ z{uVGGl2_B$r?%1vqw6VbvZQz|4^>R{YvTa=HZkeU+@jRRqSX8T)CAZE*eDn<-6MHF zWi>V6;q3Zmf3faG_Ay3u+g40D6(}uTAM&ghAOi>10ApkPG)OPqoF{9h>-b@1G!&-Cu#R}r!; zzyN)JwV#MlokNx|^y9}5IYbE-VAxU{7M@d9PA+B_do?>!xc_X`$C&m(!pNxLCGiT( z2?RtR{QfUVeyQ~P{r@N6Uy!_nlL84)L+OB`{~vni2ar)<1sDRyorFGMVTEx%V0jnd zS^rtZ=EPv`Y-8Q7b>g(b{_#D#6U>CCVQng+P&_Pb&&rT8>L8v1m1kj{5`j$kqf&>Y zaJ&o0>xLaB5xL?%crs7QP^7e>|JtiT4w1*>+E~fSv#+m@lq&D#&_R_Q|Eex(#mdFI zsV?A|1HiEh000ODklQ(k05AwjF`f$IuRiZ*RX9_snFB{7KEADM_l>5ElF6^njIYqz z(gRCNIXb$j%T6t2I_=G9c!XdAK)-O-HOtQ(PRGVvliA=LKL^R!#*sH|&x|lv{NT*s zHqXw8v@iSDmiZ3%zxH<3ZqQ{E`ziGUFonM)# z3qdo?r7&uPuBoVz*F}+dnvs~e_;%d8`;AsOCEfjfPFlR!9G3bs>MENLkr^TUzHi7J z%$lJNC3~)#skxo=4C}>PHVyI;bR zud^nm(T#p(f`7qg755t{x#^AYaM;CNllM>~wP49H-+0rmGhTR3wp2^;=E`TES_`Jm z*hwxKsDryMhIcs{$>~(NoE~P_yM@3Xo}RPX8a`7?$jJqJ9nCk3YYik^SV5kE%%_4P z*l=m>jS|OlP^SxJkGxDu`A7sty9M!<`K&Ok&9V{~3EUEQg}yQ{SqSyZl*ca$uP^(f zfSJ_sc6+WVsPyLO(i77KHO4{ml<8lDFetEoMl5zMU@LW}4_oLTyK-sOdnIlW?o*!D zS!Nxtt-C5GFqkYR>(q(N;@ZuZc%2bsG#jzbdz#fdCUns9CQu&}h-Wc1Hwgpe^?QX= zh@$C;nPr-TK%jl%7-&#v9*YYtR-ei+Uvma0_}wY6m|zZBj9>Ny2p){Hf*8$Kwc4F! z7V;1q=m%=yy|)${W$5?e4{mC>?2oLi$E`f<`UHI(jxF)OEWK<9Mmj-GSo0LcsUxV0L! zZ#5aEcl*n8Rmb9U&APHIf2aHBw*W5RhI0|y2hh82TXBvLY4rwIr0^IoZ~E<8jLrr0 z5^5+f4G@pgOTRQw!%ah0aq4g2YSL2RR5n>ASYe z88~d?+w*jCrZ?|b+^l;t(2hO_p85GMa-Zc`yN$Dl)-?hwO52;niC7csQz8WEq!;+* zhCGO$Y9NC>F_S{Q;%>3Yn6eq^ub0siiFkX2v0qz? z?97d|nYHB1rz2gW1{Xo3bnyzc={t1XS(Gm8~ z<8)PYfNvk*(#$W+hb3eMAwaFwk)LBBJzIXr`+@~kKdKHK9~!lP!h^Yc&g~ShsfHxE zXtW7kuP1hrAF2@Hz)h4NihycY`mpT8a5Vg+JJUwbs?c274!b1V?0Lin zNEf;r2{OAP#Z?Z7Yh2igd0L$e`x;tklMi z@skzRI3z2x^{~`y5Z`a3k3K*qLJa9MN=&s8|J)-Y?IHNiEV*_RSu933SYR^Ng$3Si zP6(x?mV}eI(B2wHRK)XvTPPWC3L%19#h?VPh;Cpo>1%DChD=ED?$;zAfM|)*CFk_9 zE%=SGTiuGh`CWsgm}h=ULo1ek?h3NE_R9#XtP}fyqLV+j7%EPx=MW`3D8ih<6Em_Oq6rQRG5# z`T8zD$h-WTE69)!Pfr2}I|((buE8mgvEU#dBtAs#NcPlm?{p2laoP4z=>*YZ?V&+O z*78)`JLcL1et6mlN^qDUyFf12t5M(urD8fz@^{4X54a|5Z77XIQbIykpX4g*tMCzq zGNKpa`Qf4z)9w2NRcZ?{Wg|Az{I{sYWC4mof10WRpOHDg6CXgC+C;*))EuCLq8TRNToc{l{!uW&pwwN3qK z>B!ItbLHE9A8d9z*@H5Qo}qq#D@m0W^AL4RK%Kc@DBfdhV8r@jSb*RexxA(VXptO^ z-}L;G*lfUSBh4UJ`@tk`hEl9NUekgI(Ko>INRJ0(UtD$hjVF_9Xby1J3p?aWZh=0c z@m`;0HrAwRA^c&d{e?LBLW7?z;G`eDC{$IA|387j&uKh z7}WIQj~-dc9&4t!Onp1Dr6||L>0!lNohL?zCThY+bPnN~#aS8c+4>|S-oZ*;i(^-@ z
      OSORcBQJcjNz@29PZb@xdkIYI?>4~Vdb!I9#giAD{_8?Em&{x(Z!Mw{PlhW*_< z%=mY_w+z_sjU#&>bC~6Kz#$Ryd+!KyBA$yRscwl9X6t zZfQ{d&=}N;Elc)`9IG#sJt(;gaI?F*PMXUv_&v@bZ4Lv~^uY}|wV&KAt^D~;7Guf; z6CLR^$Rms*LQq;Td*KXowr(cShLeHoA3>&5QzfU<*I0<@5fFM65-TM0Kk$8CjKx)o zhrS?Gq)ZTA{X0h*_ zJWO{ScZNN zAE2~&zmvWOF{Gkl(Ng2qio8%4?oO?`?4v;3a@5$e{$d7U(T$^p^%*TyCf9vk#VLy?UT&6qFYniu5$iz?KT5_j=* zBrB3R!D#&PER=ASC{&4-iKCbZT~XGKeE z5sN29J!ct5B8)^4@%V0$s|e=>ZkX_hd#fcv`#Ye@z)!8Ok2jC_bay`SLlA7h#_24Q zcs7vTz0IudHpnLE=;AKTZ2sCGQM7Jz8sD>d38)GjQq%5*+K!0mjY*bDR)#zRyfnB~1|hdGzT6K#GnW|nEk z%C9q$148%Ry|W1Pf@O(dW7-B?JsdR}hpK;pxwofvqG?+>XY+>43s(O1yHJO|VHTqF z4k_ECF$pZ@dM!aBm;~bBRx%it=l0G{jkE=c*uu4f)7aMfr|4GPoTM(@qM9bTLfdVd z0w+d4`D4ifE;OL-#PLzpBs;ov>S2~j>1eXHX;XuY&Oif8 zzOUvybMw2NKGISt4+#x3u-BYxkCFY9vT40G=V~N0T?OX>kk_P?qXn@6Nc=l-2~!V) z)CoxGPL=z9vobQL1u02;sBc;{np zOj7%#3DQS-iytO$(~dVVM^NypJ|OTqH1%HB{|~4@SHBxeJdVpC%qUTzKE0A3E&@bS z3AiPdMAY(+Ba!vhi~j*oO9KQH000080Lvm`Q(%CEYQ7Ty0LPvH01E&B0BLV?UpQzk zXmo9C?Ogj)+qk~}y?=$)J+piGiB;D@LojZ(d$;7*kowXevbLaf; z_bbUZNt&RPP%aDUw2duG-}m<;$(FSH)6v=C;P>+m8Wy7%oqzdo(mg~ zgCq3Yr@`kFq_tEu$Z(QJMU*BuZnrz93Q~qeG0u0|?d$97*0s?}v&;6N*S=xIG}gMj zY!*{ZTcjY${+nIS@n#e!`5vb;OGfiNPqgNBDJJkUq6J2*Zj=5siLUmP!!#*qQZxs* zW2&G)-0dj^y(vWF_rVZnIW6|S433+w(q2U5x8|3F=3zP-<0A6oX*%7`o~GS3O7Mv8 zDVH>%87|Uns^U?4a|`8QCaH@J%E^*GInsruIuDTaH5UPS?I@|y;V5-<>sn|Xj^ zx+mBcQ4!PqJ~_t44m!xlBuY|#*N!7U!&yZ0wz$u;pdF=okx@Ki7p);Wj$(>>G^80# z0=nB4#NO=2QSv7mW;6stVLxvLd9I+0#(PR$+{QE?QVOybVA9f(tOAoJ53*=nOh5Sp zUtv+IAdp~B`Qxt%&2C$NLqi6~ib;Pzi#n zKyVqvX-*09Z&AtmC)8|C(_xW;A#_--K}EGF%F{Sa!*keem};9l=u5@&~725 zfr|`r1t5=UbUB1jwe0cDdsYb^63$|rrGJ2baU5MHN>#li*oMSMhgqgq_U`U zuj}{UwEv0zD~3dd07fHxnb2bAUpK|xBujSuA{y=xgLv4(w&hutu7#d$+t{L>83eAO z670K%Z(FwK{ftNB_axb)H-JQ~;-)~Ky94yk_M0mV2IfKaA-zF+D52M=U)^sh^&_Q$ z${VHePE>f;c-LY$_-_0Cw46<53!wac@jar+(24g0`tYkRKYq>#4z6cIYr?oWCP{1a)j zf79D7dc};Y)CnxKkHQRaU`BgE1b{D}#6^y_rl5|77|OO6TBIlHmnMPd6=~jy)nT}E zl}2Ps-Bu8P?57!F_5wT*F2rg4vRbqjon-HEu0NNPmIWOS%9ONc3 z??9%WfuTka8MrE65C@@(1Km|!qvTVMRUX8|P(zcdnn5*9x6M#Bbvqyq zHA7AHbwl+_CJ)yl46*0CShGC~TY8}To@sl5@3@YEO<-O!fY5jldDSDHA38d*Tu1ly zz_2aD!I%WTX@*oICHZRbR`Xz;8+Uw}{``lh0d)I!L0$3`9h(T3sp5Px8sY4g1s^VD zdYjN3`no2sK_M;=#RX%GetxUz=KHD244om9nj<>$X$G|iqF_mNhJSZ;k4rQZm8W{` zZv^Kf5U}CYgR*GxSeDyj-Y|mHyk*KkH%q`byW@p!;swCy;=;!{y>ke^<+5YI>HAvV zwc*uE+afe&8UizdC=*MaBC)grL3Eh7iB|$tP6#e|yBrV=A zlHnrEFCfJ(++it2tJOZvPaXz~lI)=^* zym5;zGdv!mFwGFR#7^aySqh~elsWG}5u>{sjV=ZHGP}FOiwmZBYn)svXbN_r=NaKK zSQB4hfnFCmxd?G_q1PyLq1RqPvFPIrrf&$4B$JZjufP5VSEJ>jN z`ZvsmL>csjFdblNAgscokw+rjR3TO=19MBT5*SqT8dgJd-G=G#xzD#07e`ISh{p`7 zq7DWZwDk=S(`k6X#8w-cu1UFEr7?_=7BKpiKalWZe7uI|G&IkavSK6_F!}(7;|Ov; zD^1rqGtJX#Zf%H-c?|x(gc-2Om`D*eaLLj2FoF>a6M;?AmOUyAIOR3di_v(T46_|bF~e}ADV7%`0!f7!^I_R%5BvO?V6`yzU9+L< z9{jWJWfd)9QkDw_-)dr6ERhWpV&1qvyV4~L(t8;gj>#BUjv-}`6XB*=@`u0tg1To& zm>D}#e zNQWQ*6Pl{gFtq#mF6COPmh*m^gUI$;RG5oQwu9*j7SQ5l>qgz5qFjF5{*&wLoWSnQmRF@H<{ zjlKKT6J;h8ruFz6xNhlGp^i?iiN^_4E`w|Dvd< zK1Y@HCpb*S!Jnys&8@TFFBG{&?YrhB&%aw#Yd>Y@%MR`2mI=-(5o^QGy4TxA0^da4t8zTGBi&o0ahK$!_?PREevhT(XGG<)feGlxsq%_&C@tnF3aON*Rfoi zl92k;QB5@r)zCMIY6K<;G#pqDn-;BMpdaE~xsplx#3L)YNRQ{^5M~WV2;G386Vu18 zPITLI4XUb|W9ry^5k8hHnWXGnQ7y_3cd=Ze$8)i*=`dzfiEEgC2z`U$deGk+IKafP zef43J?KKSaLtHFZQn+}WLTCImK9-C0cs|y!3TWX$cTWOp1G9htKRq-9&r>zec@aLA zD_QwCe;NZ5gwK+2_F748ecz=gXQu( zo`XFf6QVhu31hkt`UAuAT+Jrb!Y&B|`(=!_@MK-FT%^bIu|vbq!@90g zD+sWm+m7i4DhVA2djZzG7vW>Ml4VX$A{UMYgokch~w)%%(^wzG9aj6IQKH3S+3+0&ynN;J)VaHFH{}Nr7qEYQ`dD% zb5#R?LbX)SwT+jN!g3{_bcQ4s=kfe&5Y5J>3o|jzQUlc`fvY;y_Z=9;!zArxd?b`B z`IPe`xipXG-oVD5L%qQ9*k?%H(+Dvkg46&z#55fGBHSxi@`-0ha)BP`;d;k#wQavz zw#Ju<)N9z7xXYH59Pvt&pd%`_4@POi*NZIO;xk4M^!Nk!BZ>V+!1XX4-}3lFTfsKc zRZVN^s;;3AQ5>U>8I49bL4#`d0oy}9W?QDykZ-!=d+m@|d4J271NM&)7(0c#0B0m` z)r{C)+Y_I9F*9gUnuzng9;TyNO_(bu zSpqC6Z$nZr8Ry9M*RvA7nK+GOvAH%#6T(mI$aiYT4WI`0*$D$d9Y0B0fW$%)=7;f} zbIV8hkS!MV>)khmSs71hl`$#u0{kC=3)oQ^d?)jqws$c#_|!rDv*W?ngI))9`{=xP z_G|a3bA*(GKHMt}^tC(qboOO{phoZDbnrVmJ4OemzoUP5Pmda?^V@l^)9<6R9_oHR zKk0U$tb2NR^5v*|`VoDAcBf|$wOxo^AUZfhjA2Qt+vzi6pF6$7PjGwip?lID{N6yv z-N7lNc??7k(D^}c&^`Qea?nHPUwY?f{SL4{03r^-4qCt!%24N5xIz6- z2PY?-)xj5#zQ^S|JUjor*ZufufIgj_9Ce`ZLkA=~_;At@tU#&5lY{Q(20A+UeDJZu zTb%)w9pJ-BUvmc2pU^lP`@X`q8%x6cf6+&csE z%$(5Tj1z%&ryW6snHtS_1gfz6Fa6G)EJvM#6QI>+ji)QON=Oo``Iq2oxpWpCO{a1R ztYQ_Pe6eV?2T59yBmA2wQ2^Jf-KnhmsES#fV|J(q??naruCf63=eM5isPBJH{CxbL z_a<#dwptj=l$z--%JGJ>KVLe|(jry%%Z=#YERz%`X4Ko%cUdQg(A_QhrtaJV;f4Ln z%-}$-?CfgaJ7L;)((KM2)iI|eptmBD{+REO6YEwOtTGS@e)*+Zgf8M}c6Ue}9nv+b zRdh%zt`{A0^2?%Qeqru22$QA5k9(Fi%VSDzq9tpT*9xvaEyNacrd+j?x!T>ZFtV0F zRkcp|KCF^1RIQ>>T5-K-l#^c;jrIDIt?h?|;#?5M*r$9scO8DyVJDvQBZ3|?iXS%Y z=JOO(tB+5a7R~lXGE6tkkSR#6(&h5u7^o-^2;!Z z(BO5V5h%XFp=XLi%r_eZS_y%q+W_h@x~$@Q2qY)J41tF9=5-%o$o z{Qa=RcU`<@T;c}U0MoMuCgGzEGOdJ6(&GUtWRg}~51HiTWyqAjZd}SYsPxQHDc@ky zYM3NF(W1g6X~p$0NlyMAOyWD-UM(bX?Kg<@d=W`FXah(q0h09il?srg71skKIr-&) zRPV`rt(a6BU;|6f7MAXOv_YnokV$%YQ2ixNR&hOKl9OMCOlj~+Unqg%8zg$BNW^@z zL7m@gaXkc*lV65FJn&v828r$Z8x(q;C?veI!J(CKNO}%iy)aT%aXlQ8 zlV65Iulu|I=BxiRN2AR*|L+4N>9K+Jz(`hcJwTF^zYmaJ@fZKi_x`^FByGO-e+MQ> zkGib4^vf!)he>ks_hZs4{jj$A(*JkBqs?cv712m~GHboLR#tI6G?J5Fibk*aEC1#j z|MSM8%@_XffFkJ;!u7yNR&hNjl9OKsMX&t({^slca|fi&xBXQyNf`B~W|JMbT+pP* zQL_o4<;0y zrdLQu{K#+B+|l(NxZvk_^OL>(+cLx}uo@P{INxcvudlCLB)z%4q)98yF56K;=uMd? zyV2-!jz7w?U{9$UW61IA~vA zWMyz)UukY*Y%XwaXPmqRP?b^JHo8Rt>28qj6hWj#HYp9#jY_jAX^`$lLFp1yKpLc_ zK?I~@(;*<;4QD;R|2N+`|M#CcGY7|U_GUdR?!2!1xt9@YDsniOl$bCW3`ap8t^tFg z*ur3U4)3FZZ{8;8>wtgI%%97_VYkqq?54sb7>o|40GHD8NZ*=u_aGj-LECe86AEEs z$_br=e-)5olE(@+y`z5r&Ye5zUyV^o)E8L2WYoR|GK|SaU@F{0C1~OZW{^s~Kb$}r z|C@-;*Zu8V#~`!HS8ncZgTJ;eJs;3YyS*L|P5U*482HGbSE9`s4u0fg5^-{g@CgVA z5-hmJp>MRJJ1L=$k>$FK3=9k!50lnm@RR&cpBArA=gDY-dOkTVchNt7tnG@;F#M3z zHeaz&HA_}e5mUr%i%kSGL7M8Z-BTYQu_!@?19tFh8_fbG0-AuHobTVC3=xF0!S>Px z!MqG47Ui;VI6U9{e=ciuaMXdQ+hl)Z?rCUf7;(E&V~a3CxR8_}kg-jr?>mT&Bf_bd z$FlQ9ot&I>Tl}s|ZZ87~k#F7&X3S*%*^{H%0e|6e{mukI29yQkJ92RNO}lvvN@Sk3 zg!hPJ&Af}C;JTgYj*|K`snVPhV%iot=e=M<6${o8meZ^rNUlDu*VttxNEmmbeCPV< zY&|~j%kQQ6%4_`yHyYnX4iaeLU>P~BX&s$HpmdOQuWNIQ%M7C`&UYDHFA{& z=d85tJ;TGVA{cG+Ic>NEBF{L|QctI-yk>bB7~IQs^ZYFgU>=W}tPx&XJEIwSUtV}` zdh^F@+KAUp&Gs`|wrtt=rChGsAkzt%83dOF*fx^W8)nI9o1BhX5e>@To20ky>J0<3 zA=D+CY$>dR?ME-uVk`Rkmv{W`>`4AF?mhiERS$>Tv;q;g&xMsVp+__vVyoBT5uY-p zRob6lO8xm(lQSyp=X|PZe<=fJB8(EmByT2{QeUde=&U@Cs@)bvA`&zsbLVv!7)(sd zW$RZrt+~B59d`CQ?|*EWP7!5b$#o>UZYCsPk0B$E=Lx@2a}ykXxl7H5Kpwo#de4{E2|~8E9OV;9 zWb;t{Nzj5&6I~Bm(o77@_&(4poXy{s)ZXwakPbCGg|GaJ9AiZ~a#<3-SL2yu9Q2~d z;Pmv|+ran?n&5P5A}-R6npd0SP0=4d@WIUd`U-4|=5zSK}*>sFB)776wsodkCxb|@(Z#c{+ z%Le09EJLTZyx#q`LA^L_nZVl!5BCWoBUgKx%C|^Q9&_M#9V2`9f%le!QtD`X_ZOdb zn`#E;SLm3Szu4IL7}>2wtHiSB$}N10jjvIDzQ<~L;V)v&NB+D14fp6bqgGWg-MelO z4K=o>Nq(1_*nUtNz`K(-6t0p%Y5M0EE1kl(!5EFaZDic?Ox-VoTZy+4SfXy}_+;{T zaHzDq;v{3GXX_vG_=Rd$S*c@%gf#x}53h>qq(m)FG4{eoW3^0AQ$nk<)4QAH!$0~; zz3_Es;nO>GY(3%Nz|4FJ{O0DlWj13izjLI0$+1tctdn}fQL!|f2E`HP7e|6mJP#7H zGzkejRU5LN!i{_Sxu2RZk-}x(R~UqURFVY;Ab6fE78H-aojI+iYt{PmeS@0X-e8>( zD(dTE-EvK`Jmtkjdfmn|Yix?)Zyi0BYVicB5>uq2ZdbIKe)Zzo#gh?}leNE_E-&Sk zl%!QunzKjY@Ex;q**li~sgl2Q+6A}_zu!?6AA69KBURhvz)zv}MT03ZNsf`f;$8N; zpOfGB@%bOQJok}&^oT6&F%4E9Axl%SF%!$2 zS5-PX1@Yf0d8$gz-We-O>Fh~}O2|TV8M(iZ$&3Iu((<3-eyysYdg_J{)CTo8#!?(tm8uvR*= zxklEZJUJIh*2AVpmfz?^M1Ga1R}>dh7wcD3MUmY``d$t!42W9%uH6-1pKrnWnT&I4 z29_)YnONf0%a=>l6U|+Cl2;MI!Q&p+$C=@g&Q~6v+n!;$ZHokqmu#Lr{Di=vIA9+y zLGJE7L&+QR=P{x*AIdGfPFK2)ltnh5za~34>|Y<>=79w2w!JgD#cdcaUkT=KCZ2`4 z{d|W|uXkme^A&nPBQi=x)3;ku;ru(lmx-A8Nz2kB;3rMqw^{swwJ^!+D!hmY z>&dDOzOPylT^4cG9r5(1IW}YbxyuCVrXcZLI4yO^MAK$Pml(vE?=84};9Jb`7uWMS zKd>hkJ>k^r8%Up`#lR@>O_#rnrS5&IG3@4ZJf>~flp1rn(?E0=y=$ozJSm=?r)`;85qz0$Y7 z0U4sI3!hTzEk-{NP_H_gc7%7r{86#cuvBtsEeDM|f4&zjw;C!vyWB0ZnyMgOTHck) zk|=R?f6q;T0Z>tu?eX7Pa!Cma;2>Rcv^el2mNB@Th9IeJvqib?{${CM{D%*r)wZW} zTwM3Wy&reS({DR8Oi&RdpeK528V;uy7aKy32*rXscc&L(guHUJzL*Y`v-y*>EIP=_ zl4@ww9ELW)^T}h26AJ9+eC`cO-ZEoi^?U3#`F+2=kN77l?~YxTSC|TT z_l}0|Blh}S69(ArB941R4^286vppME)k21QbN5W$=H6br^8SG6KAUDJYiC1HXX+Cf zp&6qpt4Alhl6_P=gbAX+L@tcJJL2TYa<_gnV%{#PMt=cBB-4;@VBSl2_a6{8)~gkGZ)< zW-Gq88rlz+7YB=ZF|!nyEp?O*ebKz@bGAsNLQ5v|tz1{LbV+EY|JN@mWX&7Tb|VIk zHuIR#wXPVk#(r#{(ZN(K9`Z;T-mVxU&mj{Lo6kwDH^Ndm z707K6J6FHx;NijMbz~KqBaO^4lb&--VS_ooj2Sfpmf~@9&PzZx0i*R5h!?73zM#z; zQrik`_z0;DL=$MNKNuT)xsnv~fq#_>n`Zg}qH!o{t?>N5-1t%6`o4B=FLHm@{VkNm zEIEOsD`rJVH~=wCg!9cXuR-=>DIyIJ5QNZn=yblu?4d96)JnAOr{8 zwNx)PX71>&Z6i{xT8znyI11>bj7a$SF~+Q2qI<4sL$}P7Pvngaok-$Nx$cN0*p++= z(9x|?y( zd~=C<&NFMEW{g(FIy%fEW$j>F8BJGdbH?aZbDnX!p*0Q}WMc|KEaL52^e zU+t4yC@PiBwbL`sVL_1_?@3;!+NoKq%ZL93NcfG!Z?}wxP;OivS59b# z2ILjxG;K1PI5zx!l)DEpoH`EKI;B&5lsLL|2YPUskce2~Js{}@{zsMNUdObJi#!Rs zz`H!_>QLq7KZJoSVmkJ9P5qN%)w=vWQrne`T&kUKz+_)nqT-1`&UmiCkEoE2?92`m*(Ns;zslC-< znI+!&EQSp>T55tp#3~VJ)KFl$Gb07_Phd>RezPg`@XcTMCvW~HE(F6begLI0G+)?& z(5~7Eh0N~QW0`Jx21!he^R>{1?pUKAIwt!dyl4R)Hg~fxP#5U4G>rI7AhYAq&X=VYDZ?T3_gnwx&>m(5hviK;F%$!3pHC zR-k-|i;jC0v)e-3_bevdke@u?AkY4G#?hS!AQlH;3qSmI;c|y8)9}uH8?}QT-j=QI zKvb%|6Qr*i@U_oB zTW3)TN<{MWSNyI!Y*?SJCV1WN^=w>3K|w)6MdllqzAHJ5@1?wWtHNi*e6s}7O<$i< zB}-zva{E$4MTOpN>w9>K!Qk?*k5u6i>>-)rwz*Er{JD7vDpmGK(y_1B4nH&E(il!5 z)PVcoiVC6;ZSAY#=^1f(1cO%5D6kLx9|M!(c^hWW&OGw-^Uv%qZwQIC2+Yjf>4i?& z4h~czVx>jOea@Y;Zpv2}#VliHk`gQKO5Qd?4*iPEMn=FZ9-p1%KU`1(QK*_FA+Mrx z;wcK(&s~+en^`Ga0g%n&?G1uC6x%wi#(pz0RvHe6qDX>WX;X4wPmhMj@mQFQ96bXA zCOODkdQfVleS1a3&TcW2dBX%4a7{huHL~d_RZLrDlqaNGu;M0VKhqGmu=`yBB zT(gYw>9oX`(monn>zED`wq9|5v zuG`9;M}AMuEl(Ld@s6G5xIrKai&u8CDkrwC4F;T@Yo%^lp=rL5MG01Hu4SDrpU$f; zUhZ~B#xA|f8|bQeq+_18Q@r+<*US4ny?RrH<*R~MR{s!R3+4HRbpMnm`^|##rL!DSl?M4bNt{qOa&2EW7kCth*?947u7OZ_ zo=x)yhaoJ>%iTEKN#tSDyGdO3u>}hq2CW@@1+h#Y!>fnyqT`3v*G$7Rwa_u{p!izU3JBvH;tx^WMU| z{PRn!_Aqxsnvn4D@SCts%GnB2DUO}SM`+vAv+N?61Ox=vcu|5VFvDh_yYoJkSb!Y` zu;vmH5PZ20ea&T5kD8Oy>T$K7oSTPFK%oARYy5sl2q~BG6(<_DRZv-(>5!9yh4)6? z_S?DQ&F%ZSrLuH1v)NjkM`b4Z13c()Lf5~MH?WHt);bSCHnZ!CyFEQUZP`-xGICDx zJC%Fs`$vjw>Oyf^P~q!L!{LG8Ydm7HIkCLLc|Gy%s0RRhl-W%otdJ+T|G?8bP@_I|6~!w37xLLX+fcgs)o6*{=~UD=)1$jG{Y$pDQ73jgeWlBQl99^ zU~m!`vq1Q&7Q8nsVHIj<@LbtSX|nfhFtO?1>8J?gXC_IpB6vvqX@lCcmZ<4BCpusA-q5T%*A%nbe@`=Vc;J4D z<#-z~t^aGMn5JoAzaVQ_S@m-1D~-5CIq5<&?|di(koNZQhtwS`cIm3bC+%A-8;UFO zu)O=cllrG>R(OiEx|eOJ6f<0y+$CqHc&lHXvIHgXc^sxs`&l-D&)ZQ#6i1;W*>|=E zB?nD!Zz|U(N~?igao$X1X{6(9H2hrJs8`&p0SD!Om%F+Z5Zs;Syj`^6uC02R>rSnQ zWjgP7DQYvy7M9Fy8xgydSQ^%_jWg2FPWHC^vdGuHK-EX8Z|XR*J8gGb2f16Ec_K6T zq=NLvc=7q&II&@+H|UA$hxqADw6O!rdo|pM6TOWgTxMjv%T0vFyMYI69*v$gILv34 z9-3ci+-o|QRVl!lYTl;>%N-F>9xDm2bMtzZtS}2ax>x!Il=t6k+jr}+S~WBlxx8NC z;dKA+a-Pi~PklT=NOziFtPuC^^Xvz2Ps(($)NIGE0ytje4i)RY8B$kt92Y*bH4--Q zp8i%i@3O{Z>s~|e-Y_tSE_ZwKx&?0O?ygs|wEz0n+e>(E##&Q_D$_2dJL~ib4rMkJ z^Sn;%2Iy@-{C*Gg2@18=L1fo*2?i0lSyvWcLjP*NT zg)J>nIz!{+?*hR2;ny#_t?4%?PEI)gG6e$#^d$}zZo3Vti0fz8f3DX1!<_p^vB_H) zx54-`SJw~gY;ZW7>F#bN=~Do3#!Dsr3p4-HHJo!m26}oaS8U~ke7fKe zK`A(#6Gk|Yb&IWS8?demhk?Vq16(54bwdp-_oAhiM&3QO;4QU;5AJM3OWe$i6-IAwcUtdA>tB$U@fXPWwwQ3GIzITb~>0Ba#1%`Fbce8wJD6q&1mM)IPbW60A zKJ4+`9G9Nw<`K*?=$*4u^2tW)MyIFyaOoXHud@+9)h@Z9VU*)x-}lWMf)$NnMs-Gl z3`js_Kt>}v-YtGQD%<4su(2BZd^7}WqU>dF=?BTT;s*!6*ti7l!rI!NmDx^ghDUQT zKcOGu?gh4puU$l9PeC%iyC&np(aI0IuqtOuUh#W^s2#PRg-Wq`ExD0FFdx&8?MQsU2Vs{ z&aRKyKGx90YqP1I6XEU8%%;1W=~<9RJ3`Rgt-1p%cUe=YvU%~`6&us>bXJFqw`r6H zEvP99orydKEt-02YPU{43piVBit%4uos^-EN@&cP3?_QgprZX_O$52h+@HYM)+ZgMV&AS7# z+kpuigAnjlSj(*+ChT{vjB=|&I7}gNZ!t`jj-}wJ#M(2dHyp$}dcYkDRJLQz4>k9H z+`WbB2&je3;vVO#=ns87mNAuwdU__=P1?_B_EX5u7 z)0n_c4-Ex1gh*}gm`;34N=IQHvmVZ;EKuIO3-efgAEwse7GhBP0sytX@oEo}lg2RGn>1NoBe-DA9+dFMoaZojs$kr{`G|X(=P~E9~i-RU9XU2EPky z+O9ZNG}F$}FHQTurIlsm7)Tl%7b!1JGNP`09%*RE0>fH2DAfa=p8g$0yXbg)ohKoZ zxl(te4%nyp4}a9j+FkB#>#LS?>WEGC(sZ>LTs9O_UVbI{rApA>nPy*0wNHuySc1bL5N1D}Z9ZFy zBABe+WSXu{3+?C-7%G>S8OUskG;Wdzp0aD5FhTN;`lsnISE@0Vn3fl~T%Ke|EqA?; z>88`rGBmtvH}mAqUGy&Vw&0i8lvVhagT^E@QTIe${$O4leY~60>;LZE!$wDc*PzbS zf$jOXq%o8)2xx-jojxg|S}b+Ql{v4vJOQC%X=$#NHOnrzv+a>6in`ZD|1)m3p73|? zEP=_eix4K5>lSZ7T#!}85FUi~9%PS$kKQ|9VzT_aD1dQywA?mf#!21~++1unuIsMI z6{?!ZW=XgJFc$fqGfTQN@)Hoc262=iji}!h3MS^S?}r2Az*>Dcm^y+1|BS7+?FMNC zX4G(l?(*jfrE-cvgz|iHf0^ue(S#k4AOr9U#Eo)&hq-ch>;rMUAgO2D)2q-vqGV&f zE;Q^K|A^vsYmcUo%=SJ#Eq6!MgKaPZR{V5#&PA=+=U!r>?BO$xVQx}e5x1jtPpu+t zQXqq<*k>z3EJ=4Px?H7f{&I##V|Oyf{c0QiGEXnrqUI`~@!RBWh8#3Sxj9oZFKx*B zI^R%2xKC(jYAlU-YC!!P&d69PCU}YdYCsqHz@_?-$|Je6G`%Xc{wi3bST$svTEZ# zWCo}6y96{*>5~mYP}S;pm9?PH`Re`Puu8SOA8qE!g({hi_ki?40)@-bYkc}Q8#KipDV)|Uw37&%imy>me<9r(a-8omxA&_(Bhco<;k+gQUt2i zZ2e=2>m&By;5|H5Oha($zgtsETHmO-MbHvn@3rpz-A5w2`AmPHbaais%8|WCYFq#2 z#)p*SMI<3GeU~#+kMbIaYplEIJn%vloV{LFX-^Jx0xlgGF*^aDAmEqo4a?V45am<|nF*Z*=C5gjK% zc`qq~RuwMeA+Y}Y)AI>+T`RM4*?gD;`P}JviKu^$w4}`Gj`H4+++DrT1XBwHInopq zdaxhnG4fJCy9huH{IID`C?0qhGh+!dpnGVotI5i;{Oh_10cP^^;(YCz{PC8{(atR9 z?YSxnHkyJf6T=Jh@&ah0@bLSKjC$cd!FZvkbMEuk0cPzI(mq$>P^{q^4No`y&oJs2 zj0bnYmL3)9>~?*4_#CQJgCQQIHgKLY-4XgZi@cu;JFptR-Y^ZFBbDln@s5LVTo>JmBpP842f%dC!xeJ50r?MZO@ zAXZlh4Qv0;FnkIG0vnJ^?_W0#Ti*xJC`hQ9bf1L4;pq=p@MfdK0-n@X@0}h=8|wQrVT7 zLD{0b;L+67IU5_F%gY$~5R}!{JuK3ED9lFF-qLl&`aT7t`k_%E)xmxw2r|4Mz6@Gi z>oiCBZ5sDwdBqNu zr7QGHYK>Cgy?YlN9DGmRv*)?21rq}!lK#;n5>hN$@4Od}!#?qJbayi{Gt0PQzu>22 zBp`Vsd2l!g5Nb*8vWNUL*Q21GLCK)4ElGITP~&P}N*-dqIoBdygei@>slw;n`7IiK zCk`o%zgT>7awtID5wVMp?5C?*C(A8ly49E=)QZYS>8W%3wEGTG#cG+Zg^VgwXl7Kk z&Dhs+1idpTOA3X=)=L>n%fBJzm8+DVI2EV;bY{)D`*4EM>|M$M1m7;Az_88x& zHP5YTi(Ol0Ft0{zdy$kly#ise_U8X+0{Xpt-6;Qdvesj+Cei+TkS|t(^Ant}D9u+e zhTI>W%^~u%SK7tGl##VUS`L@uI_;+eHOm76f%b)e`iX;^YPOruztt>SHJl{72xKhT z>3NrO9{UlV-@PO~;f8w^P6}Ak!{&ZcqGo<)|W*CA^-L+$5tO68M`mL2}`)>{UO=JU^pJ&39FTm+6vWSe)^ zw{bQvlZ3YWuCWX_X_NDPw+yHeS-x26rh6ACcP-JAg*5TK7VU1YhuA&62Vx14^auAY zN!KQ8@lkPGGAp&yD+jbAVkf75*XM2b>2=N40Qx!-tF@yQP;|0dY>7lGmv<_f{y{$!(lQ%d>A87?$=mhp_SO6@33c z>HmZ3gB9bWYHrIl=AOFE??P*WXMg{G&fWgI?d*c^Oa4~F>~4fWl1L$1&}~|qWh7fP zy=F@pyk>a``&e~?e)_J2KgztRh!RnIXQdf~UYDNriP!I&V(s&bAI+VQY{ayW>P_Iy z*^>gFQ}HNGZdZ$hz@x(~g0~VC2&XvX)2N<_E3bjnZ7B|gM4dREa-;d7JnNO>O)Foy zzG-AZ`s1129ft?Pm#+{8nPnN;&Q-T3{6BlQ6dG*2S{gkOy+FV-ecwVYWJ)hrdn@4I z&R$Y#4JhMA-G(r)NjIH6w!0PKyr@k-r2E&4RQXEWx_x%b`S5##iGSl7Y5j%Xbl>)0 zOHS52*6nFq5?;kq@ z=ad(JVXoCUp9b0!8nWhYxVEb|H%wA8t2TE}`_iyiC@)C|zijIcZTfj81<3QXh&lWu zdu!&Q3HyH0HpCpvLFiudacsF3dOTdUxX!VyGSZ zm{53Tr}qERjrf0Vm)ht^F>xTF2?)Ppl5D}>oS-Ehzxg}Xpsr?0IxeA}?c||pDB&k9 z8W_ltZ8rt*#M5E`sZ>7Y=a(V&1DR0ixwd$M!)iN@H<1Y$*J1J01Oz1nl=^rdKT76i zF9gP8!vo+I(=*1x;^H9b*%7=C6DzYCqTibHr66Lhc^ZP5le-*`a&fZFDH6CeJUr}p zab!L8P=KAaJGwt@(Cqr6vS)w?KsyZ0f~vq?rh>ie%U!$1!vR`8awgYJZJg726B1d* zC`ab%e=jLs5YYsU($~SuWv871zIEMtLZe+o^2qW;?%6Y209obfp|}44<9Bq^BA)vB z-ND4qkWEd-TX*rbk*T02Ky-{(!rkSqH!KsIi3kj&c$((3}DCaOS`N0?aslNGDs0Aa0!9363f z5U^&}uTBlblQ_eG(lFOm;n~BF(d2?0xC8|BD4KJlB?d_bWE8}t`f9pXtyR{xdp(Sm zdlM#WsD+HfWTdu~C#~p`?WSjIVhKd7Jd1zF>;fXfdx%(7job1SIEQMswYZGxDbCOT zAS0_7T3cnYX{J@4wk7V=6+X_*Yj?QJ>@@ELTy3cCu;Ig_H8Nc;vA$4w46bnj4n{^S zK$@Gj4?K%VChHD^zpKGllAou1vpC!9v_iUZBy*jUgoOMt7|EznV!0cNv+4i&GhajL zC9*#XE0vCI{Uk0S?b5Uhi71tddqBI;5fK$gNVtI>B^Z+`>Q3X2EN#ZbeQdfmkYtWR zkbwM|j3XC<`N^zWUtM?os`(XK5L8S!(&YDi;Iqd=Ogu>|Ua4OKf%Od0mMFj<_w*k# z3Ej(W$k!i7C z$b0ci;j}2%Bo}GXU)eDjoq)jo3=u*9-j%bw4l99NpYvfzXHrtJSfUKh(VeMXFJG-L zji?F4p}`dHFnR_E;-1x5Fr4I zKy<&Rp$XM4v6-)riSK>+bgF{jvw9x2+m2Xk+6p1Ne`jhamtF!nI;MQ_ZKHuG`bP z07fTD#f79oXxn42^^|~uB9eqNb9q}dd?p2oJX>ucwlM#LRnJc(38eS*bI@RBX01@K z#mVk1)o#me9z+d*fwlumh6`geF*b4+WX(-PDOckh&X#(m^znf0_23N!)njTxzz$q= zi=iTw45KYb6Qf-5Sk(;BYipp$<+?S(goFfk0ND!wWG{;%E2RfY`A?Amj$5X7*)6); z!N|dZZPCSaaAOO108Gk^jMsQAqcuV+I%ImgtzEjzanTg01BKS_tPmd?VqL_|7ZBWA$F!Xq(3E(pH~ z3rY1!NchBum`j4X&;Ilq@Pf6zg4j@2q*F;i(+^0CplQyZW>Rh&=&f(t(S~iAMYj_m zBwBzZg}!?I8sa{vx}QBAMn6As-I=-1D96+Ko>K^fe+_03W4m0&!#gZ;{?I5S^4V&? zl}`*NGhR5ig`a@)d~R%fwz5jXAd<>x3(qZ6)0A~}C4W8m!2iuA?!w`qP*kjRz6kKR zzaTWjOv`1N?qdnQs72*w345uLm$XhQLnB1j%x>Lz*C|wymkV@kvQ>DJI4|;P5uk z#JXV^C8pLeqeY$Mk9eR3}A@y)qV8^#jN5er@R0V=(Ug=V09*CPaGP*sa3I9!vAa9QJj`0A%n?lS&4 z4cNlZK2ErmRXpI}^=;3To4#su2T?q_FbDKlx6U~Q*s~vW7EDY`0^$x@+5`#bz z?Z0!j`TTqcV`&=bfRN|+MvU_g4*Tz8E{Ttazx(k_S=9LLwfg86%{zH=yfS`%InYe4 z&`elh5PxK>RK6$IXchC5$zW70wB@sXtPdi`qR^fL!JbKoKbZ0FcgwBdklIXZ6={3^ z`jFtSDlrvaZF?FSE4|`!RWe;>Ec*6rswVTX+m-`iwN3zZ>BhjnSegMLfFHXJ!nHtuFS&1 zQ@i%#r6w4NrektrFLsO)g9+J*Z!y=I0X-8>1oG5{b}PHA)tK`?eKOk|F99??OTfwz z1Bc2uxYd+|Mn-6OWF#Rmk)ik+YWQ>CO(qv|pcu&LBTf$L(Se?a8s3>AVsoefgD2qU zc$$x{pr9ZxFOQ#UHeDqF#nFdeM;c75aiK#!<@bm2ZXVmdgSs(<`Jck?!Jz)?GSmBR zyAmOKl{cK=?72Wb#OPz;;SL}?y}Fve6_13vY?RY*AwMMt*7b_d@nuYS&p6b)YB@;i zaWVx@mwXG=N@RfC*c1{?%gX@Lt`PL~5^HM$XdHYwg{q_XKYeh{#g~i()5?z3)AGUEEn?-wh(v0Vc5M zL?%bdcLGs5kCG&@Y3B%x>IK?9t3P)-KfnPy6N7ekW>)AITX4P=BQWJRI5wJHx&8f- zjP<4HO8-&8|FeSdV)K7h5EAP_q|>XsXt#Q|cXen|HptX(US6OsREkED!B9rR`+-K8 zoz$e@OeWTvx56eQL_)<{Ivm@=oye^@y?!v=g?~x;G_;_;8^tZQa%0L_%w{!o?dVA z?>F;2wkyQG?oT^0iXnHV)S|^k!>F{xgPY}`^0uTi0b4SFe9ek2N>Dvrd3j%Y*3)b~ z4$GoZoK`JjJ6_~HFKs}b3p&&{WBojmv^Ecfna|BFc7GfWx_7=~pI;c19E1WW7SJ`v3y%Aqo?PSb zcyIm&R@M!OK}H-6)GU6rcR%Q5*NQB)X!uri+A%b-WB7Za*w=FNr>~^EWLL~)=y=Jd z>DivlcQh28RP(q6tm!y|M19?4n%K{8%k>wu!uPznJaYwFbM_8OJBJ1A^J3>EwjN=lqh|*jEr09XFi>gdlpLO%h7Vj>}>K0#EC<;IN@8 z>o?I4nuvvk&%p#!&;(C#zT*D7iWRA-v+3o%dEaE#>zS<(EctoF_3&RD*Xj>?>?}!l z4*!Tp9Ilm`9jv_nuP1@aC1hl9MW$E$NwX&g4y`n*@}zudxU+9B(8zrBv( zv(xp4y7=?t20<`zrGm~uLxTqE`L*(BXY^MMZ0~jIueqboGhamIG>cBgPhV0_jCna% zHl)c7_)Q^`sRwE{*-DFM^k>$d@_Ra~3RtOOFv@Z*(YEDtK!l3pD=}>0?-+Hf!u@#n z)7zzym)|6Uw|()EX~u8dD)n?Wr<-{!^;D-Fg&JnWoKO2sHqe|;`Z8W^Z$GEos(gTo zO7YP9tz&N`)R6aXF&I8Lt`C+bHdGir%wI`MG+&uW%&QX37 zSLU~(dkEy|OGUM+r!$t~8$)@*XgD@eI>riJUo=yIL_sWg0q{U@@CV0Z4!QBs9}~3c zH6tcF2S=DMK6#8Z=Ml&u=7~(OI()~Igywy)|8vjdxtf|O$W$l*RNzF#;x6~3!W5O! zy+)cVC$=*1R_zVuwkn77q7-Wui?TkYo_<`xz<6l3*w*^QOW^KEfiJ5FF6tAY8B!7w zfXcMm+@_1pdS_#k_gybfBC&MVx`ltP^jA1fxKt~vRyKI4HZE=ts%>BXdZwB=UCn9Q z6@8COx9pDO%~|346XGAh0d%#r*o|>G{PXY>kY706c^KjkTMc|@kZ)*=URjkI>0B}h zWmRHv%~+eLh<>ZF1)g>7dg8}^{77q4qM^Yq+xuvUG&~LwLS}r1xv`-G@6Le%J8gGR z337(=ND9cmcpTbXG3t4whgX7xAk&AwXD12;tTjAV3Z8HKKR`aQKeQ_)C1Q{V2?4&9 zKcy7-9L=uzpmS?V(xN?7I(J#kA86j};lqTUo*rT_gpCfHa+I{mYc^&r^ZCp9=Ma2p z=Xep>_UXBh2QDf>LRRCUiWt;k`dWzrs!Kc}ru$!u6l-%1WUXnj5hO?khlQB}K?AOT z59*N|a$GGG6=&SuPcKkZ^EULSjg~+I|7wCLCTkr+iQT{p7bT>olUef z{}_~PiLQ9nE+fZ41MDFbSh{+R-4lNPCpdp&CMR{PtVd*Bu~8haJOrGbmDspeXilp0 z^{Z{xM+)QC$^C>}UcbGEo(5glXr;nPQgwQ%ybKO+Uj7HV{~Hne6sDmGz1$9g6?-hl zY*O|L*`?6Jt1*&-VWD36n% zZE`#CJWm(d;rx+8UW=uU(mPi!QUOc~>1fRT5wW=KfCQ8|%--?2Ie!f{X9=yfJ-wQc zWzzFSZJ0W$Gjc8S5(O3Y4p&zO)o(rbGIqVw(M?4AyBQ+9w&agEET{U?V$RZ)>J_VcV;e*)DaT(h-HFrmwI z0FGCztdW_61m)<4d$QU$aZMI3Z$`rL4!Szib~?W+Wp17d9=iLVhYp_jr2{qLj1-o( zmRpde8xyxD2oBd@?i58mv=Fg4SRt9L-Hit0ouKh58JJI;0>OAcYwNdWt${dhg_2Qy zKbKI^@_l)mj_3fe3Rr9>TfR6J1F~z^E#7$ApStRJbtaQS>krTE?0}mub;vvMh|CWHvL$7(+F|meG*s}p_Ufn0Y0eAH4 zi#srAFVNfHCpZaWfUW2GoDcU540NXoS`a*V5I8y-q}y^s2bgwraWVBfPBMBCmV}9V zS8M1R=hB#tCe(U6<7pYaE}#F9T5lvElH@rf14A$wMf{)qf(LM5l%I8Y(Z;^MZ~YNa zes(mHGg*t^05Jn2c@k{dC9=Q=ns;&3Q#eHU9*`0nxZL3MZm%EeM(qTfnh^()cjk? zi0|Lga`W)dWyZd~;%y?vIirhCxp_7?MnUTU{Fc(g)`4O-%K|?@xWPCUcM25skNe=;ifPDvVOjQbB95;|zbn~=tjEIGVPy=UYjG^3*R2vQ*9hJ74Z_b>RQzk%7 ztexM9`T8R7q4SElM0F6gIW&w)N6PDh`Hz6T)z5{zk+;%f~$4)M+z7h=OhB#I z;G7&C;1P54T(xh8_X?jWi~+qa#foy|LWQtA{4cV%H}=pC&}gb!?6rYc&>HRL%9g2* zOG0NGR3l=gR@7|%O1W<7nz&*!jD37ug7@gEd+iuS1gJw3IUn%QB zTv?fEG(~0bS}8%4pt#N0SJE1UB##K%kp0QFXcWM!<+_ZC^!)t9hiiCUfTKNh-w^>5 z^MSp%?l!$C^FC#NX}JdU<@y|mN2^$u5{F8g6zqoRf0DZZup6}oH}~A^AHTk+X}nLX z-LiryB*NwBhocwUMRT90$dU`%u=AKS(~IC@K>Y=fx`6%Vf4T-DB7o6}iqeX@r7sY( zC8Yf)tC$HWLifx}tMx&?y#w{1AZy-~zv@#TdKeCawcL2!3ki8$g&34mBB#6(ZRsNjOkdYV$>EvMCRE{nUM0|{A;WmPxSmovJ3+HPM z=0D#d_SUj2f$$|w%L^=I22E$m0`hE`WWmbT)^ftAiuq+u%k|K;I&ujgf^SBBfc5x9 zcc#XoqNm|gd83b)h|-B*qJGX0Ri)$PB+C%lUqWGErobiy{usWsCDwSwKWH){3d~{R z({n};d!MP`A{M1?Qb24Hw0S38q7U_Z4QKoh@)eH<*kj$!?CvuMhdcjDs+g$Rz@XP> zJ_6HhCM27HG0Jr`gk@I!CNsYebd3xX&5Ri6WB-(G2gQ}aP@$L5+g#7ts(x>=Mw z$d%KyyMapzN9AgAjiWrRb#Py7xxFTOT?xsEj!NhORR6cLGlI%~{V(}V=NefdPf^Nj z)NrLfxRbOFTk(bpxYi@%P$wmH=lU6ceqo_SUo!WzX_kl0R|jl1sPS>bngjWU1Dx#)hp31^5XvJd!DNh#Vt`o){H%4akc3cw+>;x3^aU+03LMfpp8pz_N{OY-}-o zJP(Xg>}4U>^FKZM{vH6TpDjfRC}qwN$>x2ZLfqIt&F9|V-}ke&JU>`5tl9qluQ7ZDjnwu|uET63RBhBQxiA7TpMk;oZd5hwU_Fn!%A%X+2~MV2IjQLb-zwC=Amy_^RK`}>?lQFa zaCm1q;`alvH5L$X@x({9k~DKpo>2a*J)OwkJ~hO-6-CC1j^Nj1D%a~0u%Zr+6j)=|5eF#hBXy6X+c0h2)!3E6a}ORh89Fhq=_`? zy$aGvC_)U<3?KpqL=>b;@4fdTh!PZ}_b!Ac5<2XS-=E!m_RsS0=O(#x&&+ve<~?)I zoK8EDEBt)by=nLJyb1Wzvki3()GN$t>)3rsR^eTit zXN~3AxgOj)x^2~E&OIqH!F*6Eiqm$^=A|W``lK6>*wZ^3LRh)=)1%~zhV|5zzl*o! zZBF`$4$842-DRM+dQ!Dw<j<6jS&95K_ z$CcNyOK-Q{g*B<1WF0SxDgPKI{!dwm7X+&vmwv~0B4alXF4jZwZi1OE(Vh`R5UhYQoU|$=m#G} zZv@QC?VQbgT-|+mx?Rk%{y+_WoL3HI$bYhR#zGp z_h6PsPLl$zV{)(zvp|-~LQO{}q%3N-v=wAi_4a(-#(WRbWKJei6W*uR?6_Gr>|DbL z<2Z2ka~Yn1p3{Ap)ZJm7Q?Kwj>NSvupUg4Flm2i}#{4p+&}355EX@ z;Nc!qm(8YQQv+Qn-++cuk3WJ*E$4fynh^e^geornm;Pr;*V$S+T9qE)&gH9nlRlaj z(_OLYd+SFIlCr%xJIKnGaX>EhWL-|nDlS`KR`T8H-qllTeowXffgMR=OAMs3Jl`%j zMvX!Nxa%$Lxb3Cq6s-_b5L%}QYuoNfZGhH3uJ`%fxGqzde|#a=`ZaeIg(vLu=+@oe zVK^ltv@X5twu|uy*eJl?HWX4v7^5e-muIOmr&5S9(5-prlkVA*G_7CtW;z~z{`-9s zV%A!=G6TPzO_7&=)jQj`BHo8>NSBxCHF71(B6#X;N0xJ_a2*Qrw64ybA0UV3gqktj zfm7ksjX~7P0K0C6$$CcZbS;!mLpx9Lb(!Z5PmT1eMI1W5bhHL#Iarxiz2M>35U{*$ zyq6v`eJ+&NF@YVh()N^7R-5v!Eh`N=tlm{P4Qw<80DrR1;U@V^uqoR&u@g{25lp<2UMyRaQHSQg5P^UdfP1BT;SDLeIk+R@V8Sk!px?G(Cc%DcKb?{vkP%X5}j zXUuoaA3Ia~E|5?&;>U5w=dH9Vxlgq8&xYAkiKJ9%?9vdTCOjG)@KKc z8)XP5Q+Z2cirHEKYt}g9AGL0EC5f0DIxi2;&K0f+;il54hMLqbtuPE)#}Wv660wVQ*r)$nG3vo$sPxxc}0Z7zJ5HZE8dqnWz7w|FZ^ z4sgb;sVOJpwRV~RSz0>lpTHVL6$tpxTGzB<&5q~w*iXq&cxo5yHg+kdhh6sGGkqG| zEQ%6X!2Cf@4XRpMJWiDjv>a42CDfO;P;+`srTB*)3dpJWs<~Kvf2urw)W4QX?ehJ8 zP@gGQDzECWS5I5^A@*Zp#&Q%0RehNPj|*+vgH4+E zdh7bWex>`@>BlV^q8vIVGX^ZuaOKi?(>Oa>PMC|!cULHA-$N`>o~#t(187a-sZ zL4{T(LPXI>Flx8^aUm-PWIZzgMi%jW6vMd(9jz#*a<2ul|J*dvw}P9VjPg$4W~cy^_ZHE7A5|@98rHrc&Wn`5~*INm38&4-v=!+LV5Q2 ze8{B@;MuH_xzSTo>YAE=lqBf4_OUeC)@^dP4PRTno&}ghwpopfg6Ay}k?(8n<3e|; zGcx8^Z=^k~Vrpo3nm4evn*3-QTBP+6NMW6?ksk`~*Y_j~OojO&W~Qawg&{(|zIytDw|~BUZRAqmD4AuG z`?;j_<3f(%J)(y17eCBkl3i4vJ|f6wvHM3dNr<2|sJuM3`P1BYN&_J#5~XspQ~j;x zc^ocmFqI)0738=g_%7)sRZFW;cVT{sB<%nR8d7QE?tWiD+v1gZolpg0?L~c~+#^eR z4d>xpY=yI)XlK`{%~WlGev*oVREt&I+qX%3T{P0)6x1?x6$?n--wB{XtintyE zIjdBe5k3ZBVPR6^(&^5{9>QJpQ?-w;zao}_FPmF5z#nbEBfsV9-hTU*mQqdaT2-vS zk3r|m3~7oq)=`%?#m*%ADZrPyIXtzx-ixSZ7;SzQjo^bH!)2={_lGu#a`cH}RzHmJ z)0sN_{7gGCn#^59b|p3zv_9Ly;J1|=XWMn=uFLkLjCC}Bf*a*?j?Pc$BOkaEJs1XX8i<`gO7aD+OKA4GbBDfTIS_Na=aaY78 zbz&mK%j@WTEK@l%SUFSCY*O992^$ij2Bj$E2lQix!{P0XzE!%WrZKVzsjS-fn`Jdj zYglVS?JY%a? zAn5Fuu|q3Pg-?QdhOoB6qM|PgT~2^O2px@vhLFg}^{a_OBuiheb$;I(`-ppz+Z>}3 zF_=|a${ic4>9aLSH!)H5qs&^G;sFue6~%eV_k6FF!Wx%uTz&wS_R^i$GT~gExVMdb zl@dxr=c4&UZL{8+b8~8;g^|HOe@f*4l3QL4iYhYpyvdVsOG2Xera}<;c1vAL2ZEly z(`$F0?RFw%_^X+?8rLTazkfen`Wi)LZ^HYdyPL#rq0`ynsYh5+(zV_plEiJUT=wxyEP%-P zT2BJ+|NL25;W;Om|7&0TdHKO16W>%p*%hI?2`kkhI;1SYuX|T z=hciZHJ~Q{^kDsh_VpiO8Tzkmj&_5*;1Zr8=3r=Nx$3CilP3|&%l_Uce`)##kd!S* z=^1Jz{KD=+m2QDiihM7CqW=B`lUldfu~j)Cvl<>qh(W|x+OQJM7$W|YiM9#fAZJg z8;@gJUd`>8n={{t&wnN5e!{u3!qgVvetv=#w}Z9KQ7>z2y%<`@LBT3tzkb!z)umDz zTI`OB-UWiecm>f134W@p*Zh(i<-vl0*aJW;FaOH@7yFOd;E3UR4?W@KCCMA6rjoQQ zEPTF#4iO%+#mcq|6pW0FO9?vK9YBQ1R-@@AX#55@5G6D+>YWOyRFIZ-avLWULuZwg zJK5c4<&zRXk(2f4>!U$OwiG~^pkrEzgSh7M0*JXqNegK&SC#tF+HxHZUtQe$GNzJa z7UR3gt>)lhT`&M}RbjznP-sS1EZ4*OpmV9vFx1{OV(G58o%nXc7t4)5kq%L|F>bwt zXeaf(V_3&iRsSdS`DO`Uch7wuUsITaqZ8IjDJY1p)*bqKf32(oONcu(Dmj!rs6*fP zfbJ83Bcu@G$HuSW3I`4D)$dc`mlt)!z^@)zGSfxjP7bDycDv}wLz&ICWC^Z%_ijjJ z3^mNe#Is<4w^EqO)d8WILp<>Qad?vPHNcm;8W6^NXZzk>Ui0)cFnn=gAsO=UqB*<$ z;yiC*KBGHd?v$ySq9SZ#95T(Nb#UW* z_tH>)!oXa2gp&SH*SSHO6CZ6$uTjw4OpL^z$%D4$J0#b~e=q?iGpPX6WoEY2+lXMO z0l2vV8rUCf{3fT_3H$cV{kD)?T-~fDIxjC}B!{j>@Yk;z8Ly20=CS3r7kytf7eZ@b z^fo5E6B^newaW{I4^aQBy>CoIAg=nfoG;P=d)2u3-=cKB*E8OFej5lWw4AtT#{mIC zJe;ia$27vSq@sb*3(6cRFfxlO1_puzw4O6y}@1^QDPAa2O3L$sSgg7H>W!CY5TlahK_+aJS$=Ub zCn;&qkaMg`(ftUI8F_$lU!iB{5_i`12jG&W3Rr#=$cym_U3VS&Q0k8cRDJ$xHvjpG zosob!w5CWG>6$zz1|*Ev?J!PHTZjk#RlH-t8q?R;`subJpFMy!7BZ^cj_nz&&F`Ny z;-0et&iB4lyf}97`TbLA<7cEp5s*|OXwqNtI9DK?C|q1O2@c03oXZ2m)6!Cl^7nn* zfc-^OU9`VM1>xmx201`fZ;+65= z7COOiy=If-?)|KBbN8Ud7!Z&{hxq9_$(zxcblgQbWtjXZ4fRU|?Hd4ZzGc!E%aswE0ySSMF0lW?uUu zs_pVVk&@EOw~hC}MfHe0W+eUvX^mOL`KeA+~#98qJ^`r_7~Ke6EZsC!Spvr{@bT@)sq3yO$@nUw(l zJu3s!3u|jJfB)*KtCKHjIcG_Q&)JL=-e#oa6F}b-6(!#sdx=gIzFrY@?qpK!e8-@W zwv_*2rT_1r)VOKW&=T{u?*4?iY~-P~ZhnxaQm=rAOVfh|^IzI3oreIuh- zKmsOVpENY|A~?zFwVGFX*@$C}oPxqWCJ}Pg+gnLL$u0?q>oD5|?9vd3TmC8yjd6D` znQ{)LlC!he1x9J4mZG^zwImss(&iHv;`sQ^y~SuKEz6;RogFa{FF66K$LAX`f;KcB zTWk-}2f#?kGytmwcq1k;F?4;s!wU|7+Xw^4Q=lO(48&KFcBl9U%GrXwm5%IGH(EKX zo>F%u=z!Gnv@Q7Fxh-wOh+=YC0|L~%msCj!0sqec!|u2}O@>N@pMH`$OrpD7)g2A6 zKnn|6fU<=9ZYuO7L(=EdFVCnXoj^U)4P6bDP}A?ybMKV0WkJBKU!JWI9NB*Ln>rs~ zc%~B;`B^kB(jnG1W|EVIMeTD=49vxa4-Ri_FEqSiJJYB`AbHO>3e*->dQAOB;7MXh zD%pZ)fHx8{z~*X{_YyI{eqMKkA%Ub!H$kT@o*`A1m35Ldgdf)NXPrzAVW0{!GBgZp zLFy=%jM~n%KJh{zdI8o!%fS(j;XOt8Q-fVVA+|B=mqJ2?6}DYU&F6Rp1H)f7z!>F^ zm&yI&k~2jjY8o2@ITcgwv7TWPEWHmB@S%DmI!e0GaMa%a4mTwdvCYq&;_dy%EtgM>X z_O#*O-%GFFy(8C3W+b+rL*@YXG!sNaz`WDbpD@WM;`;hvuk|6eV#`xOdivSkU?K(e z$1&lWOrd^TpFWEw6yyGfTMrLY1Jro_U@VX4PH`Q8Vm*#_4_)x}Px8n2r99+Gl!iLH zx|jq7=|0FJoKtR$jZQWy?MxT+lv?r=;yixm0W}NDtv6gyR)$+-_UpP2v>AE8=8GR7 zU==t5f%)*k`7bKxC)f6N*upAvxOp8YGix!Nx+ozX#0Azf^ks)Y#y*QaWCVe>cmE{6 zg8GYQRsLZtEF4rWE2AqxC2Eo?(ZXB-4I#0nyb_L^qa^}!Wu>JN`m&s{vC~ZzH3h}R zVMRqp<_awrC!1My8n68jcv^Ty6mH5 ze7*V|1UYP8t@X@L?Y;cgQksb{HyfMT=dk`VWPjJR$Px^`>m_v?(+4Dwzk%msm*!!t zTkJ*H_{J3T2$51-3Q=hd7`zwi3gf#zN>vAg;R$llZ+!RJHqfqTW=|}`awjW3M^}2= zxM&>aX1a2mu-*HGuJEJgaw;ww9jQRivTUwtz((|OWc>7cT}>*zjmjLYqem62V-Wnf z3CbVxi{C{%g98S$voqnXylZd09n+P->TU*~opCkS zPcPUs(@!w5A7^hJGeFvf-yws5D@g&UU_NZG{bhAA@1*n^>!ULF{M1$SJw(&Zl*U%sHApL2lTwsACE*$3{^CuU zOUaVzb0dl;xoIh6hoSY-jVhg9%`UYmj;=kS)pSlma86L96X@!aX~}VX326%k?NX&qV(d7WK=UE zl@8a1E12Q#LizXniA*0&xgRyMGFn`HBRgzK1Qp^jg>w$ zv#WFMuZfDpaqSe-^#@mYo5o1rV96F9)`jL0f99Wwvg2~ycB=VIJ?qE|M)s7eI@sqb zV@d`gYu<=5*KOBatGZ=Q*Xj-)H5k0p<6j3IoBh95x%j(i$p7O~^z|bL;<`IvSKR^w zz!hPB;ebB`M@Evn%`_TrNaQDOOjPBK@Y7jIx2-WsLLbt8}e;N<9VWrA8q5lO?O9KQH000080Bj;+Q+{>m z@#GKy0DBPt01yBG0BLV?UpQ!AUukY*Y%XwaXRTLvP!rCV#|8=kq<2tylis8Xq1Vur z-m4S^Lhle!+BcwtE&&9k_m&_C29zqj2?7#?6pd!7+GOCeH*nkQD#&mzH*e<%5#|t?)11k$gdEOX<$p>6180~FmUm~JQBp3%;byjOsNN{Of6paU{{^=N;okhV?YVuqm{tea zWqUD2$%A{j)M=Qijf%UKrfS(~DjBn$Tp%}()vh&R(8a6X;>2r&z^}&&T=vimQyyNy zF}_S6L>P<$fe%Ff{L)0^OnmGKtiN^kFn_z$4=6iXFT{PPl@?Vrog(L&S0BC5IL+kW z**NVsEvvoi3tg0U@ic}!BB2G+{I)0rh=@;5NYFGPn6+ccnMW5awamup;l_i)Qc5+S zx>&9B-A*Qo)3eZV0%#4T??Za!wy%Zzx?@GaHJbHvX2<6YF#R;^{kxbP=?xQs=)IfTeN zLxLU}zR(D$&Is)YR`wfE{H{7{lUTd+m`sDUv#xK{m-j=N8%q9-D6qMIhQr^cOs?Ft zAL;5RFnv(fU9Tw=RB`u%jEwCObFn6j>v#0<`Ax&42uiIyP;NAw5of_cu>dTgdlJ*4 z6UK54+U<~N>c7=tIZREkX;6(Q9oFAaVe4#$_=rHM#Vx`dwaqpS;d|e3kB#?t!FOm` z5;y|zyHre>TF4!P&G>BK;8!_?;6g#;{{qi{u#%aaJ09-160XdNTWTNw!v7Lr?&z2a z<6i1zZ{uoO)Ipw9sY3V{d1z2lZ3hPqg}ys-A99q`Y`vQ4w$>W>O+(bJQxw!vLo$ z)Q9H;R7#(3ev@&UEWgHR>E;MX<|d~g>)WAT&YqE>OeFh}R;&^vS~FD4Os;jX1x>yW zyreR&WIPCY0Zd#{nP0EMy@Z2OmQ>#N%W9SE{@iJ(V`g&|q?d|0FA7vp^rx*f@Badg zo~T_4p{;7-f@s`dSSXT=IPeSXtXme1QIiPYqvo}AR|6!w@SAW>uO%ow7=3y68)0vz zb<__M+`K$HyRV{x$Bc`?ZnzE}^@q&8GpHGIU?xYES0W_*?bJH#j7j3ge+_PYP2{z9 z7Y8IKa7K9Dv$4G(i4(JzlJJ@K%Mxi~f@rAoXdh^S!M33v8UjfsCku(YuyT$w3kL@= z#7*-<>>L9bRZEF&d#ccd!~WhL2n4!^Nb}{z3qCQTxEu|r+M3?x-`G%&YxZ=!{?F?I zL1F)PHqJ~PFiX6$-g30Ch)7}`R_LVu9h&!5YHA5KX1g`_a2yXFUP(^S$AHSEjHV=9 z2ke`M8~7j^&Qv-+p){7Lf8FkVuPY0Ksg{x}7jK?P--(t=8nz|yWSz( zepOZ`RqJ`&aTVVBc;2cRS0;egbr<|V%Q#(Ckz38+`$fyX-{#Eg160aBsXDu1nV9%} zEgv8%qO?dZPlEnRd|o@RYhI-y!!!3B!5Cxkjea0;=KGjQJn+<~rAd;xEjtrqS zV{ZfcawV%J+;jt;F3PCD+s+DUqm6Uk)4C(crtI0_(Y;|R5rMB_# z@K9D;85wn`yZ{2dw_UybKPK=QWD!O_utNGYdM*#i-q)!nOim8|^TvI|v^$bu_&SFX zUWJiZ2`d};M-HC>Z}f?9Vk9Wwd|Japek0{pk;J?y#C=4@lPWCJgC;K%f z>%80*E5&#B(GpkM_m0NfOk#Ee(&I?KAt_t}T;hp4`fX$M8CRpnsM>l(L04W^4N;*D zV0@XNcs)=H6-(T(7y#vN9c)uPZYpP=s-WzjZ@dtFvZ+GYaNQiCdE7OfIIgPX`&G)E zvR=q=oq)|%47o8@aEEjVrNXpCf^*ar#||&hcfagDorJl zvEWk6h4!aTlXlqUNs&TC%QZGRdLg#kB!XgK9(j2RwaZ<$KPTtJV2nU$3E{^Tz4*st z)mN#@Tgyt;;D^p3+mm++9CRlcOF0>3ePT=>4j;6gLZ4OYeu;WoyH zPSiREd?)%(QQ{RPLBEW1l?bxO7w0v6cY!oy(mSQi`d~1roL@d9ku1}>AJR?ClN?A> zwz(-1cD`#Z>GVi^q$si-_ndaJ=ZetqbRqE=EnW?>4mAWn9C8wLaYGSfN1X3MJAM^M zjTB$7vaV4%2RFoZg+w2_RHLi-d!4-3Cy@1w5fi%@O|6-wbq=@Cg}S|8pJ1Nc8lBH2<_C zw)piCsbj)X08cgucbe}`DZ&8!FlW_Of#p?$#a~bV3&N+uhey!>0U%A^5kA)9x0s^H zgC|l{p(`gU=UY1Ur60C!7toJi!Edi0@76a&oha$AXnDTr9Sjt6yv)Eo7j?&i&JQXB z*8Z$z&z+B951oI1uiaWkkQGPx6qXN7f4gKJYideV=j!itAHIfL*l$c48gX9&$;d{h z*4p|?#6;bZ^RM}MYV>=5eCKoJ+hWs8F~#Z@HAv7x)2r&tHDp-ht!9tzSMI~YW_x*N zZQVKuBFG-25x2Tlj!ZYc!J|PIGJv2>BqS?KN5Xx`X@O6e=Z|C|3gthN*Ua#1%sycb z3-s_H#bB=(#H@$d9aY*WQ3{Jutr>7lZpGqtjM zarXO+A%nf~hvz{lwc5GJK-vj|>hbDSN$6I1w<_*?xZpeOxkV}Z*kfSyeCpP$71!k+ zEQnbxrnWY*F$5c1+7S3)tnfq;$0N_iDpoNKi)sUCStN!9?md%Ir`DjU8ccZ)4ozp_TXAh$v z+2m8GU7heg{c(BIzvI5GMu-oqG(Xqb(F0VjWIJ%Gh3aQ-u>IgfnWx$2v#T}=t%d-n zB4e_>{Q!-SL-X8+K}ktf({tUC{0=cEjt$;ZGHxCo!5#cTiX1}w__kV&iOF@;<%LeY zs?H4hdGGdggVU$(_ceBLw*IDPjWFR{3AozPjw6JI=hOl3f8FoxcT1}ZZKfeBxI*A+ z>@&3f87zbx4r_|n>+kR=Z%HR_3Ts8GhMmB zUzvnp7Vj8I-A~3-c>K*v)yD;mvussG7K}S`l%c)m&fRQ`ubfYKqKpYeOSYpewNP`nb0A3c`HP$B_#(9Hr_Kqi z;>gq@xus?2WJB$;o}c|3o{40OQr+szsnOBvVTk8FwsUtf@I2AL+dT`rLK= z_4f77w0`*g1LIWLY!H<(VV>hiM99iRYdFOTTN3C4{J)CG#IGU}^?h@8{40fsTK`I2MrY<^ZFPlf>A24M?BN|$eIuK3iB&tb;C?k9$TCSr2z>bL;^M+oPa2?U z=xB}Df4TY7Ef#MLFGXU$7(habhY?Z&8YGz~_*L{klq>q=62l5F8m*u%%$mnT1wzWPkuC`DJsK z47~7m`dZ)1Boq;dcw}d(tJjI^?(IadOXEK$vyfOIq8kqB8A&k^`a(O)M|M5s=YaAW z`Cd7j6IJGKS z@BoqLFW6!Up@~51nH$dLbT00o5n9v{ARAp)bU>`}yPS4^FnHj0D=Td%HfkF$1cXP> z=rA5ntXbLw_rFzQ^3%-b5pzHl6%HM| zI{i9m2r*K(TE6s*{Sp*)f4v8hs37THgH9=oguVP*am+)9*^LxHKKsNts)_>9jvFo= zYtG?YBz?qw?)6v$01FWDUK6jrAChsU1$|ZwuI*A1!@^{=D$C(vG>fv2GB5e7F6%sOmL?r#HMFU*?x#!2qEP-VrwQfe#lb&q-f4B;Up5 zz&YAX#nmIEqE*Z7w0VBhW40_PYTs?_j$9vL) z^FlI2<@G^;`jlq~qi~D3<%gsM{zao#uHH2Od-z&=n40ef9z}CGLrz70NSgZY%-}xT za&8o}X_ZQH`jNg=Bm3j4?dkvlj-bnMqvc&iRusSmH)kawosECjiSN1tX@Jx%!noQ3 zrC3>VK_SId5s+x}i`0%oDfy#^kq#&eqEWO19CLt(UF=aH!S3s@w}p`d zi63J^Sb!w^C6Jv{O4!*CSVkmPl`r=uNe+}}zzsi176ijynz<}h>lIKWR9LCh>GtcH zWqZ70a2MJjcSu&Hmn~IkWUa$0IM!a7t+HZi6yO|4ASaU(Qd-IeS^P^oZSQ#B(4IYbE#opBxW|m5>Jom$H_0oBS5_V9s0B{5(P(M2~g6dM&OV%}+5v>$kY|1aRt(FmF&tk;JGY zJSCKL1p2J1HvNa3q)7GpgvPJ$ke$V67?cJt6l!U-R~6xz zAh-{RkPvfs`11HMF^0MOnzQ zG^t$;a0|3yolf!e1!x7kTwQr8yd3+zYd6K38PJFCs@=xnwcY%f2!L|42zQ+ZMx8kL z5X$E7{#o)JixX;QcX0Q1P*Z{Aw%@=2@w>X6My()mZJ zPwZj~ClRV=8gBXMd1tdhFfj?e=uMfRw!y6ncMBbXvURsdJZxvdy$4>Fx*!zYMO;X` zYIf@_SQn&j)UAAayAWaPx--LU7;%kO59Z|#7$YJiT zjTlB^}9g5RbR0Mz+E}qorH~&ez@O9`2KbT z{DYi98E~*hCA#L0`ln8djrHpH^uV_*ADa34hnx;5BhKrVZn5G%OS$OHKe7kRzUK&?lk*5EQKrMtq!Z)QZ#*qZ_J z7Gha?fJV(r7NPg=|T%FpOBdV8l)uVOkyw4^0tC_JKORj`BTNbjCcqsE_n8f5{~ zn!0LbNR_ZlG~O%bHdZgc?Ijg;hs&~;ZlGlr=;g|N*Gj;g-XXP>aeQrN1M@ux`tf{n zE|t-p0;d@09}T*lXCSV zP*Ox8xlut<2pqV38Pc4ZskCszW!SB9%|eZa2^Cb!)?+2>@T-3Xd8!wONvV>&8GM6E z_w(Cg7&5#e8O&Hyc~SM&N>fzDvLZE#f>z$QW=c`*)s~M*zt4Y{nk6?}h+#{wV+ij9p&>J4VNz#@zy)Yu}j>zh9G%G6E1~8vPTGBfA-bIR?ff z_1}BQ1VonZD_x{(Gg2I@gk7|ruO_mC*{s$Kn%%E`5{f?H%*0R39Y+=lQ2haqct_7q zTV<8u2Un4>UZApUe~^qM$(fqMlF;*Vk4@s{>X|aNa%@&$yeO_xhOLUcC|0y#p?Y%I zVuF>P80u_>Il5~ozJ>TK&&MHf z;(U-V&1ol`S5#Ufbl>Vm_RQ%q0wIjvn-wL5gsLdq+5Iey)>>?x!h+Klx4H<{D}<#W zg@W)FiG<2QScHSHs7t~F_ltqN!5NS3I>Ex3j#4l#u1;5DWPWOZJz&#*W2NFb$pDPL|M1Xx1oe%Z#* zKnljICC<9fPmZVznni^LI_UgLj%pP}o_r!Igo zi{j8z9(ePsCa8-ApLegXfdu5rfLrzNxeN^zS+HCm?_5 zc?*16=%bYv-@ocN&Y%94M692rm|meZHql2;&|Rh$-X_3Sdp0hl3cvvzzv&n>ApM9|f=r)23s&*B5GMm!Hm zpw~7|YodP<=>@SazQfx5y=ioJA^ZEM#`nEC_omeGt!?AmZC$J+tKk5R#oG+fcnaQ> zHVi72lhd+!M%ihT+t%AEOdi*F9(Bv$oHwgk7$4-Wy_oM zQL$r1LB3(*+TJhIi3=b*0$J1v1mX7t@qb%O=ln%;p?iAHn~ocCTGCAcDn`IfxzG($ zNFsoj-Np``0B}uD94^U^IE23GoE3NzHsrI#jm!W?l9g)j&0<*`g+@MQ@DSmOu)RmC zzdCfMG_*H7PBiD#NW?x!;Z!b*$3`wMTXvBeGbT^ zbvo5OsdO3;wO@0%Liq1dGa9RTz?geTUEg_~J^XsY4oGXRjTmukYRsgK;Sv80!mnpX zvm?*k^dT~fi2>;KfZ$7HJGC~19}lsnkr%EoX^QVCY80WSt@w#H1SeBDiBJo><6FfJ zv!eJI+0hhHxrX2J`ymjbo~da=a3dVGNdgq7rhnvSRr0fA2IA`6TaFX#0*HgjFp8;j zNxs`koCStV^pny_U;ngz`=lhyM4q;-8iqZbE+A_Nr?FT`G-e{a=B$j*P{!<#3Evwd zj|r%1&5WJQ7JzW>&2q#Jofj=`9A;;bY?HMdJao$NzB+G<;xK##UW?v-9oy;z_r#5l zCX09SryzI1q$GHJC%0y9M$b5MyzQ>EWga<(UEwzR#`O4{f~NZVKPtTSl!bj6;aR9l z`w*HI(aohhi@!k1@c$OX<9k#(52LY_ypA!qbvOrh1Zp~e=whytw5nfjYI^5ts6@T= ztFx=@pX9*lq)CF|fW)aCfZGo4VS%7Lr1{5qGUR|HZAMN&6FqOSAt;75`Q4!@>`SIV z6GO60`I28+X75L5>)S=YO(W?YB|2jX5;QjwK+=9+6`JX7mkq&a+*aV2c62a{72QZ> zrH4Ctr6u=%G?(e?EMV-h2qbP(qlYB)(8W^+VGKM6TX;XcG{@p$IQ0(qEh)8i)&2_4eElq#~+wk)Q zg{AIztOqssx{2r1fQ57s$lJ>p`A!kbYXIe?4L7G>Yl@4)zTI#|cH zPnbqEB7|Yd3}42P#fXrJs-l>L_eFt2^bJp4@ib;rDCx* zSlYVop0yqmR>bW~Ak(uNtSB1=Im9njqwdY+kM6(N;ugU|Q}UfM?4t-5d}H$Au#I-P zn)OS}tDR z5mA)0?dnUG#pCk1pF4#Txh!vL;cq$@ci7Y4r-ZL9+H2||_fnw#~5 z-lMV|MvA$D3uQox6&#bTs&o6qz{+~xj>`#jlNKXCu>1SY zgn4FJ9QG|fcZwoLxc3z%D9Ifc67sr;ExJ0=sQqJU^Nj4yX0~Y++%%zRPTU(;x9xZZ z^^d9g+A_$&$B~&HPkpzM!B&iuePv|GK8(Jjk!u4Q4ktGdG+r zv)*5L>5P2nU$M4#Nh3pGMAs0K8_=cB)2=f7VfB61lOb}3ot?_E49XZ-JWUM+xB?09 zCDA?#^5Dwix9QqIxIC``i+@>wxkii|&JG_zdjd%pkmfg0ZK+ZhC@(1T+N9bnOVrP% zdcH;LLBlV5+(|Ch@>Qit$MnY43E*I8pL3=N)znz#v|SipGEuLWp3w9Y4j5P^JxU$n zV;xX!UfAA`#d)AUH=lMAeOm}YOq$UFeO7VZc$$&_jA+6p6A(z=-6xgV^rX~TpBNIicTHP!brnJ3 zoBqp(eCB?&Nc^)UVKP)jS?bb`zZEG+l?N$?%|m#wN1%setJho+hQ2|&#eQ% z5lY|89Aobwd!uWt*Hk?EhxfwE!cOPPL|$TmLS=g^=48t9 zRIogEDdq)6Plk4vjM$`62+p?N(ypC*(X5Be{Ig`c8M?$FX5~-#e!tY{3Nv|Ivx==8 zRIJZ;8k#r|>n$KQ@3C1t_y?nc3-Zp^2lI9N!AJ#D94yY)9~M;`_m)PekUdj|ZBgRb zd{^-B&^Juig%51tw?b_^MnH)UKE;noffR8YTwRA7rdMAo_XBw`PpX#31*inc66ySf zO=OH40>FYCT;v9gYo_1E%0^Xn=wIS{-x`?Dx7N_8!NpVz9OU0kjsd!NBpTshLu^9@O2WNNG0`+Y9gaAZdr{f8U~G++rkp$q7=Yb`Djk6cYvX z^iAIdKz<%5(c(Q~9DRZcc)d3(*!lRznj0jw`%B#zsOz`EC^`^C>tflvSMJFG5ri^_Q)oDO0K%{MEjkL3yt>6{w$)0toxyK zQtVImLeNyIs`#Q2qS_xFbJOic>ZJ~KiTr=%$FAs_Hz5^r$Mc=E?@2GJ<&<=>54(MB z)?D~#Y&|@^e{U6T>6>XZ2osyc9DWcSFeELJFjiyD2v)CRv9o+V4u}o@LVTMc;4Ft>3^9`Tf0Lj zQ1_3!|HHdn7hwS&LdS_f&2rJ{d zBW#0N$wNa5nq7jNRZ$SiZSS)3d8Ippzr3r2kL@i;)@e{Nqpa4>Qaewz3qtb2r)in~ z(aIF$$Yy%eSQkbBLTq*zz@=_s?=oRHR2!h}RTZn|DfOy_MjU~wJx2&T&6bn1XFRpF z?yl(d{V3j}#yo9p;Zt2M$&Y)9OXr&5J(si|*X1b93ii&ww8~zJA;vQ`HfH|P@xZF& zDebWTXB2W4I?E0kb!tPgZkoWp!hZ&DxR=@1Qw`52-gY5x z*vs+3LJJ3o#xA7*D>LI;*Xl*dIq8MUitA@ACgo7V2-R_Iw(kub4&^3o_W|p4ZHm&r zbqRggJZ4+njoNU7L;5P~6Wk2v^bX%E)|s9MydcLeDc_0WQA-O&W?8>w1Rnr_l*mbOKwk0FA8rv^+<{0&jHnktBKGq+*3Rh*yl#-hv2d- zSt@rLyfN4D>4%Cz)dtUgzEmkB{VTx*Kk%bY2`pct8n!?bT82Xx5hAiJ)jbRg?y>aP z9fqGnH6I!j9v2&7W%V@@e_^|I;&J#l zxu6EW&$dp$0@Jjo${tW6f_&l0_5pl_fv-)m-O&9!i^O347iMfg#8iMB93$VV~NZL zc}!cJ)XDLQuxPW$rG0dRQl|}(WG*L5Mw`4WtpVOcM+A7TFE?=4g6f-E0e`T-=za>_ zS7m{^XJOnJK5`9l&Cdnry}GRl%UAOAYTz1KGq49nO>Q9s(IA+~O2=slGMV-6z5f%-5axxw!W92fsalcf9cWZ$P?@a~;JGOfq0Cp_QVUl9K)4DS zvKUP*Afvm-gBsHPQguaK5{(r29_5>xs3#$rZ(A`@3oc0dPaE>&5Zg3Pc(;*nmoCL` zeV{V`F@kxlmJcKK+-kN{ck)BoW+$-6ek-Z>g&yZ?8tkp=wl(&9EkQYPPk;`RrGN=g zFcPU9UkE-^68URf^Dl|uFXbhTe%Nk*O-_F1(8g$E7<$a5x)5%@&BP5Id)5mHg^7{f zMA7_3-QO-r1j%B5W3@SBw7oJLVZmPvrWc z-!3%Y6{L%%(K39%O0Fj0&cgqm%vNB-@?K^bC51XDV%S4fRcJmA6^@xR@Yi`T5heQM zZxZj#VgI1ums1Wm6UA1vc5TTUOEExV4*V@{%lvhNR~aKHB8V_AI7`3QRl4SMQ;zfR zu!?WMMJhn3gJBEZ`>H@*J@9~0AMD!glw#E4Y`Os}C+oom6;51RdiXBx8&>(F;Au}o zv}83K7CLhO-S_GOl%?-@MzQjpHlGf9i`c zvu*VnFUw_bFOkkI>jC0no~OA(+d0vsAf1iK&IME2Abra;8+?%lmT6p?0*w+*{N!*~ z+9it@i6sfaw|iAv)l*2gh%qH11BVDbGC(9^T z3EncqpsM{1WiSqs)Pq5~zs$x4Xx57v^&><>~DOdl@A&|_H@>KY&WGr1A za#!wz-plIXVq8B>&6g`xT*C##{{?~5_)`hUZr%LMUNUAne&x7i4Gf6)y%rw8`C+sIyLRv(bB?1m03h4nfd72#fu0^Uw@5lD)VqEv2w2kkR3qHblC40JD|!jbvkJB?d8Jq65TFfD3YvgK;Xu z)4Tfcq+2rHOFTQ-1bHh za7V)LQg-v(-Kcs0LQh2t>md^v5kU|hO|M)g)?Q)E4U@zZ4NjU)E zA+(Kn@ov|-;5r6>*1LBIz?zo#Up|I?hJNgi;%i%L-9KN}(!1gZ~%3gSlCSL3LGQW%kjU^{ijE_l4)*k1rqKfc zA?DVY?D&Dp(CuFe^+bs=)<@xG9--lYyx{`JtJ&K0*7-2i7v{+N1Ho;44bAorl^EuB zG9~X^C-Pk>?`%l;!0;Es+?GJ4b|T-ZQSH(oo3@oi`yaNgwYlzZe*}7zT8Df4TqVy& ztii|ttas@oV`q6QU-5lcuV-!UQ0+>moPgY?7~~eA5&+oW(C-~Ya>M-0R}ARrABq0U z#L680!xh2myOr*d?y=8IV3B*uUjUnb@GsE?hB&F&G0P5x7N}T4pYBSapLzuwofcbw@t9Y(ANfLnfjOqyTjE_MlsXqM$dm4PX*C-1YUQruhEDx<2;r zt8k^f1YK^b5p}LCXtl+@Qb=@kDMY2{*p+ou&EJYk3k^b=)c|8vIISEO2on09PclGrj6>rey$LF@I>q?CUZL- zCz6$n^AjB+E%DVZ_;aq@H2FH&rW|B`zSmTHHr(p+cUacrJ}#P4b>)tMZH_dARx7V^6t=G+U0#+l z*AcD97mgmk|2Zc*&*pE7g%=K&wRAUBAtN{0MjT~2U#ww)Br2hmE>w{SAN^$(nRT0O zVw}~ml=@1WHR2yb0u|m>bvhmES9FvRXUVaNS~Id6Y6Sa9ASra4BS7VMJ(oN_x?|1E z(LX;~W!yA|5>`hPc|X`1gibv9T=T>1ybZ3b_W&<{7NZJ&0|KfB6RlME#vBQMas|y$ zQ#9PN;WrcNm`5Kc_9%_c@5OIxBn(?!d}hz$TLiIlV8uVL_*m{;=&V@CE#WPGUJ8;U zQ+;roxD6bBM-Z}|5BFxDae@;qP{Lxbb@r4hfb*YY8bt$2%o#qaQlNHRsS61H6PASS zsJT@2lpxiH26#@cv+^352&^rchO3_!alw|JsOh{+i!+pH6Ze3V%$O5CQKyfe-C<63qJP2Z zTA7(p6Xd$bi77&55}>C5fh!OfQ<5S#N1lR&&bG^Xsc}&bmG6vpt>NC0Z4zpX!8%=x z9?AV9oO@`aJ`SKO5svm2E;c2^-uEUkfMDf9GL9Q78{V-~@4l`zp^6i9iaI)%;n> z&7IT9;8LhS`vVj$V`0aBmv81^erDGa-6`88X1y3z(Og3nXd`|3CTBmP?y*|QVVdnS zd&Y@cAmHFIvnWrNfOrz0Q1gqeL8G9ZuDs9ZS5qas0?%yx+>UD`o@Ct6+^OJ5SRg)f zx1rYgX5eKW-E(^x`ZXXpeU?!mgurib>?)B@yYfKEqr69$r@=K^Jzx8g+h7+DOl2yl@w}gI07fTn#XdxZ94GbPFjy7!Um!beyK3IQkkEP*qy zFT(2z$EKUgyQ_k$!(|tPkKaR0j*dEQT-PcTFNyoIG@+TswyHJbvEfwCAq`%cTa!%v z$NCujQ=>AY%!SU691W%%)h4TfR41!8k%r>&Uf!j}QVe=lQO8#=6^LB)Kb6L~q?6JPg!pe#|)2gn0p=C#R|OL9`N#+s+)x=@Sp zg+*K!l!E0Qd)gj+pJSq}gUE-<#p~G+WEnEf@VT_>{9X`&+K<*-&r~4m7DwcjZZK#w zohAi=niVHB(5nRnnTb>>)3@&{=Y0I(NnMJu!2_p%fDEaQwy*$;BQLik8t3X(9>HbPI z?LMkAjncz?8-POxK?1Vl9z03~JNYqX*BL7A^zixj&a#aZ-~7uah^euwoP*ML8>()= zC(ZLYsp!%ESuns^|Dd$K1Mqa7=rot>SIXwC^3pS5{qetHI2g+TgbA6F96Z#)Mu{@g zd#dO6PzZK(NKfX`MIGMxez&I|rVC7xTX%mX8!_$EG}lpaE|__+)7K}nE=n=NkpUoL z76B^%iPNlp#jI>bB!HLhW6@FB`n4-wvV9Hd6MP4Dc34EFQ!h!<$ZSNkATFZngk(y3 z!o=-*w%<95b9WhS*%xp-nt9DEa$Py6MGZGe5q8CtG7uInv9|dFwof#ONf4dc8N(Dq zri03jY~WcJe_#$8b#vtDFmH7nBJ0)FPN_!m*W)1T7`+)$x8`z|{{3O69%T{(k$>V^ zQiPn_73&z~^|b4&EgdI$A_wWOl=DIFJr; zRO&C;WmHw-U|5+f`eZ&96nJ}3UjB71{+7iPn&wYLT_P*MxkE`kO#9!;_wwSbnw*e) zb5E)InQ=@yXkf;xU& zq@&x#<2NvE&COK9KQmVJft)yRuQmvWnsWR(HZ`26^ge?S0}F-eV)xwAi0AmDFB3e- z4J9oO1vGWLb+mm%%7Q<|@EmUr7$5y5WTiv^N3M8#PK#&@*oa`^sD z5+*pz5s)B4MU1Gu`XG{R408j%W&?<)-|O)0w_CWGGFm#Lunxb9u`5{vB z6yGC<063P2p^1Ek9>cXChPUhLymAiOkW-ioa%IYAdZO@?j>PEULGIX|H2bvy;kTfq zVy3##$?QKi42*r))&iXYp|2!22D);Kj>0VzDUSkV?Hs%+Od?CCr#uKh+1GiG7&P@| zVLYxCQ7d%aCwZbtGQFv!JLr7{Ch_bJU~PN$6n;!ICfo_cNYBu0*re*lGuv-VI8-wz zt{6}(@7KyHQk@A0>dQPv-vGlTch6=n$~+hmHGK08+SQZ>+^|bltEGwHoA&^=`)Fxh zT_drYtr7y%z4oS`mN)~%>+=`1i$|WX7+Ek|$}$3x3dy1>KYQ&1*|viqpu{2dNRX3D zn>UC;Wr)pf1j9Q)EKK)k0qyMG!|?VJNb$E7Ab?^Cvu7Sm!a6&G;x58b{*g6dMo{$1 z^NL)R8m3?a3_6?c?R@czjbM2FREj7R(%^S&Ak?a^Tdt*h|4k-|;s_-v!87nmbTUo2 zTpw4R3_2XrVr6rGemG#j{kEReO+4VbC{}(~=Hc&wsxE)-8=c7QxNtD{~2LVT3y`Zev-O9FzDv@Q=oBK!uCZ2`C!|WD-V{yl> zR*Vl?7z0bApY97-OxI7YId`UuYyKb|d6|Ol%tJ1^^8=2(<95?o^gQFCa^-c^*4u}q z9+I&iFJg6P;VPnSwsCpT1b9QU!%P7cwY}-zqw*t03dH`Xm*A<&sDxC-SIpo&5beeC z1fMk$3iPj$`<&QqAH{u5+_Pw=5V9R?)0MAD7Wlwt{Y+wfB)l~o%33=5w8h|YY0$+c z`r0_ZwZky{pzGo5I8v?in_N*A+p z;)#dVe&qeC?3DPYb!29IeCCICr{j->K=MED4g1}h_zG2QI8T)hBMCaEvQ?k^m{Mv> zS0en(^M|6e7Ox#xFvn3b8X{Y3zJ~Rd=vW{8_M!VzsE>&hBnSb~Xyuz0-KCf;Dpm;3 z(xtY+em9*{8PrdTkH6Ycm?5bOI-$NI!5%UB*(as;c@i9~Y0CSHd^bAaYFarPgNQU#$ukS!lW(Vn%(8>CM@*lnjm8O!|3kcqHqgK1&VT3S^dRlt|i<9G2lD4F+FkpfW^*< zhi*%*`i!Qb9aWuu9cKU>oC)FR()Grw<)uCM^dG9@uPfBOMvX7b=p&)RV8b;v z;)TCj{C@LmSy<7|bJij}IqdB36!L~Id>GMhhds> zkTOE1tIBWAydOX8ovmQ!0g0T?YU73vv*$S(`Rv!xdgI1!+dNVRf1)L%5QuSxqR}>@ z$(pIvG4zon84pGLrRru1xF%Hbao{54c=mQ%JP7WGq zNum3cN+XAeNVJZ%u9~ilhj~b-@dafa`)#n4ZPi}ZYUcck-eNpRayDk8P~nK9cxUMb zkx*R3n&EZPW&2equA()!B8NXPLq0IJ`bfLD&7+-eQm)8z=9x8TVdMDz0je!+_d!wn zw5qykLH2aa*!mltUrts(*?wvOZLTB~Q%$_5(a%WYHFfs~lZ-OrQiG5mT|TwuiKvzH z4-#OlP5^DzXJ1s!a>Iv;3Z(IU;}|DiE#YLfvmLS7?6Y25cz2Op+`+ZtA3wY7r>>EB zS5Gcz93+wOucIzrNq*J{A^EZ@=+TE%M9{Umj`;0m$gfU)jNHGNn-FOQ4&7l z$GY7dk;fL7L5p7BP#1$OmnEJjY-oOJRBygV>_!OE4Ktb#VYnO$kss^64IDu`i*^gB z-2R45`gDW1Kr7h%HU}@K;NTzRCD&TAju0Z?-kp8?V3XN$>Fwfj%q-HIJ;W z74@GTA6z1VbSk&i#Z?Ll3b%54RA=88N)!|&W*X_;1sZE3lG|YOvg-U$ho9S&4f(`C z|NhYYatiS0@l9=Cw>VjC9^Ta*`};UCp@ab_Z}kCjohU#sM5Ofz!wOtt2Z~XoQcdGN zjC(Z)U5N@Eu`vUmdPvFKL}M7Z`96MF!%vJtGjW=n*4U;|f>@OcKF&YSFt7R=S|P!5Q3=?mb7=^{Owa-qeL}0gE4F|GwuxieKjI z@=^S;x%pmMyg(dSF{Jci-cF*Wk9Hg8eE%ph>S4FuPfN8Px@r^0&UY#BvoSS#=G&2} zv2cCds?MlPL@Gzbr|25BQmg0_^kE?xgR07s277`F%iOrxC6dmT+0bC0ZYJfy=LN25 zi7(}ONOeDo>ufK#-)aqEbAG%t9RgQBBU98*X$)Nk`J*gH*_4Y7kV^`HHa69NK5jSzoYcaab(v z`pu;kG09DqkzOB>1YeXGe=@R$F>mYs+6`!{u!u8qziDJSS2TSLlR7dqxyak{+ijy zRdi%==wz2(qsqgh7ltbl^pSP*el|tgcy;};40&B)|JRjs8#+3szSQ*6EN1)(4~}`* z*(?>ww)G%eX2!SKj1+mOBvOCWXlQA!UlKe0hhrorDhiOi`3ST}SSM?Ig==C~{7o{% zeC(2`C+@F;!CEFF!OzoE+|oM2;aZ1X?Kr`!d+;meRB=b1==y5KPPVsqyf6z(967lJ z^Hqvfxm~f*)qacaJbjy!)Bfa)%PVq+2yRA$k>4_O$)z491dR##!a>~d(h z!oiD+*R|tui1ob2Pmw{NcYg^uoLCM8%`2n!YBK!$+p`ro_f91)B7N7?eKjm9Dk9>W zksX0b(K_PwJ=pbIdSb%)@p0mD#d7TLUjEr4p0QR2&8l9WWtm|Ams(Z6urSLh8% zGL>b$0xcBLXZ&B7O!#q&>M38aZG6-(X75lvcLZA*&6Ulck;P|J$5^^1Z8t(FljsG_ zp`8wncx`QMMP^^mo#6ifc|eB0RYg)IjkJWA#|-5mPZh)ucsH_V>v~`!1DLomuQ7UbMqpR7p9X++5m9+YHY{ zJyn>?_dqJQ!%7OB7lk)}7qH~z5xZD!-^J z@FgdZf=;|I*QBk`pgLD(-?f}riO9L50XLO*p=%^-to(Qo2O5O1YDMp z2KDT8gK;LSCUNSydkp9W1(@wu+s1-+grQZP0jUr%&ll86C%bJ}mzR(lM>wUD|D#;x z`XWp7?%=FuuS0R05%7j1mLN5%i_7hYy?G&S)6DKR+Npey*w*>teP2%)RT@8(hFYjK z9wLVS?)NwRyu4N>X=%J7Ewd$)xKi!&(I?9J5z_wT&~J+IJVwg$WqRkfU&h(;pH(|9p`e4WNUQDnYesriQ6fovaKPq%sc z`o1mSo}0Qlh)iujW|iH9xAt2azNZ! z@$qcyBe9Cg103(?y+R>kQ7VhNZ!83(HmBa9Dr)zw|6*RalE{c8NvgJnY46Mlp?Yj% z9Pp~t*lAh!N0GI;?93?j^`E*SWl_7na7g_{A|p$5w+8XKp`csGsnT0^o{F335HT?k zejv0M%JC;WhLbDcbXN=vFJ|fQ42|zEsY*%)OQkv?`)`cfy|NUnhvcDXA5OO&H8Rse zT@wyG$i}j3N6myrXUHAsVM7D`wsyk$3Y02Vl?02t1 zG_{aljnhKg=Gc-26_+k~U?5+)$u%#1z(qiG6Fxs>%*CBAcCrzdME36tKh2_vT<>F_ zms;_zTQ$0k4)e{zjm``q-63$G&ewI~Uj8wA^kZZs30R~LNKkSL^@kI?)3#b{`B|RN z%*;7T4%>EucAz8$kD=AAlHM39|7!DYql1%4`J%Er^4|_ZGo6e6@n!SkV4zYds;aJa ze9)QZEZkEH^|e_Ab*@uu%6@j z3%0*M*%|TXfuaTxx^@W%)5db~t+!AqFb5if7MU z!#)%HkJIp<>K0u=p!f3^s18#{osi76%Ei|LR9eZ&$zjnHQ>QPuTUsE5ByObH*@n3E z^SJR+touJBKH%iOS?XS}c zBlb%$ZGWRr97c$Dw$D@4{U+=G>`}TZv4!hdp z(QF&7uYUWS!Yb~ZbP9*1mfl_D>qBQ>gSq}To%0xqIq5TP#bOkL9n6^*&Ps)?Bz*$) z{_l$-_84Hv_D*jqYrDO2cdZzdc1p@U__+O_8-8tCcGD}W3+Kv=s2-R;H8>RuYShx3 zm$ydB74uBIF@)-gETYD$6H6Zp7XUa z_?wFHyvxbXELMf#)UpmbR~+IjUA1^}XC+?50;sPuEibSMq}iRTjmO8JWi`%=Z@v}9 zD`bhIw!@ZscH>J}HT~#fY5olS_>A1UEys5mZuO8cKVHwNwi`!j!XuT11{W3KtEb@h zMUsdaR5NA)0+*bX6}~kgV!1i?`d~SF@AmqK69XrT9ipB7VX(tPi4Utk9wF9>HB}?& z6+ZcevA){2oNxXEh%a5(w)6evsJhoy0Xe0#A0AM2ya642Ve8a?dF*Xa`JwO*X0H^kLzs0psFO|d#C@M;Z2v|+8jLIAX^BLr^Tkg!99vmJjzAwKq zv;gJqKDz5-0OHVI)SOq|dj(JtI*}<$Am)-zCA^Of2bGnC; zuYsXNi!|3Pr^_oSMfQa1ofgsnd0aVr4K{dgJ0k3NcL|wkbi{qAkBBw)o-7HL%{d|b zhIfw{Iqcc%4X=zVqvWkWnmQ})BXEGt?V7I0-*guUs<9$T`09hZwWV!0mdm>DN*XC` z!#%boXi#s5GLqBzsl~17m^Zx5xl=0Y6iL7ch~%RoH0)%uhh3a3k*e`>!93f)kA;ZM z1G?YW>=H>SSj^Mv>7NM%r@SCT({Xzi=yKzQ|NYvD77g9sJC&I$Ut3YJk9c*B%pBf0 z4y?oR%V&N{+%$2aFbGF&bi7tCRAKgEmmUpal5)~4KyqZ(M+0$aglPu~ zU&$QustC*6dC}+ir+nI)@Ld{LK?3VWR(x$+q?(lYInfn^ifYC9&iwXlm+2os`Hnnh zs_Z_02+ndK>&qztKs$*C67z2e!S_$&n{zoTBy6lJdkZ>!gPp1$Yth4oG^M4p4cfgJ z@fk)2j@H_Mz^SPFk)qhi==6b-7*>Ox{X4UZ%d0){^Z2L~&;O@HYpqF6dU;(lM zsw-sJccnc7G;VW}gM3u#4~BXwKHxw~$Frk8rloz@bf;ESVmaXLe+uN{aN6m?*;%f3 zJ1&6b#oE1(aVX9P>CB_uXYU|J#?o8tJvD{{+`xLn?>LO5^ON z`kQG{&_rUXR*&fLswxT{oljf=VD8xEWXuYsPm`WFTP3=>A9f8<$$59QK3YahKeKXZ z33GSY7NG9uBHF%Fl_gcerENyr7%@>WG$g&b?eIzkt2*tya^InhHtopnDSz|({vxvt zDwT}EiIBenD$5~n5plkDUj&g^zS9DAns5ah;B|<@)R@SepLTd4$JIs`zMF(v^y)vL z?z4A+y`K~=w#)pdoG_^way~Hxe$#H(0nFHD!ykH;x2tt&q5@k8o^R(nVzHjPHcTvQ zSf0CAdbN!rj#p2T*x0Pba``^o`aBJa%J=g9&2IW+Tp+m*8z*|a#f_F)xIAqASIFVw zeE@+RiXxHMTCz&D&uL&<(;MUR!CnF_d6yb`@hr@bAHPRLNB2#Za0o`d2C|pR@A#KR z41EWF9=m+i{RSJTqupK9--ldM%0mMV`ym?n5xo-y)Mzh6jjGHH%Ks$dxt|^J_b;^u zoH<$hTuVNWeL0%%%zUzV8=$i@c0liK5l+ejs$O0VKM^=7p$3OS!45x{Mb_! z@Z%V2>Uflr7dQa!I~}g`172)rru%GgO*3n#A3()n>8d|8+Td@4fX4-FTZldU8!q5D z0oVF|hM(5|y73buR<*n4-}#nz&F)*6b&V4ffhCitWol(pviYc=@Q@LZ#oexQlOqD` zWJNTz_L>h%DBLFESl_=R#?D{H%+d-K2nB!tvggh^)+_Q2AI zhE6J~4Lwd1-14w%ptftc4~3cYTaIQ=uxfG7a51ltmIlb>P1rB3tVFV?V_Nn{H7)E7 zl6mEVekuZPYo_x+xtnBXzt>%6A&v-9wEjT$D}7d%EVP7)804(Qyye=jgsQsDTc4R(07)?v^Sc6wmicX?&Xav7!4HjTG!_V;a=_Mh? zpzu38JNAJXs+F5?UDFqUsxA}|WgM$x6>ulC` zS_O=82sf>=DN#E19{m5WeTz-@SjP{dxTwPMI4lbN%3-YGAF%ShXjzspRL!?6%A~2( zS3rF<-Keo*g4iBZEc$}1`lypf%GUACbRo-c=w42g0nU@KmsG$k=6URM3%ATS+Qp+8l>X=6H0z6&hjl1Mf4kNH(cuNA)ay0ppk2?dYsAH-m6^O{{$~sFzsICa zUruFW5)$v!zxA1!w4tG)2fPZW?BEzhWo5NizY1YO2)Tgz_;2mb{~5{tPY&5kB_-QT(h_E7+fXhT1O!bPaNK}um=z4l z+%<~?hoG-<#~a9XUY5xM?#-x?_7Ujvc<*Q}Bl*q=fPzPAAB(SxWS!d&1xqnYISB}O zn3!{tix@2_u#?fGj$Zmpo`6iSf-miX>T!}khphzF0g}Nscgo?H^kSZpl%TVz)<9H5 z1v?mfsz~b{C9ZPP=$5--Xt)fsn^K=XDQ6h=lafgN3ToN>62xOc%9zdZkk$Y-V3_La zYFkFIST!*QYK4)AeD9|QQ9Y${D2T(L%5-WJ%|Q^Yr>7WM^p=$KQ5j&d0OhM!qW~#3 zIaM@IDVFDhIE=l#GJNl=rW^ot{H5L2C^HxpAp}f_oUS0NpR4`#RxoN4-V~cGhUE-= zi-UEbJQx>`h9W5`xcPg{WrU3A9XptF3jCciCJ}BK{`<2CLM&G!|mzK*f z`UEiHhlemk+N4~&VqTryU-aW8pdf+1yte+t-`g$}?s+{JDu^H*`b@40ddqb9UWozS zkJP&9h3BWNB2)Bbycv_HW7(sUO?b%#ApyG1b(}P$;xr{ln1Z@kcED@91WWIz=gNTRJE= zH)@2W;Njxum%ts&2)I!Ql}2-)W6snLjIUG0{Y3deuSO-0b9G_VfH61&NFYmM@Tq7s zWjzbYW~3gMN?W%_sm zuB&AlDO(#GVg1pM|BgZ5a~po?ew*GGK+36E_)5LIKwShN`ygML?E(3R!vQrL&T6Cc zJxWwcQ8DNq4r&IRULid3mjt>%$eIexgSI zYS0JVT@nmuG@@>IZPRqn<=2rj&F#h}GCXJ@yK z1`v2+l0ZPMiH0-IS+}S0{_3mPZ7NU-Or85^oVjIHBT> z2Qn40)=Y{`rf`3~X!@<_KKK#N6*K#fREU_qkR6DmriRF%!9hkxC+^^%ZFUZZehC{5 zih4)*7l@d!@9inu!5Ms)KfsS^B&%(pjW$(w5R3~b_IQPnI_E zj-gWy)!xT1m9i?p%pQ*ZVPB<9zG}C-9-d5ETpl&K?9B`LU2TyAUOW2=fr?${f9+Ck z$g;q0+9K#=O!E*+jU|ESj%arqtzJGzOfC*McYF4jd)5o@qT&vaSTpsFgi6dsxw z-6B^ail&FAfFjftr3x6{emsv}`l?ujoM-5vwFr1*@yXjdT?-2VaY&p(zVi7JvMT%o zl{-5{Yizxhot8BlBHwFGvFWoXZrBjMs_GDBKUZp0(`VCW{)b`Zptahbp7hc;2Q=;1 zPQLEjC+z#KZzoFi6#OnM2!J8zHq(YM)#&=UD6~lr1MkmeXr+9JBp}LAeI6ME3kUUX z$@|<%ATB8UB|KdIv}t9~Eg>uG_3q)3cKZvP6YW)Cu^tKuKnpg`%qBW{gNP1WQE;Io zX=!K0o20Nfx(!CL%dw8ZN;AH`F=*LCi*WPLzF6E8N3X7yl=+eH@7Y=J&1oKbAZ0dQ zX9k0cL7u}8&%#K_wgfEu3~}jNshgZBN^D50GD{K4J`;sGVe;Xy&cNPhTV06PH(ux$+eLOLYUcsv`s>w$*FQMC;nWCH?-6t(-ZrHZzqM>&D| zfbQ%}kSU#ogL1BE{3V6D+5@SbUBH1BhTRoMHwgVh!zpFMAHh$p)Hhi4l>0rAtDCcH zspgx+#DKoCssSdE^TJ318luj-uhFp71z(dE|Kg(~><>2=ENMs#nph@$hC6gR@nJc` zuh;kpE_U{Thi0_Hq&Se_Krs9Q$tV^2AFk!%oES=DVv?!@p5#QddfaMve)my16Gxuy zG8upO>)mdBPOap3y({1yrNiDtpl3M8XTujWWru+k9Q5PIMnVetT4Jx{d%ey8LgDw6 zakF*3OKSxo;o)0NapUaE4|I-9xxVYlGzu@RpA0f-(@d8nf=<{Ik*7- zeTWX-v6}pAW65`A%CUP2fQN~Q+r!J!#L22Wg1;mbeECXhq(uB~UL3r&#kRCn(stgY zS@ba{=dqpT zO-qmDWHW?gYkbe2;ZhO~wLCwy1MaOxXNG9iq*l4Isrk13rG+-19r!uT#`eVrIOz5a zo)eh!ix^NJLb?SU8e!ajJi}4frOVO`vFH`IL{4klO%|UmF31r{csAQojBQ)1MMhR$ zMz1gWL#Q%D%w#)!zEeszQ|)z{iJ5dXI>MQrJyT4y-dJ5VzrVXp_FRObHUbOp^ZZvl0S^pp}+W&U@- z-BIwaE`3(nR!5}N8B{`=Bny8#2u0z3DLXtp1uNwmxWPa~Of3J8$%YF_$jlG6fZobtu}ZSe@eP+OTkgU=`Q**Q67-Bue8u zMPGkQM`G0|CQ2m>k@c=@?jh!G^g`@PGqk^FM#X0s7IvI|HHzbMbI&lm>H;HuQlEkK z&PCS|^LqEZf%$Opj*`yZl5yiS?$hI4u`{;u|8fs&uaP3z_9z{NB4} zMAM4nC3j(xgP6nG@L8>}bN_~kbqCiv%uL?+(f{sM>b78uKYqM?uvsQJpFe-)z1F5_ z>e#JIEV*nPbr^8yFv25y+9&O<@n5`68on&?J`b4U8o?oH5cbcR%7|eSTxR(Gq@svOYNKelvMz&<|sj*yJK$tuI?{_8H#w3vRr0qR( zGFUIW&+ck>wUTbW>yLZ0FOLJX}XkpAI#vt39v$fLFAwEoeX^%vqG1*k{i>=m#^kisnm# zjYqd3i+FDS)+2n`CUoODv>+Qg@&Ygr_6xCtecD#A+~Yp&OvxSQSEw72wHGkiGJMaD zaOBb0Q0+K!43EV;qIhL^>bJN=cb-qtgt|1MfkST$#qjLL_k!QhGNLXR3)^wgiDL~# z)NgAs-}y9NQVQ~NFl%B>F+oTaJCPUi{K!|l!Kzn7AVpjI`umzjyW-ba>)aS>(IUAj)I@ocu^AU?f3cGqQsp;%$&e zU=j-fmMlcB+izE1Sd=^uJ>>Wy=ze9yWo{#Vh3~nRh4SWLp z#-Y9+huHCgMO!OrvK?YVl6L0|-Ebuhd_+hp0I^KH#S+}LRu7-A#UvOc5+aP)S6E-{ zdy7CzrzZ>xK6QbpRIJgJqC%Ny37v>0O$CD-Heg(`H#iX@7(7xxiG>WQh4_#YrHyDn zkgy|-P>3V0Odtk6si;;KItXVq=gp<>oEbl&|M(Eh;J|2w7Xjs0|9`PPIb$kQ5ywxi>7J&Ld%9U9VHD-KUWjZ_4A_0h3A*oc{vNh7Qp%2{Ch=%^#?;k zkbV={|G}*Px^UNlOgR^q=)d4hA`3r&pcm)oI*-;=cd;K+{X7Zia2cLwb_IJP^sfuT zoHgjiFN+X8WOu+(@|!E-i_2^D2hjZS?mDE7zrtQn2=GRjZ12NcFCc7-;w6Kx1q3=p zuIF=bX%@=lc^KFaO4=#)A%;FnT1~_cLM&LZbxa{!L~Sji9L&1+vEn$$6HWo`;_?OI zn!ihT?-81#`;G1ZKX{kyXS%zf8(~x}3t*+a=SGkR4zyQHAo0a(pU3DTm+GjCq3`mj zMJ8%~ViFinS<6iMnNN5_ZgHsaZ*IvU=r1 zAeE9^rKNI(mdj?n>Xxcz-60KHb;~8&td#5o`gphuD`|q-DDelhm3G(>9$-y;f;pOdPvfb!nL-?9&1+!w{RBT=*pX<&O*l z*!K5MonWesO}R_1J6^9=INAy4!--7a2Q-Ggt{`Vn@XMb15WxAJ^%ZkjC4io}fu!qn z%_(JmseoelQiG&G7J+hh6CO3E?8v~B+4fdb^AXCaN}v+=d|>&&B3djKm2tyEV6pYs zK68Ep-5f?}=X)=3{57HIhu_zXUmueMR%_l|?w78(6s(i^hU9W%N2+#{YM;Q%bwdT5 zEuxhOKxha%1ekJ%77-4Y$Yl}A3~-fN_K-_rNbQArp-b?-@m33!<`O=j$9yg{E{4HE zL%AFWX?}%6Fe9F0l`7^jnY)^Dna& z+4HY55zztPu(4oKi$t&qK^-o9JF}89W2y<9=DYI@mh!C(1Jn7JFzLGxEock$4(QR>xDFwo*FlxjnV3v0G4pSXUq}@Ha1aB+KN!c7 z``-}Cg3rgJxeP&2(<@c;PsDSI_$sL12B?Twu2k!Kx$<_9*=zR{Mm8i<2irGKWe^e9 z%__KmOE=Bho3JNA6UAb=1xY`D9cv~4nT?8GtylC)`E8*6Iv)p2ic>3??p00t#%n%3 zQ21zq0Xan6zb8jbjwR>bPd_1RjHap16vL6_7?8-B6``(K(yOKF$@G%ks;F3A(Unah zLLFZo3wV?-wBTd|QO*fKh#MF|gPi z9Fp0Lb9SPBe!Jj1DL$dG^Fn;lC57*tkWEZbl69;gT=Qh@i%<#UQ_>u-FJ;|#T(+2o zSl%DMGVU}T(GJ!V9EL(X|(b{SQZGzOE{m{vZjVjmFRG~r&Ium7lQ@W z;e-YGW`{x=#X!JpuvZ{%9KZ&kgc1qZ#LVSeNGvirfv(K)v#rOMY%MNx!Iqx9PSTU&LCBB}`yPa;LJ;KAvaw(aJH9UE)X|C& z&lSH^suiwn-;0+zR49VAz2?vvi%w}QUFcyjaoGqf0vuq|&CH)jC+7&1P#BaaCX%?@ zC0iY8B9?L;1prAU4Pjt1i74)LMUT9|V!p2~bfEGf@}(%g$`)=0Gq5dgwVlj=0>(jN zC5c#vaKE_85F~m~!On_9BCL#aT17&Nn8W&eums|XM&6#i(01=rv-<&>j_+olyORO3 zrs#1p{>ADK`bg_ep{?oYvo*UPKg|%#m~=<8FKB#+x}z`XXKU2g(css|$zVD~;|a1J z9*5Qd`m9lJ_|&&XpU^GPjmF@$7WghOosE$IOjucisbKannDp+U*}b)f*6fRp?yT8J z@Vo=2UG&(U%&gwiuscDIPm{;-bO7*uU^}u#cN0JvJPby&BA`Ma8vFtcG`;T*hZ3s$ z1kz8We7*7Gmx=Z1eunPH!~Os|ZwDY*_jWi?P@q(A*tH&X)bBoYKMf?+7`RO2v_!hk z_XF7lcwPA4n_1(LP@^{<%_h*)LCeW3BmHbm2RiCbtf?@_-DC{xg*ky@ESUh^XrQG#%_^=?}U?;58M*`N_p3CFL$B7X{s&M?0|XQR000O8Y$9S)0x&o#J}m$MdN2S082|tPX>)XPWnpb! zIA~vAWMyz)UukY*Y%XwaXT`dCIF$eUH%yySB!wbN_Q;m4$da8H>)4mb&RAk7d)X_= zmMuiK8OspH778W%GWNkF*$vsoGK~8@pYQj%@8kCz-~0JJ_g}Y;>yYa@ulI5;uk&@j z&ns3BqE182Oie*SL8GamVn9JbIRdWq^XI@F99PLN@avr2BXt#u6Y{^0O+`r*6dV+q zDi4jGeZWsYPrEiUvA1c{zf*CZlarsnE-{QqpnDjn^6=WQbF!_Gilu0G_^Xe3C_&-t z;nXiVy}8=?f85C9tP87CJ)6hrn*2amj8~kyJdFB$kMc-8Cm38F0AsmTp$ywcc zTG+Vqp)n)7p>bU%7{ZwaDLP9*@d|3_D0_;6;`hsZYKpL1+)xUNOScfGC?0DJ`BB6~ ztG;G*`Q09iZlh4j)yec6{~qmZ7UJ2sjUCbHIARq3&1X`jmtaS+tQW~t9LtJPL$ zdU!c3D_eRu;FP}F0h6(0%Vd}FDG!qALO<_eFTn@BpYccVY@_DU#GxxGu(H6rwj*`* zei3fkeGyH=A*_Ks-{j6W+r#aYrz1j?+{N=WTOJ3*b`HypF7(g4^{d?F&gER!KvwXY z+!mwe!?~M0`CehgDJe&d?H!S$!rj&iSt`@=W}dkc3uV4C9OdQ zyMky@b|10d0hVD*+|USX)AzP_>ROotZ(&dA@Sku> zw0@~JM+aAZhyDzzjjUdV*FQj2$~4VbGttM`t<@h=KD~u#WiCpB8of8}X7DeE>12J> z5yC9gWVvHAzihDju6=K(u;)Z@R<~AHXW;L#T9+WN?Z zP8Ag_46QXu3*kZVchEljrpRMzOO%H;m#`NRgT51>Jz|;K*C!?g9RHd$6O#(l-m;3u z2|^>((o&7L4O;J1Pnq@5yGH)7UV7?j9U*CES84heV#0l8%FL=}-f;`rG#hMuF?74n`B5Ul=*4x@ zh8-L8=AZ&@L|&d{m6J%#%`18t8c4-U4@mo&$YTCf?vXKRWWym`QmXKd`q^Z*L;*T) zgpql?{9)nBDvPunVZ@|lchc>o;yS}WFSa)wu0)$x+U+{VLyeMGD?4VYuU*k=AU}~i zT-qzZ@$T-%1*}!}qO2+R#C%sT-W-T-ofvB_{{2tQ!dw zq*@2qlo*%M@bZ6b7t58W(}%+aYttkVx;ZTHHX6Q?(32*qz%M?Fu;I@&Fj2! z@uI&T59XV+hZpF%BD+iAngRutluQ7#h-_ z86fxKUhdIr#s4#;F9%4U_1__V-tar4D`}Pm?ff5ts;uG|+WcaNclh0uw-X>WlQQ*|9pWYjcU*si1rz8g- zZo?yIn?5`2ilCz^Ls>^OtcTlIkHKf1}4x}fe)3{@xu!1ZmJ98aV6-MS2L{bE-; zY0W6UQ|6eM^Jr+|+SuHwFCe?Vpx%zfpvGH+dcMc3dQ*PqKydoDey+~IIt)IAtqvDv z%71BJmt>Rfm>)L2&1P~7n^&z*ij=gqHW$J+Py80JZ^kN3?lf3tkC|p!d!jC0Xvfz* z-91f4aZw0gKA6vV>5Wn$q_yz9%l0G$jh_p!1Sqco&^(6Sn?F)rN064pb?mo2lB=7^YSW&v>({Vy0l_D{oC?DuBM7&# zauAV<8c2REC^Q96XZI=3E)Z7LJE+B5JF=LAD=~5nrfA}=Zli4(zN-7B99oiX@MNx* za>pzH1gX31nKRr8j<4vxB0ZbUiY{Eu9(r>F#h;?JS~o`+Yud|ZFgo;JYt=P_&=bWT^O+q}yx+9g&E;dGOJ=+_EGpD(-aDBpQa`ik}i6Fa`PU z)-v&%zPJ-fRh?DxVfXuE*@1gu_c#!zD9u}%AJ$G2-W(E|%w97dTP^z@wwM$fsH)Zr z2%e}jFwDRBF=fs;p^?*Fa^ZAs^yGc1yrC85U zV~~Gbot>xF4h|31vYu*HfRv=p-c)N|y&p1V_vDGz?(Xe4mc6>D%PqQsCgqj%Omvdm z(63H8!GyRzg_DOgH=d@htQb2Udn`d@VI`+8Pu>5uBz4%S8{pa&6(z)`TQC%`T(Ae< zpKTd^B+}%0>n?}61~M$3E#z4xt=x`UZ~FH8{Iw(@BctTyY7FhB!=RURz~0Q0D#4Kj zkWqJc$K2qD%l@k?CG3X5!Jp>*D8Sp~EMLy*?=EtCFSs)*sv07H@ayr*rvslI45Dv- z4jj$T)+$JW6v0o9Lq|LLa0pbhIjdKMq6EkR?Dz&Zb-C@H?=maJO`rQrlQlGm8#tZD z^~u4_gO59_wW(d*RXOw^o7T9e8#y?Lz?TMizy1tc0*aG&!xR=2>ME$G+Q@6fw*TOs zv@|nIhsf>H$$pc>)OyAXozs=PEh1vrpPg0n_*;R@c8_vd3gSft7f|~6z53R3uqL=* zjdQ}(?^k~#t`cgmP3#5iER{mC&@*e5_Mf$5BYd|ysa8Ar)ZOCc(6!fC>1aTDr_hz# zeOst)_OS#-LM-$(X=KUNK!L%#y1Ir@xa>(ktXHyOyo@VK2bUxyB7z~?A^h@;&ZAV4 z_$u^H*hYd8Wlq!H%u}mpv&u4iQ|xX_1M-uB8(9*eq=L!NldKf20tx${@$S)eoeAm$ zqu^kzSQVwVC{`qsb)EL!l(?l$NWJ-7M}G|~8(n~Q@#THz`7TN3dtQltGtXsvKO9`- zNy3G`Ekk(@dxmT$|9H!qw!3=gp+${r*<1NT?}oYn;i7($A*R!W(nuKfZa(DTK;}__%!#|8)=wD ze@Wr1G3bE(S)2B)>n~1u>oSNsOg99?UEh?2uM9){r@YnNlXSq=B;YGI%&V8Udcpee zUSWCw8P5U8v+^BmLzY?P5;qhqEMW5w#`%N^SX8EP-NzP>FWzrSq`iJv^y!Fmnhc`9 z2-utvjBd-P!1epxhwb|h>zDE+8^O|n-L**M4BWmVMudMC=0UsMtof#hNte$35_+c zK~}KRKfd@W^o0^YcVE&0%LWf5Cj`>TYveNb*{^omPatXibl%a$YxYxh6Xtb)xu*Sb z6D#ADWq7aB)v4z!)6eEQGvtpQzmAM#A)A7o_OaGWDPK9DF{}!J7!z4!cEoYOqK(>eA&-F;=PodS|hYlQh0plQ?wi6 zhg1yCS{|-ddHT*g7xx{vorW(LoQ6eT)zV2?S0L>h$ZeiUTK}{Ie28fj-v7YpNypt~d9BM%=e|aEi=YNO*h3LiY}a%B@a8~+JLUBY zMdUsGcysV+f0Rw@f+oYyx$?&Bu~IY7r9Rnc*V<_rAV+Ur>yg{I&RnSaT7GCFv}FJo zYb0(csO3iE0C1J&*=<> zQ3kqoCFi2sV)LV-k|7VgKQpsnGQ^#d1q8Za(P#E!Z=_K0m6)K$>K7qn!j0}A=|zpx z@_o+GZ3tb=>Yt#c`pXK|_)e=p^64M;>ZkL}y=mUUJ`;?Hz&$+tJ41)tQ2ukEzHtC* zH#{0#%1K9ydy>J2^(#XKO?WT6*(smUQudSmXtFDnS(tdr-ux=f4gHv2?}Hnyb`e=B z%!CX+q{7?Dei(Po@I84glIF|4sb+ANv^wpd>NZ@Qet6JNT&czc09W;sf;60n>*SC= zTR)pU0Zy?0aXB=D!6nphy5RJUj)nU=6u6InF=Go{HJjwURm0{l8SVSsE zO9AaQ0Rw`q8t#ri@dO68i_U+QC>4CzopIl%vJk>rm@U^hPFrMulME0nqv}sOMwb*$ zY=?r|sWcgQRz*S&OvkLGEmEzdG|1@`@1@mOGnQTamKE!|;|z=z^v*~>5dfZZdkk)Q z>C@im!Qvk9W=+@WhR8z5^u1-$>C2+a^1okzX{#K21G3wzip3F>Tv?{2L#a_#>L*M;|p z)h_3~KIc4K{3-bDrN25lLw;v$cYkulkJC~%+ufE{cz*o&u#MesbUu~6Xmf6{*b~Pl z^D8VX_|>JqOq!AxYjY|n-4X9x`=2lFj=Vg(;R0+8;K|OIN{Jibq#}QE3Xg52Jr#-c}4#zHoo zXJ(;a@;F=Y;h)zcW5>hp!P23@+H7vyi(9OL3uuquei+^(pZ!?{0Afd`Ce{ahLN?7q z0AV29BNPsgc)ushU!0Z}fA~j>9uoYgA!mh$SEK-EiIof$wh83b>P;>QhmSz{iXWvC zN}FB{a3PrAnMLiIFI4x&mxy2shLni?=$y=w!2KeJ?)*aS8_1TU`Hc**IR=m|%@T}g zZu?4<(uD9u_87PfyjoVkG2ENC2_#I{mi#-bmH#`d-Qz?s-ZnW%O!8bm!`5Dm`&ZSs zVCg$ZvAZ;A#-%P_41yU9YQcdpPb~T1oHv{{p|&8WUew9*6lUm*n>crdfzzVY8YBjr z<}t3Gl$d*uc)KN@Z!I4J2bP4d_<-bqRx}Vw#6A=QwV`)_@L1RfOW2=P?4uwLdado? zyL-KR8TQ19?ytp`$BUC=_*KflkiX%qz7r1N65hWbH0_SI0M~Gj0)F|lPZouuy>IUy z$1G{MIy!=-r5Y#u>r>M}23u8wvvit3TcVr@=44pL1L^SKExg6rl3|M)N)0bt?~#75 zyf~ytQcJ9gAkZ3>zY^ZFp~<*4{X?l`&viAz+3qhS8M1I75qkL#miD_X9vX2$bL5?9 zXm9KPtTn$gxS=?;fm?Mw&}TAa^A)(*C}g&fabCgaM5$}+fZ)T@IQDGnW~!lu#~)W| zi!TSi-~JYhCckt?11aw%?ya=F^|(2y0CNF@DE+WX%sC+R2F>)MBX?#c{c1PsABKg-`EpD?_36(ZcW5HVf63?WX z5w?*7S2_!?VM5V@`*t>0TT*_DVOu9lDq{1^xeXl#><;^PKVXgjUCyM5tLV`!#Op&c6DXwxipF-{KWX7I-Dgr+T| z$6Na+nAbuBsoLdtxBJe-^BZseES#AL%IOKNiW7jZNaHH&;zY(2g#ds+f4@YI8<+WP z8q{CRIiS20sKzGO!1F8`t1hzQqwji@_Zcmc#S<|KOHYh_XMn`g$G7OXYBpKfwu=e z>FQbI=ASH2bk7)CK8Ky<_>qBXI{d_rF9-Q!lJjWy`+u{s)8IJ>I^g!{YG|{7eThz)K@l$ zlmzu3v)rMr9BDsOs~~?a9;drEl$T<`)Bd#Q>RM9Esq`>OaLjGE%0eth}9~JTw{TnJDn``(%k|T>h)CU-o~WEbq^G zj&-HD)tbI4fnnd1DMrChy)K|s-UOp7G3nw=ZsQe!)gD%Dp^us~KkZ!11dj^e8O@gX z%9L4n2Aii^o0t7iTZ}{t3Ut-rLZ& z({8A|>)g;Yd3kx3pvJeDZh#f#9ItWk&|lz5ngK&h^RAV95Zpvpluh#YY( zkXeCbuah0ru+ZCRO2t-JHMA^&xyqTGF>1{!4c0%)c6FuAKQ8Vz&2_I#znS{*kiAA9 z>A-bR2^*&h6NYe^yOgiG7 z{{38mv?*eacCRo0vULU!h94lV$(@$sk&?01_ZHcspc*PskM9G?|!1WAL1Uh{=T4r6kV`6In>&lAtnmf|G5rpgt34PHQRw1 z!N_TV9wFVvXl1s0+T5d0?U$F{$&J0Liz&(pDZ6kr8!#NDm-*COGtcJOGi3K*R)P4~ zpvZGPpDb!=8`c|=eEa1@z#6$LwP-GB6b#9b_OT;qm>|^Tqzh#AUwyKkQ8Ukrj4v`; zBFkz$9As~f8@8ngyfQZ224rze2Jj+Hv@&JsV?0#i79x)y7hLOZylfo%0h!Z(~{uYE->xS>Kezt^JMUhr^3udOMZ zm=!c`gy?@#zpNKc3ziI~07SQf#Ut$#tDkdGRlod{AHO0$@MsMr|Ib98lVJcNaC{9P zQuTE{D1!$c<41;mn7IBjlgS#@MrkK0^M-Ijgz!g=gWZQJwf5r zbV4dZw>?zUK>oE~8D1nGG#yaW{AyKYq8Z2zTrbxDqs5X!f!wFTa)O7d%b^oUuVXYuwE-rNGa5ePD9zN_87~h2h!CADs z%HoUB@sYIu8DD)ung-lMWfD=umiOZH9%gCq@+#JI33*)r2gHBfW>1WLG5 zL2&(&V3aVzWD``O$Y%>hOeWKB&?hNPRZ=#^X5iJi%`GE0V}aW4DK-`~x_@TlOP49Q1uIJ}vl zFVNL(DDzj5^dk>cBf@UkJ%>Ue(U&f9w7+b4byF^&I_lC5dJP-J>(C>gPeT+GbX??b z0ZdFvkjSph`|JO)+sG_%MdaZ^pfiCzXYC%`xRuA+0&_ooII3GQGQ8o!YFL2 z&F7yd-jlZX%<)k^x+bT0d+egA_A;;VQ`S&A&t|&~&2(p~f>0E#Xf1Up<+V$5Zc3w{|xiTYBXAH#zt}u-ubYF&oqz!N++P;i>C$b5;ujn{m_f zi#+F~i46z!?_fIBPYxwdXLx!1Y!O+E+PB@J`VSogI|+m%ZB^e9DlPam>*nHE#fH0$ zN4$(Q2E~9e7Q@!Nbo>eAJFg#8c^#~-Z5hYqdh})@6*X+n!sy{TS*CPI$c&Y5J1ST% z96x$9*gsZrFlQT*HTTv>*|v2*8_r^Q{mEWZrQnEYi&w~Z#)T)sYL@XA{UQ#I+v~q& z*0H5(zL+uWJ?h{u^!;UY=xyQAX)N`0vgI8;wE1}I$G;jq>dU+)A12W7Lpf|^;Qdke z44Z<5m2MqkNOPaQP!YpxpYYmoSc}s%f&IsL)}&Nt>J}>VhEzuAZ*QNiUddW}%!Wr- z(gdNG(WD%9akEml{;{uZPj<}x>#NwC*2 z;6z{?YvSEq8K$es$-u`f$7ian-wL`{GF=TfdC_yc+EMhv4l;Zof18LHCru~YYd;kj zkvL|HUpH}dun9c$^`b5DLEEi^FL5>m6VtGYL5=%9Dpczn%eD=w`}g-I>M zhG+jkCiPSw4QbbtD918CuCoPSuI2bcjF>a(7D1!z-cJ0<x(%|7mFRs zq*C|MMAq28#4VmP#0R(t3WR#TxMbu?`geosZL0md4SCI5JaLx9dAF*8@$Dwwhg~Br zvEyI9G()f&1RE#pg$~9(n#~8&5po2MlbIlk!`@!Xw8^pF{z!tw(vt%c$Ml1Bv}e)c z(IvKQPUw#5A8Q4{BCvx4nZRi&4pEzmm>ew zVLylH)_nea_vbx2uI^ONvKqIfl>ytV$y%GDt*xcd#kYtv=_i8n;?&ENm|eJ?)oeUgKK9YVE$eK5Y?vxU*SvxsQfLQi8kM6)IR}Ibkkn zTx|e=o&JJLPH;0v?)$KEt47CT3yu6aQTRor#iqUYtK(1jkd{X7r}gazTvVwq?-(RG(YcvM0qB2XN86+Sb2Zn zeE%uJK@!k3N04QAR&5jzMy}hnrmCt2ySp^5SaiW50gq@74qQrmLeMXQSXjKeHa^q< z-win44Rt0R?MXQGSsWg1dnRkY7fjKD5wan?-6Ktbe7%|eu>t~JLTYd5K#m5Zn)78z zsCu?oH7;X<3b(c*3=q{_UGy@4zgqdORT5VK1t~Fp7{GS5^%H zGw(hmrQ|aTB?b^C9_@s)uhBhDK968__57=2W~O9VL~E$3TK`!{cyK(;Sf*+7giJL$ z*lmzfF!OUP`~y8vG;sk3^Os4P8kqZ6T{#m50258ntGob8fR)j*@E`FCJR5$oDoR4; z+>)?KQ7z{R*ZsfBBPg7;7OzhZTTO!VqO$Qs6ijnCTcY?+e0jrCV!d4rbrTfGdlxn+T3M1F+=HC3glO6Z?9Vm-3J1^E~aQ%C&>rW zFz-YG5fQ@@V}<~HO+0*~N#whow}%Sukw_EDt^B#REWR4gXhYQE?UwX)_N2L95nr%G z=Lo8pLh^Cnc8{_+#K1*vXP_TG0#z7^lkOWt6p@U{?ZTSt`jb-b&I9|KK9asm(<>ux z(sBoX`0s{5Wx)s*~ofLr+iqQP(4cz&LRFXFoRg6Zx`O{3bI zdrDPKHpP>Z3@f-3Mj_LR9=~FKF>)pSR)OSqOxi;&0e!*y<(v?PMScy$^(rZrrV#L_ zm=dcQdDzi13+KsdaUM-7_Ae#EUn))t7isT3b|N<|Lbj5!ndOhKCR|k1_Z=Vp0O%{2sqlzxaMRwdH}qlMY(n zBP|m^dH;0wue`i?C|<++)K-lr!UPo3vd0x1NLUxz-{?Nf!4CzTLqm-i*7^t2Qq~5VEAeoRNFQt&wYI0qlL$FH8PC_)Dt6A zdudP#`#1aL6>g|XTL~&8|Dy0SJrKGL+kN7`KW{Z+X)j#anT^hI`SVj@DM`0^SaR$` z-9(e&SBeFas>Dq{Q-2{-F9cyGkdKD#0d%gTzxO_$;Je#nkGa2ID>u4wUs4jay4CIE z(l6KOyfSP%>5z(dkB*@8k-dIFG;B*GZ#n$3{0J&!mrBT{SxFjaiAaLT`~-CV);X?Q zkCQ{M=qMc7I?3%0J42008sw9|iy}c9Zlk5Otc*%|E{^%+ej$J%D5!CilvFwD3{?O0 zX6}`f+blA^&YxT`eZ%s^HG5fZ)Aq;UN)gE0001-iTEx20V_IgZZjN^ujm_2<`0n)G z07#7gND;8(%7Uzth&H1%(hqWHn)U{gZ!6cd(SmhHQixu^aO;~QPkX)TJGNk6ySUhcx!7+S=WheGc=CPl z3d;^A(AU7QTI6m`@ZRx+p9VjDcmkcHB_fYoR4jA{ym;lSB2V)Bg{#}*#XK_C-$cZG zJbFDe6l6#0>S|0&Q}_dJ70+rh@Vt&aXp8%%5yMe#q~9PQ7`VJ#q`um?u_F2SYgxe2 zrZg-%;>1prKJS$vH2Dj;l$eY2kqAEQmYGiu-(9u2Y@8`21dE0ylBam`k$xZ|_5cs$ z?SO^;`Tt{4`ri?PP>$1Ax2dARJU7aXUT6a#<5IhsJ5eQK1l)6XBlI=n9aBfy(s5fL z9RsAJ$#wH9LC0m?Q1d*WzJtp0=EE~J&I#45#`$1#Vm}mlzS8h6NQZ+F?{~F?v1s?$ z+&ssXYvffx{p@S|(F_pciP#d+iz$pf=t?%$>}iD4=(TcL8@ZJVCGZdhwZSKvB|QV?eE6(+slH za=vMVaf6wk7f6XIgeQdQXduJboA-ZPkdJav&4;-F7FyKe<<%SJ_g0qIPK|8{kEQ8F=yn7-#|*!!rtPD+Sj7_kJN*6l=_(ZHTGCLSe5rb zbUO0ug67W`ydG?cDFcb!SEgzCBt&%31HJ#H-OBmq!=2f)pT1myTOv-4zsX@&3ajG+ zF6kiXDU-r3&faZ8-#hX)b;#Y(POz|ab+{Je_6`;2j+cR@mZ@a9SrjemG-WH&@t<(M z&#-|x2vSOi-r07#dhAHNZxN)kmGW|$o8%rWdD1jKREM4G-u(b*F4_lsj!q&`K+71N zj4zV0R7DJW>ARm2IPnYrr*h zW=Y`JbBO|Ww=M3Ay*YvqAO%Al444*d$!u}ZW2GZ8y$h9ztAEV3&7}XSUSbjB#1Y;} z$|De%AEz#isod>@miLS{XTrV^@WYVY&SBVrq|J#3p?fWSOQiKx{wq^&S^gg`jY{W; zf0*ATZTQ#rKac&^+w2h{Y;SQDpBB;^_EG z*N-nsTupHpZ{^UcJoS(q#3DVNJ^vi)D<*pvP}lvcZjHmtdEC=69|&sxZ3%PC{QJ?R z#l2+W&uj59^u$}qv7PXVNw2Gq%H{w0vZOcS`3)(NN5#+0n0sNe)`j=(IHsd5iKlGU z4OBIKWL(r8ZlIN%*taGty;wfdTFD zRB)?ayd_otNxD=rwc1IZ{e*mdpjA|F`)8Lz?Cy}X9(A3;*^CR@cipYKiVM;3z|u%z zj3Y6e<}tbV*gb6E`h9H`?jk7?-xz#nY|fgn`H6;JI4_F)5$J#W4QA_}(Ul7$BO_>K z#h(B5aaRxEG#5a~fV-DKvKjX~ACs<@6aWAK2mov%VpCIr!)YcG002-E000yK003!obaG{3ZC^NOUtei% zV{9&PZfC`pcQl+`x4s|M|_xtX;_x^X+y65@hJZqn`_Oti1e|w*OVoi*6nHl*Q zX=rGe^&V=Op3OgKXwGrapFewBMdf;&O&6c(>uS-Q{{7@P7pKzDT&2^~Qa2CErVzvY zI7W$=)|C!ZZmJ2%zrBAyGMIz@?WGj8*h|Uoboh@N-5y$kChIkTOQFJp7k3=u7fU)} zG-bxfWjWPY!l-U(*VsDe1y(Zq4{0BC6u(XSowtgNYvr-g-u{r&w0kJJ^> z&pP6=v-wY<9UxZ^4-Ypt17qWu3dSYF=g$%CGxXd5jfcU(2XKJvbeu-;3p7DXf8C1t z+*hQq&_6V4UBgTxRQ+9hJauax=dVjoM2Zt(NQ|>2tlWeoIu+3aK@<4+_(D&0p2Wm) zMN+R-vG0d``em-gku`iLTg~y)<_gE}MP2Ej0yaa|h*M^Opq>Y(_s`1)Zwe$#@%4)m zZ^uRJ>4p$ree32K3l^4h8+S|c)Q(#gzxpCiTOw4E&cMBx>Ei>gXt-YcXXSeJ(}71x zjBR5Q4JO;Z8M^JBZOO>@qZ$lr?^~^qzm#X;xK5EZ%j$)9jb?$9WH6754d#8gkV}o1{O4 zw#5}abWbVIn=LEbe*L(^!kR1fIY9OMQ3-wFyeRvmQAW(Xyv+Ec@a{HauTSGFXfcKj z+dY9{df~`L*&_ZcT^;e<8)7#&Zf5mcfIuJ1D$-{5SAJuoQg zj;uh>r0tJpQy)gwo!IPabn>PNFI+cETF@e15I0Y9a=DfdoqyQpH5nnG4IS!gl}7h7 z4$6%iJ!5KLJ;<>;Y3hX(eT&NA$|0ZIr5*DE&fApkC72b-8i71spEKK*MHj_^V#W=% zIHC>;IRxP1?j|5YDL84GdEq`MS%?A0vn<{sy)MhJ^C3H6ezNbXw^6d{k~r31H~jXe z-1m&-ai5fmrVX{k#oU6fvOS~w2h;!jVe~r8=aLnoLXP&ll~K{itGd$bZ^+4?Yil2X z!!xtf{NMWv!=36TMuvya!``8|^4|qe6m6~cb_wVeEABR4WsCpR@-LA8_fPy^FRq)3 zh$ul%8XJ7UzKV9ZQ^lOMN*Rc$so*JNs#s#^T;k1y(z%NZsNB)QPnwsm@c;V#tLl{Y z#KOLL{P;MjO*Z^?ocfcduMFl~jbYV8;zY|xHFAFztu0HEoJ)0IPS(=KL;jcak#es# zku&Y7Gy1bvbPUslHB-Wm=4=vl)N3XkSXXzy8$9}3F4L%@zbRnuu|~UYUH=x8Ds`U< zWs0^ZI?6K!P62}l^TW#@&0f|qtUPyt-M#j<*a(XXdE>*;kz4f54LU@TT6nm{bk+ql zLBaK>LiEo1nW%M@z{?d+prXIOs6Sjw2tWSIO@EeN$M9Tyhu?q-uUKj_>uf;C<`&w@ z^4rw}_?=g;GG$;ftiyGldAxT!zsSVg;sH1o84Id7ypCeM6SyXdCUj%@bHDWh2FYY{ zdODY+q2miCWv_hK!F(yDz_riA)08@r2gbTYzVPMLo zl9E<|EN>OyYLoz_G?|rUmsc}U+V-fJN3P`|bVmHziCpTeT(Y^HSjH0vJYJ3m*`K>{ z;XguVEgQ)?+Q+j%K8Oab+^n2pKi_^9)D0hunwa|D42ts@{dC&oR)bu9^19TwTM2M^ z5IIy;Uxo?u6v;WuWt1-&701>o#lb(yu^!y)BW5DXfG9Hf#=sF3c@=p+X#6ieg;KrL zY^j^vv+H74bt+)3gAXr?2R%g^%0X`^MBMn_*@{J&)jxjxILI;fQ&0m^W8)2nQEpQc z#JIO7jn~{-#CuDfaf2NY_y3PPyRM)~>G(o#j-g@k(W#2xqP*}6>RS8B&DdCmKw{bz zFc0|ej96ItCt2gc&_`Te$RlxUf#R*@9=XWhCaYxoct27-b8e< z0S};Ib5jhM<1y5R$A6YE^Kdd{36yj3adb@Nd!P*TiY2)DDTrNT+GCcjcEHcG(+aD$ zjPWn~VSo3x6U<~1;OEcGi11zPPL`PKBDH?Gj&s0s@F)d*ldfah2)hX91oKudL4AfLvm^?&jg)WY^(8js;gBk;we~*Z!Qz$A_ffp3VN^E0Q-x@LHcfff7Y* z=M7x{C1%(-xDY)Ks(r(Q-Q{V9yD;^pFJ0ouPbCxU0_7)2XW#BHZ$niCT&OkYee@*E zWAT=YPj@Ey;h_0V$ki`lB~m(`8Ej z8XNcj45NFF<;V{~>19n<*RoL;N4pMc6Z|XomKGBOgNwar{DRJMp;o&`9Xk9eYGjbM z2P+jUAwft@-)-%Pr^MANzS>;Dn;&L*uEm2MOPX6)RR6ut1Ya|UNWz6uFf34NW5b(E zRLhzf_c~@9Tqqemu%;ON@s06Ynxee2hMG{S-EX_V<~vU#{a1d*Ja${#2>R0k_0{h! zgu~PH^umy^E?NH3Zx$7$evK-qCZ9ZPKl8<>bDdE+ImDKILpowxPz-3r@o=~055aey z1-eI4e{)dcAqoJzBw{b^t^zkzND-0G(d^ztMw`Zj znepQs1@H7n?uxIwT*h{`>wSF3viduzBxrUI_kO)??$J@AWu;85>~;JMIP z>T^I+*J0}gR3324ebwmAnR(xH6{r!2Kll5`|#Wq*j z4Nxs7Cax=mzw<}}2s`gy(r=UiL!)d=LRm75z(qJ5-a_w7;;7Rb} zV1!)A>RP}8xe{$<@TXb#H(mfd>vx{meCXx4aN2yZ9OeKNd297oQFXO;URc1|0*o3- zF;|+s?E)FFmyxNoJ#)7F$y`LBO7QlV-+2R4Qe~)$V~(J)z78Vovd=5>0O{9Mxci?e z&ai`wO#J$<=g@-*(t|hIjToUd9nA1B9HDE|)5~4e!z(=B!A<%8Jq#v8Tsy>dDX@V- zTSWWD0Qae1RU$m;L#RB*-t?FU`}2L#%owI#8ZKQ>qtC+l^Q7jxu0QLw<2@jDmwC_X z)$*wCBYoH1KdK#AE+KCY%TuaV8 zm69k4rxJD1XwPSM`bk=M5k_SI4xzkr708? zb{tzbrPzv1w;FQCD_{R}mYE}UsD*~#WOSu=dUm!=x@_M5D*DgLjwX-aHNfk?t&@bS zIQH}>DQ^aZgmAA|FOER)tsbbtUI*5mo>0NIFRA|0+e>mTIXNo5>CLG*Dy3frJF#3H zxKq~Xc1}(~bY;{X0UgRxaoPB|;#qvYPIemR{L$pe4XrkX2)4Bb;?Lw-`k{4W>FF}l z2Nqv$<@M#r3A-;1Q^qQHXl1BDO#%YM^3phV5(qufYajd))$4y;DI0y})y;ijCT^J; zS*tIxB;)(D3NF&pFr)0f;P&Y8ykocH%)2D4ZEjne>XmEv9Cnt0<@yMs6Jp=m}f?*6ucv@rAS3*_xu@BufH%S(Xi$xjOp_htH2 zHoLb^j-}5Im)4b?U}bxacU_vxE5=_c^_lGvKM4fi^=WS0)UCIBIN`1CT2BI!gw#dyE_V$8%n_gW@ zeyAr~Q?ng5N{ZO*ANIy0lwJH--r`z7RjDDs9${eBoXZNq1rqj(9- zDQ#1C&z&&5m?y7|#o8Jg9vy3+hk>?&n*o3>t(LX7tfaa;lCQCjrshV*?RH*s9lfVB z36u$FX38*l^STn6U}EOWgew*I=EaEUTFcmBC9R$B@E-00U>`Y}Hagj_lk#Jawu_ez zsj6vNN+4ER^+kU|`;wofrQpmOeMB#EbTk%Xtj>DpPPxB-$7OEvm(nIe^EQ+M|P~C zp>co4ZACA?yIF?NV=0KQI279Hb8?i{*9X8=C+f5#K@wT_RpmViA%%#yU&U-vtC>ODj^o?)iMKp~MWDo6+rLYdLi*uC(cv6p99<9O^yq7f zs&kCBs$6oxQfplrG}hS{2%z=spxY-(?H~5lLd6R){Ae!oZ9H7I{S`i#ncv9{bpc09pSNSmm?vE;nr9`U(VG8v=qaqW-t*#Jg{=05R?7 zz%fpk+TkOgsyCNdmWx8tb`4O-!oot((Pg)=FV+<`2coxhRRz1XKT;E}SN;-`nXdXT zo&UZpV;6!!?$`7#&Dqe?HqxrpaESajP)h>@6aWAK2ms3>VpH4>)6lKi006DB0ssjB z003%nb!BpSE^2eETWfdQIFkLozd~YX6~cmPDVbzXXd^ml+v#K`uZi56BmKZn5;#s48F1lx}h6-g2qgYwdzHo1>GrS}pHvOo@(s z4Wg@ca>)bSfMt1$IYV*3;gJX(6^+4Xc)_pnaOoxQZ$j|4lCiqup13aCm%=lX8zC6K zBNA6)n-430RW2|sdbqwimvN~@>4cFl&+vf8Vo0SqQ1WWSZ(C;QgzM$9D=<(B0sAm3 zvEirUxG)4h7xzTU?GAVn&*>6EJJQ^|)h34f&0$Wyb51tQLv~Lq7V`l5u|pB2=_zyO zvGkNYT}mQtTgf~QR%9_SzQ|GXRtd8I1?(;E1Yu{+Y-oED&(c&c_X}mV5;(3u+c9Ik zUgRXTcRXN+SPkjQ1yjU70479mV7P`ag}>J{;5Hb%Eg z>%WxYg}St$I$Bi6Jiw!Ap@?!Y#!&;S<&Rx=wbWKq4|;0V9e z{*aah+ksdTV`r7`KXGq>&0TP89_-om9DwJJxnaQ_a236vnaT}Uh?p2H5ddJHVOiTY zWxfQ}&aONfjOcD6`*g|Vow?@SY{O~8j+Hn6QX^?JHg>LLd?7U{r^2+&xGXUYBFbyC zSA~Wswc*m6U$*f$cBn-Y)R1xIt;%j;i7zx^!I=#{yp>&tznTSPMubfTq6~C3%C#u6 zK{&|(Oq2HF3%#EcBCrVJMC~FVzuE)zS$coiWq*i1@>+)9=VR<##PSa$v{iq|{`-*@ zE%N>UJHd|1sL8J_>t3-G?2Nwb+uDrWLAmJl=>|t4?DfJUHJWI{3THESG9&WgZe|Os z0d#E{m@!Ou%@cTL7j6p|o~-n;;z{3ZILzr*VGg19e|BG)kHpbX%Qecv&lHP1831wM zR}wLV<0@X~VlPE^ct|K~ok!79dKK96fC=zXHDXCdtlwvR3;nz_y|O))rnU!9#xSK2 zYY_3wc1ia4*|GRH#jo^@bPeoiMw8p zE@LN1J}kW;G-`$i01JW8AcH1-CAYvv@ID?20IK3N zT;$7PFQID?cCVwr?+h}obQiqMZOALv&%Q?phJY|~vmnaq+l&5NPhC1Oy}q&;gBw~c zy}7gxrY8p%+_D%Cl8^9QcjRa#g);0ihpYe`40Q zWBSiX?}Y~=U(vOdps84!!-JNuGi>Ho#o8@K&bsmf&shi*GT6$J5uc}5D|NSv&%>&9 z7>0*A=L2|*WpwT>Pp`dYWvB^3C>FUl@d~*wN8dtIYzxE*J!mp)CNZFRgnTQzr!nW{n%ZdMkh(fF_iln}uH2Qj+K>K8!F`hHVI0K|TWD zfQYtsJtKnA!YCqR6yF_?@pl1$g&x*{?+$sgUQt5l-T`b|;?D8i)p@kk0J#V!=81BE z*u&lH+m2$;s#oy#PMZXZJ(?bYu13_N`H>n?998QuMpo$K}&> zun&s=vzW2I#eWqR`sp!yw$*>#w;1SV&y&4R57O@Mvyougo00p_&gON96n-Ag*dBYB zPOWCc)S{NDm1cBVno*ffA;3#vx#fh@scqZ;Icb(QTWkh7XS3Am{|d@`EOpRtN>lS6 z1sSf{U^e)G^wtIT(u3-I>yzfOuL*z3h|X9(3n-fQ2if4?S_bcNb3yaBwq|?sy#G6~ zhzC}5{kg$j`W!F+QGNN6@n4$spuY#`_mjAPed5;Ie#o?o*5fxX#^ZV`WGUOvUi?&V zHBIScZ$`~8&dxr%jd_1%{KNS4=acu%1~7U2>h+rjGp?=8Tc<}UB|vGYF6sY1J+OUy zPGy2LTI>_pW)_iYi*lh9=?j)*(uV~z8y3IE!n8EXtRZ_wa~~^SSessbD}W>vls6Jjl9)Qu@g;_Ax@trffvctesnOCBLQ@kjY3?3Rsr`57=}*8)?=njM*bG`2^k{ zWGrs@KgGeTv$t;^90dID;(!=bjQaf*{Vu0I-Tn=?lTY`v z{`7vD>`f=3r-EzQncf`me;H~&*b@Q*Xvm)4;5Q5*djVQpN^vlOga=&7nyq~YYV0c3 zuxxXLvH`^ghONP^)t3gX?IGKL`sB&ur$vg0WFth{Xndrzh@-3HOD{f-d<0#6-Ickm zjnAJC2kDb1kDfi{!@;A+y)b?9^zowsrK>Tdf|LNh+u=fEU;1f(g!RDXK?aFg%l>rz z5!_~YH`%O`XR|6+D1uz zE~Lt8zdzo+_7UK++Ekts_!tosFHIcmQF@|7XY^U<(!!#JRIf)1;_3MLkLeIY>&c^8 z-kuu~QlSdnAssN+J7@j!mqJ#*N&2jBEIlOFGN{j?(W`IX65EWk^OK=M`;0n&WWYzw}LLax6w!D z&rmKbw^BDpXG!V1Bvt4z5Qu0eW|7MpycPHesYZ!NiV8<8fme)hsM(PxVhqV6fe`zW zn8<@*vvH#ReYQlJBA~PA!1eKM__PHzzq{q!;ngXy5=4QCwrF~KAD=*9x3R4wpq1wxiGZzJ17L*8A zxLwFPhGr>c3RT8P=4w_E!z#`l56kh&3;iX~brR12uO+orjT$mINmKxKh5s?9XQn(; zK4ac!9na-!I_%q5)hEJ&IN#8*##v_A0p2>~sK&wh5_qdio|U9+KQCN$0ro2bNZ<|U)9nsz9R?n z+$()RHIg+0=?-gg!pK^B=W=O!R_-ffY6Oab#GAYI7$hf^7r?H{8vtgP>dUkR+D2Dq zCz-2l6}hh^9850vvJweJ#oI{qBVKK)RUJKj(wxT&5#xb~>!u#S)M4Kuo&+;;1-c;6 zwH00H9zh8GD_FX#ZF)prEr;;!9uIPEs30M!PUVXPTftPFgf59Eq`rT=eIr`ziBuGV zM6v<`{`~PZ4|RF65v!2*D2g)K^m$45pPAE1Q#y7j>=Wik83!dFXPP6aa%$Ur5a8-) zs5z^=AE?L6mT3}83mB^-5v2DRYIzAw1;uxZ^n?1cLjuIB*m|P zcF7Rej(N91&}@#jxAwTnCQUZ7&z(iER5Es6pR{e^B7RW_T*|ZXRvm6fdj=Od%@O+b z83^v+5ZjDOH6r?6@3ipP&0xP|DI5Xz+{tXSVeTJF75*uyjQl%cvJljGtnGJ30Y!~~ zqMmDSxz1eV|DQ_Cfp4o~=t~++5pWdkU{E7d&RCw8AaXtoY9w;G$c|eymH*MlQ^vb5JC%n zpGSp}KILK*#vd)y1a6<%9&kre7v0 zEy1m+LYh{{&ZjAAuVvUD8lI?8W4pn2}Xdh$Y%o$zF^0lw? z$u6tX>*}|edbyhA!5XMM(siYlm6V|tvV~I7#4R`11t@L7K%uejVD~g7fj>J>8<{=s z-d0S2J9{pzJtI`RqEd!T^8Pu(&4rgYrK#uK$n!6OdRy;H4Oh{(mbXz`&!q8^AhTh8 zK51nh!2$_Kbbm3=zXa4Laplt_>CzU}k|mjBU19N;WYyQ=x=>iu`1m{Gbb$9Z#-&MPsir_d+?IES5ZOOL~wrajrY_wYk zin&7u?fUv_#S=+sC>`hQWW!Wb!V#o9rh-dtGF^GTvsYX)`l3kbK59oF@HKSTqYw5P z-S_DNW(MwGdLfM+wk^$0l@?zil?$e0xyqv_CUQmrkJ4ZKbOT5ovC{O8bB@7PK=)A_ zdx!ccM2KQ!R)#!8DsouX3M+QwIqT3=aYO2*+IuC{UZ#gPiD#H8p^wQBn-`(vXl2^C zZgEYw6>*$ow?lUTh&V=gCv%KzKS@l8d8*QyUy45|13fw0~Rn?xn(UXnzl)QVI=RLXg zlwY@wVz*kV!NQ!58i_v)UVjj`l?>|DjGbg9=fNV7{wOwCp{pzYB)&`#ddphEo-44A zFtu@PWQNf9X0;Jpf2}mW!_wS#bWh${hq0VT7h&*C`W<<@ie-{uq}#Fj8Oe1RAXpev zg|nrWX#VVoa6@lv;0bI_D%jh}nm*P>{Fd;w$gpv&C<4*v2j--mLJ?}PKQq3}Q$i)o zhmTDAib+8GfDSjZPybluctd8Ngxhqq!H0!)uJySIeIglAK@`eAqd%c(6Tq?x;LELF z1C%++1qT4RXXY~0k0z1a`gm0Tk&gcEBrM>y_ELYVD>04!#zcpBhw_kKR8K|1zKAHT z%ujV6o2maIDyO!F(_hG1OutfZx&WbRsInBa;r6+y3mcS4#C_$g%zZN8Cer?p$h9B2 z*b5q#+@E;4J?M*X%DL$p%ccG*#l5%w&D*zkH*O>O{=c8X;%2>M3zF?lW_O1&qmy*H zlkDW}&LkPNrVm@9Z6-45kdz;>w4eRfuL=MGl6Eq4_ue^^wg`fF77F#Q4}-XGjv!7H zFhGW7MDINnk8N?4-Q?xA*3yL zy7}o}!XAqc_}@Rl56L-Gx+<7R2Eyl}RiF={PsI<`I;z%Y>HTP~M`unnJsvMH@DG;BIK-bhhK!&8LDf#8`1!LifJKuu_C9-6t=Hx$!nc2t zZ~t>i!~d^dg&2Ph54%0?jg{EY(HWt8I?c2?2G%~E@*2qX#BI!R5@Vjw95oYv$z#IC zKT7oi*IScZh6OGfc_@rSVMq+KG78Q~6HUzTh&SdK?H;#l2&NsK6;6q}TkjLu3V;?6 zg8kg@OM3^^fLff@lCG_F&!7ust5sxm(4dA<%ZbJ6uRpGR@NYNbkNFJLS^Jc`4f7g%s;URnXSxC#H81fqPa&mI& zzk9EJr%jf_Np7G~y80hog}#No_qa8D_!u~mtui97(Vcw3K+hPzv9M~|9-naQ<6sgn z^mee#r2@Hfp>AZk?h{5XG}lW9>eW>ez`D^bpL_so??BsbGB}&n#f5hv>vJ>UGdvo( z+=9<+cy0p5J}bGWey`?%bK?aAm%z&BLe7)B#}A9TPDTa1Hq{!wTd?Bc8~Wam6GT^} zma#~abg^L({oOo${P>;6n0eZzhpGK-vZ19aHtZOBN&Rl&dF)JQZ;wB0sglLjeC6Eu z@oI|Y=if_pb$ECkJ*<19g)r)8n0*GZim)A`)O zN z&4d~pd3U>a5N`@CLbQ4=U4y#$6XqP*lSUlh(0dqiMAn3ZpZ3wveTv3#xzpPebfK(F{7{rlyy>f2 zw3ccCDaLu&-tgKU%`Qfb#pukyvp7v^!}eEd!CRd9vq@<-1UUp3OCeEGnGXHQBY!fU zH(ABBjH<&*OBLu!R9wi9qg-GbT0+_ZZ;nq{7a4{z(vpHLNy5ZJHqF<>ua)IsZ|?f!=f(syhd$d2KxgNQG(aC8zWqm$t0V**G~a19dU z!^qo^;jJ+qMghBh@%bV)hZRiDE2Dyhctd^-6Y8!Fo@Y>JKI2I#ZN}fWn!#h&Yw{0q z{*cXDkU0I1A%9*O!@y`q_D+~`?~ouUg!jm*p}GCH=FjY!!qXTFI8^!Dfy!d-_h#hgYwBjRN;sb;3J%4_W64>nfJ#^Z{HHP{LvM+@b|+9VFl z|EeCUbe)$73BV`+U3rJ!#Ncy0o@-(|Z_8?p-}zN~!GU=qmyk-_6 zC{<-d^z`drN_{=0gDV)Ww+5znnK}1zE{>Jw@e%|xTDMs<9!J%fqdJK2*UYwRTY8s; zwX*cn7Sj5>B2G$>2eC>UqH~Ew!hv#xYy`k7VvQW7hekj1?k;HG8ydxSY3ThH5$$&8 zM(kMYFWTGcDTWWU@AXm)z;iFoEW zHgXBCd(AX1*zh7OxgD@da)wJ@XYuk5>&OiRVu$b|3)kur!V7h;+NYmE(rR*MM_Z+3+DN-H62TWy)e>RDYy0C)R*5f$onB$r0<*iP04#`mST0z<1 zh@kf2CEXj(AfGf~$<~(za|Y+hh{zBGp}L%}Vp{AK*kv9e9ng#UJwSH8j_DlVaLg6D z^8h&)hldy8xw@8`H^giw^zpUY(nFY2)AFM1!T_9sh$YV9@B%sP}rM+DC@f_YpX*9d%8^RgU3swxYmP& zmWR2cT!tqn|C%R^t9X8G6g||J5w*qF1PyaNf`%5Viel^asIEPO|Cb&<&XqQUH=t0` zWn#1%3l=1U9)Rei1cz;3LF`Jv1hqDf#h_a!lg;^_pbix6X1Efq!#A{vprxeVDp?Gl z@KK4Awc9~zd5dF(pcqjLXj@%9-k1Y#;4&AEvDz=`uvR9_P~%Uv)>DmW05npSfzxjRjLQNGVNBxh>_3 zJle0cubI^_@(9fXT^wz^H?vxGOQ3jy6PDCpW$F_0?56xBgYvbb=GLMTPjq@`#QxB; zTFcb=alEnG)L9D2f#AA#Q>!C05((KCj<5n$O?TN_@lQ=b_=X&;DM@u}xZli4+wD?o zKLsR##XDwMrc^fyUq?jPp~%6V6b9 z$7BNd1tTOlo&R3vrP4qeSC4ecMlFSoQ)E}z2*cuZ-m1r<_>Q)!j_leKdyv#(Bt(ln zxSzP(uGAg&RWR)W80I5qUq`e@qRxTM1y;H7v1uXLlwh@CwU>09 z)3r&nPL5CMuFQ?(N8M3@F@00Mg@vI4Gz9?Aql<8p1jj6uKRl!%pJUwD$*o%B0=+vt zY^~K{-3@uwW%A275ncC=^pn1@7fXZYI zvHfgAm;^|PIxQjAKUNSob&aE_k?=L>4g%7b#$2FIZWgIF&##F{Y2dL<$NZr(WQrDG zV=TWUm(l(TvfnZp)#&W-a66f(41#oBoiEYtIN3mqkKt~4M7Fzo>8_^x{#@v0d+8pZ zZnfxoL;Ja6q4l|luJI@NRm@WmH0>OB;CZw+7h9#y3B2J}1bOkfHBLM^-Hz|=lV`U< z?HFLzb5plOt*X^tT|vf4*Cx#Pta(6^nd<4DHp&_f^Z>=9uoy=TM`q0kbl@ycFr92{ zH!$5{_CWjLgRWnhqli^{eoCvq0-3#XRJ+#qnfRU0KLPG1STCVz);#{76W>|&B>>dk zJS8jP`Q||%2;3H0?~~Blv$}Xni$386E{X`pH-EzlJI}~bwYNxV5R!0rW^(&H`E=^W zDbW&^h>&^Nmx*JXm|_kAyq!o*_{+UPaaC^z2|YeJBjdzg8iFTcXLfHkuzeKg z_|lMIxjKo|i1xCwJ3+T(*@i4=oyjXi2he&U4OAh~xpWTHDvAi0VP8d{gm?>PG>?q} zk=R@_qU6kYKL?R9BGP8L>}qwU`ld+9XtYtU!$|qInvXb{ojhUq`h+X^fW^FJ!G{dz z|5dEy0~P$M$f{Z~VMj=X`nWM^1+~a($3oW2EWfyHcDMPuxeQd7j+9Hy4#781Q-M+X zcH~`zwx35GU&Nj*_Tao&Fn7dWCC*HIBYZv&;%yQ9&ZMQPowfdQaFT=)epf2kE`;$& zWjm_JwoFIY?To3lrPssyt~Vg2-e>OGi=cSXEa#o2{--Pii6G1N;frW?#z#I`b5zai zDp|L7Ub<*O^sq$fysj)sdgfa8nFso~Eu|_PczSK@=hT@vH`8IDLjFlb*4A@vf1+PD zUbObFYhA!5nwQDoVu@v_g^qCe4_gIwLIGjCUnNI> zKMfb@}pzI+xf{O31E^AE#$d`fjsKHMSxR6DAlLmgMg zFgA$xs)Gt=ouGvps7GEDW?04U;hb&x(}Ax&PPx#Z^uq8IPklOpWXwkC)J>demH}mu zMVRMDz^$Qc&u$xp5J?ahC82T{O~F0ugqPe>Sc&URF_&Z4HQ=Tzjjr)U1=riyuR@)h z@XSMN;R6^4X?CI;hYxIg>3%2X01#uiahr2~0^aE@sI}_u293sX(JN;=kOR>WJ=+im z-v|fa9`-Ot++Z~1NHZgmpBG7|14zN#mSkOMJ-Crpkaluf&0Vxaz!w+RN^fAzI{o~t z1B^2{IXa0r^6#Kd>&Xu};#fYU5gmQ{;5_NIOo zo-W?pzWHG}{xDkn{ln$6-M>1a+-9MTZa)mbD(CCP+g3|Ze=;yeP4QNAM~lqln7HWR zL;2lCH>1M$Ppxchz7Qb~TO%yvUxf|lP{$)kz7G$Lxig5kW-8I{=NzOW(i;OK_P&6Ag17j$R@#Htm|5m%Ed z=inwpQ#%bf$t&jegUtUxj$e$d1@rdSoFW$K{apWLNDR+_8*S|5P}+&0PP0-gz?%9b zISXG3n0_HZDl~Y#gNYtJeqS{CX2-6~N9wcWfo;mD2J79#{G;al7tq{7??#{bIWWGK z%cFa>pZHgMtM&76APio5D3HdiC*+Dt+=D)h+wgHlSSdR#W?2uvF`zZ@YjN<~UadA| zow?!vU2&bL3>;*vB|LphEHnxqUyC*v_^hI#MWl%S42usC9J7wg6Ha?;GjMVO2_B42 zQ!zvV0>!=J`qe*jZ*j2e=%KW#U|$I40Q9x{TtIO$n&)L7R&CK+tV{k7GfU zhV;k=(q^=5a0(DstdR-hF8#xee55y=c!@CLTmx`!H8>byrBv!BQgDf|&Lq8=c_}gI zU=s_;U>Cvv5lw#FO{L*BO7BCHrbBwMNf6@BvjJ8Jo%c2X^}~SWhcUS5JAoRhek?Nta3HTk*&?A{xN&C?q>>t&x@|*hOUg$?^(-6d%+Qp)$N)F>$YiAADzNL z^G{WOq=(<1v)d0(8ZG_)XFX$Qd|J!H;J&;Lz3_raI1xGAGV72m9v=MOWv)@#AnJk2 zI%@t@*D-e}@u6X_P<&#&qBsO!6ExY?^(JkyfOUIqa}fF2tDIwcIYCI-A;XM_h0q+Q zy;=^*(i0~)Ox|Xt33&Zs++G>u_CN8Jn*g~GvC~CA4Qnkdn-D#9UkrUUj z=+&aBo=sm+L+@zjj`OD;WrnmGNpBCTIb?~FF-+q-?LZrT!!p-iwEPA^8VNfVplb|q zu&2eC8SQRY=|4G9t9Cp>0HjH}+f`E}zJL~;nw)J7`G7BI*^{l2;A&ySc)U3^kP)#F zdcD{fZ766}q8Y^Uep)x>_1DF#bW_9dY-0ln5Gyo-ry?DLtFpRhZ4YcAC7%jat&;|3 z0C15}=gC7lnE0m#R39FWa<6Tg=GJH`TRYeTKH+9*JF7`_ZZxknY#$z;!=RHRp4O%z zNf2U%?v|KIZaMrZEQX0R3fnwNN)K#hjssi<5!Z5H9(q*v#u8(6K%QUZLfde(uWGf~# z4ZM-O+5=lUqPLsUr6RfwK{H0+BJG*(@yTFwqm(Tcvmf%No6f~F%doe|5G99mr)X{F z+}IG))-PLtQq;M#rD%I#tmjkHX*a!=^WETh%l+O^Fz0TLpihvCp&GCXCh~d_5Qm?i z-v_u@%L}+K2g<=gVIZe0h#o0@zEq2VJ}WmjkVgYeb{YVFI2dlle|4-(L+e0V<*36d z0M7kq8$D6F9W)C0Xn+7QOgN;;12M|Y&?dnAWOJL|*8}frxeMBTkvpNcPXQzPVCd+i zd~0ay4^Te&wKodJ!fhTav#V!Qvz09`R$0VU4jujE3X-P92TQg+l3%lW0VKN&J3VHc zjBGfy+l=o!=Vr7&nN1ML2_fDCH0kTIn(F=3ON3`mO&M1U;QDa@Fb|f}S;6Up+Aa}s zREZ6aaN5$_USaLp)pBm}Epek3XKzBSSZz<1KV9Jt;ZI|6rx$x(Zrp~M%rHOQiWU#~ z#T@kP-vFA47@))bx=L3>hi*@ke9Wvm4e-l> z0hSuh7>Vkk&GLBzO_9?Jv7t<2O824LN%BZFVDA@D#l6n2vU1BZFB_kG=y=kMp&eel zzhowM6CSIKHm@R*A^uKf-jXZm*1I)no16GMe)+ujl2gfj8Abm2&_ADGPv-V=U@Jm6 ze$_-hws__Vgwntz62kvKEoZ49l7z#}s*174dhOzsJgN3H^!F#(lD;$XxJ=3WZpks% zz;&$5lHq|U5^l6X0q(v?)r>us?qM~!xsO*sVrubTJba=0AJJsY1q>@EyRcMUJh*X| zY8)K;^!76AdvO%~w1`at@s=jLfYo%eQD-cr19KtFt6B`#$6(k|Q1QaQ;n&G&x6^sA zk2q74NzpmH%qrr1oQFjE;aGt;D)l7?05`Smxl$uy-|Rig7?3Yg*e3CPv*f#GDZG)@ z7?*PE8CIZ~Orp<44}xxN>sEN_;8nu{{s5^e^6~9HCx*Bx=*M?yagpu5!^&lJ^Y0`+ z%MR#w_x*RDM~s8tJDNR)UOL?I3zo8%h_YgTPH)qSu0|^Q!TR#RkEdJ3q_Va>9oU}O zRg^fEx=t@L#8Ci7;W#~KB4~bTYI;FdJY3_VRn5;vdtR1T9_+Mt;Kx+;C$+LmJAfYa~bj^uLq}XE*|MZ)3GIgXg{>mhNRY5*o%aUp6hR;f&Kh)6fDHi@p_V!!jgV@HAdKVmLQLCS8`Cza!e|zm3iejQ{+UqY%Dz$#oM{WUxAFI+^e^QcqUi%Jguf0QFJILy;g#Iy(b!Rhw?q7t z5l3E6b<$Wdv%s(Mr_*h|9*_6@H#t$Cy7{*`)=}@4L$oBfwN5ydhrRl1$a%mWO3n=qBm{|(Y%{U+}U@5cJ{dNI*vOtN6;UyKt@1Z=W0cF#A5>Rw)x%e z5oxTgQpgCPYrzO(QN7giNNuWCgPiSAmxe@TuO zA5H$YbTQ4}Iw0O|MUwQB&p^dlCBd4eGjZeS{6z(m_YQ-u>wg!dI7P8%y9ZNeX6uS1 zXsRvWfP~l!xc;6)Sc{7fQq=%x9B*?8VTF*D<9r+h^Kl+)59&Oc|M%I~Ux_^e;`rna ztGNHx0ax*8GMt`S_hR4D3qzZxt9?7wFGHBZ{^UIE)!P5YJ8$1kV_vj~iqXNB%fQ&j|ph!~x;DW+WnHxYy1crDJ(zy*wCXgxS)`V=e zKFNLH=Yf90ij=1QYYGfg+ltmU9AJ%Nkm!*d{KB zRE67sj%d~&6u?dQKQkIlt|gtf$-E#!w0=#XdERn0uzuWsG=t5vk$oqEyWDT!6Ra4a zQD2F+S~Zb!-ESkMZd9zCQ6d)%k;Z&NS!2S|2Z(W;aSq+dNu!sY zYXmckTx0_ZMs#+W3-uuSn8!usUD1t$dlrq|;$kVOpt`uIvqKhWvgElQT0c)Di|#<< zV`Wu_b?(CYDP&c$Ut}DKyXeh&Ob?6f<&s~}<1RYVsr9_o&UYFPO_#GTX=8m_Zv=D z$0^@;+W*8WJv_`a=Kk#0G)zWBfvyom4rf~12nt&F#Q`v$9}|dH{m7sP#LRE2&<)P+ zu7P@?zahe- zMMqSBN`%lUV%vpj0x$QYq@1muQNz8DwHu(JhH(2*m#f_l-NLZ4Sez{9t8s|GKG<^94unM^viDuNzV~vEq#gG*LTLny z0xqR9epNn}y|hGhW4!>|LnK2E-a#Ki-*DH-7PgbI)EPO8Bqd4+W@oKL+=b1eU9nps z8Xd5udPu>p>p+`ZUR-R3?!ExY>a*0b;yhE=negQ%5YmoABXOenHNEnkg*v`M zROb?(zqkAQRk_}7viEjxj;O7l)0=dct*+9jURC*ZbCl0kxH<$%43NF5(hCL`KZWAU zM^Y$;=WP@A-6PqVu!MAN@l*(e&bvvHb-XvKVtx%&(y4zM;7dPC&^a;>NYJY*gRdQegwB%<;%WlTp+VOP65d{PFwzh2PLJ&Gfchv(?%;)dmW)Qdp4zru55;Z= zHi?)1fwtwRv}s#m$haWX*B~HVyf{%bI!GYlaY}=epM>kmO}uz+U!KzQMOALErJ8+m zzGy1%g9cbcH_AWVs?_oO-KwWerK?vT4t(=gPd{E9BmQU*EFI*nWeP$vT5-zb846$a zQs6z7(VRp15Mug6`90?Ysgz6$NDJo+JjLm6ZY^Ll7S9*0c>TV6B_+pBm>L^QMQ|g6 zsHos#Q@%?#&?yG&MlE+t(|s33`-^PKYnk9a2clfXKH@D;2QMgtGysWn@4tya#JNFZhJ%aV>BwTCqtAw~%Ks)Lu2iVf$(nY!3(Hfhxpi&13Y(WW~O)s0P z%{Nu1O_OPT#owoNBZ5JjhSPCG+*k{sw^?hr zcvMz<0j(fYi_=Q+Oc%#DOg>wrnQn-Es&N&`UC-%X(HAyAcE>@ zdMr}3}Ga454GN+L%YG#PnB*LUThY(Pu!*+uEXnFw^ zV#rl z2mmi|qM3`#SPlrSW_ppzTMQPEI75nLIv3|A-H6~xs>ED62dw1(C!OCzfnTB$PP zR?#-GfkLZVj+7DiYv)avfjl)t5bBQf&&WD+c1HDK;5LJi3YR4ha*reRj^_-}sB9o! zlU$GLTIq<2W~CWA{tC6_1A;~~P%-ODII@UL2{GEG4IsgCY0ub5eB930TY< z8Gj8fvwcdm&Rp&eMjsL1J2!d^VqIaL2F~#iX?E5wq29f0Ju-oR=jIi-LJrDcq69j| zWwI@Z3JOtCC|885*TpUED~J%iX`Ngkf5SU{rDup!C4quYmPCJqHC@Kil#W(2HQ{O^ zg$x7dN%t_W`7qMG8RqkI??}ey(|5ENtQXzw*6Pu3S4pc7!2-ldth}Kk@m_WS1I^(ZtX@w-Adj1B2{enc6 z1G1ww_~f-e-tkx+Q&X`fhgK~nmjjDQLWnSEn()U?Zma1%Jk;od&+!dQRO|tZ9yZX` zG3)V1fR9aQw zl0#V+;uo?RK{GrQZgj=bMipF;E=C9{W?-Kv8(aw3ST2{HuL;_8ipAB`LNJYzz^dYU z=1hQsdG?Im3wOIwTMnqUKvKdB$^E7SHIoU!qyPlmt>l+cwXKMPPH8;X?L`HGI<3~_ zZDCJ^DKKAMDhGF-xkixma^1c(3O+uGduuGThOy8#G8<~uX6rGaf&rDlc-FNG*)mMp z+JSU(ARrk4>=q(iqxS zJ&?6;Ar=Nzj3^6RqFYX8O;2sjp-XDmD%&?Y59+psbk5x%$|`~nqDMZ_OF-~)!m#9& zIX>=N<{{1aG$N|q3Th)kRCMHo9L5OXYmkBnfh<}&5YOs?XdaKdosO zatHN@)zY44O|?oxunX5SiS+%hr(1Js3a|&%Yn9bR8zw9~-}WiSZJ*|iEO$t|SJsW$ zK8^+HJbT-zOiyf%CF?t^?X<^$y;U0@S#Y3t$q2%bc6hjPjaiUUEnod28mxxPP7u09 z(kN(yQpBdjsAijF<2jNu$(lR@c(EHBn~yxwp=2e#1z~+jN3dn-l%;Re zMUEZhNTn7Zn#{H-Vm((L8Nm*jp@c=z7B=A~(qWWzxz0Dcv9}uC0-PdLN3N)%S!r>n zc42)06vUf$AIiPm(v2L}?P>G7Um35+Ey(q`bM~_Dj!xo`E-hl{!hpZqpVvIq% z#-VJa$+2A=PSaRA;Q-_XM0=T&ZFK0Jr(}Hc^Zpw`Z(ZZm$L6Qm-rt$hZIw6Xw{TpN z)&WkT!vRAUXVzA6p2fH*^h&bro5l$715Cw{^XcR5J8fF47=+^oCLjk4Au(VC_SYR< zYb4c}IGA*ipaIBi8)cLdL;`cjL^&Sd(G*gbYlh?hO)u2N@xGOX_xrH;;UDZo-=emk z-HzXT@r?B$jmPS5Mgd|;1HSEOn9%6rWEA0zFWSL znb^`{7hwsa6z)y}5u_^ zU)x?d*;I!tAyns6CI3jr{dqmrb&vd!zK2%n9~s0GtNeSTc|_dD)%&BhF+?8HP4k!R z9(T<Noq* z{P+n!*sM~&y~(p%{0*p^Dv%3tZThWV=-bMhQOI&l2DP!O zB%hq9D)J&w?>5^?KbCa$>^p9`UGhF#Cf!@R72q4wL-pdZySHEWu^ZG;;3!X2(YTSf zuF7ql;lR=y_%~fORiOCiCQENJQ%qAcYptv6C;31>=ugb6?t0|I>){PAS4NUTKZQCS zVz9gDnH9;F=dvnu76B)kQt1Z3D>$=)+-F3r8@`Je(aK882K6XPe*?+?zGrOfrH(U( zb4CSbw^+*esx11Fv&X8d6MS%f-ub|DHp%)J7A1CR3 zOoOrWDs~pHvb>P8t0?GfP-B+~ua!eclSP7Isb54nLfV|6@RQ7s!xY%8f@8GInKEFs zY!rMLYrk?PL)3bRIAM zo-B6>{Wj(^Q&=8-1+^;`o{pe&UA*|@qt_q3S?ng0XorI3nY3%?nhxi6kg+oPYargNp3nhQxirl4A@X2K(K!z-&-Z#Cz;Ef2#AMbg4XpjG8qNO z!4X`inId#r`qgQP{g95tMzz&W+oU&tLbMWxu(U2Fu_1kXy}CVp;abYH;)a=K{M(gb z!q^u%hqX~sMOM^ofzitTnx5=W)jEJB%vYfI>sqjQDpMK~>Of2|`_}KjOj;i%$a`D0 z25S|x+lk_wQFg|kWueuDSII@F*RcLqSguP`7V>IaLrQo%iZqe z^nAck5k$FbE=F*sxvq7~Ky*%#W!UJ&uMp!yxXW4O){f+e2FV5;5Id>QvQRri(K*9_ z&e?K3%#ynd`GFDp(zo&?3blY!h6~}sJ+ww1t!SADwum#RXn9VJTpAKtPei)bxZ;z{ z=H0NSms_IpR|NRitcy4kE4FY87izdh*I)p|$Rt%acww7^Rz*keUaXe1AuFDp0L>;z z7se55a?+ikj4oBbX0UmN9cZlwlcFhO<*{|GJVw@$Wb4~RVTAU=+o-L`1nX)=TQ260 zkb$|4b#f$}P2XnJ()ZPdMV>|ZC4Yr>%?oKzJrrm=P+ZdzQV{L94>`99++&L(?xJ=@?a@=S8A2c&DrG$;<@0K7eNz~1i4 zQKTguvr0Pdx$&VMg~gI7b-kXudU9CJZoix@6tfhz zH6onmBOA_4WC72E0|VGvf7DgzFle{R10sPfbhGV45$Pb~#p0*dVVaA~_0~Gin-Vy1 z&N~DUDA3qfw6S@VQMAq64m72;FBacA4)me>Xo#^ssl4VCHA9EtYfFbYu9Qz!j0RFF z>pBC@qxwxNnVL&J5V1Yi2J4(`I_lAjCtBsuJx`soKX;1|dI8U_38Cjr+EWnjl^6sL zFo2(B9j?Ti-akLYpY3{j#)vXb;w%2C;TUSn@9Jcr?9bgILszupnjsN=omI`pEXDkCcx)<=B_?FHgH`zR-ihX84{#5I$%vRN1PCz1?Zgqav3tq5Q{uP zT%3RKRJVEw=50iE=jRad-0L$5$l!1ZW`3<9GPA7%88Jq`=(`J~{OBTESi|S+DZ^*N z$nbmh&6)w!)jjW=Wg=Lkt0z-vUGU=@*2soA<4(|Ma_m~!HX6bVVv_@ov;71H()5`h zXw|qmFKm#Fry;%F7&oH36YchrU9|h@+&ZC z3q|^8pxmPs2ZAq5=|_B;13uJ&S%8l=n>cV5!xwF(I-qy9^i2AkD;?V8D&dewxlJxd zd>L-_@-)f$B5#rs*1(SAv>XVKcxS{<(S^Q9mk7wVwQ(*R3EA(R&EXK;T{m0fT00+I z-$mkIJ2vjM-}$zQMjPkxE0)&Evs>Fc_Nlyvnu((iS}Yeroi@Rf~?AIRYVrhL81tIIMvXC8Dh0ppLeS#NA?&Y+vtO-fdp@0dP@g#j~GDXi?W#%Ph5Am!N82=PsSm|$mXP{&;q2I2S9 z>-;X;d|ck~V$~tF`He<4DgFN3=s+VjX|Jc88js@^UggCP{7~W{y_1Kw+$lBRC8@$l zZ*@&6tK4sL<$Q&h2$l#<=jk{IVkg)6D^FbYaFKZ;X>ccPmO7z^*rX^L7PQW^NtdZe z6y(Ug=}fPgv<<&r?IF3UYdCHs!L`n57^m+zvTHWmWamvhIl=#~?`AyT_&<*6=M{CF z7n7#Ej`8L?T_aRnd^~$sR%=2C$AQ{B+Pq0!In%zGG5dqkr+1S&{|)U(D-$Z2L1=!y zDR1MN1I+23<8<4UrZaa0?l}K##^d`p;3bbj+xi6CMvH}#7yZ*m?}{X#HpB*|ye5D? zd5(*aW7A_S@Suy5M;goAG#_RgMYFmJj(VvvpPv&R-aI;>1s0-r4GZ@ z(fbi5U(7bv`Pobb zK{+nCw-=lIItg^r2W%(6!gq2U{sc~p98iLJbKVNS9kx^&`nHV#bFUt#<{3lOciAR? zBse=ftSW@AcJas~^-5jOWdD4mS^-i(I{eat$Rl+Tx0NAV#`@R@^R~&?)h9V^K%GM& z*da5t_QRlWp(Rt6@b$J&i^hrM?7ylIHR3T)$o^5pp^x*5W|>~sSzKoXg()Ds={D6K z=>uviU$<2xw<(>)Yl5PpQ}}1M(0a{_pLzH6ci6SYe=KlF2M|F6IS3z~&uJwp-LpD5 zj>b-@4F7d`Ew{b-$o<}H(jQE&aY2ft-4xxya(xPR*ftSR4S^vBXEQ2l{qcrPQagkKF2Je)k( zjTSl1TCbQQ`Ph13w$bo%jzj)299YLq#64Iewmo0@nV_ie*%1!`0d@?wM2AgQi!5D6 z({Xg9e#Gm^>qrqgaKBbT84kb$V>^fcH zHbJ)YbHX}5@W#Z!2gk>Ovw%PO6i;HJX|$n#t2v`yA_+obt`^UilaQ#N<0u*vh5EjZ z#}UO%i?+WV^5IJYN$Cq%nV-anCxS4i$6&aiv<<7dJ~=^b&}3j05XVgP&C=5kX6ZP2 z9tCo5nTQnIu?=ccjEf9GZbrxO#ZuKgw5^%SlQsg1zH<0l9KNaF6<%F&@MP9+z z_>YYk0M*jZos`k(i~tdYS75Rm4v+QlFyHOy)zF0%M&kX>R}6taHwP18`obYiK)VNd zvB@6^x+Bw!psoj|W;>YgvQ<-utyDS8lRvy(2vj3_byy@P91?|n(Y!HX569+!5>m{E zPMt!qzcd=-WVhS>7w1^piyeH`U$WMYjdOfD^&FK54O}9qJ(R#rgvWe_A=CDZHmVx$ zeV{8_X%xqhDdxdR5EpD|X`=(h4{4EKvGLUBgaP>nTb_%#(q?gEmbd)tx6e6SA%2zR6yVIFbBlc~my?7iJkY{wx&uE#sIwsQ@p-00(k%9&0DQM0;5201<@HA;QmA z7m~xJnY~Tr2+i|&1NW6yZU_C9mfZp8&==-jD{$g+&h<*yjt+K}1KR`z0}-f3mSw`d zO7OpVLw%RK9p+Sw;R2rb!&udA7^|pH|3mExyibP^qWCuOW=sDAqlB1ELesv?svO4= z3sH9#B4MRas-3Snvj+5I^9@Q`TXqEH;N}WW3bN`2H1^_r=^Zs!f4i;jK88y&a1jXAOZ2ADBVIHszt>CDL+{v*Cons| z`WQP-5ZhLv8a%8y->qBh-k13GS1)p<-X2>Aa`UGGZ_CA8CUl{Bj2dpTmcqocTOJ;f zx5|Iy#?Em=7xQoRmt~Es9Lt|A?%LNWS+Ly3@^zY<3|8-K` z6H0T4_54sr3v34mY?%DSNi95GbQcjmu4n4Ys_ASn+tLlHF0*dwV4J`>J}^-f-SC2(B~pJ3Z6Fo(gA%iT1ipr^Z?mjO{*pzH`5F8r zQ^1zJD?#`+(H;>OZahM$mFuK1W|cKvjY(6rE;yt8)P$ zbfj*sSSOYI}H|9UB9!ndah!w7N6_espEI2=u$TUlj=w^pTS#kaAeB@$Cub z55(M@5pvhVkZ{f&FQjd~S3=d|!GVt)RQA-kAp_&rQFrW2zu(3dfp`<(cjJtY8((yq zHh4{E+}lDa=1cFPJHO7LamKj7GprjLlyPohB=P`$Cws)PFbq(?p1glJ@2q z|NQ3j=;*oQ9})1k0lGTB^B|0&Pub0YP!XW?w@kr5jE*>wq>aR$l&F|H#H-vPN+ps( z5QaKxV<^ApMAItiu6=;(TFA!eFQ+1_Lw>3X5vS|sBg3S=st~*Hk@B!?qS#ACRO<1v zx5Z7miR7`#SIC9e^66>Qk^_$=t@@jZ7fm+>{cgS0+Gc9;6*RWiY&G{F#B-d9zP1rj z-mIcqyBa6YC&w*) zLFL%s@y6Z>6Xan^P9|Y<)E2VvP7hm_$J)pk6G&4|dp4zuk9cLXPr&&mIU-__Z{RPn zM1tZIVuK0wg*lQecPpK!W2yvKOD~f7W(iLX*as(kZ*n|waZxW3P5rv|QelI2xo(^? zVk955mE=oCAP{Z{Dv5i<$R5s`#*I(&#d%i4c32mFE%#ka1ix9#*eRBR{9!3|M2KU&sXP+S}dIsTiP|gR5Zw8e~#Cn|HQ1 zW?Iz%6_X}2G58%F6TMw9y=}L?k*z;zjhg4-AKzG&Eu$z#xy|`$ip{mJR*2kyP3BRI z2A0j}a=AhwGEJI7j?_=dkF*3!g{YUsQu!2kDWV>v?$i|$WUr(Z8%fSHV56iokz-Jy zE6u1_d?EY{OE4lk2E>+@7l_qp+o%vkPzDJdlXO}jcRKybwIwlfRwem9Tn%o1WKSUL zLOiU3v&hJ4Ln~rFw>au5gu;++er9~!TnZbx>vebhBI2rve8CZnII)L~I4kZ5E46J9 zpXDkvLuJwt!8+PU8B&RQyqS`6Sl2MmI`gnD#cwklld(_dBG#q&ZSkcplP7!AUAckm zw#wiPh<)RYk_-^;l#z>Wvp<{Kt2MD-6Pxm2Zi)DTu8DXtbb^IXX^%O-vuH7+^%t5- zwGs!#XLPw&y7>-f;5ZmMXMkpx4QZZ8p0=?143K(aqr@UV(Wx!i6eA1k`Yw3?xm9 zm>cm+*HP0L*gYkSOZ!{3KYw(7|Fl$k*Ec*iV*mlfwrQcJ6|S}c`NLIT zx5jpPn>k%IaY&OxaB9wQX`r*sn6XhqpDXzY&RwCS!&}jY$kRj=?kE$UY?N%Gp%feE zkoU2?am#_#7$rJTblFDt-$!~4kce}Y*f%t6+wKZdkQEK9{mvf|5V~DeYNuV|#99pu zL9FioVag(a^E~(0>}xBPSiTWq;KY?XMz+2`@29uOfHGy8#e)!!3yfZ z7&c&0AUHN3B%_N+UC?FJZfbu`Em&UA{>nxwH@KU@Jv2TC{1pyHBx5I@<6@2j5+Box zYa*P{+zlp!)3enQlnZPti>^$G{+k>VL$++OZ08DS=04|OFmo2g{tG7gGHvfnGy|cz zL2M1v_P(?A+^3@B2XpVn#0`vyC2f!+nlstAbZ%xSX?c$%idSrV+BiAM=`t?Q&*zn; ziId~F)spG{+qV$O+Xt+q@ZFeC?Ka{RFWTZ|JY2<+_(o$_2@<9eb0$oCpXgtl+6tb0 zu}nrW-0UTKE?iUOUE7rotgDrLNgua!A~s&pP-?pQ&W&(& zqhl1h5QR^p88|;Th~ar&R-zI$%Gj$Tbocz%SB~4d7JucIKF@^7$S{m zrx<98y^LE5V9dm9?M1!T{)-i-X~e%gWFnrzid}hZkV{sLR{e^3)0&E#k3>#myu)YB zWHO6jlFoGN$OOxhy(AEGez0vsAQ(%_23a@Zf9FKFTUD*{4!3bBWBlEkn$UVnC6$ z%F9fb^4=m~s$N$4>o~TLIL(?BCuLaEoUR#BmdKjIJRs9cnaDJ`pj}F|lAC4Bco{LS zEIFQKr{yeTHCP6jFTRt(dJhgxvZnL;mCYn6I&V!yDxnjVP>`PH+d&ZL1u`t_zrFj$ zXx>B)P1`n*8YmyO@0U|;uvd+YNW7BVua)qSunN z2*rAukpjN`yl4%Lq>Vk7f4yy-7u=G(&<(ZkbaVTCXQBG8Ki<-Kv#h-708K!$zX>$L zH^_=^d$?AK9LH27=1F$qkPtiYsy`npKi z;D~B)h)PL(BVq4}l!UXn{;k3%Mj6T1NzepsXOg{&TI3&pH5HP!H&&>u8gM<{<%8-K>1KC13kZRnUG9n#>PVm#jQk?}R|=HKm&%eMq**xgs#~&@Gb7K6rNYaa$L6kZ~qPmNi-KR?ctP`dI#+r#NgjPFuTuoVH?nJc*Vm9=^ zd}VSTM}D?>M&tB@%e*zgHXu^Iu{_IN6TFIUKVx~;MA5v8!%l)Sn#dRtJ_>2%!ZxBq z3~>{})=LAL|L4PsBn_zL^O7M&zt7?Lq#a(bwZ4}3b|;u^X99@qbQtOPj&ilu71JHw zpr}>fUOGN!VJnpt{i3*y9t4h-^uqN~^AEK)IB^sEZPJ?Ky9bV0^^Mztuh7V%c@__O zqx%Efd&m@sMNarr%T@71LA5)N$NgNb|4qJJxAs%PvywjqjgBswPEJ7f0f< zF#`ZtHp~V%#yU$60se6Wm$4P?A4Fyu$D6jj60%C)iE;L@1xp9%!Lf~vgPj-*bL)l0 zE?e=nX7*&k5O0U3zwQ@uJisbDpC8AQ6W}YoI`Kn5q-8)PaC5bJMZc7W&shHA;{aRd z5eB!e2PcscAQC zywGkJnh}q5I5*-#Zdg@d5Q(|Y7%6OZs=Pe8Xv9Ae$G33w1%y_|mr#Tts6G-%v{~;m z;_T`3sjC@=yIyDJ2I2ibSv;rd-&wy=4-Ac5mBRs>s$*a+`Xc*EBeO~N)GL=GvF{E++7fjh-)*P6It{7?C#7q8V{QH zH-cttFil7HA%h__wgoBAYU!0Igu)wm7R5z7wM=KmvG-ce=KQiMBVIdzk%dJ>(l>^h zDtPz)D(cVp_1DH)Fi$8m!~a zOvLQNbzJBQ`LKVq<^gnL%%4$zj^#5tVfx=MHUvmFAW}c|lEEO1t-*cw4KQ--E|y8a=MlbUbdWG& zq5mK$sK+yN_GHB7#+UFq;wW|*`*sOU^GK^Y$e_t^Tr;KZlS{y=TrknfW*zCbPEwW= z#GKS8otNX2*vh`e;&ddu! zARmS98+e0CvStKcmH3Bebfn}2sMg4Brsb85y<+OVi+k^ti^jx;Lvl-MFLUrst%2bQoS~*{bV)V}6vM(jz z1?xGjSl-pd;`HZ15TsWZR^qK>kr@HMM-J}uC>lw++^`1hc~BN~WOQoNh#3wYZ$F_| zCiFg?*cXhKuQd0rU+|xuiO7%m{IJiy^9M4N3SwqY=9vVoO-e{d41_?LoF{3*QKnuhu)yw>_FtXn(Us=; z*5k8o)=+>NZRffr-==JfvQEOwWbJee4KpkdU|1rF5n%@5d>0F?jlCML6(PbW(iyE) z-xh(mQ0l}c^G&Mx^Z0$`tU}^s*`)F|<67cWn*Wp86-8uZ67*=5hcYQ+BrO2{WT~Ew zU%1GYv4;#4+miH?@9BJzl1WjozRi-SpW6s-8g(H`164Pfp6KC@qq?4R^y*a`q5mG< zAZumzxgM`^GnPr|V8&=x&N?O6CLuU-OU_c5N)>)YHv+E+IUTuP>c)42<(f401A#zE z&o82V?xxziUgSE%UN)GQg&^oWDV2`)esY@6>v(1JW@0{}O@CPaZtg>AW@$1#l_p9% z+Zk;1(w3mM5rO#du!NhaeRFvDS1}H@5a4}ca}t@XPu-L?tueIBW{sWB2J+xQ1-G(x zDLR>8TcA6o1!v_O+^R>2-WwmFVM)TMXASdTQ zD%m?ovZ*i5GyV9NL#e3b9|;%Uc`O1%aHIX|NHWy$T2Uw+XyQc?xWexQZ!8Y9^-Qh;p^7~3R# zKweBg`TEOm&}0=!)32)X>Wn{U5`=*N=F&5i|7bevntx@H?W*CHpmH!FcMzNID)EPFw2=!KMh#&u zNHynl+r`bST9}Zv%Ooq1>FfLNK1VP);tV-o>)M3vHn|xB)~!iD&?%p=yN$b|oFxA=za1$x&7|cu;95JPe|a zu_m1XLW9F`4E556TI!`M$~+>D!r>MTG{7Hr!eI+e(EcR#p>fiuFJJFId->5P;7&h7*_)#`M@Q=G25vLo@W0hK z3t_NlfeK6G3n$9+*8Pa?+|D~At7*03KQx?6sYIx4jI+i9ZIgyN{HAGVzcDwdjTegG zk7ClvIHOtUjOl~4S|~jjeL;7<3Xb*!=c)O2J_@S@4hv$766T!V8@xykGfV*Q~rwe@^etvZkT2)zfpL=d{PF&GlYL+-xh( zgzq63h#Vu&Vua?dX#I$fDwdMM+G0T`vneeaXdIR8zie1zoV=62u0_-eQIF$ewMpyd z%W|Ec=R}mly`V|i4c8rO{IIPyv1x>f`GAf=Km`34L^*9@vBG#qH0_Q!Bm6h1o3g^q zJ{?cEPek0~3m$jQU|k~kyDhQw(is}d9*r(B`Ow7xG^5(ADY zkk>pC@M5{pZ%22N+uPd-E#=jOhAj8mdUk-+mWUto{p(kg{|Xf7MmQp~x8Qe;Bp?xT z>lznUAju1)1V00Hhi9*+tBpFa6q@?E<{+O=1(fI-Kc_dTP9(E8W2fHH=FyvX^ykgH zBk7VJ@%KpDqbK~Ox6p0YbTt!+m}i@{{x~p&M8^es7N!UxY|XGt*?*sX{gsU1CaW6l zFUdm;Vj(+)=se&#W1-~{tpqW?7BW>AW8!g36cabog0z5)*{VB)zuQ}&+CE~}(#+}9 z@WJuV3OMZe6{O^DDd&zsL7Se5aOl?%^itvLDlKT%RfEEBbYZ94A?cRJtHx)bNg6(# zIL0h1Bz|vA$N5rSFjl*1kM;IiJ5$_4R4CKl?QYan`$)~-TZ!Lpcdv;hx*)@Q1OyWC z2NYP@dJW?LgsD+{kuU|5Z214%7QG=X}Z zJirX%{;UE2&Z*qL({S+_l@Fx~$9-{W0&hMb`jZwLHOa4yc*$Nza6;&%%Yb%nnS_tN z^1?hci|5N|j|52BK-IlRVKhQvG@9sBu;Ic~KH6;j*$jovzMNmj))3`83D(h@y91BX zr6i@RyMtQ}6cPQaQrufQuk>EQo36^&*_ZhhZ~BlWR@=?Z^h(!DGSfo4yTcpAF7=nu zYvT);EnaJg=y{rC(JgGB7WkLh3@^?RLC!mzmtHTht=^iNtHZ<9lq+(ONW@n&AptO& zI~xb$b);^lganc>r0@CXZl~{%2o|N5cKfVR4*nkpM@Ip^WeHs~y~>))lBm;0C%n6{ zB~pcI+B-Q3+Xp6IqQ|MBATX|~bUdq)Zkh6ma6j$JFrfy=bR5wNrU*^Kyh2MnI0PJbXLd~U3Fl(P%Yuv*Db;%^taIv*$DYrO#H(VUpsIG6{~SZ|y*%hdHn&JA@G zv2OS{Ik%(xghuz?2_pXvHyFGne*d!^Js~qOYf2 z%ozrspHEDk$ytt!k*fD4i<*hDe5#SJ$|6G`sMTfA)`q1*yUXp?Ymt0slNL@$~p4 zfLJMRn~~s0G=I6;qJd%N?Q2fJ%veM6Bb^b&f2hM)xn-iyyjQQ)4I#u!t3iIP@jExN zMG_Et3e-DJjC<1t{h-xik8Pqrwk(N72?qkX5kVs~Y(Ied(l~}miPzJX3`tJldVSSF z9T^fmEof9r4=d4ffc{5B^c(hNB6fpSppV7IGV=&@WsnN?%SbT#C43-P)BrI>soFS_ zR=!o6%c{IR$Yz^xasql&tg!eg_^LdxM5fEgZywb)C(Z1VSUC1nTqBT}=Vi3Ua%ug` zbpr7r5pC{b9iL|N4`ML+&ySB!IY-;+`^U$--TTKMK=H+14fW&J`Z@!WVL*sH%vw0q zlpR4DHMIqEyS1uh8-)U~caVYHP$@WZJvy>;#3BZxs!h>cgJ1!W9v*TQX2wxfgd{+Q z|IVY?JDT_}xce{`L=}lj9u|`{54JIh;yc<(QtWBV+AMNVj~tM889kIqu3JnwbyFVg zIV?wt9;_vLIg+U#9=1a%p<*kS`|yU&3Bv4*a<)cmEh|ipP!~Z&Y|m~gF#qJeW^>mY zceuh*>82c)i-_2L)!oz~*dls=vV-Q#xKsC3yj3jQvcC~`Vka+H;@bH%>USGc`qClf=_vzBm(o-f%{&v4_f znd^o~=n?<5gEQktL+DB{pm6GEjN*nFZu5;^gQm^D?Ag!3@KYhvQ{(%-=h4F%vIh2% zrEXsWpwJaYw`+mO1FEr-9+BgOt%wu?tW2bxxiUB@uJjpE`pm=yv`$@37h6fmm^}&A zfT3{9om=wGW*0-}?Ct2IXf}Xx=+?x3%AQh0J95t^+xuhw?Rv)UL`AG?Cu^@ZW;GlU z?1>f9p7`QK_ZD*{F#Ek~vAic@IMa;fOX!m_<73}Z<=s~4H8Oejm(LMk@XZ}cARHLB zwIDD|GzK{U;N4UZ!yZKtW`dmee2eND@%8CC@1y)pThRL5GNAQ_J_ z!d|J>67FrDSJt)}X%H6T^TG>8S2*BZ{GO+S{XX<8(4(ha8>}Nkz1Cwu+5kAD42;6(NPLQ}3PheX4RkDG-lLd1}v zYNFPX3?r6@5jI!eL<81cPED#Ze|VP{X>}jB#ryby6<~hFy<$I=zS<&;*ayU}Y6*9U z&f1z4EkiT&))U&U{k+|UG#*@gXEQ-MSB|U!!iiy_N{NV6jCV`)FFR+X<19wWJu#hV z%q1|DFI_2(bY)t&|3o!lKKgJjjZdzsnq=tQFP!(<$Vlw zXC&5E4_d_^n+h-FS=H5w$_TMjO=>y7p*qm)oo{Pf83R$Id=WnbBKblG4GG)%!SM%t z0m>s5(z;;L?q3_#aNoH0w?^#KnWYmCk8$wU5&wI{vsl|?gFu9i*b3k}@a%6o;>Bbn z`7gL80nYa}hyksCG!N+CU?2>J7Vopx#^Y=L8Lds*=UQ|t0se}kHFPjC3*JpDD#Kps zrKrsC&9V}m+9`q0k5>?aBaI!97ZxL+@=YUX=U&5Wxk?yM89kD~!H>t&QSx+dFd zR(w7kxuJl&*l2iiLnG8|?S89qaB!Q}2Sf-T0E)0;3X#?K%3qB{i!Afx1tJ)~@Z!fo znrdBQ_o^5OLffW>o1cX*jQ2eJ6GECjH)mvg5>O1QG9;EO;a!nOI71Q; zzD!JbM*>@ehu9WhG`OF==7=IZ)+7wy!U!*i>;nZ1Ndpx_Kppr5z#d(@c$WmH0JaZL zkK~X05UA%g)whkqD_C8iHjm*Zx+h0AsBhdiUo7Kr(C0lAkp+-6oSlYdIfp}I_=o2i zbyeN((i$>*(QUu9mhsy3YXH%~lQ((ES?TDqAXFCS$yZ_=LTu%H(R6x1&c=u)m?w7` z$Np_p$va!>MLRq^Bif)v#%I&3th%7OOVGb9I~EBFW!$611xztLg`k*ogc8IFgJ8JO z$;qkYoI~g!EjV9tbRk?Yd%1kgKZpI2 z+!*+Yjp%JMBnIpV7_!O1!yd^;3F23{A~uIMyP(adm;_a}Ng*jk+{$F7#}G>RUEMSb zOVze5*l=z@6?#b;Hwamn-*GfKjyjGY2jzI{UU|q$MbMTaGSSKof|!IUg5c%}%=^z9 z7GOJR2}`>3p(k{Twh`WqI?ffq22Uix}4@=})I!ao}K@NOr+J9Q(rfHH@5 z;9Rqa)rl-i74sW_V@U$;yD2UgYl(8#QJyDIYn z7C*Ep=b)^#upB6xqE5;+^t&FBjq&9w6R!%WN(pN0MJBW}*1_=xF9Nnuq`Gq=^W#5v zVF0whb4H_qOxA=ApzDS0Od~Am!I@xOsB&J!m3y=!9eHjKoTGZ!tP|%MVaE8@ z@HAY7m$bE5O7_}oI=7o|Ou}FPCePc%wRDSezS<&E-`IrEa|ZkNVxdMkvn*&1XCrkI zbDMOT0X){ZWSm{2Tb8|6`6HW%mdWT~oEm9JTq}gPDd{3avGaW;d1=pKb1~@L)?GL3 zn-jd+@w&wANJKJg=@G(6t_YLWE;c!btrFr%z|nOWc+gPU-qA7(;tCgbo&+HlS#`12 zB3Lo%%NQ9l$45Yi?^WeJnF=NwvsCb(+Rh{61CvN{TAhs+>7Ltc z8n`ub_`|7UZld964V?q7t;MHmwZ*EVYIc>@o;q8#W?x3nd0Zoi=VCZWa9p9MUHOQ;T>n88)KtutyEe(RAu(UBn*3koC`{RD7RKVUEQ1MRwgV0_jOi0IFM z%MJwU4hWi7zZ|UJZR7_x3QuqOwY`?VVC3W%hNyp0TkVJr+Tk3CboxNNehX@wt-{B(?gjAMMW2%=(RcSg-)HDtt(`|QCk+>m_!uTx$sAL z050CtZ?>;qzIyfM?xW-7c-MJ;k7JKrSLNOP5K2>8OxhES3B%9sz~YorfPQxpTPC#- z(=8wPJOcaOCj&CWy=i~?%J^P%Ti`H;EFMIdpY{)gNFp>;IjHr^aHW+|k2|Ds5mI zk^D$cEUdoe?{96ieg5Ptnq!r(`riAAd_~V1(T8p5H8=n{Q3^qIj;N{ht1xr(*=G_9 zpXyx=VJq!D4S(t|^SmE^WV`mg3d~n607$U$!$bKyO|RDGcNmE05Ym?nB#%GS(D_#c zH~9Hm)Ks71_j~3d!|J>!i*q`*gQ1?NDyTn#K>Yf&;p{1pLY$89zDS9I4#Jpy7hI0K>T}?Oy!Q?8x%cY8R zIXRj9CqELtfsC1dZ_;-!3XmRX`#;JPI1Qd+DJ%I1=ACXgS;;3}(ncJM{M$_m212VZ{v`rz5ozx+!} z^262bk3iR41J}Yp*OD<`D1#ux;5BJ}A7uPwGu$?k^@!~m@(mInMKhv|XvDebcxMqL z1==nH^0lEav~W}>9D}%g-%Pi8f`8b}4L_#Z#4!m3dIE;}oKpx2lDW2dqFIDDYuM(x zAheJUfxRu#ya$mzs$}(jnH=+Ts-WT_9B7cs9~Ysf{5$o zV$(G%?l1Rf)UeutCbU7An8hW$nlB{=SHV9aATG@>M|h|@gy35dGRyGiJz0?sZ|c?J zMwF4@!uq8YVp5s8h9!a*X&8%Z18wRpLsi^(ax?XoWz&RI>9W|aa46%&au4l2+RjyK zA`>QNN1gBOOI}1!VIC(^x3hI_LRxfU8N7vYj-``5Ja5kdr!E>w>eITeyRzBGzicBi zI-QHCDHq|w+j@JQRoK4v=_52S^LCEQ6A8}b)=COO4fXI~-O2>Hy-!OhGQ)OvWtD34 zOuJIH6YK3qsve|(BMGq{^e!&u>9ki$lyjWziGq7rwfi0u*qA_f@uiZFK*+?Iet1Qv zhYL7Yo&aJn9lpSp0+&`mdK|9wwS#3CmZT7it~X| z8-dO))w>FR!;FN)yuU0`nLE+5`o{dRU5D?KWc2ZH=7@X=+rNYH*bgn46fa?an;2bS_ z$Vk+9lmI<3QsyIPr`a|D>Bl_0q|-DyiQ;?CjE|b|I6};1ywk_I zMtlkc7q6XN%h4(fB(z)n{F1@$tbvYQ(lSH@p4_cfyqSheIGgAe|l!-NuD`Dj2oK74*Hun!G$nnRHyjg)>985S4$`JUT3{l&=)Lo~ z=^o}X@nvE{ja047s_Y^i?_MqKwOU2dV4P_y#r5|pn};R*NG@Q?q~ z+na5-ab<~u@BRufQb{9(00>fcIWyoOu1v`(-Lfo|#2nN#tquY~B1#~DL;xb01bW@~ ze(Z;S?@y~Q={=n>PLP!BTWe{Fh%*oS?6c>CYv|NU=z78kiW4+6#^BJCEyDEQJ+dRd zHK_p{fo3c^+aT9l3;#v@J4)*4HHs3Ey^7o`6-8z;R}m#B*fK5+e(E{rPC>^1-m@Ip_oeCfD%&T60xvw=mqji?I3 z%+gw}9l}%{h&!k$J6|Rb1&#kc=SPyE#8@NP^aT5nQH|%mD>U3A_T-mT#i8Tk7g5P-MfL&e_DBQ(Wv-upm zHLEeh$3}9nNXS^jIY*q?RwqEsW_6nJd-n|7!MYk>74?ZpyEVtE5;ZtPozA*W^*wS;cdPGrysqw}2|l$GpCBt>Tul%g+rE*`DRE?MAr zDI*F^o>DX=;Mb!Jd}SpmW|-fEjcjG77iaiDu=4)0ZD2A3*eweJWGu%Y9ESafS> z6I|jNxfXp`&sIxdi;kRWMMUo7p+E~+{-xi2e24EoQUpb`GAVF?%bd&6&w4>TgXX2g zB;02ma|j8+Btv-*y?|WHZ5Pdp~c?R%>s;IaV=3+lQ+_Mk!h4tMb_?O2K` z`I3>~Y`6mSr+{rXw81T15nime3O?uh?9|Yo#ku#R?nKwINenD6sWy(du zUL_TZ04P+aM}cL|7X_Iq(IsC*()PKLOGx49kgT-AK%*KXEiD!3W;3r5>i~B<{oUOi zc{j_v$7L|CAsmNwqAMSwEGo@o{S1NiO1jwR)eO8bG}MxntGWFL-O~84a?oHc-Xznf z_}BKyFIQ>z^l|)4^|;-`(6n(f%_b-Nr=7V+!6qX}KR6wXhBH)V<69?7lDkjp0PSoezd=!V7D?M9%q`5o7}uvQ3QnMW8{4I(cxL1Ydg7>djgk>~3#hzG8*) z+a@cd(>77IEWdfGszsV=;DriTOXu?@$RJf2-S?z=BmN!F3cDj`WB_a7J4;#yct4!c zDZGe>*ceN5Y($EJu6YKi0LEO-(1#GICGDj=kJ(unUvXCPojqTDb$_S;C3sovv>j0} zI$!0M`o``Y<31V1A|29N%G^i7^GLS!cr;4z>>%(tn$8HZ0RwkL$o((qcgG zKEdYJi*ozp^^!!%*aJGx;p#oVT&!-ivH}TLv7gK4@Ikl>$x-^zmV_9eYgtLxmGx8p z0qrGIDq4rGMFb`J7Sw{@e z&vKrK&GG{FHTpvRM9V-l*r*0$SE?3Cx3jN-4qPDRa5kNfJ`S|cg>vW_@Unf|UtAAl zvFJD6hUZg2TWrZP`1;UpR7wK$LQ!r3U4F3C9%?`Me+uU*p-A95YR49Mnvf>q?^U71 zZ*Ip60XB~8Yt&GpL>UdEjkH@7@0^kx*C_f8TMJVba)a6@Z%0*Y$+#2d|OjrBF^Bt*W_3AB{eY~HnL7UH=GEdY4V`rNy%CJzOZg0IYT`8xm~%k zDp&OOI_*`cHXjGs5jj8ep#j653x)029Ld?;#kRD@7{H^PHLURp!z;61B_`#q!7_xH zXW7n9NuiMlli{cpGDDxu3ZDj2LstwVFkaF~S|w)j(W`+EJj||bdCR1?jO7wSdE3Nt z`zReOW%+%S4o2feD}zX4|2kPD z=gDPqk$gx#k&FQvO3pHCpPVg$0$22bf#2Oi=4`ajFti&+LV$#l-a^V~Bv?@l7d>(ObPPV5pULlrIK zR3|2;T7u=h*5UtD7e$ZaOt($+0Q_(A@s&XGN9F@jm`^C1T+1t~C#xYIX#nD4SkRBt zWTx^)Rs$y#+0nEB-)QEA>v3h);|d3LMIA|=FuPCKvF-sjq!i)5I@t5^u!bc;kV+IhQxMInUVXE}Oc`OPR2|I=i+xP+}jeqjz66s@2}-+MJ7( zpUHL{<90mb?KsBmsIptLdg(aPYnFc4nuAN;VeD({M?oapScQpBu7F}cMYf=p2y9sU zS#rx9B2!3zrhYoHeE2k}*m&DpQ_ka98LwuJO?%NVOw%gPb4`c4+Ddf*qXr zX>xg!;#ws+266$gWz3qMQP1gwypCq@2!dSkX&bcv@w& zpX!`Z!i@J~27WtV&I4GgY5iRi~=zXq!xc@BY_( zw#uhz|F9hLPNv0Se<;vsa2JO8C`VLqIi$T#D=a5)mqwRBR!)m(JD46Wc6S$tdAsPK zEgUdNrkhN)2S@hse0TR8idCH@7gJqisx3ep7(8OWT;($iGL@q^CP$&{A%0Z&v5ezk zWIBL>sAeLyK~}83RkFsNn<#=oA65W9Dw{61EVg%mG`l@7S3+C30y|}@R><88R8FM{ zpJ8Ru9I0}0?rh*E9_GWzVSjhG zf0#{C;?13OCc)Z?|zHkIm=;VhjTPKUEj-t{Y|nAIQZ>giN}A>xvj=50w@ zN=LZB^TijfC1M}FlnB2vxwfn);p(ZhgR6-NOYQ^ZQb@tw1)s<#sa2h4GaC{+GYd#jvLs*$%VQSbE|WUd zF_`>=z;~2QyA!~4(>eeyA!E!`B>82?{nupcC%R{j*J7X-f@N+_IpK99`re)-Ig;G+-^K;c4gY^`%hMItL13OUgHI#_7Vt< zMK)I3tsJ}!K_i8RPCo9IX@$vAwV$CTxJ1`0(g)VW-t&Fg^GXgkZun(z7PRM;?0Lnz zLr0dX=q)cFvS8c|Zg{CSyo~Ej$~g~QMINEm!(s$0O->7L>2h^PVGqiJT|tQl_taPx z*y(NCt6@A~ERUY#mSYidU>~+Ed_&=VhJiFE_=@i+q6M?s1E^##?wa<*D^?`c$&*u& zGh6=NqNIISh?AeaaKy`I5k@M)+=~3v%UMf1=z9^c#^t97h#R{!kXg#JIU4wrse62P zB3R6>KPD@59$DG?kJF?09IaAkjWcojIX`cQyOGs_?KCPjv+|zfSOQe5h__LB>ne|w z=|8@@jK_J3VXsOnq6#5736YBd!ghD(ySu=oEtu&Ew~En>V42Iyixcz>&llO(e_(U@ zQy@K6lq@{PIlpTwk&*GuB{cm6LyKcfH?Q5@KAJ{#!OT6YDntF;-lWVPIKmDdKoqpU28YW zPv|6}Miy7-$2$fkF_L(pR<>FbQ;bpm^0KF_W*L{5^n1oikM61<>0;JS^`QTVO81<) zk!ZdBrNj;9r*$XVoc{s+qun*xZGFy4ICCu?KGy*o9gm8(vE-tw2AD?*Dr*NcXZJ(4K~E2RT3<5gu$} zkb2+h5&Bget4rl$af5HuWVb&&J^J@|Z=N1KPydu0y?*uTX}bTXKPAte|MdL$dHT)2 zCC^^}{pa+Xe)9b1XX%q~;m`5&x9R?q&k6VZvsIOll1n|!S~tW@PC~Aa{BB4dAr&EU#Icj zMUAR6uw>q&$2aDG!PgaqV#bK06bi!clraK^4zM-?FHkPd7W(GfL5;@c(JcgokC;F5 zQzcA=0ntI(q%`I2CZCsb%pnNcMW{|p?=qqOJ`;N@H3UH7K)|3;URz+(e51CQdpiNt zntcr@rM~{aGZQ6;jv& zym)z-^<&X5*feWZ=hN7h|K+&OpY`wIt7<3`6VX<-Ex$6P3(9df>a;qYmExwDZuo1U z+q)Xy`<2`JW!zC*g!F>*6y$8XnBj5T8cMt@vYnm1%c?9|C%;_vPCI+7FP!C{%8MLM z3B4`y^r9dWZ0kOa#r}I|f3Rxn-6L{QB5Fl8Re=R9lPe^RIIve_!d9rzD3%{Bl1o#J z$_GpoKT(hDQ_^DoDUr}yNsDVl=rBSgR=S_C^=u!gO6un&x)jz=%0&4PDuP;109oj| zx2(e%YqZNMF$#PioCuWV(hjaNAG zg2T)y?_DM6p!zx@TVNF%+KH{2>&4ym{<_e$^t50H9RySIgYsT)xDs|t?|6NbJDarL zcBhMN)B0z{z+4c3r#Qmv)ubG;T~C1PHJ&$gAkfB#H(LuXhPHEwVv7S+RYc$v&aJr~ zcIM95kMafNV34sPw;_8D2kKR^%66P~>6|6?VhZ1VFsaB&FS9UDUHYB$UEfYIAa$2i zPW!8ZU$XQ2Q|b0VWUn$m2@0Z%#eT9=FC1g60$&J*-ZN?2KD*i*$OF3YA;fFQI=-J* zxe5M5q;+YPYtscAIsyK~FQ`}Qt!FZ_9@=D+u1 z3*J(pWrMX)7%0o^Mbv91xrnwtAKN80=$P|D`ddp^1Psx6Z#-B?$A)UiZ9EYBh&lEH zK&Ytz1Ab`$E9xl6%2+%IVr-?}mA`Rvf8qC1_lo%R_m*@4L7kaYOXh?kYtKfo|u`QBA&#LM1oWO*;i&&kmS60eXdP4a314A)yMNp;t&`3rPz!stfgDt?RX ztsZ$7SiF=N-qC#4lE2-HWx1#>VWYahfLzSsI>U1O23=mx$Vv^L?w!ml{;@16g3^RE z0#zCT&z>OjI4P!!Vu@LBB9(y*`o6)Z*dNhXsjO%A`}o0G@cUmcQC^V#xu5WYadBdJ z)K4^V;D}AL^<@Yl*rIH5)JZ;21m81Tb)kz(NM5HBIb7xyTVXo~hG-QPTNE)f8nb&s z8o9rLq9;RG6uD?qmvR^x!<;CMwAn^PSWxi*#YuH~*dOln(>DIh5Jz%aLf;fgU5DwZ z%McxWCGtIq&7=Ju9k7UEOU?u3lG_gsXzk$Rruy3fJ2yv@L&}33J5?tN;|QX4V2Kbm zyG8p8kL-lBkhtpy=?*ldQHEq z{?5xs?+GeX=3_N-543oYwpF-g2Yzo2u@+BkyYPD}Df98fGP1s}&QH9G?qZOFO(uUw z-6-jMh4{$4Bj9STEtkz*9jN;#n$2grEZ2VM;sJ@z9v~d#Pf+1;Vmf#h$5vY|2Z~ z(T~t2X6wnVYr)r_+gU7Cv{Oi7L&ilGTBh+w=3PGRs1!W=sE&5GFex0I(+oTY1Zzqa z!JrTGOLK~OY!4C;wz?G?p+rMkR6E%RL4^g@`K+F8z{+- zj3mp|FO*C+0F8q+_3LT3fMeX^fGG<<4Qf|@S_QPZp9ZvbRjZ7&Y*i~-LD^ZY>PVqOGQj)dH)z>o8&Ja9cs3fl7QwGH2ppqMV&d?b3=CQLRO@1pB#yo?y^0LKu!w z>uPMp9(YOQcAZfW2@|95upE@YC}AWje3AfCK&`)`jZxUhJJy+9)Ik%zm3}i)=BE+b zJn?8V>Z}!YW*9)54y%y*d5?c=-C<#%J#R&^Pa7VT-|{>jD4>RhmQSzCs;>SOt$KkE zI@yhwNOgAau`?77IZ@l6p;ySIjI__SR|=8j5>@DOeWZQ?F))&0TIrg(_4c2-u5}|j zGOrClg213YEnQlY51-JpFmebZg-PnWXlX@9SM|}l=Nuqwue#dIip}f_n%K-XmFQB- z7=y*y$U3cDls?N&v~5(f$4$&kZL&*B_n=Yez-m=lDy4hB7LTmtx8hYrRNScqHH+va zk&%PHZAu+rVA;D2AJm`%!n^KcuPH^QXmjAUUqBN%$kaGA&eEo9 zs1k8R2pYQ-vD!&e(Bh1$&08WHwtK9qI+HE4jyx8HMPr`iUuuU`UYR9LONXFakjpcxe-fl6HfYC z3Kt@Ji>?SGc|wY?1FPjE#!hqqGJk9=bIfnqYhH?6M>4x_6^?)l7%xI1{7NDSD><2X zu+_1n$|_ij-QHDzFPE%|ATAv*CHG6`ri@D`zH90_50bUH7yaPj9pW6HmFMSKu>EeJ z0jH;K;|$*1wX&+vD+E}tWWjQKAL&bp6K8p5^NExcA~DZ2I=e`q@@m_!?dHhNP&^(=qbel zwc%lXf`gozmt7$R92+@ovif93en)uPmXh`!(qL0CX(F)6&+whhPaWLxVZ9iWZAl^O&H+-o*AWIw{bA8p#val zf%IP8wMI#0#Sqz3WanOKf_-S}6p2Fh9)S_-QyKNX`mmplG}codmh-G~(+NMI;W}f* zk%#TObM2|`Bl|8~#7o=8eiRb5#+|l#shu59M>W*R?${jE6^>kUn|zfzO`>CCphZYl z4NjGm-Q|*~MXeyn`4MsnTYwJui9cgrHTkl#d8s6qJ~WjnyT7A{a5wzlgI-m$%`&~a z@hEC!3V&?$B{R_xt>|2YPF#(IL zrChC7kQ}O@O6~9UEe&j_6V8%eq+H)p>4y5T>gaON(>8cH<7238j5ep+e@vxpRbs{2 ze>YT_os043bVv2dGtO?PTpXIFkweuV8D8Uu*05AAe`OW&CaT@Tl5^!VDu83gJe`ma@?gH2iW3WC*D9qVjl zIkH zMAa42_LV_t1*5Tc$#uG_J&p!Kei2Y@W>v%Ff-q^jlped*%HG{9;~|ThZCXhi4Ap89 zy|3ulzzP%^+U?)pO991F1c9Y6N5T2{UX{`BJ%;<$$JP8kRQ=|6_iGNb^>L{CUAl~r zb2D|EEOXN+ZYM-c1?osoQxSn#FO6b#R;`^?OmqV^h4w5G(4TUHH) z{gatjL!)c-|C}0FU3Tq$s(PMo5ymjmz&hzVqnOq5On)*ulx*>E@E3EHJ5*s9EI~Zx zjw-2!L}w>8=ZHZ6qFB9Q3Gkcgy83}!U!Rpg#-fpydlR4Qw}<<10!}c1+KG_Q>@s^i zU(kHXKE_HXxo|Lt1B(1y_|*}3^l8P zy{}`M(%+`ya!C5}W{H-=*7UNOy?~x=nB#2qnkkLKr!Pda~f?MERn|>~uo!$Bhjr@pbOKJ)HPue^$uJFHzpUHkrxrjP7quJdZttf~UE^w)KRUM9Q2^}@Pt8;6EK;ZW6P-RVIrfiA zirKsS8EGk0c;ZWF_7qi0)z$xo&aN6dn|jouJqGoOAE~O;mZfsbtLwDkzBe#f3-FnUdq%5{9y^=`8Zc%bu`2t=+8MM4{*p!n5 zvP!&*!Jh6G-(viyM)B>;72oEl{4H(S?aYWDA9 z={Cj3oy{8}RnPM{Ncb@ilfga*Nwq2*2NXu{vY^d#x?+k~-_Xq^xd2%vzrXx7=(R)Z(wY^`4}r{}2F^r%%oPWRY;TNuxEJRBK|ZYi=Jpo`i>HCQa=2*cRM zak8g8>2wpD%{t36l{~a-3VrE?{I?2tN?)r8j|#0&GxIQ_iF1(H<(0L(6$atTBNDAF zMU$JD7d<4@Y_B5wt%hx!Vq_GYJ28wHr~a5?9Wk$#s8C2M^ik}^h*;rWS>p4n6Sjd+ zwyG+i6TPIK)R)a7%R@_6Xq4d=z$+qCq)}nVQ3A#SnK^A5Yr-#4&i*Mr2wWQn;C8Qd zBfjx7_*~^UQ-iz58gY;9H#E{YAZ@pxDZv9yXAO`rPAuY-Z3;-4!ZXX&wo|BRa9GSOXX{~w9dJC=!Hd-r0YhUW;o@5IQ;pXn6)uVu2>LxPWkgZv$$q;Oq@j;Ue z8CDW)CEAK~Y~VO_*N4*T@Z*>0mS1p2U@9G_hSxVI2AZvv=~iC={lz%LU2Tq9%CJ zS+c29=bHIlyS$fNHV)E_)bhi3eSqwNY0)Rj{77v@z@M>;)fL5G=Xwf7WQG_W^EO|d zZE^gHYOIg#ha}-?YXpoXYrAtj@OcJx3h-GtM~aYVb(sNxx1t;!HE(w=Ka8;2*62bu z{l#1+#+;isXJt-b5p6CV!PgSXwFmfw)`RyfF|)sW?{FP%w{*Bw=)Tey;1G)_-bN?F z!6u47#qg$H50!_sxzk?CuR*!Hi?Q$kFQY03pPwVm)>bURlRqYbHmRXm-(V&s=O7?@i;!Q(yw!G9Jc__eSyK5m04PtFund zGnLsHCztf(yE4&O9Gb7>g0o%-sd#>9eI_3;Q=3?r--nCj6KAP<*2m%bfM=Uck`I8q z7M*MwC!gTgc_$mi$t9+BF%2KxI`3lI-mm29vnh0#{bf9C+w$0KkvM|b>^x4P*6ed? zB&AP>;>|OrhN`PCY)FV+<~xA*Y4;Da^X>>R_+hr_PT8cbyk9enpc*Go^RTbGzjxs6 z^K8`BNB1GMItnbh=Rm)Ar&e!fvW=5lWYex9${$p#BM{kLSSMN^$Zb5>d;IvT*5lUE zd~vhHVYS+$xOLF)f7g1tEQ@LD$7xYbi)E|Z%FpHJfBnDzckALZFQ={l`d|NFYc#)X zZCaDnYEh+odl%(uvOWU>{c=x=W9vVaBUtBR+*+eTy!GnkF{b{He7%~?mu^RtA+dW} z2fh8?0i^7GH83Q`d3+nKtD=SYf3%7Qk;);DT*d<9;vCq6-Ch3M%P+@6{@Ff>*pm|@ zz{hEX1HyC)!z-09=i~JhD)V2AuRC9^s-gRtowt|8KiB0Fu$r_O$LV?dKmP-N17%MGz(u2n0WO&6mnJ8|z2ecFAq!Gt$cV5-D%A&-YSKP;W|#hvq8&s5A(C_Ig>Z=yu2J%C6kFUu7MD;zvB;iCgxMf@xX?s-dXIvn-0Yz)X6 zh_?__oKb<>`HbQNq-OyB5g=PEfyP^T_UGq+jt6HjL-Y8g88GxZ7-!?n=1jk_PA(Pe z?2KPm-`(B+{){drp;8BHXmz}o9YCYXVsz40KPeF)os-~)wlHG_rAJrmZTyJah#h}) z26~p<(kNi<%zBO!_27I8GqhUESu^|3q`+-~g;;7m)p_zU-j?TW4h@}2XVYvZB>g|L zsXQzKTzG-cN%OnTyyv9ngd6%%`=1yiB8Q6*2DcihPzXY+aR7vty1rBX5|S>3-r-6( z>2y!CVLap)!{L9p7Z%r>KgL6KQxtK0TVw#(g~UbJ7BIL+7>*GBOa2)TxLtvjl%h=X z-oT#sB_`B>lFN$Zz!dLcmBF2X&6qcl3HU!{&biS$xx1@=;)=!yBK!$JO#3KcA>RH# z{aD~U;sqXO5kcZ;$jXY8H5ixK*gN$X`dMqBEGF6V?aqt%;X2&D^SYCdP5H-zN*Ta5?pg#aKUKA?0JL z(8)eQe^{M?96qGWPF9@gDKqPqYHqF_Ki1_j@Z}f^U!GEnupkvaOtQP%ivEbz<-6V8 zkB1hMK92YH`~Amo2=Js4UfJE<`_&2pj;+NqnhePX_zP>ru?x!?r6;pE9_-|`vyJLE z=$on_h^KhgKO#slcKH$G3B&~bC?XhGS)`X7&~`a!jp5)-;9xwI^-R^9B}ne7oj;@K zsffB&VAA|#a@u_a2`6VRz?@2e8EBZ_e}~%1N0fQF(dBa;fD_2%kNQK2*girUUMUJm z=?ITg=s5WZ|HWOsa?_JDOgn??2adq;RZ+|^gyG`FeE!jX&NFMu1lZ4RFYM@z*4@=+ zVRd|xQ@vC4Xl+$qVLnrYsF0({Dc-Es62avPJF#3ZR`@Q}2Yf$4|3IBi?Ds{%!1YR6 z+yLIrS8y{xExcdqgF8cQ1T}1r27o}VyUQXlw1iul^5UoWFEH^Aoi&3 zTb&Ps?#4{Pe@Km+#*E z^z{AF>z|L`zW(W_=Wnw}1T;r*8RNmhAP`ja#nX3BkB(pd?fHw>f5UQ~04%A41JfBu$QP>|wf{LlX| zS^xP@FZ1~6+rK7uvu1s6>w|P^BkZKzJJ8GL;S>}>70y&_-0@u`Hd{=@o>>EoihnT;gqurz>?^mSBWolG-5Ugo2Z zFeC;&83IMAe>r=zoL>MdT1hGcKizp`E`nct^TDTiNmc#+iKK~JTD7COyb7A#V&ps# zGVUk*bZL6P9LzTfA;a`f!dol^+nP%lE(bD%6bDQKCAt6DWL8Cr#kDmjj_zW&bWc6I zrbv1x7s=~KJ;X`WB`Ta1?Yq1CNDu4;Gfyp^&CL+wN~h(-`^3p?WzY`0;H-e*acDRL zXLi}FxN03UIGWV9Gz!=1tX!#Wh6~bL2ZxPmiH`XlMl2Ia;UipEz;(=ApqAi`9Mp`m zSaIN-c`k-sG#2@v|G|ZhIa+s9F~%M-Y$xC&Da9`?QA)%?>g_@8?(Ud&gOy5e^>xLSM&B>JrfAgC+*wCZ^HI`Ki~cz$t#&k$il zI5G{oE6$+laqd>G<}d3AQD&eUiVNm;0;}e&kTuuOSt7Hr@%Q~NT_D8$q4lAVOEmDE zl5cS8N=nK+>Rm=3iyOM^?(O*BiyL~>N4iF4n!>fKr{=Qk;Jbzqt(I%H(hOtCK^RG8 zKy;0P1;yJYJ?H~t3ZJjn^k7Q5kKX{+^DCOG+${?vNnVcANHrF566uBHiX~yjJCp~* zRfX!W?w7+%f%BR=9{WsEf4Bi~`PH!GG9x0jY&b#ej>^ zmCmMLR4#!srwR66sbZ3Qnp~kK)~VyRr&_pzvNJ491#2BtGOSbdp*Z3CwKlj0jRjk( zR7*0Q#7wZlmMUziQY~@1Ds;tdpW@GMK3zpLGWw;Ok&jBH@-XFtCwi*O(U|S(x>jLV zSE;N)njEM{_v@Qfi93qm7z{aampkL zRpYN!&pvZTn)_BeYw;eT<^#pw{mUb2OjCX<6UQiCGD#3(+Lfg2VINByhv73q>hm*nnbLj@q0W-(D6c zs^qCHg5&({)~LGb^sidIFa=C=o8Y$b^J~n&-W=(Ro>I)(;2kY2k%6m(Bq&Hf#_}j5 zHP)7wu6O_zK)Vu}m><%!j<5nMkB`sjpjv~i>Tkuhm~x?^!_Ij#8;mB!=;M#`QX!cjW9NAdiBW|Ns{1B0C`&w%iXd922v#wWAELvgG2e zOHI?V*;@s0VsD&U#hR2NbDmFfTF_UKC#lGYLfg8V+q6wo)P)<8 zlmsBn^A5p_Db+UZ)~gcqxci7m!`{cc*KSZdR9lx*lnr>;77Cwt=Xh+i;KMx~`)joG zEtUoBsWD8iQ7TM{CkmKD8=aBj{L-QgC*+==bh9wYZhoJvoEV zK7O>6bpp+wc7RIrCpfUNqjQF>bA##>8mohyoFi${3HTeKV0YJnmaG|GHXEzkMoeR; z-*Fb4u{IXF50|(n(B3ec*zoEG369;}oqNfU&!w=0S7$a|57m&tdY8RJxC~OnTasNN z>G-h>>)dpn7s=3~yd^%cB@wH~#m;%is)~mvlLW)PP zm|^XaUSNYg_#xJLqWmW$q6_|zS4F13l*YdsQ5fkFwN3(6m%7qswF6?N-hH|dA&9ki zsz`QGte}7%a(%Ek2074nr5CHq>AkhYPD7{4OBJ&y<-sH2CU)_9&}^TkR%q`4u#Z)i zNk4qgfnm>bb>H7k zu$7KI3+Ty3*Y`KtFgT}K4@ZX^y}ucEbhFQE$;Vvx&+Oi2s?Qri&K_{899S^9bJpq*lNbo>gvP4nqFA5W_-@gP2+TsfO|_C!F* z%(cQO7W(VoiyKH_6@^x4XkCcbgP{6=(N40QuQ+N9hKH$=Ya_YB_X5o#168TJ1AUo4L6VUAC@nbP> z8qnTz*-=qW+ig|#RSx{@#KuF^IqJbcnBY>YiMmX4Y)s8e%rdn*a5wAQBss$Sr-- zQFpU85@G}+`PW|lPlR{Gf}Oa(EX)NO+|+FS;xd1R$0Q!_O+6jiM}?XmwWB{o9VO8b z6*X;#DP&u#-@0`%xZ~bol-!o%)N6$8Imn98X~459+;RzdvCXt@$uz|ZE%OtGegZ#p zWtvFMZ&cH$0a~hgmUmlIb>ySk@(`6LItb8Qy>>+wcQw-lEd?kSuV+W}^guii^Gd3# z%%>kz@!p{&zF_36xF~0ymNX>Xb>+X@jNKhMav0$(eL|D;uIQ||hBkfi-2ju@Xw9K( z`9;{KjiDI6AF7n#1Glw=QQ8=hchDrG%nYAMyj3#TfVe5%+RI7;=ly;^ZkqDbi@coO zH)qk5Zq;n`V=79s^=4VTrC6+y7K7p;g1g%~*@Y!-kwYlS_Q~rN__|9wwoZ*I#S)kM z#-axjSR6&I3~EcwGW{S#+E%z)mhPIFIKX9|gS3$bCAnr`)>++b>X2eI6qay`4v_Rz zR|&Xgt28H9Ol6(FHmP?55Nh?iyBiv;k1*JPx7m(K6+Xgp%8bbvfQl6Ye-L2MFAQ6$ zX-hf@4QqdES26nlwP5&<%u8}kR-)dNt7(pvqAZZUjkk@%u$D@h_gOG8ci&@fUMr}> z`f4oa%BUUX{$~rCS;E_9YqY??*ud%jf&GN#e$Roa#dQ!D8=#q6P1~cH0dX4K{L`}> zz{>hAJ-7?Lxs(b_L31;k*g8KsKT)MZGr#lkhO%0FsVtlrV#k6SRiRf9d!oVmak zMDL0o@zpBA!j6`i%W3w`7R{=u7#p;Pj#yal_T+4YW-7gYM4oS! zN*S=+yFYqx-MjWS2o0t?zwXw)o~(1aZ8(KKjmC`ZvYao=)eTw*C+8G%MX|60i?VRd zi8q@74Ys>`AHisKmECKte4=Spm3*pf@7*!WT*>Gj=Bx1ZJ@8MhDqXe=oT^*wx+`aI zI_mMjUA7Eb8EBP2<2h0;3&DZZ=3eWhR>B4b=dr!3*6gZPUA2nVtZ2c(05-7&38Woq zv0kUeI<1yy@4~!;I{+Ki2ba>wc5pvRSTGVqF)HYXlE&&7u{I9)OEx2o%q3CrZ_u;Sm~#nzhz^Gu~^; zg820(w5kfQJk54NQOX`AO+^||w=19w3nG*?t2H)LComf^GWAo*8b+nvBUjoQ^CBpd z*|IoeVuU&JH)Kc@x+2Xf2pZ-np!@-FUXjnlhr9RgZ-0@J`YHsr-U|3`3dD8~HEVFc zeM&_yQRfVhGpXamjLvpI;!3;~<7R=rrV@3T(AFtsa1DVW6S{LmzV5KC= z7BFz_V2;Dt-7VxbZY8d4S7IuL%S*J%2ML3z0*5<~T?J)mMtUjis20+TNwVyOO@Irx z*fGVI2oSTn+?Cu;AwpCang}vC1Gg5y8t(7ify9Rwo7&(KBsak+1F)gGtGZW+@PM6T_f(esWl5d)>?hv$!@x}VuAg-*?M!fottW74f-~zE^XJQ+VLlJ=@91f zq4AU=uC-x^B%tEjU>j0gi%Ry0LchE%MpkLZjs$hK#C3J81f-=@Y1gO(bD4Lt%cC`d z;46PQ4pmJx32NL}vZ`|52g`NrA=fIsuQ$HJw~+l}^|sMo!I__P-W#+7N^)^rTpKF{ za}OFfbtv)^f+Qhr{dTIZKO5)nprSy_5)b z=;UMYJQVk8LYN8#Z-Kf1#RgLM*f7j|lA4H2YUm|VxrD#!C{5?{BPN;ESWq;f%hMYu zncaFwWMT>2Jm!?8H^gAUarxfrceBxc4^lu-LTEg3*I5y}9ZQTR!uoVRm~N{Mtc1{qUPwwW}?nHKs9)cqL4FQWTQfgXAk(?9}?;mb5`U4Ddbe9TRd zZJT~@M(o#^S%?hd01Vw=+(U}qVkXX#oj(5KGmz{jBSbAlG5d%9^&Wn4gt&j`U+UtC1@nLc=f)(|;qv>I@p%Sc0!WT&Bm)HnE z@Wq~sJ^z+h<+SyzoPC^sO5kf;ew<&n{$8B5ep-!ts+mumjv~u}3Db;7^zokcJX(Bf z$J70sAj_*bHKBUF0Lu*-O%az@p@_??hKS3KWaAaX$g0rOAykt^))F!xMM&&iI>n#Q zNCvmrtm0tC?(T}>KAP9-P~}|2Nw74Yt^o~&YECfdp);;|+ zFUKu>dji&df4i-+V!Iv8Px#2v)j5m|YKSmg5XA{aRuuRC6WVPT z9sJ!XFgS5_s)PmQmV-+O450P9T7bmb9ZgE`{y--}&NLmh1ThB8>M6yxhO8ekUV0`% zs9+{sht@V}VTN{@UnTp+lf8fI!^W`9Qn>9F%T=Me;ELp+7G3(_Rwu?XW(FmBLm*Y1}z}VM1`BAk#d%9fCuNWms(N*~g zMlpT~Cycg+l0N|x0jvCOea7Qa=`4R|^PqlW3ErI~;djH*ieOH@x_ zr5C_{;EQee)C(R5jxD~~L|4Vx$8z;1n9XfnVa-TnexXv1tpDAt;8M(1q9GpfEX{z)Sc7+yrNww6E>GU!Lt3UR&`Sd=-jd46Ixmm z8z{eCNpXo0ST7$E6P{M;haLIWqRN%hgAN#mrC=npVBU zkC-e)P!(M-@dKnv0YX#t5@bGXW}F~-la!sz+Ootz3?A0kGpYkLQ1cCMvno!PP~%v$ zD>5>}vIL7FO=6cs)+JaF*q7$HLLqOeabjNls6imB3fDh>9C(8=NYX5b=2PWC^Lr=0+lE#=rDVe*MEQ!(aAJAMcg;vh5#wkN1Er5E^DWAJK;OCV(Y1 zCanmI;`6yGWsWI>@W2AE14J7oa&Q|5L9i7xM>1mXNw?YP>aVxjf%^kSXL!h@E*zUl)vl%VeN$t?>x)Lv_5J&1< z74~z2RuT1t+ta2S!+wa++!dNfEnNH*;9{+#%?S@al>AyEB|2n=+=`e{2b$ofFw`j6 zSn17SDw2;lnXxox$ts}bo+$#9>a2TK0DV)?ecmqhyyyylCC{yGHhzY@-bOvr^M0f` zPl1e9Pqfi*DF(l{`mH@pMa8knN^&AA~-!Q}|JsL%}15-U=@%UzT|nuIMqkQPgv$`B^aqp5g2!lv`ZGO*F=C zk{WpDNJ(}9j_^d>3+b>W_KtkvW(df+9eYc@J`1iuUXgQHC~w5hus#a%R=|jTre(O- zW_(gxJiOt1)}3x0f~K1<&`RFZ=-XW&bFr*88%xquV;~>EReDUMMviW>H-Ql6352a? zg;16Pccn4?!dfOj1`Yu47;dC~$6yzV+hr@h8fs24jca8S7aD7Kk5 zDWHr}2Ej=^YJZKM%dHVEIx$}IPK=c6&beT;cldSeznz+&RrBe3RWO#L7^IBoH~^_U zo@$T9Hri&(rCPQ!e@z63Qa%u|L|OkIl!h#9qMpU=Z)5XZtX9UME4AEqMx@Z+!hQ(7 z>}-e%cuqs9i4{bo*(7gZF($rsNyR)#Oiw*fwbLj!)l%8brb$FAt;DkRE|kasXl{yO zuq6fxw(!v-$`{S(&K=|3Y`9glPj>3|t`B4oR?_}Xy;O4xH}w{7>Mh(r3trMno_T0q z$xwN68^R1r@C6va75I7if&v^-8BlHB)R5LB4s=%G(o6It3h1oSJT^m zc@-s^UOnb;tI#!LyhelsB{-ZKM!3sFa-JbaQw%Gycin7^ zIT2nvX~ovEn9gRCm4pG4m7H%jK)z-0r#;V#A$7(#qpZG_!puZcA{od2#x&~^hCz#O z-9&*iqF-dh%{y5QBf?Hm8fn5LI_0hTSC=TrNIQDqbzfFL=RX5uM@9}#TXIQyRbiY` zV+hBL#z!ZRR9!)sQl}QDXAUqRThG*jxGCTG0*X-|%IYqJB!=pV#8lo)OiE)V<2__} zqF+HQPLoPR9Vc*{X6X1{Xq8k&;HzIWEE9Ylx^#x(AEVkSQU%-U6sZJe3m;ICt9iwn zk1G_1^&3ys>maorTq;m*#j-kj_wF?cu%tFp&VCDCr*=2(SP_k7g|zX@*(<t6yc&Ii~AD z7{E6JP>`__GJy-Zq9zWkQ)BC7n5qvYWb!%yvJds=j;4BrV|Eucv?ttR&%IXKWN;f> z$_u7mKq5~D(sED+Fh zZJ*~odkK^UWy~5$yq7q2Wv>>zfMC*7S)~%wU13eo8yUyXM zQPnbN8w>aR;K1(YBt;}auh+g=0tb7MGpGWV(L)R`0qumd1{v+P;D>z?@71q!6Ah6h=GcpB#C?@%*a=wg{Wwr;i|M=!9eEtn=8UtNsc(fAwVO`vJ))khw(4cUgmbFY!LSW^~208XM zbzO>`9hMN3-qyo(8@6!2hH(5-3mkx3SB-Uh#~vHazl&jc*+~`uuw`%FSy^!xZZ*|n zZ9^Cc;vj{g1#5x4ljid33T7TWboTVI53d)^!dWVTP%?k`%}Z5Z6g2EZ<`gf%b{*`# z2vAX5>q`Hv<-Tk7#{R=!0)?uAqN|2$owPy7V%NzSoR+r0Lspbtd?&AoIAIybPEE$4 z<=>77&f%C*v%MY2DmypZ(CJT~BkRt=>HR1z5AQ7@4+2l{Wlf;D)0KH@Gg$B0nnOuo z+3-*%;r=I|)9J+Rsiy8Urc^}bQQA9P`ju90vQcg~rw$`jT}Iu@svAgU+q&*bS>jQ$ z{$fQeMGmtqztuQ`dPocD`HD#v)z~wtDJPZgt-P2_QCL7au{@wDOCkyeLF!=2zx4{F zQXp}ZlWBymkuWQD5!BeJ5MmNVQrX>46hGh#AITR-b9_`x}jRo52RaLm@iFpXv>sxzkh$jCUFHSus zw)7Zr;Q9rGU;0+8MCjG!^LQZyB`|o$SVk{?MTC=qnc6{85*I&cmzfe>{0!H%^)puT zFVRj7;-b@0f^hOUM4gZ_80+rG1EYLv+eKp6vJq0 zbQWF<1D4ZNjxmbtmTmUXX?56Umn^@Lef+!{1L=VxXeXY@gJ9Ogvvx@HqyaH+4eEyW z@&wIF(&%D2hsJ_PJE<9y=ure4*T>eglMv#wp7my4oeDKnDbq%Fs*e>At3U{KDl#dP zDhu6g$ilm39kB9qy_vwS*DfJo$!Qo$l#N&WL??;<9n#j&vJPo6&DN~cAHfe)^pCwp z(CF811kx6nHd#x~vxOUh4)=hGm zmouydm06we51Y4>7ENYyd~XBq?`q&Za?KaRc9Fdrj=Rh5ReF__)>5#t?RXCRq^2|M zPP)hGW#>3fsoGU{nU1^nSG(*UcPHtweS|(1#p2~m?JR@*O*ZWm$;)iiDRFGCc6ZMY zZ-zy7F+A_ybPDV$-GS7b&hqfQb4L0y$m^WJ=rJFL1F!+8^xYvai7z{o!%v-e!?KgX z9~k+|v^_b@-fcFY4quXP6f(Lm0kdAfhm`L0zWFm3fUSk}$sr~2_^yS`Z=y$0p%%_c z9<@)5?< z*Jm%%NkYqwaG5eXjO{y?u|=nCG~dj=pUs!!V%f#gUDEUeCAZlC>CQH0%kG0~ zG?rw$0jF_gg61jR*&E=(<_AKEuAlBJ0|=2Lv%0e_Vu~Yl(mZPNcWu#6%w+`^){4bPXZ7PEI-L#f^0wK)FJi=fdYd9J`4aX%V;=J zTVXkPc#bMFDaD%t=%6}gO7dEwhD4x@=770|_#Ya~&3m}0@Qa+@3cRc@=g{kFeaY_$ z=+DPl@6QK7j+vCC_w8Zj$n)!XOyuRH2B@+UrFyRNjY>ZS0(putMT?=I^$yVrSwNgm z=fH@}dx&TRdo2U91|@v+n5t!?eiCzBhU=l_YHYJ!1V>%EM1|+PcS9?WD|~a9&0rPy zb9M;nH?Sc$srH1Qb>TBUtT46HrVXpoZWX690nH#Dz72|===T(+@nqcYC#|T1ZAOdh zq}7idvDBRfx9P0`PRQ7bvm1~NW>y-Q^yDD*djU0Ao*WSf&1OICYb1dylg(mj&XgfU z!s0EX7IL6#pyQ7!@8cj$;V=+rz7N3`O#pK{S?_?MYGSK07&nM)C+Mtg>oq3cm9JPF z|IY9X6BNvPrW49wFlOC(e2YeQjxC}{+@K^i`>dF*^3A4O^v1<1FQ@TgznN6Sg)VuO zYvP|Uxl{W4z_xkuwy4t^*0f)*eVaW6I(xs$nA+>b24N=_454nS%z*TKcC(2`K$BV*`6_ zB2D>xKH4kw3B}+fMn>;kO~ZB_CyKDSZXcuN<4vYBcO7X19aX}P+GMHwJ}s5?xlY5) zNv+^HTXTc%Aw6B2n;5HUmxhW>XWtLik5qnem$+EE>>RG$olFLyf`bI+K48NwDR?*^ zSiK<$f&cGd=%3#*PiK+Vi!@JU{8D*aBQfY|OEg6$<+}6mZAZ&kTPAeptTeft?SK22 z+FJnGQ)}2+$at^q#W-^27AFVsT?$KoCaCxJha4wkAdgl+mCIm}PvPSTWSOs1un2;% zGb3KecNe+O!oaH(F!8&`T8`?6tGX18?e|HeYF4@L)LhN#_k<;tE`!En6wk`go+$Qv zVRW%wQte*FLhUK>FyWNThFteBqUce9c%@y=O)Tw7qK(jG=w6^;#YL5%o zeJzeVzz5mpXf+q-K%Vh(Zo6*IcTRHaL}0M}oEv-J-BtH5T)r$1xubNjB{f!koyaOE zeZxTC@Yi?rpjt_)L%)ID-Fsjmy1&`2Mh{Bwf{Y3y`nmxLO51?(z7h+P@_us>L?3sX zi`XR`%Z)i&ZV*@4SWg>q%$v+bs&N0+=X6@RJpuX*n@f-i?G9@RTg9gJZmu%THv-^L zLw91z8jb_RP5Q!`Ardt*`8^x}i_dZZEPMyRm1Cr5_b5a6E}cZZ%&Y5&WrGqo<**W~ z_Sf|gmd}ANSf;IZ{5t-t*d;7Qbl@-mdIQR@z(lO<`kp)iFql5AQ(*m4{CDX|@`yLf1%vd^O&>OP3#hMZ~DrnK? zdK|^oRk=c;G2H1lM`-+TJIa9&JoqkcGzCGE2xMzQvCqh=kgZm9gc8qoJ!lI;&yo+Q z>n8^(-#wN|JlTqyV3*cJEHlhXGg4K($DJ}DBBGU3{s?}+OVv3UB-Ch6BsFoVUCB_> zG8@M($7oh{;TfE$q5bA#+2kT(rDF|AcY+XnIi7Ty);LmD>yu{-{yVJI@3K_eL`Tkg zz;=osel(xe<8kR|ni%<|o{j#!#F<)aU8A-s(T#)z^tFnn@jIGRJGRNrMoO9&j;XL7 zkDy&}9km@n24lfHqgWW7QfXpPl)pm^3Y1!JiDy2a2`=y=eJYP`M(|@2M0BDLb`Zfr z(0M2`-g4WvsjCy1))q>cLQTz>B-04r))m281n9n;U6>HhI+H{X%Zn<5|HwZVBbgu# zpk6an{v~97Y68InLMYEye2-y$+3!08>F`Q8akB>G0M0$0T0b$e#}utyscqN}dp$y( zVAHPwYt;HuFLWYMEa)~X_#a~N7zwgmcLxL&Q6u_0%V}T?A;<#koBspK!(Z;a@yK@ z!xKrmT7mwS)FTGvZ)3TeOC?2T_7{ns$6^h6cj#a{t^&mz-J6tS`NwZ&3e#DJA+Oxo zumj!JSqEfq4d8~fpl)XY20Q}iuGFEx5RvzMDt#e%Ay{;=gU78ke;tDRyLIjZYJT#4 zDba?)`dhehb*6*2cCRSXvHAtD8OG8%Y$p!OLND&J#=nwPUOCfzHr-ZXOFKD;mbaB) zo4NK&M7n?6c<8hD0>fG>A<)on`?xagP6vXFjhuHtbxOT1aMEB_Gz^@(C~0CqtB8J| zYZ1h008W0006%a0Bd6#XF3bVCbbX8bqS>J?4E*H z>12_pzKhC@P{#5hf|2$C0m9Di#pUHC0$4LPk1CU(0h=S=p6fZ_F}4^-&l4$_jI;0e zr}EN~uNK-@Muci58f5_L+yOGUfLB2gO#~zqx?73xBw(pK35PI);2k-drH&sx?&H>S z36$2l5kZmGs0?hxTb;^cLfb1;8E9u@e6Ci$m_%=?=58RzO@CXT*S(H~hlYn=cT1m0 zC|?1P8?6uaWd2Fsr*A<{f^t9X^WJ@2-XXJI!oCJNGs!WGefOPa>z=L*L#;71s1ylx zzsZ28AP$2o{ZdkaoAMyqLyyunzY$z!d=(W2urG3pX0SJ%C=ewQB(dL`J6Nitu*xk9 z)O`|XoYoCtJeC=hG8H3K8e zPfus&9!)?g8u5lD@HE{4vuD6>^BFSj+V3VcjTqnu($$v8a_hYeUhKa&WY3r0(A9GG zY~nr}5>_JGQ%yra6U{h69Ze|**j_l=Yl@yv`OquR7GilTVO#-2W^MH&t_yQWXs#1O zn{~6_MZvAio-SP?+{;z0noqNI)&5V&e14A18L~}PbGYw4i+C|7k?_(VUsF&v#|z=X zk*a9zZ0#8uZL~0!Jh*Eu5*cHsE|1&u7LGyc7H$1KAK23L`F)7r*fp1LQ9zh8rj?|8 zE{xMh6$)J~xRua_#aDSXc3oM>e8nir$5^1KrYdm4XErLJqNi`ub#T)%|K?Eoa1^Sc z6(xNajb8GGtNFJoHEx@C){WwQH0{O9H1Uj0#sfhWeN-KOYk5%Xoc+GU?wv*y#oanr z)oQKZnt**90jP@Nybq}_WlKg-F3{}SVDv(z%O#Ecv9N{(=)+;tLM|eErQMCzX2F@#f~0QD-2DcWcq zBnn+$cb>vpV5vmE>m5CLuxY$w=mUoEZ^o(8j6r3J2+}@-!o>V5K0^mO=Lg^WyQRyT=fr~B zk)sQrZltbF)wo39EB5DzU(-6mhY3S;i-lXkR0`wlW7bgxmJA#LdiH zU92NE15;ujafG9{ivy`&+I{j7GSqv2$hn8~HS~oX_uKhg`K#rhA*Q5Fftrs6&G-D8 zROB;F5=vj`2bL;E7yJImwhvJ9CcA8|Z~5SXvKgb^`VWsHRc*+c)8@vf^~zHw9=Vd6Lk2kV`4iwmWh&3|QhS0_$U~UucNI;C zaY5k1ZxBO8EeG-b{&+bCz)yZBY=lNu5r+p$c?2E zi~Wh~!u3QwZsMl*p6#)bW`5P3^XN*N3F7Oc=zuvBO( zb*B+Vc#oB6pRMH+am5kc$O;#Zl|Rj|fsu!$kE*FHU(3D#|DP!^`D+Rcl&vLWf&l=u zVgmp`{~uGpNZ(2S*BmHLv$Wk{Lka2mP(|2IZJu4P?v-Qd^`mOmvTUFgR>=SzK$u0c zwqF{`qbL=u`{@>b7fWQp)tB&7TXeKJ5L!(y^W5+3W7DK4g!=zDdB(U}5J#)Y!GplF!1x2sX z_m;EG!PGv%>B8z1>+yPjygPxv;qMfmFl8wsJ&G!zt)5MbBb)NiMOK+F$#*8bABQ9s zsK%`37~^R)2+H#ap2ulmy+f!$tj?JWsRe^MCmm@-BGs30c%YF;H&U#5MK&n{cM7pv zSfm`%@~Y zpEDtf9QYDKX@@4fJaS>_x7-kbB~pY>b{13Jr;iV|UN;uZ+!V${?M|g7-)%>%bnxYs zALHi83_%ID6C`w0zoz6L3uC~pEA{G;X1Z0>Nj+(rEeTbjtt6m`7gLAbI1Z2diA#z^ z^;u>$*EUvKT->~j#izfZjX%1C^V$()g0zRqT$sDIW#tUHOf~8;MZjprpax}BXLh1} zB*W<~F<~muDYxpi_d}bbXnQ#T2!>{fEv(sNz$obM@w?~_y&f>a*&>AqTg@efr@$ig zefIl?FcpRe^_@P@s}qoq>Ob>B0;@%v221SF=lGZxZqeh2%qI2d}Yko8G0~76!_GK|D5h$qX^;XV@V^m zC8Yb8ze}x^H?*27V?^@4-nY`SaiH28=y@?VaaeeK*=&S zoBOT{WRB*aspjzUc|GE<72wDB375c-5iSHaM-#p`AINoZXy$=W2L%6S-|D9|M-da` zTUV@yBuTHw0qtTl=#rZYMX>*FgP4_o3HA+=MH^HH6-oR>lgTSA<@#k?b>8K^vS9$` zsM3Ua{Mv$VE*lvYe|}uE4KLgMkok?G1TuA(@z|Au%I>XUeE6}El`8t9djl|KCz$~& zE7?$5anKL~K_L(rYtkCL<-bzes6I> za=W~+`uo$v~P5Vw6DKmk2g4Ax;Hq*UkZPD z_(hoh4KDGQgI}-+-r$6OvG^t7m-b)we}N)&50yEEXCa?hNSur`+7IiIAah!$MdG?j zfyj1&4wCIS5-i=?&s(rDpEYk`IBleYK2E!6^c;0w=iTSJ!n4bEiEWYX2-PgzDy&+# z?prp0QM+j5T0D+Be|!rgo54ahH;gSnM1vapCegK_3#0JFkot%I#R#He43%8XS_|HmHt|MYHi`i|vV_ z88-p6PB7`S()fkwmviGjrL}Q-LpIQQJ+`wtJ+`S|>V8T7#r+rUUj*y)DiRt~88a!= z7+xH|wtK&ndOATgJy<*Xxwz)^aIeg2V{%y3#0|0j6>`I>SkIk9U6=_3DtE+b>*Mm8 z)W(Q0tBJQ@{`hFxA7=DM&j%yw?7 zn{HoMGhJe%tEq*9WL0a5W>-~HCZ)&Qgw{|r-PkG&cs=_9|4#+c7gMDs`<0F~765=> z5dpB#w>EaP(>FBMHF4Dal@eoJCv$6KIx{D0t1HbP+l^+VA6{S3O1Nm;)n#<3@MiLZNMqdFxcsg>IYo)& zrad`uKOfJa>Eje6wmV;s=SP%v=gnW54~xw+A*P2fx*;{Xh%I|@`a*_?qkbbSjaTTl zGzNc)v%-lty1Tn=wAitE(pLwdKg1XvQJp>1Q#t3s5+|`PvrjQ?3mDM6r%FeMubw{%nx0JY}ai5w5> zg3HK$z@YiVJ9{e<3r2wz=xe{S1a+sYfH4L2k#d*bhh;@FQ|V)f2y7D=G8Xd1L1PF5 z)xncDV|KbCf!%>K{n3jG$s?Y-4X%{{(%(UHzzj$O%A-O0lcFI7E7t(Y4{5@*^N>SV zX5JJg@!9?KUBgK-G3==iD{Hmj$S>3!1^NmFXpqQ7UIUQvs<`p#CEo{~g_-;a$c0ke zp$%;^YsdcQBG{AxI3V^G=A~ zJ8C95U!EK1!8;>P7)U0NOixHAM8Fr6FC>TX_dUh%>;u!7rVIZv9@)I8FEYpsboMV{ znhat@=+)X(9ad1b%wI<7S5GZnEU?7Y@sLuO3&N=QQF9z2qq0${#w1zy2xGtM4(rR6 zOY5;Dh-R6|zZQg=mics#0@lP~nDQ<`L6c@g(U3|bGsA|_!BEu}!<%i7fxI7npBM#& zM1GPYwt{oLSW5hN*z@F!T8R^v-3C?d|F9%&|E+gp*6ME9 zmT|P`@=i~vt2PTv=Z4-u?7snP3&;DQt?}zE<5L~D{}YximiiWBD2MpK0S+&Gdt%W6(~nk^dp%1FF|3 z@vZ`dG}S(=cCfUk#>)UtN|35e4%{%pdZ`Mnjp0BsQO|c+!`6Tr1CQ3Nmr8btsNHiAx#TkVZk8hW zXA)1x$kIAp>cYTe%)HpQ$p&L$CE=YAmFjA4ZhUY~t07Gs@lQ$w@t>BYQYg14hyp|s zjwN>}VS9rGK=h3vVbg>6NYS1_5}NgiMR=BBAvbO3R)l^R%hYG z&slBdstKoNY!mOoWtiA?@fq(8C`l^TG`Zl-IfzTI{6m@gfgr`^Lkek2h4{jg_3sm2 zr83n(swVCFd5qcyx6z+ih0~ZX#zt-@5$$8AY(y6P7mH-+o&$^YkLvd5po>kzyKzyE z-Th+7Csnwyw`fXk+>;k7+&D*U6?cK_r_GX^s7ymM#uiZR)20zR?n^E{fy%LAcrmr3 zUHm?^woe~Cz1-ghFMq6%&!i;K>^>vat(}&#OZqu*L*4nD#IEMbfJ3_-S6vWHwR_H- z(hpkx^<}!&=uiqu`D;|K0Q1a3e7p0V9gAW{g#$EK;b^J6-gw>NB~Z z*-OZzimw2%wvi}NXynStKJ7LuY)Ae^6^|z%3RKGE42~VV;vGl>XQrK#eBN{r` zlC?~PHP~q7h1Z+K06^47ir^~c(1LPnNKW61&R$Uy*dKMB7N9?Cy|{vkv2;>Q?gECc|J!WgKyu>a{tG@wL44WT_eSY?q zn=IpH6-ihok@6Fu1n+!NGST$#bDa*ujq(wxDk`X9Y@S?B`U<0PWo`$l!F%hHaTGHW>g9Lx7ktnx+ zIa-YE|Kcfshjt@@-f8`z?mc1b2pqxPgvR>dVM?j9zK2^0mJxue!p>)8-nik|LwtL? zBHe@RTO|93Jy@=tB}3>xOr_-|X-+4TtQg6JUZLaeNEUmLRipm1lf|FXcr&drAwXscw3P!hkTNHHaUoK;XRp1b=h1X|Mgap%x+|mL| zGsN%Kcp0N)jqRIdWbEn45t1pZ$PBa*l_)dihltUd>GtqT@r!LcNg#0jj5H*k22xU9 zNgZN(rd|SbkC7LkBqfP9DG)2W3GCIKLNBc`C$Nxm0?sJQXzCOV6B|!1JLfMcteXR& zB~a|PG`kS{4QGnq$O1}L0;@yGaoM$?_g04C&|KuQgT}18v&=acZpZcYF z%>CwyNlQMoy$O~h#PadBhJtk%gL9iR{)uEQ3xmI~R^<(sH6;_2IkqQgx@m{=5aDF9 z$yEgnkrX;`mq-+#YjD#mK{`f7wVIHLKpfC?hUy*|e7_>-B8s3S<;xxMs5s*>fn?xR zW@k~v)TC=b={Pq&_NTp=qpG^PP z$M!Y>vZm~nPP(z9@p&y=q8Y%WqK@S@VuyS=um}5-Q}1KQWOLQ5AD! z4D1T6dvrO`pZcP9kgAH-+b#YtG^{5=ZO8k&o3BR}s(~GMg}%VhBSi8i%~9P=+`HW) z$)=qKyDLS%f^JX@+=KJonPXM6XFjIw$PVrhR(JQU&ygpUql$QD;OE>bxP7z{GBWA$KbaWX{O&`%yC{Nq~k7jWM@gt$LwtaI&w=&RliQ!kX}y711E?^cvdt(^YDTFf;OgSU6`i$8nGOk=nby2%-t)oRoQOcd zg0gO7%A!mfX2^f@%{y(FxS*TSHGKP^3?03?DyX`G&vgZ+Q2+K>sz97;3zvBs8@Xo; zj_L@?@>qwxI{B=1dH7IO9gu`*n7GT4+tbl8v6bwQ8{P2>c79R`OW1?P(#tCOxk;rhkvf_ zY-=VDce3bY@d&Vmtt-=wPx`T^0TO!&qO0jo1}ZwHQHLJEr4cYPcO%&vQzqx5mB2J3 zx7bM^Yl9rR85pva!eS}fQ@Q2*Lg!_R>-p+6JIj4JC|j>s9CM(6AfK~^RIdpftXNV2 z2FyQHtZ>)eD4>NFavJv&>h7U>WkG-2<)j*4*>e5~Z`h=Uh0e}~H323^U<-#6@QFg? zdoYxbV+wly9OYZkaS-OtV7SQns+E9IfmIowLDbREI%_v0F#N%8Q8s_sZ4kH5gejtZ z!WBaStII8gK`|GLz9BCxK^YE|^hJ9&khSYS ze<&&TJpv#hYi6EjDHG>=(eWWc^&%8LOhDw-=Ez>iJCQd@0)_@(x&wUc40l?k7I{h1 zoXbE1q1vEuC*XmLi!!-)*FHm3)?1^H$m&+4;uDsAwA*q>XdMwSAjYePh3mdU1jQ#0(FZ@e^0>NHN$X903{y~i;Cm*bu^8`r8=`cO5=M}km@NB_=p$Rw- zbd9wbEp|0S(8i~@qa_XOhbC>H=e{(3cEs6#hX0%3VA4kGcfYXjDYJE!q8JG8JzuNJ zaKR7vubi6TWEbHJJ|H~sf)v7|wkKErJIRFR5`?7zU-op&tR8;@^)h^xA1=&PR*>B# zEpScP1R4dji{9b3Zx8YvdiXQ>Je1;gWYwjCuKS2AbL2Mr3h4$8lo-Byt5>9Sv>q3X z@ahkU8=dT>H06~a7egptcpX$OKZN`BY9<)UY<~?UpRwMud(@GKjl(WLD=rQlY*ziE zJvv){xc$y4%xg#afKOoqu*XDn#UQepg{>yvZg0SI0tA3AgR`0+9Fm+kEsS+2HSK)r zmvCb5S6HKjfjtJ^jt3hj1rC+OCL2$#ohKlkRPpZLk{i+baVQlb^fA)>EW1phCAzK zSuVwKNgq40IZq=|z0#Sad%rqhN!ZDSZ{`sI9T=LlRTO#{jAWT4#?cx0-=PScTi4|P zgJs53+y1gI5nxr&aB!NZG}+9t8W?C06ca1flu=dB3&p2_3KwG45fED)q1gl$JO_8x z8qOQz1IG3(zI0)$CGy<hiytu|LNLqv~4VuMNCWm=9X>IG$JwAia^C)Bp# zK6P{Db|cIlcyJd42U`*XR8(`vF;{L7SqdmufeKNk`;9Grs&vKCwcuXv1~}c%oCFXr z%~QIySy`MTGCmQ_JrP3yR$5hH9Gq)93;urlmOG9-dJGMdF#G+%y_e#=qGB)Mx2ul1 za+DP2LPa^Q{J%4kyV1>Y;F_e&1!Gs0fVtrq3DaAz7!IlwXDu4c3ed?4k2WI!f;(st3x$|MMAeLSA zC5L+>9m+l+@4`p9<<}Ea2itF;K8?5__+@3?hP^MQnz_lYy666r# zM3I3Qf~(gq*Auy%HX*hhcO}(J*(f;gcdeB%9f#(*vmOaqBjLQ=>#qkS=Ylm88%-B9 zj9o?hDH5t0TeQ2>OA;JBE{diM9QI>}GBj?*bB|S>>LV8D18XCG2%Qh-%bEznP6{SN z^12b*c9TcG9xuNElBOC)fR`cTxSxXDCZej#IT#%$0l-4!PVck7Y$bf`1>4DCJb1O| z1w)dSY{e&Y{GHJrfCz>PgS8I38klS^M4c;*$Z*>OOSh{TRshpkbj4E=f=0`+t z(8Xt=tK+;*Yi8++oqb`_@qy^=XTOCfVvTKp9tP(b#tb9bqzNp0S-)hf)oc7E+_8Y? zGoAPFTsvW&13bsoUhxuoHSAovEv~xqTeF`BdYLKEym6iL;xBzszl3}2N8Omed}HSi zhW;cgUR$9X_~=cjTj=`Kw)5@AD1zQ4+W;DkuR);xC0t6X?ynFn+vS}uIQ4G)WhfnW z4w&41iYE1PRzRBJr;GcIJ>XI^v1InxKES7CA~5mIfcIX`Yi2ChwS#9DnDyc*kduil z_6UNAv0^PrwYg~4M?4#>s|&B;sGd>f0d5BSx@&ZTlc1AKy2=WHzQirh%$X`2m6*Kn zxUL;mbB1di%}NLjps8eVEP==RATZ)3tyJ`{Hlz#iO?T&PU4HLSbp?Wq9BB0+%SvsM zha<^@*3UKVUvk6Ia`+A7UzC-%oxt#3}l*z-|XX;+Eam*kXw}IAe$1 zwZ4eqRi?O)VXwbdM?$;tj0z!&TwsP-$9u#LgPJB&Z@13x5EeV9GMt*Eo*5VlkKhy2 z(IDV7KeD8u%9U|mORX$ts!*P-DuJQI2{5wguHC6Zc=v5Y3j!0Yyg+Zjg$WTbqrRU= z^WZ@^Gyr+(S;77w?3bfEqHq$dqWBCq&}fO_}R&^u^&bOR5cE1k4;y>dTjO|IKe zRB)NqMkKE1`;F*CW$WX$_8rmo#M4w2T!{)g6V~lpIum4lv~|>1BiHDu#z4QQ%ki0gpk13KY3)!V=7n z)c}VTTle3f6TOm&gTPBmT|ps8Cx1)HYmD-dYm&ZeJ8F$@52K z6&-LD93Q<$@(Kwhb%tSNLDDAz;ZKglWqWoxN%9^%B_9rvH%Rgt81fy^q)wm&t4N~q zPOQ{=u*nOhjEnK<3E&2FAJ zwJoL~#k21Z7ATvggZ8&}9om+|@~AkqrGw004Wl+VwXGgw<#|bY2Ov8c2#ywH>1&>e zHSRI-w@H*q8U@u1{5rrvtNp$XmiM0Pv}DxaitjO`^1xj9Tyh0G=#gpUiKXpCwMF@f zQQTIz_p1+jWr0Ys5l8}r173NPeiS(0ODd>#jZ`A>!BD5bucZ2%(B+QU;m2yQixJ(; z_L4Sx3=sK_`MW{-$Va|&=WY>eoAMfJ8w&#t(!vgva5JS85nLZ|2n}f|RX*zLFtMMb zMflyIa+ku-5U&K3QIxQ0F_#I#dC}1I1N@)9E^OvvM)Pkn0wU7?@^!6^tqqJF9RJ(b z?NYOL++aiczSi}x&DOY9BLYkyAe3&`xjIZ}HfOA%9P%B(tc6>nRl)kRy}N4 zIk;#EdgfuOHj+0bqlQlJxSnu@vo9H*yy(8DR;k<`ze!#i#QoW?u41%kYH87S%v)a& z<1S1T3~bFg66LkJ#L3JT3RCHb2Q9y20wxYmzUse;wBmH4o9GwNZ$FsA!6{fT%{SDu z);NM@O;(0AapU$`ipG5*B<^vx{aNdxF?BSrC*f~=I6jJ-=PnkS);pES^OMS`=R)YD zTEX^;WeLaYsHvUQW2L8dBu14Pg%n9_Wx1_&)z zNtKy7kPPoYxzPewPR;7X_u1`dvG5_sUFg42{mCoZMQI`TT)6Vm1piqjsA6&6oNDU) zIa;40#zz=pc!L)!)B<_?@=4AH;F`H0S0A<3ezEz;_?sisvSr$S&DessFq4eaWCCxCGC7le&M;5 zG2h#nIQjL&&WCqy7Js#8MZ4+U1&-Ycu@?d45;Zg7(o!Jq3%*+ zqz_2=HiVtAwND{*VKqa?v-Bpy72DxM&le-g_+7GcADR^-2`IJr%q_=}HG0kyqmSLJ z+-9KClTzM|b=es@xUWkMy4m~GqZgQnA!O-+3ZMA(AOB@r?y~|j4cU{ZPyaEa%yU+* zbxvMh_9dWc#qV;D{J+DYX5wpI?gsh~Dk9)TEZw zsfe9EWmVGS?j&(n!B!{{Ip$n5CKc1ZJn>WK2G{FOqpa(Yk9J=~XihD^ItU?&OHG-m z@0n^7-L}#r#$me`sfgY27H)H$v!w@adw_N@?HIVC?f!f5vdXmEHD)sFRA5_#u&AnY zUW#CbB>)ppsuWsR3IL>AI(@3_9n58@gxQMpfS(_GySBnfpe)oDRjcfWPMHlc%mM9G z1dJw%G)Rt9yK#85967zV(iT5lR}^QK50Wg1QU=kXEi7OTr`rWxVdhNrmQSGTUu%eU7ZZ__ah#O(2xl% z*5Zg1r&YEtlRqqbsU{bkHwq;d6kdU@JfR;tG03BPF<*s8rt1*#vE}F-vzJk-SSW8^ z+AEzzYC^!Fg7-qc-|zHru0^KtQ#L5pbHW_|Wk>)XhB`*giKs@dz@F1f*iyxQW zpd0{(MJ`Je>p=?|kr3KEFD;452Z7xetsdE8LgSq#MXOjJ2@J_#h&WD*0;?Q6-*l|? zv%<}sfaD1|g~);ih+mMUT6kP^JniQey*aNXi60l$kDO2dNKKVUw$44w&jE}EB6#F! z;3(>3)6~)kiGx9xu@?_Z5z%dOMd_473OU2>*^O9J?%O%Y5_L35J{_bEeI$uGmJtU4 z^SO}(iulJ@*fn$N(k5m7s?HTy+4}N~fL7YkNg+*zyJnq~M;-3=Gr&;H+g6{Y%v9p) z^zd3w9?hr|;J#W5Ni1!I;x2&C@HJKd)f|qEBmeTiHjwXg$jH^K@pp(s7|?~zhvx`E z=AY|5+rNvN!5*CU5+B$B!d(E6)^O&+Bc*V%&?fZez(P6eiLtnnnFP1W*hR+HuI=@+ zg^4}?E9(wJFI%1GSLiYj006N5?@QhPBXqhZ&Nhbsqjstv|E+dgzM%b17Hx*%wsEzj z+M3*LMs%{=O`Fd?<9@vg2K}m%r>yL6JGO#y&4&&2(HG@n%wCrV8(*y*0K@cjzU^sW zA1A6t`4L&4UJnNyE$D+->(92|!PdIdbYnNRCaO1K+zzAv_KY*j|53TyY}9OP4r)*+ zx0p6}>C}i@`YN$HdOk;X%}r}rZ|%S><(x@Sng59$#@#O&op70d<8(S;8jf-ogbqV`EYiT4&6Ec=)n61wRm3 zQPwt|;I%Wep^CiH#Z2W6h-?W*%A%z_m9uZ$w6^bA6dv9A0agjK?7URQ`{hiwWI&{! z42j_aUrIt9Pmlwz+2@#sp_W{ZQ?hc;s%m=3>tSh0=cgqYFR&0}P0WvVqW%_6gC)V} zn$t);*NkRPkgHa;emqMDfS^Mt&C97F2;5jOX3<3dHmbVW*(9+M7XEY>OUkk_H?o}Z z`+_&e5C_d>f=6-N8_k=c4ItaWezsIo*w5aE!w7!D(1BCD8KDfISI0Z#Y`?7)CxtOu z9iwKVbdll;u_*Kb!gy3l>fq@J3s4c-`jkARiY^%$pqT7eBHP`yPeo-m~DWS zt3cLxV8pnScAt6&zB-&r&+4|MuZPF5sN`@kTda9fzbeQzFaIUEZ)?k${@@+(=Z!cIq9>T=;)WkWh%VVBh4?lTnb zn7kyB2ME}5_d*y@joZHqMIrft*DPE=FAINTFK0UAF-))db4 zNnYC#xL^--QgdAHdMSz@i}3uJScuFu@1ZY^%F)PvR5bK@AFG&T+__!>4j2lR$%v(JfX3ZMDxLH6$V8{6REf~c1$52{Bzi6wxtPZ?^<6gap-RtTQpZ(q zXycb3FATntiU2#7&OJ*^8+5o)KpRgO5Td>&D4hshG|#a8dXEkLoJk0oVWy#=0SH-? zhl)0-Ze)*=c`OVcL#`kM1AzgO=31ftWu1VKSfn8u7aT9Y2w`(zexl-7aX|NaKz|f_#EQSS;_fcXEy|% zfKTdc>_gEnr_E7mOuYjCJROp{Y0}?HnK-cigRBww{o@%Smwl$0!p#>0Sy3!9{a!*e z79iPlJK{S6r})W=o}?OVhU@q6R3eMX|I!>P;ne!YhtJTSTCgtrvjurTGbA7qKkuP^ zlu&SJt#g0$pvnCEJ(pqNl?GTQI20aTHv(eJ4jMZi-FBH_`HWV`Cp>&3>C|u5{$dEX z^EMtx1M(PcDx8^t?66Q~+VK9-pPj`ko0J{e^A3IAmiiVcTg8P61#rz}(T2$Ju-h=^ z;b@j>*DKyWr%g18tH)EDP|akcW{~@C4a8Wtm=h#&jt8DkVmaY&j)nfgd+o?utu2f5pg8gd&=t=@ zI!G_$gvEbX&2Ly99*?^J>0G57w@hAu001og=IZ_bYL1Kk|Lb9?sM~IcA^5D+q*(<> zK#9mN8Y`kLvAN8HL?;rc#66Cw*@q%o>+Dt2p}gH>ZxtJjNn{j?f&%iGbaV1e*ByYP z+fJAIc6)+`j>fbDVWz z-lxnX4R_V)h32-6OL0I6W)*{(qIGoSzc1RoHt$(5X6t$btio6w*{KBnexX(-N??Z? zdYTrBHi(Hhh%6q$)7RUsTqkAcK$_#o8n9yY2aQLhb2QMn|k6 zKr2c@KRob1@EawZK*f}PKn>6sM3M+U7XjP~k))IFwSrE*0N>>Zb#XGjMf$Cut_TMq z93+{0LNVCzwI~ax)$?5^vS+v$I3U}|1P;y$EP{{-S$n#FI zBM5|8wyyKCuj&kH$nn;yY*8(0J~iW6KOL{>XT=-`(EO-*m!{GB*0ZuahU)zQSH)t@ zF)HpeLONpafPaAS$^Tul^$A2GNOc5qrS<)t7KjL};Gg zt^Jfw)19C%{|&HemKm#^1-1_kDsvVbW83IinxqL4Ni!T7{wR(vOP~07SCyWEphNBj zlbS1P$HsBPxlbUnd&rO9`ma%cfz)- zoY?fp4N_!{&xx4uwpSPOq(|HYWdGJ#*RFBwaK|hybUIb+BTUG64!duj`ehd*Yw0`r zatipPco;dZg2KLX!d4I4IteC|2nXpX@%}88 zmjR6~W%=`hGu14R+e{U}s?8YoA~&rpLL&Zk@jR>$UGMdeB8a<)R z;_K6;ilpY*VZLs-Nl3+I7oGz2djkNF+^=(|rwTnyZDq;->tJ-$JiL9rKdVeF6)52F z@pZx)F->HCy)|(7hVsa!lVM2~Q_ClrI(S{P1TwO*HV?7y)TrXBER30NaJ#3|;Wp+a z*X|N)CS2D~iND(()zm_7V+mhrs4QW}fC*?kIZE0q+)W8Mh<+^%RwFx9lAI`xCd*7f zmKdNUOsTO(;FCO2!nR4A7<)Kn48KvhCv5jZ%C0CVQjvKm$w{3_(76$lm=7Q~8YW#? zq}tNsQM`cNCYA}D-m~^E-mO$H-`LfKG&zAhkdD6}#fKA+00}#emo%SF)LVwie7FPk zl)XaGDP&WePa2@szodX0?2@ND6i>6v(cg8l;3{VXVVOZTxFkC7i zDb}uvuX(H$Rs|OemA@*!r^8b?5+)4>CtjUjvu|n z+P%EaZ~l(SNh9|Vd*s@8v`;QQ5dIyv>I-o3<l)2X^rre%4-19;Dvbgvn zX>j#X{hwRNNN3-~E^5Mb4gYj%uT1?b$59a*#tG%Kk29O9+)w~Ix8K{P?Fl4R1pp~D z3w;hYglvQo~mjZaHTJ#K28`wtdtyoi(o97#mL+#xf0zr?e^_eDX6S!2VS{K(`Kk~oHCUEpt z@q`qg(1u>Bv~2@Pv7~C|B1fB2jux942OY|%g}PcFCDChh1WKwc;5{>$8o>jPy==M|o!7HFxM5FoM{??M_Q{6g$Tyq2HKESGJ4gF%#z?U+#E z!s+6C3|ZXpK4(uI03R~~~D}%o=Pkw(r{e~J)U-O2WNKe}5<~%4p4Zwv@UM1V$>lK*)hpu;y5heJxg~vE!+qP}n z=ZtOJwr$(CZQHhO&zs-7x!-s5^4=f2E9p+BRw|v{Rkc^G^^D&QOCBYbpSo4AQ#G07 zt2PZ0r~^^B;uVxlN)+S-{vSKiQF#r7CgOLyyR{U)Ne}f$Y==a(H1lsZ2 z=t>9+{B;Gq+LD6x#fKJ|OK#Bs4}SF%oU^jnAM6*$Mo+P|U+ARukACn!k1oVgWL3vk zmH@3o6p8g`F>eU8M1DxmFq25F+&({%q>r3Kn4^pS$VkIMaC*Ia*zRF<02W8b-vR`9 za{KKIKte=TxLQ!x|G)A7m(D_B7mBau?^B)M_;36s|G|F&ed};?6u+;ptGoO3XbTB6 zAIU#C+y_RS2GWfVM8P75HWK@1xWxs=4FjD$74F?5w4{kU@?@#0V&iU6h2Wv_CIWcs z^769}+T(|Ltrp0M-nIR`t`a~g|WdV+sWfONW=^70?(AvwEMf_mhtX1g6jh#=BS|&{7ADEZvN=( z{G@)GA`kNaK;eG??)sl`^7svi->|VYvi`q=$i$!g9R@sULnHu2*=*Wq0+dLb8{9)n z`dz&)Td%35GzM^V7Z!94Svf^y9WynphrR__k+OlTkO4-&Ng6E%z%=LoC(g7K+^vMUVkg=v%v4NNCx-6{`)o#j`l`+Ryypa z|Fs9FX610+jQE|clh^K&UdV!u^^hF6Ddn5#Dv1v)D>p+X+H81Rwqp(j;ZXAPRZWZ~ zjToQZ*kxi5c473grgc@VJip`;Ao1%EL@z9b3U<18XKeTsr#RO*^VD4oa|!tVG~JCy z(4{Wq99}SK;*Gt>zYuHyN+C5Ie<`@Ynjzz)R5N@g*if>LWK!&K{@KtkS@^F%)ZWXU z1U{!9f4tp)h5)N;;Y{3|Aw?gEkKmVA*@p7|F|Om1pzWL7-poZOy{XF^@XzIeZLj=1#>D57*emncfxHBUT{P|+LXEi{qnu1kGs z_>XM@IdML>!q5_H)>49EbfUMijpYr5R^hnVyMLTW=MHm18`KY3>*(T!D&4w5hw12D zGJ(h^I@YovvVBvk{$!EFjVWBorEDyx=ie>xGziltAP#I1S2buH?!(EUm?j_%91t0) z#w)=$<{Jp<5TvfB%C7}c0l9H6b>s?iT~Q7}DoFGYyl1;WrhQjM;N*P6dmagFa^Alvdz9QzUc$_?de%gBkNvlOc8n@QH1id(j zaQv{2o|oM&9br*wHd7_YB5=NXlYo#!kaPZ#BX>G72DH9vfL))qL108~-QVv+)cHWv zPa$b!)_eqk&1hy3NZB-IK)hGt0(JFM{LG_Fwv_L8;SYo_GGARVa8Uwn;Y6*^k1!_{ zGsiu8A2)&X!T_$;wNqxy;A^M!DN^g%=(F}K_bA;GEtm8tCM#%Ld>;DwTdn-NgDrEB+ z_n>E|r*jahS34YCc=JfwcTQ1n3tYy$i#M3sk467E15!7=bRpmO`aQ=(5_emo)Iw(^ zDdIfQKW6oq$CYK~WPl7qE$bs~wCxRXK98wgX$t7ChAH)5fxgL8g8m%x`iv^Ofl8hd zDoCoM==TY#^zx*{ngVAU~J|nQ?Rj~(H31>q6D*V*`ExwN$-d;2Xs{v8q42KbpOiL9%Vg&Iw+9% zW*7N&Ubs$C7|n#<1B0V5exsmV->l@?O^Np8aV9(iTXn>SHL zWncq6RE}RJ;pV5FhHAkFjxVXJ`vp;b}*RH7GU??0+PHF z)YZ)(o9>xRH<{@f4-^CU92oX@qlxb)1#x13xyni^#DJ37Wd=6}s$g9VHeZxpvJ49t zmZGKGD${8D&4R=%kbsDtHev1@En0O_pXJEMJz%{>`@|lh^FVH#&e&&_T-N3D ztYNcAiT{GaT@YdCh27;7`cAesv_BXiq9e1e4 z6YD34ULJyc?|nZ6ZKH1W6XKI??l;*@^^T5AuU3gn&nv*zsJ`(l&dV{%r7-CX1P&((H(&i1 z_GiRHk^|m{QB@u#S~b?TnLN)745SYDIs7#VcoiTqmJl$5`gs+MF=AA96S}h zV3H<71=K_n(kNMp`~)aa9-CheAB8&A%Ck9A<&zc7@+{(mn571{6?({aS13~wM3$C1 z!>+jYs6tQ{C5YjU=UXaBeQX@^)3Qu3tY3|b3M>ob26)~WR zj02lw56q}74CLAvBP1mKwn(!GfnQNTNS{89|1hP!Q*2XrNC4l)G53*Rzl^+Nl_nF0 zsdk{IX)EhTm;pGfh}aV+{%ikODE3SM)Ia{Wl=2@U;KUdZ-h^LtFeHZl*lEFNhCK`)%|)hgzWETEAqANIyS{vclF zPf$!#=M}6dkiRzwg*kuT-V;LTlr9#sqOM5``rtWjg7MXEjF}VVbN~7*HeCN>KHYlZ zg#ldxX_X#o)NG$|5t;*a<$1l>ST>woI+YuKMoy5jQ8C z;@IH6L(`CZYie@k+qWsQ?aq~RJ4X=<5c>SIqahnzwq=dIi3x`t`sI7EXcbkT1j+C! zCBDY?4iQ20WT8s(r~HlIsCG5on_VIMpDZuS-z7=IGv*cr4FG^WJpcg4e-;D(-)vjw z*Ve>VN5{xhw3z(z3gP&r$O45DD23#q_=+H9c@k)a;*jDg(f;`O zU2JD0fItwCIDbJ3B_Mf_LC-)6Q{Y>F->lx@dD)&(>v8zzj5q??aoJAe@p$%rewdVQ zO%7&6AwePm0m@T!D+dVT7Z>gAX@o-F9lN}m*V#o2I$|;c9mTjKD`{f~1kwvBCFfrD zN(jq%mhIwXw5v7R?$L1b3kXPQq2-0>k^5jj-#n-os6nK0M3KIJ1`#_v{C5kb1y}4j zvSIq~9n*PC z|2Nm)I$(5wr2&sY!XtU_dcJ<-L4-dlN{X!9N-E1lV^&W5uqvh*ZC1{Il;f#70wlAu zZ`=RSJL6w%#>XJIU*Pb0JpXm@XAH2X5D0v94CbVR-F#_afu$w?a(6CBeW)$mjXihY z8m9#Bi*;>N{b(mk@5%3R+IV`Y0iLyy)GS38iu30XF&VUb)76fP+(T@fFXk3}1i9Ss z&gIW(MG4E7Rd?vqchP*MU~DVuw}|oOU<(G=IuwOyb_!L=Ho@coySsSz2Qm)Ss)ZM5 zFO<_62?31yF|nmRz@HOJE1?9Bw}4 zqwlWjMwQfT04JXvTfG2fCMks&^u@T1xx=p32}+Vq=uG#MKk*l4nwE!`6&O-fCgI`c=)n2IZ{f|*xX(O(m*~vQ>9d}-~*`T(m(fl zzgYiJzlc-MY#;5D}S>Hop{6T zrS{k7h8~WcOL6Amo;Adomelg;uRerfdJI-pxi%$G3U@8>w&$ucQXZ0RPM5qHMzshX zOC8>!mXMN;1w^@F)|X~mbmfwaAJ`BXE|$4c|BkLY;F;L{FS4;p8%a5 z?HBFw^N=6`#GzK;fa*z?;l=uRdqn4YBhfz|h9M8@6t!((GEh7eKZY_Hn<*s_+Dqys zW(*a0jjB*>d0=oTtFOKae-qCju$h9bI}Wa5c2*|54{y+)S;dKSqLaIyO6dr+9QVMg z!2+K9@+9^248yQl+Y22o)i7Z{E(|m&Ki`dnR8JTRPN6!_Gun6c@fW}V{+Ya7L$Mg-Kh2CD<+x|X3=fjTzJe8Jm@vIXE>47HxA@!6fXfa5)kBQ-0 zH291`O-+wcF#=5-{dt=$$~XI{;+-#a-zNbc@SnNPE%e=Q6DHWtNDbNerfQ=6{(fWo z+H#SE!7pjqD^!`Kr3*mwc{dR5j2mt;?w9ca#&{6_S5rpsS=u;7YS;)b+Vuj}+@fXF z>;nzDMf%T(v|FLuEVTBWyXhYuW;wCYDvOxgpL6s%14IG~rf!=~A1S64Vq!o@KWdZ+j%cI`HNuazni_Ozbnv9gLaNhMf|Ha??r!+y5t0d@6Oup1n^ zyf3ctE zo_db|futXGlrxdT!(1RH|AMofiJ^0lGg4G;Yyp zs^MDQ2s23cre$Di9mQ`0^u`PJBb=Cesbs#IQS9sx{?NuL%!e&ceVDSbPQmj^nUXP_ z9uby3q}Uf!F5-X7FVTyFRQ}VXC`_bzgtfGGat~01HdponJOw2M-6$_7Gj}7vRd7MR zz&cllI3-9Swf{b3u*%}5h-Ov@2^bId{ubKi3LZIvpM(b`R~o1x$C`(v``VrXMo0+H zi4v^gkVRzQra7Y8@UvGevUhQDF8&7@jeS1zFokuRYcfQI^ zK?b@*FL=O~5{wKi_TZd+UhThnZ}0XAeoMmU>l!i{#SWP!H$90WT;KPzJB5QI zT9Bum=oT?pM4qMwF7-B;n*Bwu2FfZQ)lA0eG|#~nEZ~@{k+lZ7(L!bvlp^3v z>x%Bv)~frxW3;8AKE9-QTuR=$$q+{QRvDeonvaanLh}>ep&)W`=0SwKqYAbCVB>Ic zSlBw#*ND6DH9miRy?BeqjEjp~kx;4_8`mftT~uO1gTtt;$Y>qxIjxBmx6#UXA!%iKy+NZ;G*t+x_tipXESlfL8$V$)dtKOVqGbQ_VziJh!=uu)Ju(843h^d8fOpG3);Ca zatTiVP~);VZ!wvAXfT$22g1ABMr8)zQuyeHAHK%nI?NJZ0*l}3HWVkaxLhlwprMx) zJqF}Hp@)j|jnmd3!T zltU2sN?>um#d`6MRxgo1bFfUC?~64uG9OB-#;f-(s?oLJ!U%|1KvGiNZT{kmI{%(G zYI8h{c7~gX3K;)$mr(gr3}W%TE7ldBksk5t!R{mP;k4gt;?gEf1jW;!ZSE0A87#0289UW)IGS zYm?}ad>(}`(vcNN(oX*U!W688VsG9ZV!!OIqTJ{Vo(VRMvisBVpDg)%`YYM_+6C&I z|Ag0bC94p`wtV(t zxnNrp(8#`9nCII-<4F8ch!BF`^-(p`mKp{ zU<so4LC9vv}sdsXRoI!ybTW5n4lI(wZvA z+}CJe*Sx_-zlt6PH)WBD8w)*1uF2Ocd7k>R9lu)~;82T+E3(OjUe&7a2Ya5)o4)}M zS7KF%YW>V)LeE)}#)^k%bKpDp5D2+VGel_P8uo&{#)|oQg&Pra7SY^2>!6`WyEx0| zVJP6EM?Ht|a3A#pILX2!+9Eazt6A|P3G1{u!aP4%#Kloi1p>T2pjCYjQ`uZyQno7- z$`UZdOp*amT|#0?|CffxFO?7gbEyvE!wjZO#eTc?e#u1j1hxFx+fsOBJcZeJ!t%sb z5Cs^=TX4Pr0sIAXTu|Rj?0L{hrZMDW7g1QS2fl>p^xv~8brTiGW zbvBdT#KfBjiDl@Equs>G;i>z#;nQ&4Wx>{|vmE=S-4bSY{A|UF@{I67lM!60AzIIH zCWn6vk8pSU{KYc;Pdg&B82`3%gL&t;Bi=iule_qF_mb>EZOgBlC=rE0NWwNUJx?`a zIUT+Fcs9$)m}gdi2aOHaixvw-*hE*BKoxyPFqDb^;E3A4ad!|ypITGHtHG~KV#APrbPQ21rnO|eJAr)gO)0gY4M zX2OFKM-i&}r^O%-^|p&3L^Kb>$pQnUTH*qo?RU;f*nlM{ItUn<#a0`HzQIU|l;?85 zdr(y8Yx+-7#J~}~MZ4WT#T#Gw0s}jCuT^4}nG?sU;9l9~Z;A5K=!P8Z`~XO;IA&QumLyqpm=Nt5UvNf*A2GdTy74MqR> zoN6Ptvz~P=R&L(&5n%4yA;kyRX2aH;wQnR46EYK|Ue^0he#E59-UV`BK2WR$ZD2!Y zGE%L~wfMj*+=sM3zz+Qj-WU=v*vo5}(3543qJIo$>^f}uL46%-(!kRQDwg&hKPBWi zw$S4Bhs(xpL{)NBvh?WL71k{0DP%iVYH&nhfc18zgv0o>h9&~W8|Z>Rdz32ZZTmQR zi$ggg=gUmQQ%8S2CJQdUH$yU{W773G^CiK7iHnj>64%|SLo-}x(McWd&tSV&e?=y~b{=QQmSf65mcaoi_=BQzRLPXjs z8Yc>he!#=|vI9VwwVm%yMEDAv`7jzW(u$pd?U*yJ$m?GP%I1T#p#Of22u0~d2$kxmCJA_B*nku65f87>tqF{5 zoEzno%;Ab8&*Xe-K*Rrzv;jhK5p|7dyL>X3GMyc%N9N^=oUCR zPgdDiWIbl1N+Exam@zLq>2m9ZZpR8-l*!o@jHvf!O%x2hFs#ms zHz867C@TVrF{BuqmGF#NmD?u?F%-2a4Q&kPvB7b%BF*f@rP}>t`oNj7SUn91ph)vY z+=_B7O6oYM9!k1;hRWgccm95Tl3@dt75OuN@E*{z-Y`BTp$BDLrwEItWyLYQL)`HW zOpGf02KbQCQBtY77fj1ae1tOa;MXi+Ck$kqKEARoiFMXk!_DYSouV)t&tIE+wL#C) z(O|vI1~Q#{SR0$c19 zQ5Ka-9OEJwEWsbv!yhihbj-NH z|0tCLnyjvAOyVo|jbq`{`f#(Sn#a8(anW2iP~GAcdI-pQTKg?P>B;NG9#pQMd_3p% zYC~DI@Hn~kR4lhq>Lm0oP6n=jF6i>8q_||VjBjjnsk!@c;0h3}j~l!WM7$yD6*p$` z(tTDmHve5mJQgNhR(m%`AK(4MR z&y3jOwiLz3S;QKQR-eSBlcX+ENYCJ40q5bvDW5y9W=nc<7FTg>_9MbY$JZ^cG?G7D ziw3nLaJYZ3Zm)%~9~34s%Y5jG{e4)lF6LXIG}>fr^Tw_$Zm(rA`-4$+RG`d%wH~e{ zp{jxUrZrGShPR-CMYg-JyyllLM>QQz}2XV>P(0U4M41UQ00Ee0ajj=N{RQL64eGev*`~vyW z*(v_i+ZP4+#ps_!ICEY3O7t;yfh?PUzI6#}3%}bfm*^N`)R;>NsVeD+q z>?0P);X0pFI;jc+*3Df7>EY)UZ_$Ha65vLb*4Hk(5G?dQRs7t|O9ow(0yDX&k|Ikc z{8jt4YnA@3y%5Qo)Y&nPCmTf#`){YBPl{jml}9+ln8uN=$@MvtcZaaH=H)~L2e^fdc|Yc!SkD2L$lL5MEt(l9d~kMsls^J0Ua znreeB(hY`T%Tn)a@7y(%QbIRCwQ@`b^=YD9)$H;G+uV7kcP*0^>_A5 z*uRad#&FryXaaz&;kn|xQ=)c5vUzJl8@X(Sx?AnMOREkR3|f$!u(qU-%B;8b{F&8S z(rE?+#vj|-6e)$`T!JTY4uV|Q?fQ48K`+!cOg3%3YtwR`Slf_RH%^o9LDO> zYV7l53$^MKTRybBzguejauLB`enNI(ePF5l6qs>5P<06A(h;tEKIUB7k$Ez$XyN@d z12z?av19lrJ@06pY}014tm)plA<*BA;I2<8C@lO`+G* zkqI|`w*<5x`t=wh_Dh5MA+&l2F79iE+kg9Xeg_8LeTC6UdV{6(`s`-V_2`^oNGJj` z)=DVi%lBQ8=`2vW6SK_DTI()ca& zf!sZTgT%4Mk-kWbqiVOwSiw6mLH*6XFz{|gID>%)kDdcfd=tU^mb5U4uUQ`1@xS?` z*9HA{1oXX%SZF%6;@P4Cq5aGJw1Ejis0HLYQiBr-;f|Vja=nBhRNwBh36YUY`eR{k zN}ki36$BuulazfDm&GhK%7Fq_RJ>rI#&CjRkSloxM^W}S$vjJS%Z@yIDN59VDsx+D zg1Gp?x70(rZLwcZ)eGdF8PYb8POTfud}3v6g=RM2AdDXG{pCDQtYH?C2C0Wh1iwW>}c(77iGdwODROi03{~)RtbL0kn6> zA=YkPwhCmxe&Bp$WfJfE_7GNjy~3@@f^m&R;I-D57!6~J4WKlKfBE1{O}R`4U%i}$h{C7fT|71A zmWL?rMTzL_PSXn0k`dcKx>U-12C2PFq%p1G>&HU83+5- zEj=*?eE7M*X>c&MbE{Iy)A#}EQH_;UV@hbNQT|L5;JKz3{o8rKdB3%lR_ zaY4s^sAEU6spo{Z%TcEIjWF|63Fc@MEthmBQd3?1zIX40q!hm8)5Q~}xX8-Fg5#Ci zY~m^Cb&f2w7rdl+pui<}97%T3@(^cr!@{*@f3=cuWbVu8pINf7);6l85 z(%!@({Q@WVFN8`}G+XAXX6bh)H1wdJOrQR1laQkSrhDn++bh9Mnp@~c;z_%Z02#kJ z`S0?ib*|+(m4pFb0|!B!>GMGkHXg13e*o~R3Fh8Myoyju79FEk=N(PoHi|xV*A`zIEo5mcZ!^Tx$noPI3}pYh z*3LUHT1iG|?q~yGQnIEi@56_dErv^~yS<-sHls^ExU*{E70^m_l+?@dOdQ``Yg6i@ z6N$kh6d}$=J{*rneUEQ^P)n2NzI>~C%%s+g3(m80$`9WqSWJf?bq+gl|HtaGoY5camyOIO_A?nRmFIk=_-_Ac5+-F;|f5_kEW&M`&0FU>`LUjB*5 znr=oalU**FwIR@8v_KSb;bL{w#>A%v^3D;4cy>Uawskap>+8b`kfV*!l!u+B_E=v~NF=UMBj`XeO!r6hWns0Eq zvIu*qmPX>ivJEn_d5^I$@^IvO(*D{~Bc2b#lkI5uyi}{$!mzKU6zE@I9iw`QNb=MPF zI6M`~CtrXkM3E}-uf|x>T&7snA1IS?lo%+DplI zqXSWk0!^YeD_-&w<%Xc3zJ{D-6;NnCD&`N|OEwc1lG{X76enzuLpwu~nB=vi=tNAe zT~a8_&dELHJ8jl}fYgiPJ{^=xAYi!;X$KfUp)UrljVdj|lwd{fM>m&;Ucl z@C~>5zMiHkkR$IjbtHaLsVWcLGbu>YqQYJc^~QrOlTOINFTnxR_Co~ucg9Ql98pRj zNCJ7+ok|kmfbr2(LrCb1&hRQ4-tCd2^n6Nx@umt4ARgbP;lOXif%`N`40T@U6? zJ`vre1d1teEPGU-rFVUzsQ5iszvb@r3&ML}gKQN3tNQK9GuE54gK%b-`F4-fe^4Q> zuQ@b61P_?VXPR_Frj*w9`XTOCAs~C#QCCWlY*+C%Tl3Ykg!5{1K60X!;Aq60!0IMyR^9sOsEik8;cZbk5{I|6yx?kWv5j_t9o&Vn^>c8|q1AB7+4+DZxP z$&NIlp41ORz~pv6hcxK48Lm0PGnbB>fzL)KQ=YeDt1;|HDtt_IXP9h)W8}r-+d7hc zicGdNU<=%sc4wKi={#Ib+0H8zo2GpgZk4bWt}-6f>xVH`{y&sSo5$dc=7Ft4={WG? zZTD2G7J;AZM|WEk@edb9hbe)gEWp8z)>JY{$%I~xX(S>OHd*MWmxV|#=|qH@pgBF& z^RXnmD%S7Uv?*3o7Nqv+?QpP?Uw_8^yWo0m^*=rxQl^f3=X7-LoULFL-mQ*P544ajoD9 zq5Pg8?HDMWmYu#xPeYNg*<^z;c-w?1eKKI}>9H*;J=hg12}zOudZ9IzmP*j^uG6cY zHAXmQc)s!)ub48f$y?PxXNa(oNwdz8SkNp>6kqbLU>rOHXn|zm%zr5KbKI{*a_&vHl?|lkE6uV!rHVlc)*sK zja+Wl4n=6dBei&ay5=5767y?n9ZItTC`-gwoe0ctL40sD##`&0{c55H*krX>k0&3-rDtCm0D;szqvXov)r^F;w_Qr~ z!B%tac|+DMk@vR@)x^STip$x(Z@v`ru6AJ@h*uA=R}KF7GE@W~!x2|Ya*UUoMu+AS zhtim&3+CI?88~lY^)u@oa)e~P%i#gcUJ@T9a{-DU8G178)8$4WDPMaFI%!9}ZQ3O~# z7OH37cY_aRNyK+CYXMDYUrPdr*d<9X$OI}$>6oWrpYC@?uvw_Kix?~rJb!rOqX(~U z$WoHTIhy3gJl+)c#MpSV9Y91r4sYh>sqa3=ObEh;zoBqG-Y z>;bzJAIxKcE$ot*sL~WhiCfsQ%2s|L$*#>s21Ht(8ZR#&`NMw=b`n4k9ncm|ZRxXg zex$0G&D>j4i)X*zkxKQqe5$jYJ+xHar!gm>j-7gQgS5UyKGAkdwMOWhSZ;Ri0! ziDT1R9lo=2DdrbeatcWi-mG=u-c~ZK{=H9t&6KcOs=SH($hh*?(?Rn3SsCF6|4S-RGAq0aK7EV`}5?SQ_}ivM2&`=pu=IsC_{=+ z;c>Jk?9w`fS2LsSDS<4EU?5u5$uG)>_MrSE6c0IruA4w>XA#mTx3q3TNeouzbBFIF zfy#W|dY~0sy?pv*HsY4(P)Ane9;YNXG*_q6)CPkkZtNx7b%U@vLdahe8vPInYV@6< z&4JcL^Le8J)1iSBC474(n&-uGpWxvNF2Kk0=W5#MA+r(Dk5%-~6+|#p;xGTo1_~y_ z*Lip-1$mHaQfD**Ba_j_y=e`mOJh?{wZ10=hNC9Bh4uP?b*576#VvUWt?ns0*qGa8 zs{WoyRzUoMw*AEt=%Q2#_s9TMW!Z< z)1ItiCquNju`|e9VjoLhN~Uhrk20)ayp9fZYk|1dG8%qT38Y3(fiZDsxN~2vtmOsy z+URR4V1~i6c6CK%5DEB4#ah1^S&W-TfN-v|Fj+*rFxaesEIg^7u@Qh<1fMscq{e%2 zTaYjA;s{%ji8u&E3;D<8&1cw|UE-8C_^)psK0JyD3~1qJgv$@w|9|TAKm6)s6Wn~J zUjw5=VFGL7erG4l1#$n z3kE8&^k%ylG{QWN-6FC)jkog|-$yP~S8i;Y5HDY`bVir8k(c=aVpgC%UPy8$TaB zjX90wbg)qH>P}S*?xaL*X(JMm#QW^Tx_&**#3(Odd1m{lCAq$WWcR?t!q1oYzcN?H11Qt^~@Js~Vt}OkpI##ZmDUC%}ePm6vmp72jFt ztiExlObxe(CmhbeC)5l{9A9s-9bM!{w5zmsryVe*0U-kQ%F{XLA>x3foG%49SM7Yya6a&cl! z3hS!7_4tL=#Z9&t^yi)Iq_YOR?l1(fedrTzG~P+kEoIrd)id<;9v)M#HfWv}`NPJs z%_!yS_KbYh@LsyzaSU0jNVXT<@*P$x{)>yqFJ^VEycH!$qrLj3n3^&!SNlnCnf+DDGbnY zPUD9*9d!|1HL2snAm^$Z){T27_@Llu5fHU@%I)Bk*zFI>`$2Z{di3kNTVuQ}{#XB3 zGJ7MU^#*H*JvN(;J#Ed0YD#Zd@)Fd$T*gO2l#lZMZ-$X{KSpal>y0B2C(nW<>|dO? z(Gde zk}?V@Up=H|o|j*=FEq-w8!WDTBqAt*)RhX2snK*_zFT$QE=5d8*~m=Lck=+Yv7ivn z6_~-cRw%#FXZ!+ztv#0H`;}*lgsMk9{?za1Q00?=&QJhB01t=V=wrD=YvEghfDEzesINO7KZ2Bxot;GGD%V_t>YVu;VLt>dFo7vKXaU~`ur_Q{onfPvQp?X>< z(Zi;lPyk@D-7$D1Z5P`MM@kh5z--jW=y(#tY9msp+|+6M^0yA5sUQglih!QdH&AKQ zH~^hyD#OX5{&zD{fxTg`iR5Zr+M^QV?h$a!yXYM_W=w-3(Ltnts) z3%6dqU#f}e{{osoWxq?@rA(P1RBIWFdKVap*vN~WnOYo~&;G|{0EuA84e|_;4S8W^ zv#@}JwPS2d znM#*Q3AQJQrlwp3q>T*BrYpUSCknFPG+QoG1f0eWFyoGt-@QgS+yXR{2{!+=4!~ zHlt6`GKvCD;5rs87(n=^#^1-ayV@sgUiGaybfdJZWvx-OL-bdC;!h*ZzE20HIqsdm zZo1aw_IkKhAh9`N6Y=TO5Q*ewulr(rJax7M9&^q^Sba|z?Ur0nQewEm=Sd_5ls7jw zfBvkwBCYj4*1Mx)Qba!2Y(-1U&BFs-UOwCu_rwn-{iDHq)^8_|dv1$RG3IOhaoFNd z$iE`Z7ynDxMK_?!)o6}PjsJK|$#FqlZ_FAb&d+&Ap|dI_%pg;f=|^j}&~*&ozUk)O z-5ig1r>LeD(o-_3ZYwF+E)*mw9#;&{PfOA5JTQgCgVTcCcfugwge4|Fz_-tSg5e*$ z=cQc=WzSNwSU5@0?4)WRTvz}Bpbl{vKLKV?FjqDeODWI?1*L=u>JLH_IOTVdxwrG> z2_YP@#wF62iIgy8qIkV;_io?);~!v=p&X;;$~q-Oh_1Ti=-$jlJZ8$8^S8wQq@UxWsl#PtP&-7P>%R%rkG5~;=H>>477kma#hktDdY125yGEK;_>FEEe8D${CWn9y_%1LH65n~mW(#lbF#2%3SZYl*0D~t z&q%r_A#n|O{MyV6Oe{R`OY3H3*(vK(d(7_s1;EkfLdNN9<{3nB-$}!U*hM-c+Z~EOSt1T7HIWp^x+BQ3bZdhy}dnkXT@cA>G>I4ZOoOX>KebFahJqI zKu5ZJXe7HLtOt<82pezWLC9tl%@p=K1WU=t$at)c^?7)(H$1p@)@cn$s(@YQ$I<8D zG(zV7ySTopTec9$oX=*(x2jXXfGeG2FhiqKJ2~3&(6ZQZLHVf=VdY+Rzr``JqYeHc zVU=r63628JTMN%ab~BIqyt0iS{^F0_RZ?7g(jZSq;Ks-!BSNveA5L{Nr!6e>5Y)|% zX2qBtGi?N&a{l^^+tMX3Jg^X3x-0W2>>4TgNH=7m36li};2f*1VQY3*4?_NuZVIlw z4h$J;@P=8M_r|@@Q{!KKzETCn*w`FZu`Nqp^HgY zqjn75W7Kb(gbNr80uTvgC+N5e%yamoX>Kv5d*}c+M&)}$eSeMLT=cMs%T!`+b6(yVdx7c z>5Xx5tvfprw)LLTH@w8*@Cy@x&ks^%&r<4ha@XyBiD`{WE;f+zFBY z&kW~u#sk&>Ad~Rpl}*o{HPla}4~+(U?EfAgg=pPsQmhZ56_=D$g4rOXB=LH*jl~{) zQjA<*VX|VgsAIA)sCLZC-VCK-Wqzlwz{$<1=Pue!oKKeS3q}D|VD@?)AHwLDi+wbT z;yfq(z}a@5^}fIW9mZb96`h^{yzlXi=(Ee2Y-MtoEL&Xo!u}S*5e~d2Ry`p^n#98E-&Blz$@F#3#0t2`8{%W}A+u%rL; ziP~~qPJ%xm;mYAy3MorIbfMf~-47Gu!Cn4j^`;bg`Bgl=Pqfg&V)~5Fcx*y~+#^HN z_tQ$WU5cJa!VcoL18rwa2IcPWv?Wbi2Cr9iZ!?qPjMal=_OVpQqQ6 zNEuf*f}%|hi(J-qV{7Z>K<|0O5Y3k8p;9;I0qJ)0(Sb0!)C@neZd+mZ(%9Icd+S@< z_oi{ikJy*2p8=5yPFL~D8!jv^`aB)k`qgo`OfTTqJ@UlFykAopq-Ui9SY#}Q@_)%C z7y_hC$2`h*0Pg(yIW!b@Sy)&pobd|1Vmh!$)MjOj%`XRtb#-9Wz&vuV<+Mu;T3VzX zKX!D;blVI%DTkm_yu4V_IKoVZxi7BPliJ>U3>2Z!rSy2J;JU3Oq9<(og|CZCeO;}T z^Hi@t3Son^W*kr^0zIDp?ez?9#LsgU_ja;EGiRh`KZsjMS0>TcV=UH z`X4RIe{F56)5hNV`&WDrRC<`-WDZY1I9#Q?w=8=#vMSQS>0mD^YM&GC+Szka_^vON z;Lzk(+y{&6bN=xD{o$+_wagxv?*PI;qKe-`$%0CX=fvbhRTXtBTdK)rwYAZVx-=6d z*v3;h!6*l6y^ySTw3?szqzB*Z&{K8od1n$O;FndUQA!o$coM2vab%WG!>NS^ew=s6;jwQHJsfK^8ogZfT3m@V zJRGz<2nx#nYBiF4-Hi2=EQRaZD|t7^V3Skn>6TPN#F#5o72jPIe?G=i+j*`3v#+O$ zSFO#H5Rc#ZtTUbER$orD(j`_HDYrjkX37_sO|GWa3}5P^GA-oMGF-Ca)5td`94g7| zCIL+zl)4R^bG-*expvvnT29XM`&3JX6?)RF^bvHfTyV4Jn5uv3pN>%!M^E{Rv z`*dDK$oUWoy?VNXi7xoiE*q@0hKM~bhIbxAyJ00Yp^!XfvcImGuAMt1lf}Y4p!;&Q zcXtjw)o?6-a=%RQ(_}q+kYKXMoW$^R9hT`?5;t+A#66ryuuiEhrqH;m{#317cIvy? zYnLQFKOre}_Y^G}mlED-6Z6J-7fhn0w`@ZGYi^&uNA;bbpSQ5E_))0C6Vv+HpVNk~ zi&aNygo&yla&mIg(^+LbtKzz0i{%=Q7fj%I^Yv-O-$CdRRtu%({g2r4*jUX#7pzmR z^)&JyP)h>@6aWAK2ms3>VpDEJZ1{5u001@{000dD0047jX>W61IA|_tbZuU9F#`oTj|yuXC!QP>s48r;l6_pN4Z>Fv`2P z{$;JB8Lu(Y)xP|_q{X`ag=yz!hFbYHLb6U74TWp4 z=hR#BGK!0EZm5rcRq!3o1atfYI_yffUkjq#W*k*z4=^Ozyn1m46Ed<~O~QG$XsDxrTuwc0ix;TgD~SOgjP1o%xzlZ53s zjMMwBW@>VrV?xUD`2jlPN*ef5AgKTZFpcl$;G@k}{&*@j!6K0md69jA^TkPgpK8_i zl3^{O5fGX6CS52hv=ObO6CtFj2$0JLtV{L=Cqe{+7wV(5kRi1YU*tw_`ig z|M{yzU+&~*8Op&>}Wi|qek z)?bdIWhzt7(J}fjIFm@d*C6Q8;i1lpCDkLGFsdJx0iDnD!;M|Ro(TPNM6z%Ry7A*W zL=Rc-aFqP+6!FpVDf$O!{(1KtD#u^oIIX34B~13@!w+#vvIoTG8GO5kK&L2*6Amt& zZoB`U=@iW3Df0ynm zCUlGLD_sMA`Yzd@bbUlu!l>FNfR*-fR6ris(Oxlu#K)EiXXt1v)zJvU-0`axnX3Jz zNnpKVEibW+8=kDPm>ikM8j{OFRuEw?$cIWP_@^%SUAEdQP*N9#vZYle794a9+;a|z zHo=U^2|1QYZkfmnWNQr!wE)k+)f7#%>T-#TyMQ=B)9m0zqZ72<2;+96)5126%&-|Y zuw7RL)pjLuW?*o%BtHKh9MTR+*rY+rHQPa}O~VdpML3L19NHbTJnAX*;+9;3WXK z#)iGPc;um!p(#J4i^7%sj>a-9{lUau>q^IgUwT?a`Peg(WI6P$ zh|yl8a^+vZ0Bzu$_Ukkg%kOHW&T)@{x2B;?-guK&%0_4o*9iE=8r>H-pQ9*)dO_i&<5kf!~r7zqnSQH`!+(1x-ix7mya!Ql8gqVl;KPsatJV zw`}W8F`h?81z))>lTHMs#cL?G=?EOhao)vwJvu71t=LdHy~J{w9f8%f+V5fo%e`7{ zmZUwir(tQy7qA^LV++jKZt0fW+5=m1M=z+|j&3&^z`@b&_S-^N2H$%UO2k*rpe-@% zj{82wK8QCFtfr|u7I3#);MmPK5%wwZjt)&rA~=rqE`kcy7bdz3Fti8aP+_q5H0>66 zD@3Scwe*H8F;s90mfryM(0>f$OjaCPgY3mL5ZG{BRDodbycm?XC zTzCgf<{Zd4HaIIZI`5(hF0Wu+fCXiV@iv-cx)RNS?6MziZ%8yu6;TZlRo@>`4bWAP zH=E53xd9i(^AfCjY^#bGc`Ixx8d=KB?dra}FS2D`U8e)N30j8%Rkc5KQ)kB9-e33R zXn#Sa3MR25%h!c?6oJ;{7}=&})ojzY&_$di=tDu{1x}GK-fJRx228z8WRdJ{WKoOM z9k!M!c{V@`y2xM@!cD^J8z9ltj#O83*lv78G zjKq=nq*ASX86+{A>xhVa2Uh`yNhT(xv2>w_Au1*cCjuOxR@j)oluqsuD7i2wFHIzI zALiL&R}*oR(B1+hl{6#+lSxGJkR@hh*PbPb>SCc5Bl1n0ooo)yhaET&PkG_Sf6|PD z#7Yuz4*ApJmP-&yphB>TWFoALx3nsR6pX|9$8ZGVFnoN;* zeKYcgFz1c?quYTu{(vrkZae|6^}u(5sXsviuw>;8XM)-FaN56uVei5ldH!b|U3&gl z@Vo@3J#^EX`d>w@NJ8~) zLHenbuRpo@JoP?Y`RHmg8Vq6bVhED;E=EHI1xoctJ?~magWh%T!%$L9fXh^FE2aB% zHI!3;*Mq;l?@h)+js9fpPhqHomQ#O2`pKIOb<~@BGhvX+=>*sda{|RgG6A~rP;n8a zMmr}0Tg3QwHhhw0Fzk(h*Gv#^Z?00(R`)3T)v7~$dJP5tfCLm}8Q*y*oflOOR7;|8 z$Amz?|IEgTZJ)pwnbc&O3)a8>Y_-hOO)I+n zvr_eDE`Ah>q1$;Z`z+b3?BbU{D3k()izV1nLjWQk7f`r@seIe+HQr!+J)N!ax}Fw)?UOdniW zL_`E#I3hX@4vqpQ8Zq=KxxhGVgfuD|8Xm=aGgfA1MOOrxIW;E&T&4`gB1uO_PG*gg zr^2X1@+KxUBiSOzIR=sB;bNShJdKTwcgFIAcZlg|$H&J%@Y{XdA(pP~7vcm%(Fw5{ zfuZD`wL7tKa1uAG1F6ASL&mUD8ZRkC++BAzq88eV+)o}Ycb(Y88a_2UQ{_Girajob zj6tavGTX_=HpqON&PwdKRD$40R@oBfsPlPzXj!J#yo;rW^qfBlIyKHY%!Ap5$r zdbZ2DdJG!eXhifxcWbb5(}Xe>%SY$F;;8w>Npw5jVU z^6vyA(+6b{{Ss2mtmN5IZ?3ad5mH?J6UFAK|5a8|^^%r(J z3$1LIPSce-`r0Ew2R8ebY&*EH)AQBOlwJ(b(Yyn(vPsvlcVt~5Kj`E0z|SVee>ig; zjippBHm$?1TSZ`IBO=p`{=%sa|3aH435o$slRxkiYE_b|l~rcDh)<%EEAkrl+}5Pz z43)lAZwDfxCHjIu#O=iqgS}|_th#LbY-?v1_4u2N^mmXNg9_wgW~yVYIJ)>n41EOi zZko5!n;)A{BL`un0}=?$l@*LH8_%^b>>C*e=xMefFC=ScZYN$!b|2BF8$;UJzMaum5`LaTn1~Y;9!G3VIxnUqTK!=v9iEZgeoD9^lJ-Bd>hXd%jzgm~#;K%}re;zuS-ct*zVn7YUd= z&5D+wWNi!XQpbHAbC~BvitkF)p26GOo1kWZ(VhwlY7f>#rUZ#`N-L)%CPwnv#2Jkj zSS>a=5m8fj5%bU^u<885r>IbIXm2KmIl8|LMr5dAfA$PsDg9s|>Dg^!YHIAmy{_rz zU|fk>pP?%+O)U@bowDPtJE{NO@oFK~^m1F~+D`$IJokN=@o`)FP&j%m`}`)yH3K^O z&-s?4^w1!$#oj1D_u@f*cRg6dVAXYpQB@sS-Q5kHF|diwms-ewnW0utNRW|&`ausV z7$=iIyK}L*#cAuiT}TLm>E3MmSovFw@$ra~5MXor9ZvRRwV)f(R=xWZc3qh<^9Jug;tI>>={SLx;gjgj(SpcD=2 z?d2`kcEXmpbA%xw$=De$_d56YY}+ll#pnZte#?me zSA-VzVx$6ETqaUrH_=LiSG^NO$konU)G6%yk@-@&1G`m?QggKv3!ZU%JrlTlUBR@+ zKX~47`Cg&zEVYpElA5E_;x^*~q+L6X-TtD*5e~x6Nx@EBkxY_#FoWk8tW*>ZQF;&o3+CDY6_(iiwrOt! zW{FOH%#Kx3C){U8CMFW?Z>|#lS8FibJQzDG9egXM(wN$(?;Bi-Sb2W!&IHyidr=|~kGGeP!AKZi)?)<> zo>v*X%Ac~99!RDm)TqYg@$bZ zuZhI3AL9Dp`ngO@lWRPW#mjXFg4K#dIn4%Lvdomt;0ZbDNSg6nI)I;)v&IUId!C|` zO~>gri=dzp4}7OUij7&sDjbjSzt=H7+aXdd#r469WCfLgokL6vPvYJcVI_bnHdEjb zN)OY4_7IDo))8@^8Ci|8XfN-@10E>p7>Wxa2Z%J_{r!c4O%Xd-1hOkVH6bA?l?98M z+gYNvF7^qAT@((jaDiq8YC$0rE*kOncl{tS%Mo_Hmb3^EMlocU+#h*M>4ixXl>iZQ z7P1^Q7`R-KGd=yC%&6W^1{}a?tL<}j>!J+96s}qJLR%Z{?9U{5i$`wH-dx8 zPSDQ^SouG|eM+2}KLs6EaUp2g9;x%Z`NRBys}Kuh;}L4dCoAjoWTk3kthipDQH{Q% zH4aBiVkW}y1o@Ih`;+U_%hmNh-Nn`6P^TwDZg=;WZmc@^v9V;YMRh_2tW z%SWW7pqIaOAx=!ZO-xGSQFZ!NLZsT^Z$3Ugh)T#=$>2ft39PN zL6wJqIas$7snzm$m z<-M3Nj9_Uw+FCL~PBRYxY_m)J&sDCc>a0zz@Fsm z_+5DJ)q&t0sJX|hF9^SRIK-F_(=-J$CO&QU89LivAa8Nc?(taJmmSS_bzoS}1A|aPNgqK8uu- zGv7`1lAVp69kD_;AgWs#i#ZiF94jCqFRxZvQTD?5;qDcyb~Q3o=zvRz#qSUe#m~hg@sm`=P}$g^YP$tb1_oN6sA#3G0+|4# z^S?bHx1o}LJV8N+!fJ%SH<(y$(}bWoG+l;{Ix< z@D(TND?*1Et6x`}$ttZ6H>b+VvT+GnS#jpWn4;f2|CUuX)Oy8#{xjKVwBF0UNccW0 z3Nc1fM$WKvx9TzQV2KQX6RhST5m{yoD4WJVKlY4SIrHa`3Dwem(OBzuaZU%%>W`HO z8n?Q}&mS*wT<_)8C{dXo8X8RG=H{-k_=)o)w*z@-NT|guo?>C>uh|_uGCQ@XulPs) ziubwxq_9*}SPTsGMJBL?&lehVyT}|^!^f>cbSnC5OsVqKo^=cyB)1&v9b8@6RMq!^ zGP1V2`;3tr;Ux`FKa7Hi$1nID8s-;j$6A{NSpS9_}FiTi!j%^qB6bZ}uPrnUqKL_u*6 zo5oHN_URL^>+S`H_eEB4w#aC=E&s;e+^(SK5qFF%52%_WIc;$UZNFDXveCzn6<}xK z3!k!R^{?Jv7Q%c;ynJ&B+&n;a*}L8sAbO+3LQ^0%U+<%+t?7*M?j07W-BjI1oZ=UL z6`H|3mf~B6^Qfl-R78OG*^>)8qQsISb}cPoFueYon0?RbXo*BHTWX#S)t<})O!J{ zj5nXwX}5Yt%o@@Cn5&!Na{2APH|sRLE+kVn^^~)kmEV@Q2Td`l$MJ~*?C+locJ-dH zFrcnEZz&p2mp`x??4Y#y2m}wEbx;x)j>iCIjPg>tfX_;Wz^LQtT?GDss%C7ANLOoY>eeg6`ZJ`m|JF6 z+s;W`-5!d-XpC8DfYS4Le|UWB?P;~Tv4KQI#ddeU1QHzY6`bHaFy_5fxoDwj1c}eag;0V!WTO;r$Jkh+|pG z+M4iSX;{+w3oH{8meXMl?7Mei1DbTD8q8L_LOs7^3rYO_bz0A-c^D0I%4YOZX-5k$ zE~H`W?3aYkc4uB|P%^`&D#9DC5amy41`fGCc07s&j(>nn{?irkI1GM3CA$F+lhzoK z{-xe#MtCncbjAzL*G~inMoqmi^tU5ooL(ylAz|40?uG)nU)&Kp`v(>dscO8*aKI>3$?v-mBI z?OwF+p2W^Ct1U+=Rq?zxpi&u?BwEp4LVY<`j`^_c?$d`kP3PM=*0z->ALZc{O;ySP zmr|R$VRB-ha&5Iz4fd83CV@;^9^n(AAGdy5{yAIHl^u8u7S4Tp&Y!N<_SYgmro zR(rRKttRfPjw=?|fw%e6w*3(`Tjr&&4G9~EAr%82eS2y1X?Q~IE2wH?LKS%p(I=t==S`Jo zzC*`i_K{2Js%0ASTBBYa4epusYb3gqy0dm^2WXwY?K@i=iTErPmY*ZmzuUJQ{+Z4a zpj;|C8oH!qy?G*%D3P2}yWmXToG^ULb}23+Ry^m8`MX);CgcEKeHPEA%ITGogSb-E zt;xd8uw^`d^hwj5!(9^Pu)(N{0{38cS(~QJb+%*u-m{@R{K|`uZ@oJRwzJYMYc2$l zPxbzO%+l$^*PJ5!Tx~tSjQTexr91Oe)0?KcT+3(4^M}#~Y9o~zY5_l`&smS4iQhYO^SK(B5p;AkF%QI+Vka zRNoNg6Vu&Kcgn2L`03Z|t=H!Pg+CtM2K$6XZ0)0a!>NWmrDwK8L@OH?mY0+tg1#}L z?Y6TXm{qnmMzXV`3b%{Z5^P=9yHY*BJ7vAZd*knXpY3?Qr|6Trl{9%+Y*#B7G$v3ePC(RGX0=GHY1bGYrgL!GxTo%w!wm3@mA*DaN?+o>LJS;=ez7` zzT}F_joTmon>YR}dmm(e4!M-JI?{^#A8o7u$DT^uRP0_;TTNXl%%IOCb?NR*71ho8 zE`xB`WU0o%m{n_Hwx5$vSVUkG?f{Y&7U z12FBGkBf|ap_gSUQC?&=nnQNAm9Fi3^nw-v!IQvqC7S4PJ>77f(`mg!ff-Ye#z8b!qXWpAfWE9HmJ#kxZk+q zt9{tnK_lk1;u60pK@P(T$RE3Pm^&eojnR%H6R;q<)&?4oSlpLsBr9^D)hl?cR6TfI znx0{uoS2Bq%UMA0TS_1XSzL6Sx$M`7mXyp> z?R))VTs4An{7;f4!9zA;_lLoP{EoFVK6|8T>CIh-z+ z=j%mfECecN{Hx4<8ft2SrIvu;Xd(xcVac?bKqoGTHUhZhp_ov#%cwZXkftVl;#m4$ zC0%e~7SAxi!+d$OfsHFP-R?)kWjAl(d(_3Uvv>`{i;_wGGrs@LJG$=f zkET0gRGffij3@4N01cC8+%w;^vO>1vd)l(Y_{q`R5BGZ-8=|4%>v2{2eyHV<=}-yj zaW0FO5j%pf9bMEn>PBzYf$5L-8%4ORf5m%VjXf1kTL-IqK}l)eXMCndLv;tDXGXH70@=dqVNm)z|VbU*b_HjDrc4 z02x)HF9Ks2aGwb#WF+L%>39`E-eb#ey4W-&|2iOIa4`Sq$nhbnu;A}lzIcNjS$vDf zVWCp`TR|6k16R5}6WEOcUQ)j0fDV=hd$G`sf%Afm1j#?=d+(_SG6Wp3+z&*f5z!2! z`l8wkHfGC#&Yk^sZuhHFAGXbBwC`fyQd&-p4j8#yDcy3s)eFP-VonnnjtZ2lT=uGY+ zG82=^)p!YZ;BwStAhyG?FhJO}w0NDeLrGPsPbRd*4I8)q`*VK`N!xKBk?{u}OCp9# zVG=ZAqM2HAHrKzuU?z(l-VgQu&B>B0R)T{ukPY1XZp3NQ8$ob%dD*XJD0J{;d4$)| zhz#VhsAI=nZw%o1j{e_vHi+w!D!)18aKiqi5%6*Y>P+N&E&;S1W&SWu(_~V_H zfp$!mY}IHpQj%g3E=8!B$xNlo)mr%d)!k`(i8{k`SMruJAm|$G{m9&QHKlXKU25zW z-i;@k#UjQ?L&4ePCqe+oc?7UZVqM5bJkKF<`{mZ?#uWpo1DyXl_jkdDU`%eVfM%6H zURB33W=}XrPYg+iqjObobzowIV(J~I=aI_?J{#nTNggQL#&(khA4B&*QitHsYUW9X zPJ9p-({LpZpS1e*0r;W)iUvKJP{wp~kihfksgf(}oG~md^+vy&B!Els0l+NOyh$e% zzPSM{!~3ww;tkG#ho_!i&Cziiyzs~kUEkaa9gkMc&-R3n0S_jiP|(!wl#c*Yl#SU5 zL`1uAMze7)`T8}y$%P>}b5=EyLe!Jwbo;O?hQtq>ob>^9a%B3;8#dde8-8w{y5sLG zE2~uh>D{_1HS2>R0p;@2q9p>6u(KJt`z{_OBzf1{=K=395qTN z?>jMGQjCYw-1dUPC)*nv@2UKWqaq@RINkTGe|$JbyS!kg2D9KbdT#TpM3vGopiSQu zKZ&VLoaD`yE2*+6;3nL9i=W1}3+|*VegZK5{>ud$O(BazZH9gXae&oxne;j15j={4qBm6rn7WN|QiZZp*rYcUKg8_U`c*j%WxKEqP2iYPXPibf$I}@lA z<&}IGh0}&jVQHOSOXwqt`S5oIJoKQ6CHZZ#k5*~MO39l60CC^=J0SOQe_LU^74;v0Z(J_tIo{ry!sm`^KGsy9bP#vk)yIIaHZZy8#RJq5$1PB)w^J=EX2 zJhY_dcFx^lq;vWg-fioAuVJ$U^LxtQRyl7-i7>xmwsbz!bqF;AnEyf8jh5l^HxSqK z-&0S!$Q)cd@2*>%ww3$w8X4#o@e-mw$yZroq0jxkITr!oW60(0`XtAXU&WPtPPJ46 z6eKi4R!@vF&A!$88A4jV)MOtQr^NP{7~*kQ7ESVAsGA{2b&dd|*Y+`DRN|2U>T$h? zPex>*)3W5x#34%WMrk!m9!d_7EmHI+7C103rn)^?x}EKKJQk~tqnd$*X|TWFtvU4Z zYThVH56UL^dEk9v8`Rm!4H2!7u#v8bqMj=eR6@>LwJ#~i%YZ_Be!UWuBbI4${g(&pND6)kaT2-GVx7y{J&^QQsjX2kPumtkt z;^{pPgt%sePmUa=W-3P|%h>izUxtp2eO4aYv`S^ZHtq@IvRe8^cynnOQEwA3?vz_n zVoJ>SSI&0PQ}Vgwwh1gP9#Sw4!1_G91(GJ;YY6?I9*Uo_2J`C4)&d+}68_Hl(9zj1 znx~zBPdgh!p!qZN@@Or5DfIUf3_GOYE{#<`kYZ!)eqs#IoJAcRJfvmY<7!L|yF*YU zjQ{?M*SC^a>rnAcf@V4dA)K5&sh+ow6zD zl>#h^g5ueYnMRd?@`e7WhOdCbavu~CO-|X^#M-h}Y3}fML?!=F!{9QA=P#->07_?(~rvz(A|ZccU%o$BpGp&VYhp#-Vr=<;(=Fr5yU zgXMDJ=jP~H-<}|kWVcWY7HxpiCs?l&Ix2A(&7}T~;7Y4*+^QRt@9YmTAQ4`#-x1aR z9ZW0(;y@j0OQttZxLR4^m8Gkes^s(PG?Z^`N{>u^Qs9Fsh=|951iu~3;Ga^j!#20t zwpk7|;tc2o4Ufgyd&Q!ldg0%Hrxt4cXp{YRT!#RIihfDY^ZDg92}c|Lo*IkyN4~Q6 z-&5~%uiF1@^v@Zl{~6{8=*bb=&Sf+R%rf|p%wTFRlAn$k6N652LQX?#7%p4baHVv+ z`W_Yqr4%kH5&u(>SZ}rniJs&uLc3*OTq2I;?#-bkX*sVL#UjaE@zrhR(xQ1I2rFp21A39U}~GDkdNg~DDU~VC6{FGSEhKvS^397#^24(~f-w{=U&d}TehLL-`QD$qGkkJp zC*-PU~}viKR@e-Le-w1uT0&VSOGyPQo0^B2{TH=T$7|<;RkO`6P-K>_bF@4w*5J;_n7jI&nN7@FQlVtH zS?93wd(6stxdln8VJ|%Xs}6>+n{^;m)9WlH`YdzLU-X2%fH~U9%1u`+>TWr#Oq~*y z2g}kdR)+DvcM}CTE?G9!X~g-x5{}_^?M=y0(le!twdJ;3Vv&aA9Y#c8u|I{+db_&b zsFZ0Uc130l0MP+)pa#2*8iy6S*82;k5^XL^p6`n$^d6FjVHg84vh^%r2(6+h2|&xk zkuaPq@qPYGuysWazUk|CM#L3k7ZbxnBRY_gmi9qFNFk&seh%cJR8N?Yi$QmfE~+xE za<(umgxC*vr>5n4*Zlz;jd|~73&ZBJ>ZGdl=+D0OOZt;UMn-m(zpaxV@C+(0MtykL zO3XqJ2@3BIUJOO>mFCxzj9v(t57x0yH1C&!s`v#s1^!dY|;m zk6&>MW$T^fW#v#%QG==uH_`=-v0}3O`udFTZ_W!$MPC$h(FzKpYz?mr^n~k-JMFC> zt@T7iM&eLN5uzi}0)jh0N$kDZ70e2~7wieE53Z_8e--a_bwrJe*Y~q-cPyX(BY#DZ z^OhotkiUh+XQ_aPb@7fO#pXiY#$qlH``4`cq+t_9VvgG*@W^zoF}=OgqP|yVRX9FI zjEJ!e2Y4;=B9?5pOa#B3GV8EIhw{IR{_JXLo9Wrb_M_*8WlRSuH-ajP+R6QFkjC9{+t&iKn$hb z!gpF4RUi&wQtOB17OrNKL=EtnEYf(|a>O`OHf|3u3v6b>O5RQik#%i}5#e998daU5 zj4H*u6wUPGf)emqt<;D=6K#p~V@HYxcHLYIpkd0Z&&WmGF&JL=gINhb5%PCxY#zN8 z%sI5xO4JLY5bB%1L4y=-jISovGGan%UaKDho+ZBoqI3%7^I zZNJtcdkNikOFO~u^LAbfHNVo>J_#exGc+re*!(iWib?7lSm}zRu;g?$lQSkM&n`w4 z>A-h2_;E{Il#_0IZ#(E?sAPvf{h5tqFOqDoIbv}w@9wdo-O*UfQrdjoR!!)V z#h>=(IooTYs2iSS)Bi4)jYlHMwlcC0?@zXrHVhxF8HK;o%7}Gn3$GAdxET+m+<28T z=3=Df92R_iH+;W;omGq6FEe|a-kSzDh_jEswViMi`GWmFB~UZKNp1X7vE_PkZroFv z00`X}bkHW0wt1}62KiusO#>IGv{-?ZO zN$&1iW#pV9lCsFQo>xjp08Fgj&YaNEb@twveEg^Is8;ucSFLu3W&-$&-C@McKRZp! z3h>9IZhm5;@7tjHBh(F#kk{!;-oWp+3c9Hla{8VjRh@aM#pdL$XTMM{HsZs_{;hd* z!cj|`Vk`Kr{_5TTnC9ZD)#R+BfG25)eCH|9P56`8ppHj)Lc^;&K_6z>8IQ# zoo=${|29WRVS4rqexV_|KktQIsCl(}4&%XfQJ#yD>Zp{n5XaojT*6~}-+e37_nBv1 zAbz@BztNRUF(V+I6! zdGqHx^i;Hep8BT=IRQ2e`M0l5!Ijfos*D+(Vwq}d#&I(#uu~AUSb_J>c zK35*(;uScCM+_RFOJt6hwrr8r6epUSo5|JGgi(S6by>vsh34X*kM=)u*ETkFZoLq? zTUeM+upvqvQZH^znO~3xX|i7zPzsR8ZV2$y%jLkvcdRyi^ax;pfCj8Gzh7#uq)KVr zC|}YG_BaK^h_5rHLRTk@wZ+As06a*U<#(aG%n9B$F}x;#-s#1v-jcNap`uscAoU9A znaLQ?uyjLV(#LFKF*1MzseU|Aa*3V=$}K)*Br1jvO}Ry@5sfTId3=5+} z*_b1o^%<3cgJj;}f?CNY7LJS`Zo7BbxU=_auTUTxH)*0e>5K$Libg{H%eG~%<+pUH zSCaU&Y&$Ewsrw9MpmJq4Nqy-P>gkyuE0sGj zV&fQC{7gHwIw__l@6aSfda7!(`fS#m+ELaHu6zVCw`DRI|YO1?_Y1G#>k-qX^I ziXOgV;MC^T-qMZhS+_WM?u|8YGH^M+@ST@BXS*}JYUMe{MFU&~G8R2L@kCq|EfSvO?I32t)o|}%6&*Q~u z7_2mt6|LziT5#ycI}=_^c#|2_mhYM#Yjls62&QJ|$=bTz|3}M}zkCBmOjs3SVv=OI ze+~Q*Zq1?{6%z6*f(b+2rkk&&I8UB%oZw{?%lg!6qne^5P zg<%2JDBoDa?cnNV10Mtjgzmrs308DC>hChw4tNyn>Y3(J;`a*eLTMqhH}P7iXl9_j zs_(?JE7>HZe^N}$2B$qL7??1C8U=bOdE@LZ8LimWCrHqIXBJL&s(NGC!9i$nkB*Wl z*QnK({d+zU-sZdm9TdMV(3wdDDsU<(qTlF{Fwo>IfHi$!hC15X&Nb~tOGLkW(_3cIa@AjyVhN<)(u(L%=fJxpmTr} zqg9VPK&4LpLyMHY-R4kG_pS2rXIk!3!(CZR9GRr zf-HP}jzxeXhx~LnBq%0E)FW5}5hLMADS2I;h*kHz%CO}AT^C2;IA(bHGsdA zeJeZ(+T8{zP!S@iDSBr<5UpQaK!$Zm@q9e9cBbo*&}N1IucUG1&-K)O^oo)5#{EJ= zW2nWEB^ViVmZpqX0Nb14bARyOM6wKK_LZL01SklQKZgq2fdI|EY+MpICGpAMhS{=j z`bs8j#(gcm%Q7k_CQv*VzZPD>4H89l6#`%VgLZ-#Np7gQSsj;jQfqog$P33o4kS#Y zuvaaJmF49aUvF@G#(N53C$c~Tww&L^gC*5RZD^u&uZPMf)9zhLMYz4`k324Nz_S zggaF;tU3 z=y{_%Dm%qNx}C*2_nyYVd@(@IU4qc1Kr_9Bm#+ow7?m zWhlIg?||RbOwqNb3r^{dn9GATQ0YoOcq>+1rlP$LQ{P9qGXes?;5wiQ^tIZ-z^@)3 zgm_8=(xzn38W}Y%9gM$WJ%qn%?fK)ok>0npD3_2kJo%A)78G{yuFZ3{c0Cz1>&Yn^ zI|y&d16{&yYQ^y9MFl_k5^6p^ldcF3WfT0_8G?d+h&Z74RS>`bXYpVSi(3~k1)bBU@ zyy-^?YjHzIr-X%hBf=dQF!vX6$~POe(>6|=U*OKQPD+y)8n#r?yt$uDw6(_oY}(qe zF^*z0%c)yauEB0F>JgOoflTKw%=v~y$wtv(_b69vh%ciXtIWUWv%9VzYSydTz%WS`+QvDex2)8Ue7$knypTk^E6KhW-fl zs5%Xm;%4E2ETQ`i9>n;^o!#vv@OnuVUq&yfZKw8t>ih+IPvx@1!NJ=@X;;514Y|K* z;=*iJU0-v^SUo_AB)Om|vAbnuQBLdT7btYy`9RofBJ7H{dEM>49+rET?9{(0HxWrn zbV(bQvz&_!OqUd~lTZAE&=N494ex5$P0xIxz*K=P+cNPnu#!#>nY5Yg;&7*71PI9c zfohDYzSdN3DN40tF>XgARN8OI^j+H(uAz7QVTXqY?k)#9{|Dp#GPM9ox;~g;HVjc6 zCN*9l1`cv4ZERY}ASi>JG}nd;<4L3+K87W1`f=_4WtAvcf3rp;!u?u-PZArT1zjXh zm^y>Ct6pSgNLWE5qF6)pG+ziFG_$b&POidpOK?f>E5#t$MFDKJDT$Cd4EY!V+B5fc z0hrPh$cy;gQrQ~$Io`I-bdN2MMl{g<>3jaRyCiz&PxydQw+xB&t{86$`FKKR0RcX> ze@cw2-0s9{J+u0y2=0#(`Z|y0pZN_#F2RC-IDlp{6dJ^(_Aiz%x$YLlhD#%>{_1bq zleRth*`+D#lO)x6IFB3LGBf~ti!2HxA%T&RaLgt=&5dqfEz}MRZOn0eME6*o(*?8@ z)Eufdg}xC9ejmHL#K4_li1g;sZ*>E)n=$^9`LUm<;`I#}&Lpap{mJ=3=T5ajPxbN}Bt;LJ+zrmbW;dD&}Oc?I{}AnN#YRF+I%T*o{L`$$M_69rhhm#(d# zsv2>M_xAs0^PnMnyF2Y~7Jhf6tEj1oVIzZa?y|Mi-xhbISL+XqyI%DHh>TvRD}QBv zmb0{vf~N*madoYC2z?&$M|m58Jobop?RDLyvi>Cl&Pq4C`VNKX_1CuRLlfTWn+}hcH{jsFaE!ydJNjF#T>3k*ICnv%t7(7#R!!-% z!Fn4VvoH$~UXbx{43MeR7~TJCwhxemMX_f1p~pZj{d0|yGD0pVd3Fyp>)PH zmbB(KU`5g14w+EV+(*fs1Fx#RR{o|xebQN2LSj2;nFk&LG*jmey^*$a~1EbIo zYeBMGC7DoOLLW%tEklsE1i&XE5##>E%WN{ER+yeRDIM}}4hx0f?k<9*t}vRm6c@Z( zSb*jG`x&(JD~y+-;sB!I?y;481vL8K+l*n-teZ@}x%x(8S#OEqLI}Li!mU4L2GYY_ zr}K{8u35^ZUrOd^I+BQ-$rQTsnlBY&)~QSs5TB=>@L5)^U=K=r2jP69d&HSLr(N3X zLNBM)xi#$4?%w$q&U86{lfNTJ+7oSqhNWCT)|Uqt+V7NUOW$$7|2aB70$iA7nTZfB zNwV%UCb4~8y)rvy`p9mo(wN6M3zH`wTQeB1%qShxu6mq_$*C;w3@Gca*j_hKUz`Dc z`-e{lL8nOxu&P+ac^{yC`t=+804~hd$R>C$hEIoMBLegB8N?T;=3HfAfvlnMiaJfE z;*eK|jG303+E|eeGyW|gA9J>g=W)o@5v;|0DAP}*O4Ojnp1t$==*^(W(YI@l=!;EB z7~NVQ^f>ROLZM5sG&gkB%0=Sig2otw&{C5mF^GCZBilI+JmNYrsDEt^i(I64XHIrf zHb(t0&y6^!(6Ac$Apr!k+J6+z@7#pX^vlgSK~z^w{_ASscNT3Sd)@KcGTAv&BDDG( zC@HQ3FfC0dv0xey{M}MpNcfk2ivS(4WGJuNIazkS2ZQp$n>`Z2YKKQaWcK1IW4XN@N?mgfnJj;FUs0*`AHUrAFJ#<{$Ln0J z{4G_dub*pa&`*F&BBdO+!+y-trY5D?lLD{MwvEXFA}ZNo7?PZ-5K$-yV?in^xIF?+ z1m8g7&$sb4g}yop9=oqFRd#j-d%4De!T5AmBvF{eFB^J@tfzDFjIN8h^yZ{MY@SU^ zw62&O@K6GIbEP-KIhO5$yut(BQ_AV$2A1Q>3ueRprD`<6GwBqve`K} z@J5{5+TC#}%07&5?o=M;Bq%bwuSTnO#2bch?xB1e-=RTO&56~)NZFKBz=46jCd5OO z(V7Q6wN$j8vx?u(IueDb$A6rnCM+h8fKw?WGdP!Mkeg>2FjSg{c@S=mB=mBM`UKl6 zo?0f%53b{!aOU51FI}!u!G!UBT&6KNS*YHuB1#+=LH}m@Ynex>F|<5sjW6 zzgy@c*p`(+@Q<;V_bYV<2EQtNV6;uGdz*wEr(zzB&gCdXaj95!@;qKr9-d?!6Slax zIBA-piEiK^LX~Q9rD7IJba`d7y=i*7$E?W$KsjyCHq)u=Vr5H;vkE!3KGH~v4u$B+>iJSK~(B&#DPYkClICqQ& zm6**LHel+TYmvdYljg67b&3K|i;B>O=%*~kl_P@c0(^hqd6!~gdxSXgbGMzJ#imxZ9RVFh8qAbB{hYS79M?;f_YPFd&iT15d#Z- zK1>Rfz;UXg?&P0p)M=gMZmRK#@4PUmEmLFKp+K8)0EqC5SPFV`!79 z3yX&<<{b-WpA9t{Du!TcBcm z3zt^i^f&<^XMR-NTR?6wRR{Zwo4r}{Yg%ve=wppcs{ZvJGIF@Glc70YDfpBW(tSX9 z40UEL5@J-R`6jeOzTdEp5Nis@;%}z-MGeW*UeQ<$J5y-=K=#%0Cx_}x)%Od`LQNpF zHcMZU8r0Ibs%p{SeKrBJVjy%9g7T0qiyl~MA|i;}06)|8KQ{DY9#z_h)(AbV1JD`~ z>%ljMy;-8S zfGdG4ST-;SQlOhTa#d) zAOG#YF{>>Lzv<4`B!&QU*XB-&M|V4)x1fRHtc(lj}rz#~}yaskcEPH>Frn3N+6r~mfvHkvsu>);~yt)ln2+`V_ z*7gE`Q^b|2d_{%smJ0IbY}epKT9SBH+_$FB3v{NY*wV&CE^%#pf*7K_+bt6F@aHzP zLqh&!Nj<+7cA(`05^vB0uRYqso>A@uWUgBYeaK!P?_1*7qxZYPtD1!!l<~gac*T1F zxCmYNMUdsP4)(k-x5LNeG6!M*qFe-Fu$lF2_pa-15GFLegS({VfCYQZ9P8sD}#AUw*tb8(1;C989Z#vxy|p8@`%G;y;mY4W zefLKc2F;l5BGXm~C$~Z#9t;d4aeAsaoq2M(t%ST8$oC7}=L{Ku+Jf8lGx=NfQUrl= zAkd|E1Ln0QmztUqKUBGp2iw}zwH-S$zKwP+=oy@;jnyT$T)w-z`&>T`} z1_V#N%(!^O&R&L$(qa9c8G>p7ID-PM&bvG#s0o~7g`F-0NsQB7MYg%vo?5ol*Y8*# z7WqIHW=ARQxerk&PRaerFVmW<6r9C{J1A`pGle7q<5>Xm=rANvsOtt!7j%Ta*PIcw z^VxcQ-Mf{*rgA*rnL0)1j8$P4G zi;9RCTDt!5-uPW%)uvR$KzQD_K#dus@d3!cdsYj-HT@i2ydfecd2&Jl@5-re&lB*a zgQuO`K~7E(Ug{fH1*G^fao^;P+|Xb)f5(SK%m*K*E_>rIeFfFNxvB(tTjbuH3XyeI zX5jwr0V=kd3XXLCX~!2Z9E98F=ORXu(l+};%$=1;A_5xI1?`k>UP>S>8o+-oC1js> zSly6)30ccR6gRf#cLMoG%XMW}xXbT33$V+cKmKw_r?>A?uHL63J|K{*k7Y`$39RlR2`lkCTif)%|{1L=yCS7@d*BP^T zn0X?xBX7JSNf`B5uy{_cuBsn9p0SQ1PhV9CUpXy5-z)Utg@vpE1`(p6$$F;0j@W3LNsYq7uF_uiTvOnXesH2px#}lhmApQFxRlWt@G2~f?1iX z_V6=Xib?bK^>?fgjt)){lx}M3z6`J&UxGC?uloIg65A+1-T%ZVY>9lKA8zeBfzI2L zO7%Dljg%0GI;e^_YRGtpBf(&gl{(Cb{%HGkCnN~S+X6G)V`T%vPC>hP4^Mkh(#kgW zD*|Z$eDj8(n_Ch2`<8~R2!?-)j!1laJ_G98+10%qbL(~ckeMEES^Gm$G+xqAr!glW zWo_mDk)2Z8-Vx{j_tt84$JQi_;Nh)sHL{{`ELRn=Mz`IU{Dxe|Lv`b5x#$NFYF`S` zAubL_c0=!hXrVk`{eyxK4q(^~iss$&#!;nPMCLMhcWUZseapaqTGM$stzp~4_1=`m zRKU-@y)x4>H;M2M5Ql>m64RKwU`y< zBRY!HOlr`i?=bQQJ?Us>-DR^T#;RHOYXy@-iB385f!J$4j>SXM0Qx7tRCwjfr;qoH z;eB1kWf%O%Xzw;xN*SjFg104a&jyDi9TU0ESE< z_yeEaaD0zH|N8q%4v|y%_iQnn?`M#DAyzXFy`L|~jtOm04_8;Df1KjdPDTAC^xryq z$5gw~w}bs`?ZR5V#F1Al-avd|{9tonq`@jd8h*1x(G0F$-sZgB&yLM(5sXbsuk@rg zMNG!irh|v&+Vwe6{dFFSS8myr#){S5l9sa)y2Zs#BvMA=#uIy_>gt_7NhRcA{Vj|q z|9oUZwA-X1b?w6adLsoYQTXlviV-_Flm+~SDJeQk~WZX315qsg`_}qDU%4sbJ33_ewL~SLVL~nfdjaa6<$;mA*<

      zUDvV_MobMGceQm+I9-y|+%kbuOD2+86fe{ zX}oGop1)qvx4hgtDExk-djrRJwKL=H_v>HtD&K@p0OHwlMl> zVrICXfsThC53i|Cqz9B2@BSeKtE)ES_lX#s4<6r7AF`e5b3LNc)C{xYq&~#srqEz{ zuLR&Yn4I(Y)_xIl`q3JXP$~(qFS(rW<9dY%*bodT8)Mg$XrH+4nUUl)1H_;1*UVv! zIVrg#{x<_}vkIJ9uUzrT!au*$%c~i%KfW+&Bi_v=B_{Wr_amfQ2B<;9#)_Iq6|@iv z54crmrURgrU94L*>?fg+5u%$U+;Dk}trD^Packyj?->-e0(-yVb>PW{E#|tzQ(XC5 zXIYok&AJ5Qeh5TedBlev7HxH<{||=yIAxuPouL5}HIFsoQ9`?@mbB?&!uf~VHvZRc4vr_)nPaX6Gaiy+#`KTT4 zawy>A;m&Bb$8~?NW-^|L>0k%la^CiRRq)<4agv>J^jv&7eQs>l&8TQ!ED*{|z5K=( zbhnqpj76j*O;F#NsX6dtC$3|WF_+K1$qB+X9jwxf=o-gJ)1mHFE3M2~3>7O_quK-L zW67l*^73sv2@lKI8RiILb?Gce;4@89UvFs3c~M%Qk4xI=cy-!(W3940xkd;&NTDZY zykcIxcW}V0)%wF?@|j(;IJ*}U6;|r47MI?hjBmwjx*oGTuL;w!2Gj{xzf>fV0yw}f z3EY{Y;oI?vBAj0lYiK+OOBBDFd(< zC-H2yk@5b;!;YL=Y&+SODO6Q3J$!svz-K;S=1%8of`KtWgA*V6$c@--f6czXk{jOP zjJU3~vJ%g9nFGLzh8df)Mv%;4QL+072tAz;W8}f$>9rvQswkTZ?om-gmrMt={gs}1 zF^(|V{YajEcS)hJ3#l&Ft0y4QT0tnz_kCz_8V;U_&T`#q#PVkS@!*h%U8xD_deChQ z@8qQDy3LGyG7{w?4Cuc-K@*Z`Mzu5Oc z;zy0YOP!6wS@3~*ZQCYpQ>iQx2d+`T(kD%AeTC(sF%v`8_E;E7BL_}XT}@n9OOSy8 zG@!t`(aY~~b^v?Thun2(bc@Ng-sEW0HcQuis(I*nY~zDb&5pncQOhWe{U z2I8|5cLaRd^vp;x01K*+QEKtlRohAWW@q z%9fub^o!v$YYe1>;k=)ZpIoYRI=X8L062r<*+`T0VCLeUi|gwjX05A&@%{@T@(&i! zvh<*YzQPJ|;!eGI`z$Y$$z;GSETSWe#=OSyzA9wu1&n&LJ2MLGoH&5gcKze4ujpw} ze_lHrp||PlIlFgaqQb&4aJr&SHuEU8^&~sS1=Kz2bxGI=PVzOieS;vnVy18xy~5Nb6dwa4d=7i z?e2AImYpB2Nj2ijl$G|Ewuw%7&Gqy(2O*kT z!Y~kHF=jVT|I4E2jih#LwK`aQgjeKl-=UC~s6?&AVj_N2wR2%#1b=+P@#r+5!GHW|NbgY}ml zakTrZ!HDlVKouO-1SAI}c?)B+nVIZYZwwaT%S#Tg($>h(fUL_7y#K*V9w#Iq>JI zcI0+Y%Q1WVAsNW+O7z^$M;;E+nG)Jw1xq$4%Z08%vhj?3BH8J$$5sccpge7PD~_Cv zNiA0zXlI9ErLgD=gP0;D0Z6sCcThOY%$>iBwH|~!ot-?p5N~325siU~y$O-0h;GIZ z=76uibGC2=hOlsav&qo;PvWj*8I;pI82a^EE0pOc>({MVJTDyw|RbQTcZws_HE3RlZq^vRi{ z&~!^X(`+C{6DkQ+9#wTi^qsDe0^&evWubSc>fEM2EJXSv9sN(pYe7%Fws>`Ws(X|# zh4(C-^_}HH7x@pX&s)On8aL|EgU39ywcz38=m;sP;x7vOI8+luFt$VjzP{>aYl}Q- z{OU769DZUvP4-f4YOu#OLDJwMaP{y)FWW0aD4yT2)3Ng3nC4o!B&1|qCvzDL zU*}ciqH^wr%%MF8CFOFw=ARZ#CPxKdG_{zPHb#R#l*h8Huq)1VH!?|8)%M<41QNI# zp~)^D-*JV@4ig2#jYpFZ1QDG4)LIF73;sPOw?$TO2ci{s&Vwc-3UC}kV3F)Wk4RgN zuKT7IJrCcR{miCE*tS}Ip%l#`FM{tIF^>;CWRYgrstJB(OD%*<%Iq758#_ju7*i+S z4Dy5Tfp-*d&C?TUTJw+DvEe0a2T=AZEDFKvXrC7dCI}M{=qUVLU%t2w7-Cx2;|0{J z$;3HQVByLe&4T;~#RBm6Q!3@B2PDA)6$Pa(wVpKn^^KLcpLKZcxWnBILG*~X^6RW1C%iAAegY@%!BLJH0!n@9T~}uw z{ZA3Lu%HI7pVt{mK|}AssEaBt&PU1D;~dNw2lqc!)bjF3rX7fCI?E(PL7b94b~kBD zXXoV-mZDf>-M!`EE-7akf(!~37YP3;)%&c2J)sb>2>7LH=3pHH3s2}pDfx3=uI0A3 z=slfFM`~}Gq7)GN-3_>#a5g!4}~B}Azn5g ze3!QWlFIj6jsE2*#i=VubS9e^jxwk;f1hLN?|?DF$K5w+nfbcDI2j`unF)fMhx;df zd>EgH1>b6qE9HypkaRkevr3FCLQ@kw8gb3i0aXUbmrG94+T}}E&siNegDH7Na^#{% zi2DR^f)wYojd%eLKNIqkWoIrX$ zrjBeNK`O>ZfP}73m&-(@*=PD`9-<*^#`gS!KRCP3QCW1EjH(zz=Z2Q5lBA23%luzv zX@rPqYB1_f%K(DTj$d~} zpsY??@CYU(qIP??gkEXMexoPV9vz6NuPL z#2yR(Tb9x<@jiKMVaxP2tK+)NJ1QLd$Lq!8fxiS*J(I=H1wn}#KjIaC;+elsLKM4u z!oa3iRt0~#!ehmS-OoxULLs%9pDcy_QRH;d81?g zVp|6yS=|~R2*9+nHDWSmEv*wkoG{fDn-d7ev*=*(ge`if&e;G>F_Dx_IN+qMZgNtZt5ljLoCX`Q9KvO=;x1H?vza1j9E5jzU^ZSQLTZu%zdhQCQF>;YPb(5U*3@(MWvj~^ z+W=QgC?d@rj$OFi4Q%B@(E?hoo-V^9rU@8k$i^`QWW3FWg68Mz^ontgT@Gx8Uv+(F7GVZ3!u1br1&pla zP-)GvKn#-pKvw?hC|&hM|qxi-s*1t2V2MLpU($O?t!c9ar9-oYi6;rrYT?pT#=N(x!YLr7^J_{tNo zF^5b}qASU-&h9i%@rqfag7$A-SxB;Pn(YA$I3wD->a$1ftMw1;<^ILKIt{(j!s(K4qa8KHSbjVrD@-2XTIaFUdGUe z8m{+TI7kR%fWkHPaua(jZ(kNAMt73|WobZxA^g2g08#1I>RkY%-0lqW`wfWdoOSfq|-b_s<{uFxsdhb~^~0BkCxED&F)T zLN1kF^Yw@8Lw>WZ?Vhv3LA@DfGCW~O9l24fl^C@5e zm^*8^PmejOf$U{TW5kYw14S@N|1j9ta}BWX&V9JP3U)fr9a)Ou^-nr!Uox7I2ZM+9*ndomqUalhycJE3wqnYnTUgsaSe-Fw+s3vn$ zu~g8+-$z~V5{prj{W9S9ai~8YMrG2=1pVFzcwu4NJ&cS^y3%pKm9t&sv|loA$1iEo zi>j;BRRTxxcN2y$j|)hNTDj&NF?16vQ`aB&zH&pUdTmPd8tep}4mFv5HuL2S#I}V&_ zfNT22q6d$9(?qw7eq>qfbPeL?Cw&prw5GFx(ysk8v{&%Ii&i*)X*rZjyKvGMT1W+f zP&&yB5cbLMRVg8&b0lArmv{wn(}(vAVv;DBNjKOUV}u-L(};;`T(ID$vJ<-2KY}i- zM6IND-W1wqE@k|r(1O}VHTF!GxxX#uv47gdMm_8$#IwpzT-RwDv#vDrSZF0S4+)A| zlp&0n@dBxQF~}7RvCGKOtyG{NttAgH&ZX zdO@{@+h;!cG#92|qS$iKL$t7;XpGLeM3z|Kje44L@7KuvrnKZfrn(NpZhi2?t=_)_ zhwdLFgkWhMF+_8F@W8YT)Qx-g-ja2uc5vBUevUGbocNA%n9hGh_}GkDdyNY`k}uSS zL`!Qe5)oYZ+|)CCV!Oss^5SQ+UYz+M{sk7rUR=Qm$UfKSSbMU1^l?yi8|hS>L1T)< z^uqB+87S68AU9dHtV!nMLp4#?n*kB^irXf>Zd2`+OP6=*O3eGq@KtT-@ccS)+Rc6R zy9=$#1yuPC{k@Emi&IB)^YLUN2KlL3k@B6aolI!G`TEc(DHh{k=fv*e2yHAlF^z0a zdu8F9UV1z_!WS!QX|8&s;^}PAAGOtI6JxpW!5-R>GuKg|XnqJ0DtzJL)_O%!9ReM;wOD&cr$2g>LW;QnG0 zcf(5O#?m&rT=`gUg2oQ=E&03rf&Qa!OSh#&2uJCI&mPg;Sx?Aa$7BLF?NgK2s6TIF zM#9muw7n*5KR9gRldp{61mV5L<6J+w&Lo}7g?sc>yVF^iF!3yeSzPQ$kD}?M|0A57 z)VbWm6}&MpU`m94=Y;3T1!0ZrVA%Hs+mNrS&PVbGFuRVbdt2xEp-hXMI=in9-NyQ$ z66KhNh{!O1_~1g(G$;?J#p1h=*57$S-odLmTMtAQ`Kfq#@0nEa$uDp+hWV|B5Vnfk*Kd?v!2Mr&A<;gcU zy9ih5qGgol$l<%^<8Es$Q1xJj_-A7&C@AfB){YI>a1qycKczf}-d6DwYjZy*FwN`9 z?wIqPf)px*C*O=@Az=~OJ4WApdQCsrq#9XYYTa!Dn`t_ku-$}>kw|el1BncCh9o^j zvKAO{6Psrfuk5g_WV+HP2&Kd49a0&d!k+NaEqY?^auH@{1Wm$A1DN4jH`SQ zBBX&m*uO_d{v5>$B#HMGTFS>kN;eW;b4_UzyFVAmCR&p4a*KGkd+=zQQb4cIU5yw+Ng-V zp2JP47|QI&c)!*~x8Pb>bX>VQM3B2cPY!Lg2aCsFp1BnnoO;eB=R|0jXO2ZK8-_W#<7x#2&ttdLeyGRS%+mIN)q% z(JjN5&c%_rR%1a)&tHTCxC-4)MYtT*6n=V8x3xwC+=kxV-gHWc)yW6w|L{%zL*HXK zT$j!J9o^U82mZfD*uv2}dID;I0Y&)bD$3AIy}nR}R8&*-wh@iZ{2#R6pIFEs27QO+3$scbA?IcP1{LwRF7jCOb7D2!D|V ze;W(kSO8Se_oW;OhK4VJdVDgpWAgju^iw3Pi6Z{e8WM&egVB&^q{kp^T&37%a!;ig zxX`-LsSVakHOhi3)ri;o6sMYQlGd~N;GJ+t4?c7SWE(0}_{0)L)bAhoo zqR+^G#t3JJ?KNA!WoCbO$IZCJR5%`5^=wM9Ig}t}#Db^0Cqc@oqQVR~-XSMmrOnfc zXRn0B+}hJV&7MlRD78u#E9)Vr?zE6$#cY}Jh!jQ4m!?Y>k^Gi0251qCFkUKp(Y=@0 zH~VZltDvqhV>~g(shWhF8)E7;a|t`VVV>Umukh2rcf4ff8u&-%TVp zt?az`$9Iix1Yb=aPcQ=1s5O19VZ}bk9hw-NDDyO1}+@KUe*4Jz|O-bNT=S09-@-KYC=Ovv7=790wN|(5ISomP?zVN(X+mt>o%p|U1){E1IejA}kS~apEp{5E8 z&nfGR#v`efqg-^)-k`p_M|!Cic~fnL<4(&98>>tM5v&>%(UesQWM=eu%=#)U^Hm*I#n3jY@J&SCgp8cYVfL$u`49`oCL z(|g+z{?oB=!!%yE>6XwI&xdqJ(a&`z0hz`MN(vL69yu*`Yyf~!{`h?Q_VaCqsyNZ9 z-iF$tBo9lF)W}mFfKv4(B|qrmCm$}p9o4}Y%6(s$!iTT{Lu2vItD+l z`N8Ok&S#mJr1u8l`GN16Y9RABN4)hrzi?Q`$9sCGi!;Fl`5gADdEfJleTG)n4+g1+%~XYk4xiv7TTS>v#b)a8cf3A0SBgn0k;HV z3u;~FiYP)N92K?o3Jrg(jpE$(FEN*QngI?w>hc!Yo)LkNX4#1jl$Cn1JO_~~0iv+0 zhB%^ITaO$>xiCURS9@BCdv;a0lUa@12j*a`Pf$O#i6C(yV3~U3KyIEGKzI zcz~{rr53x+kqyGfWnaKJYcLT{(T<1q`r%eKPsBnd!?v;PoYTV{_<&PCfXV}kUA$B5 z=WWv^(qoxAZQKY&SBsk&|GQ!Pi_#^2a>4lhi1@fD2Y^jf&MQ0c1JrpPQ~}MetR)F} zw`^Nlep^ycS-7#Gs@~Rt?r5Hyh;(S*wc>$Gb_<)U5Oj=$tB}HhLr7js2O?+ci{p1{(O9|0pz&X$!Tu_p z;jhx5fUoW^`>Xr=TQt~zc7II&YXANx?Voi6kDOfL(ReR%rRr=%m*NaIt%@h15N*?! z)8ChD+0YCyA1AutRU$3?aq2Zdr?|V!YQog0Iwo0tR>zEG0%|`;VN@gJU_vWR8ULaA zJhx|YD1rx`$C@Bog>HE58@J7_(oH6Aq|j1KqdR}qmNT=lJaOgTSpfR0laSMaqgXSy zHEm0N#mykv^k>>cun$RsQQV>Pc{0l{Fl?xhiYo1H|Ll5TY3->*T?Y4F%0;?Yf94-l zH#*zA-Dp@LhNKy#MGc>rPNq1vsEtRq@SKtTnV8|_ReaMOGg0Uk%nMnXc)S(L;7y;* zw;G)cN*=@{M-}QKLtzXbax}oJ}3lFovue_y4xA=A9P6>}=1_ zsJ5c6>m$wvUWVnQDOikZggp7H-c*COrZu%S9v9k@DZPW4EFI-oS7Rw2~TF7YhQL`RT+?CsK%-){1w&w?DE%l4GV|iVD zJ|C-Zy`LYoFYGnyjl<_}Sr1!R9Q6%U#OY{aO8V(#U25t$21QQXHXfd2we+_;3uSYa&c)K@RE8xU*Vqnx@r>P+xwItZL>p6txN6sJ2*PI#;ro9a0jwp>y z6GftACzg~|q9!6OuT4DdtpCs~(pMYYk4~f>er0nT}-q z^W=B*V7}LM8~kpp;%HM{)6hgjV;6GM@IAjk{O0vNck?Q+9}VA3g3#2(TuFO^ zG&{Lp0qajkIw1Ob!MD3ZbNXX)>y?<{*U5!Qwp!YL)Kk5)@hV0KWqAQQFs{P3gfz@{ zVzWZmQ{|7k%b|}^cdnF#3HKtHqzz7fTLcaqq)`BSYbDl^4?s7YvOYnw%js zjSFXb^W85u?oe9nid(il$7ZoFM7d+llnorxy9~Tj1KNOC8N3AU21q*it3i9KYb3&$ ziMlC_Hwt0os1Rp!Q@xlaRHr5_ZzBLB^HTNgT0w?@z1xD$fMd;;27}x2Sc_7S#v@nMS9>z3NQ9-<^VH%@E?LXkOVu636COy80f*uGj z7=&i(nps#ehRk!;23?sP7ftOrQ@$oPF|0|!%@H6aL*m_@V@A-OUv-LS&nZC= zCDMdx1Uns1GuMJbAv_&^6fu*2;)M*u3OPkhQx*B~%z_+OAMPlUghHb#Zd4^{Y|-MX z#5n7lX2A_J8GG+I6(il){kFJCH;N?@w2h~q@Ce@<$oprEPHz?>@a7X(*N&H{OMKR1 z{9p<6Y`~?~PG&L^jC2>MQKe&{0D;eeqc;+DhEvKf<%}Abh=?U;sGcCdBY`= z=WTKFF|x<)k!g_~bqDoc6osTt*$PigY}WHfN_M3j*|>49UY z!CdL;wQ$$XVZMQbe&*R8XNp!7yZbA}P4>&Bf||~TA%(O~*)Sl=ghi}uH&SSPGwQ_1 z8Ht_D%}1Yr-jVgztYSM<+=zLqtd}sB03_@YIT$I`A8-<5B6nD*u3~e#(0pL2AcuH@ z{xLb3*nJ`UD6dQqlEWb_>G?FPVCH*hV?zA7rj-^SVCp2C%W`a1X(U$hy#1&aO$EDL zKZdQ3kQMPQN{_DS*^{r1$LSfE7`zmb(5zsXC@YJm3&iD5Gspm=_)TYzaysoE3*Ux* zDr&1NV6T%KO85U3v_&O@6R4uHTA)yp&%TBF;N&w~wWK8@M*B*MH=J=L3Ier0D%xNB z?L(W`DOQ1T)26Y6h&_7e zc-SYDrNEe>=M80rcmk+*14fX@kt`uI5i4oK_{dWY-lnD9+|0VzMtF8a5uWl+F_d;(37I_e=`0(5 zz4wTkPIh2tgAi68eH6xNXi(zob5;KCn6=6&@|mYm#sCOK1v@?y*GZL?)97J^*)+ZR zqz}Y}tSf?Ux`+wVmCXe9#}vV#B=JUOInLt-FDHKb;F}DT>ye(_E4@%5Sa?2}dJBQY zZW6g%uFQ@IMKP%va%%oo_miS`aXn}zWY~mZ({>;)10D(1ZxRx-W<_;7?L&97qe{oI z?W#L@qR)QG7zcPzh_@&VJVr^J(RI@;giPF8>I`?ac7GdA?1XwV3u+T>QJV@7)$OcKCh5Y2V{O3X;%D z6qzFLB#8N)o6W{#(xh6nxN+@plaKdNndcKyObVV^`U(0$%}56Du#bumu@221Q^c|` zf~YC>K6SH4bycd>!H+Ka+J1}?FRT|JlYWv&LG$H0XI?>o@DBWG}Ct9 zKx5<$H8G5j&&7NesUP94hpJx|ToR82t4%k^$DfZ5S-m~~q`HLMy;^6`pvnKraK~fn zL3THpXQQUVl@Ao)IgM}X-9OThO>y=<+3?>|{m-lC`rQSy z%2ue5JW!P8O>KXj1c7uRzcBOhs>smla>upIu z+hZN{*^ZqdXI(#_g<&wmZOi<2&y5WnmvF2LV5u3Ep9>qj>5D>H-+&Lf-tke<(cZbn zS8FU3Ddys)4t}Galo>rUWy@=7SPbpPYxdMv2L8s0aq2D=k|{E<4VvtlUMd<_nAVU? zKDtz*3a=Yn4~{a1WQ}9DR9B>&5G^mSx-oM%_e9w~eKqCJP4+GL#{KCxAY5p@{GtQ|ecSfd?ds<*>7W<7NK_kx-aMnEa8a%Eu zp#8nE##xRF`G;1YtNV{z^JukJp&bww?ynTYr=|ege#vXIKDi67#=>QKBG;1Z&+fpS{+{!_+ukm(msr>Rhhq=c$9U$? znEVcvthdIkw>)11gl!r-q?XT%F9i3)@LOfHP0Rr%gFvkTqKV@TzjUT3Qg>vuv#{}v z8`hO-0u*!M#9+^nMs3TtF!`NdDGuCbkM7Y2zuOQKc;fABe`&SZFr2CSH!krjjBfxF ztwhL;1WAPp!?$0wyFX}@J51veTTRUgP zsF)+#CIQ%mlECNU&1Kn;!m$=@h640ezhmXkXyS1T4&Wt95`G_@9+=n;V`rO>`fr)$bCCMyyP+QU_5mhkW zR^lbsaG!30GcQp{4u%Y{MuY-~L=s6LK2Uo2UUh%87IVJM8%F{YTXd(o+9b9en0g}Lr2l|-E3`Zbp6+F1_e_m zaYADxbuQUyG0d8TfovIaYGAaUAH&{)(ZjF#;71#8OPRpy3JuTmpwYc&{;X=x2K&x@ zIVHRLh*?w z#|fMKLVSe#O*bo0>%dLt-siu;`#tJ5JW5(=8GopTLY0UNrd8haJ_v`Q{ z&_67%7sMg{**f80+w1?)_8RBU4C98S)1AW*^AbzJ7@+d^arwFkl8ni4uD-!I8Ml^N zQ=lZ*tR&4QUq`N^N>WqHH0Km2fOE1ltPP+e&xd#6=?mc#Ww$m9%?4DRC;DM^WMGk%Cpw2 z;hg&Fz@9AfXWXtcYcQ%3G;>Obnbwl_6Qc=!vvWG=UwTqzW!BUG){~^XsHmXkrJ1Gj zo4)o5syJ1soku>AtTFQ$CvS-r{L>vH_vk0o%$1tId`nbftKR-?pTNN!Y^*k!AApF{ z%Ena^9hfVd=_w8O`!GKi+ zxY-R%$oGD_NfRP>V@-K4bCBTgm1RkXxNO{9>4o|J*fs0LQ>SjY;ir{-?n=z3!?R1B0H* z8v1SBZ2z+DkKcC%*?y0gz0{i-TOBZyon6nW85b5S7aLg)*&M7$6UB+Vj(ZtUVJb!; z%}J(5e+o-~pA}XF7!>>EZQ+N(>rSMam ztg788;+w?!qV!Vri^BX~x88%#;jIEulcQzmZ$D~3t3)lPH!wd{^gh17SY4~jhu zUVQQxEB;p3%C|*|fQgoev9H>XGBRt3|5GO9_N=>qZ$ZWbTQlQdCT=ZLw{IO-yiu`~ z)Td(-0iElFQGLe^bylDbMzuyUu=Kuf=5j*N+&WhY;k84cmTgCxXfusA$;I>|G_HiS zARnPz3X$fqMjl{~HsZhQT}r#z))nEA$*XSTn-TSFPo3YAd5}KpQRJT`KpGSbL zsPLe|%$B!(TKg$*e!mZ~aHjrBlfA0J(bl|}Tm{|Ct}Nm9d)x7f51ADk_i-t9SDmS| zPQT`(%u=UvpKGSudRC5(K22lm;XXBu2E*e9OQYYX2i$1PIguN0 zErZi{({Ex%MR_6CA_XpSCJZb&K^nAXg#}x`3SC@lDogD6V4t2$x}TzzC-Sx3YZk8^ z&H1z+V8ZOOmDaZQGSSb&mq6T-E4H`%Qx8Z!AQmOBQKPeu z@sb}x4)Icq7DVaNxrTR|wCObRS?w!ywlI&TxMnV=^+manvDsq#=Oh~i+W@IroF-;g zdsRO-Qwqx)ps?d}`GBNmX|*o3w*I;l0i**Gv#P4cnUIJ;EW)s@g+uC%cld3GN-v`3V_|d|D@|uu zXQ)TmJ)GGes@hF^O#!O-QP0%b_aamrv*U5Lb~kq(AM`{g?1;V&0S|ZW zD+9qRo$VGH4pjDe5=3}@biMohF*Q}vV_I5Mxz<#f?X1^i2PC>p`_$8_xjNq)ucgd( zgLIT-#zq_u#U#+rZKT`QynjF4cfgaI!5$7xA_50wfjU$F-QY!Vh?Ody3iW#ot-T;SX%YGc2f=t}n@s*?Zp%0B8jj8AEUk3fT0FQW z-Y-qYvNe#@B2R8*$V?DaRrh7zXnDYi$?PUlWXV#e>$$#n_2XFN`+0?-Y2*4BY}amp zF8+DIZd+dRmA*a0{^i}OTkZ6#)7yui%N`#m$s|r9wgE z4At1Rfi#0q&`mcgl@j*u8Wkzz_h&v6g(dkWDT3d0^#q6|l}fz1T-OmXEM88{%Q)%m zt922FCp)!B_ys50Ffy&(m^J#TVP})^Hv!L&D~?swo!RB0c$4A> zlyvusc}Q5 ztk4}2wAO6GHqqivX}nX&D!lg>zYv)V}?vAPyBeL!J-?20|0 zMXi3vHUlf#Et-}q+8IqY4?DU>h)~K|Z-S#$-_6apk_G)yBeEpE36dl>fV)5Rf`D5p zo=+|mEo8_Pjd|6ao>U{(S;$id#9-;H-m-w+~hJ_ik6h-7!DbR z8s?=8I32!Vo9rqp->r53;{6F|eLO`oNZfOl*|YBOZ#Q6i9`iErXQ*ImB3dZ&Bj9%$ z*dO?bV3tax^PZ3K#0O?1#)AQf=Q$Qbb0@O9+Nc*wRlMmrDN)c#YUG<4tKRGd>*46r z$KpXR<6`J8G1AsB<0x#(1)jJ-+?`ptJkleT-!IN*0SOyoKGCQLDZoX&9+eNq-J07E z)6j+}A3=)~c}dblOg_p1p|(D!P^?%3ogY2r>#zLP1Jh|8veqH%*0npuOP=0-nXOlO zr7VP|!-6(#al9k|5{XF^ zmA#ZQ*NGV*n)3(UfGA_55vPoqZ|2D)GH48%!(7j706`nz&Lqka5#>aJO)%)rnquW= z?wX7XHRo25ph`A{F_>aYY^?kc7kr(hXwnvpqc=z z@d4)i>JnK~Tr}jVlhu_m`;K-1k8>gKlBQaN-54gOfa-~W!?(OD8PHSSbs%hHxR!Wz zearovB>9`&5a$s`%>~SQXPb*fsJbTVpL$iKTV-9(w?{^RL@sr1IP~>|zQ__PiD&6~ ze`d!GXzGim8q$rju8wC%O)^EIVSXuc33}g!ylru>Md_nph4(tE-U;%GE``K4x%>Hc9u)oTYWd0}^QNmo&^--Z`g6Df=KwD84CiGH~I^ zxr)+l9=hg7_}0+=tB$bO96`{l}4iKI0Z?m&~qSMSLha6U?J1d_ObC3n|iV7wkuW8yPI>#c`b5Dg#N;78Dc9vB3|3x$?+~!EAQ4M7y>& zb@21`j5eeIpJMmK;Nwi1Z#p6jOjWTuB6~Cq4rXVp4tghnv%ecA}Qm6RVd@Dkn6#Qa$hC<+uR1*qW8Dt zI{gW>A+!ddQbT5z4@m=~s^Ni%;cn*h+T1ryxZO|D9`4ic%1(9^rAgJa!pERgcsG(l zh0X&+p$t=`@YL4>>Zd7Bc|MCt-}h%#$=O27rf``vN{t(Fh39@qekDjI!eZB_0M&y| z_u+K28MDae+`nEQvbwD<#dr^}JmNQOf#bJ5;W&mB9N)AVY$^Far8D9iq);hN0QryS zrHg&VjVcC(MVO#Ko9N)S3`YA8p6G=(FcLUU1_@`N6$!%qo*_*ZufG~aZiI>V;@i~f z1xyr4cDDL?x8f-*$|Sapd#E-4ItW;xrW2bMu>DU2u;OmCG%DDa5ybn?Dp%DC@%m}tD$jVjm=QEs^t)XBSbWY@bT9h-vF z&3-JJ;c@`uMCGI&#}fTCiUkQT0AmEY1gsP44G7Tj0iUz3s>LSdANuLLC~o~Rq{PYd zg@!Q$XDKlx&=P+M2yC@+7-wJD`@Nit zr)J>bmZ`wO3L=AI0{5B}i@v|ZF`nP{`}yhEujlW+z0yYWUE$^2g57*V^)Q>h`gIZw5c}YW+hAkm`o(TML}TF zIUG|YYfpr!CSLAJLBwG1NXCsqk%j#hmw0r%OX5K&a0DfBN&}KV8E2*oQI~|S9vzjj zyh7lIqUlSEs2Q>`sAtP8cmq=<&pR-JCMEX2QEw5&J`A$%5xf#0!^3dSD_hRl6R;qT z!0r_U1amj=D-qxb5SV{m)}$yRg2DnxyGHZhZBaV8JIbdLJD%)nBxTDabfssMW)SVO zYVi$l)sgPVtyD!+g%kTqL(2mHM*c%xhzjt?*IXV?eah&>93Z^2CUrLP-tb@dNO$8w z@_yfcAD$fFnAD+e%84X1#yv||!Z;96bNw9dWEl9>2m$RZsqwd<$PI6~_6 z4U&#HNwcsG`?R*yiMMH;pGS#&FEw~BzadaFT(yL{e`D%cy;F(tCJ%{rt3}NR|2iti z0(N2U4iXNnQ?M}DMnbem8&ZS7hMF>)(CvLBcmn7DRCS( zlQq4?)tSTIM}Jd5H|@#RZNtjx&+Nr;5p2we5h-Xq&X0+ULEcm$sM#5956ZzPi;6}g9;hbdHj426NwjBE$tY=*2&&rG z)5C7^@iZa*ERpJvWK^uH=IySZM(d-@gD(r5MCM`YvCDyif2dt_eU9X&8CFM|6!f?C z)EOB3_sZTdF*i;a?g2l<2xup&A!(%JEWRaR1G`aTGVgil>tnYs>g2Ux)CGc{lfr_m z$IbNYBjR!W@AF;cXj8<5=xUi!Ybr=~w^6&k)c`dSp5|M+bN9F>V zrW7R$k8mczD`Q-_`_6iY$(R`n-_W|ZH0!XPZ3-MfM5soKJ*_sjcDrlaAauT`aGVeJZa=i}v)d3UeoI zNmi0e!=W96?d?rvNnOKmuqoAHG1$kN(1a+LB12NLXT+^_zo8Q$2DYRFZF;Gk$yZv9Dksqk%{#Ta3X0iAdp? za8VgoBg?kOV!85s!xy=wV?r>VU0KdUhkj;RrMFJx$x-YgWhomBWWsWOP9YSXE#=wC zw0kgqh>|6^V1o=74RVc-Ox-@Z<;p!+sSy$7dpeZacI9N`o>?5+$=C-k;&25x+ z05s=Ps%#82l;mR6%($2g42068_FYmTY^`_ahqd=eRw(%U)u3b}-VK>Inmd|TPVt2F zp{N~kVZ!nq@xrl+M(rue4;y6)v8LAH(OtP*=@(chGUd**W0~FXIytw}03mD7Qg2b=5|( zF>WW9(k~}OgViR=)l7?K$C(uQUL%ygrjTdY6mf2IUPFcmM2Sc+3A#{7lPLQL@0!$AY&W)|dclbt=WSOt>@&Ax z-jEqs9mVKTzPVuF)~Rk9V$Y%(c~I2*u@ER(rz9*hjPIW$kg&%+EcAHyv3R^O*v9A_G+ zMMgLuG{bL7zx>3}_-8z&P;a7Cnc^feWRcaKur+}vUFA!Xc=0jTmiGp^)YVd9M_erW zQ-dT($NPW{fv-Te(??8dZa0m0$LmYAXP{aFtQTpSmn&G<9Hx*QdOlu`{r_IE*{M*5 z{%48}^WXUm-ZW&N6opjXMJOpDWGhiBh>>x?3tCDoZxL1_yGyqBWYj*qJ?y^1u>XtS zp!3Ub@Km}}1A(NJ*|#(uK3|7eMLv`!ZV(ZD2JZ9D+Knfa^J9QDZG8yMLYrI|ZUjzK zw29S@h&>B_hxL0Z!_aSSTfMptlj~_5e8qO+VK4pGu{JqWyCC8jr}U2NH?q#Y0@ZH% z;S|GKnu*#Kxx_EO0eo-mzFXgG#+Tn9>sRU+A?+uKcv~^EIz^1BeL_&y+2}gg-~0wl zhOmq2G81=SeuI`RtuMd9i3K=Ozn&8Rq6-#>9~*zV@CZSl5P% z@9_1`x%ujCzF&p|a#Aa^ET?oOacCYfb|KZ3H-k+Hp>6$0CIAtqKcW5W}Y#0_{(rWt6S_o z`2u2tyo*aZH2XQCb>=pcMLzK#({5E{(?O z+8+ss#52CtWg}x+!w^Wf-tw)Hjo{?lE+LxJko0qFJD0cfiM zHZ%L2X9d%=}2FOgB!^IuGlbtDK>zV@vj3=q_Ar*7!Y9DQNqKT?Ts*o zND@K|;C8H`ypBq3yZ~HIl0nZmv~ZcWh*X~o{>3Ma_hz5b=`xeelr@dZ+sUog&iT`g zwv(4Xy06-*tid*Yin?@*qdK(?LMtH z7`q1ep|KKiNtA>ruU6nxj4@Rpt$7~QzSfWG<2(tMHmBr|C9@UHTmQ%w3JpxE(BJS% z{9nu2%R_st&S>sx9cF-8j1VfI5b-o zO`tZ#Hbj~>{bER@eeFDv7Yw=#3E+6V!c0-wwNAq0*OR5C9_yegM%9{jwyyRUdpSyd z7yW##vsCr0vSw#ZSn_l@E=_?D`Z(`mkuS54d0xLY)npb1`D>4J@(g7eJ& z=5-hMbhN|9Vc$k~$K6ST&j!x1C`s#3kv%2ittQEjdDKW7LA~2RL=$`zAgLQKf)oF{ zbm+qu3ZM(-uVo@}Wj)84PSFXmtTSZJ{s%B{0oInzyp(EFzuDeQkq1?qz)*#TN`!o` zjZj{eqPMz+F?a}D>XPq1IXS6BFndR_ad3oPsCmNjv#Oj>b)#gz(Gl-lFZ>=t3?oFc zC#9+@{*4Qe>AA<2DBVQaXueam^@xw5V4t?zO8pTV#_D)K{!TbMb@DPdCGL;#2)7-G z+q`-pGc015?uAw)!fQp4L>$O0U)ak3=i8^(ZK@FZg{ftlU87%?U440sQ%jUL>3I@d z1j{64Ebx6_!*w!qb2?c5~W#iDBf(9GMXMojQcLnZzgC7}3p< zMCbapaI(Ob&z}JBj!?{N?d8LiO=r;JeX1dcPzM6E3+~kN`T$EAUflHAgV9S37mjDU z6!1o$WQ^T znKf6aoFpa6%)7CP0lsp&gI?b~3%}`7u$qV+FV=|Z*G|@@Q&Rk|llc2J=%7HMW=;}G zv1_OUc2b2hVqwidsY45--xprcE1~le^lPNwvKT1x@LiG|`^c60L`4G998uVfDANxu z7R}qWdb==6bBZ7eL8EUE4tr?Ei#{1S)u0Bb+EiF1@P(BL&8aveQIVOHf8nuLZZ*(n zYGL_yQ{n14z>Pq%Bi=jlGdBvQ3dm2N-ln8vfPGR&0j%L5QK`wK@sco1;gb(paiQRZ zsrEPtAz>PMlI0pv$09|kP|_*EODPAEbkaCW^0dR0p)3eTtLg0CskdiD(+ND`a$kS? zeP!d}VIpUS1Qf>iDIs@(D$j$5CYmO3ADv-mM=iCWk2jQExFfIR*VzQGB`%%rK{qiI z9C7JFBzG$LI|rp9z-9JBMWgYE_b*@}$DmH(;DL^nz?U6>SvM8UT;=L!1{`fu}bT+;@i2n%xXuV*9W{Mnt zxH@uWCT;3}Nn1|1PZS_F5O~p0SuiafnhjY%7B5F(Iyt~5V-?lCpg-x{io4RLomSuM z-D`(mZn~VX-310nrMT|?j*js}p}9hLiW_9rTcKM6#|Xju%`|`o;j8cW6`VsEQOv&k zM!xRlnobQC3h&uYjlcR1RW=QEF1BK;|3Fyo-3+i2G>?WF|T8VLefHFzNlBlH=V~ptba15k!B#{ zhUKN+f3ESI`NhT-n@aI1UZvbkcqhzN+ADdK3syfTe)%%ptQiPU6W2kJy2zk}eo4N- z=8y=){TVYXt3pK5To62A81v9B^ewagrU*bM{jxZ!(AfTULzkf8(v3?a!--LSWK}Iw& z5C72oV9W#Q2I{pGdaJB*5h4@DeJQUf_$WPFvcr3tPNrcQ!ATy+Yvd;w6Ki+lf8WVORWhE6tN7o_xZe46!{V5A!?XNz z@V@oz_$fzEZ@iEYD>Aw4RTe3IQ)D-li?645aZ&mBq|w^iy0VeL7w3_aJJ8bFIrqSi zDAG&NQF9pRzQ?5_*3YAXXBK2?Jff-xhiwPf2ET*Q%(CMzF#I;zs?lm8jG@wCT%3p2 zf>n-0uG6K$-(e~_9p>YQ_qsy>tr5RNK-zF7aXytI>Fu2^sgavuC9=wA_d0qTN*8-r zevH)MyhgTHMvf>(p{Q##@ZscfXK0_^3!syV{%}B9edd(-CLO$;TB;$i03K1ipveZs~#&6>6 zK2QBJP~gs=d1T>FqNelnyO;(DV{=GeHc|>|DUvK%el5hwRm%iFyud_#t)VT1M3mqf zDHXU%)vaM)pba?21)3OP$oc)QVlG0JV!z zBsJzQXIM#)GRQE$w=no5P&m6+%7XQKD0`MZ#1)ri1VDN^n|TB+i6w<{49U3sgHXi{ z!3!~}!4_|zi=d`&F#Tw$W$pFa!0+`>edo)c!ISt}@hd{G@jU$8*P3JaUj))q*-`FQ zm1!J=I6O4nz&%=NlRDqpGvc;+A3hU;C3dgIxu2M~Hq?LPU{JKlqvXR+;%xvIvTH5F zMpx^>nJ0D|irzB+Q2OHq8v}n^`aX|O1AkyjY0}F-MbmM7Gu430Whk!>uv%G2L}^R# z*n4vW<;3(zWuqk6a6ZB^B`#cyOF<@0DR5@~xTms_K&qwG6^O_0Vtk%GxjmOfU(+S# zb|*{08P;?)b=Guc)nCS$3s-XuVNt|i$(rdE+>$lu61GWo@2%mh>dl5r4!9n zL()2ieO}L=W)UlGCxqPXOJ$ia2)ZYfT-C7Z|0#{^W_omE%%jdbV)@9d1#q)dKD4FC zMtu7zqsYRHpvSr3^h`~ZLHb!_Mr4i}d-sJ# zr(zcDF;-&6v|&qY#*-h$yEnhw|17fov16JS3OK+j6LyOnH?h{pNUyAHn8)HZ$wM6@ z+hQexU^*3qDBd!=3uYsddgH<#QnYZ(0%^@Rlj}5+l`?R)9u&4Rq}8gZm4wNL!-d~3 zLSO5_KJj|E8{RCbXZ)1Z7+#e{gF9C?Q@130t1V0_P?#KUJh_pac~D71Skx8hmXZ}| zr^Za4bv_VpkD3VOAJ?NKzfe~6QJ;GFNk(Ubd#WbLs-xC@Pd2`8bO?bQZM<-gH#?Mb zl%R|u0P1;+B$?W(*p1ba?ooo&mTlFCKLi^pQrh|{x#q3ayR8>?u!SIdn&8cVW#%Gj zYvS4;Mohz}RZiGxX6=9Zt_S<^>(Sx*;~$!&9Z&9*eKg@P@5WY7oIsycEmT0aG^?1<`DmBVt2B{~TXVH=0zBBkZm*FDz4bI}U& z{HKbrD6%IU?`Ht^dafFuLz}!>$MeXY7g;pDyX$Y3bHNA(CxqJDYQXL zX|L(ynWsnrPPs0wzC1x1|K97_{$S?KLp*SkPOu?Br&tn?(-s&eh_eZ{%{zbH&t1Cciccw~D$RnpBa z>GfgSTvLHxj1d8<|747CcBY^WTasa0)V2QQ3Bstx_(EFYStS(wr^3XZT{%Rn@;_FX z=Kn)sA`9CjtEmIWIavM!Kc&v?%%A{{UjQS(8(<1?#GtXD|49fWen;S7(ZZ5d+XvKU zJpX86!#g98dQqRFakQwu8z9CBTZQ4MFItXffw=vJnESfvAJF@nlGej3PTv1vN_zi( z$X58(BGG<9a{d7^_m{vFtNBG38AtxwE+T36O@IXbe2Rt_7;=WY9E1>$kR!kt$m{6T z#tA_IM=<;T$!|fQ!igev8_7~sA-__7uA=rTlqELWG~Q}pCG%tF{l&ii`JPzGYH0ZA zX3pQ|`R1vspvGopD}3W>>m2irsNRT9m()VGdL58A9!(lFrac}lJy$G+8JpVeUHe`7vs<4iSTjV6&K z1)440EL}z^<1~V3IN9K1nO67Co$mLC6X?&?%IyCBSMCorz*w65e81U!C=&!m)R9`A z%MHcs`PJIjU?WSc)%(>ALDy>Ik7g~wwL7VXG{5Qv7$$o5iafMX4+d)NbaUL%U2MxI zc1$ja*Iu*Due0%DlSlUafb*K4o0 z>L2$fI-+pUS1dd-6==&9wz}1AWF@MI|BJnM{H_Gt_BE?w+qUhb;)-qCwpq!FZQHhO z+bgNCl8SA2_PJwp-+j*AqtEE>F>Zg@f52Mn%Np^sNFRJ7L zf=UlfjdeF1dl??IlE^gNM9HG!mXXsclxjVFdz$<;9hXQW=OmB0xv7(jQ0v;c^fi*z z1HyG(f`{|i6-PFv_Z$NUd&sFOv|Zctv!);0lDwpqbHoaY!4XaSbmE!HG>Xm%LIgwJ z+DL~)DU}N}7S+yC?PQg-;ZjorkW}eEpaK^%m~sg80e9)*H%QlB3Shj|;Lqkwxa(aKP5tKYvGz4^dZ z$8jZ;n}&rO1>y~J^Ho+^dFs;t;X;=3_Wkx)z2>*mywU08}jCC zmTdWJvy5j(HQ*p7-LNAhF;tDDu4R(5dgcclu=3ZosQSTB1EW8?xn>#CL3gGOB=&aX zBB=Q~U1WN4K2O3@ds}`l!#k6XmUsDohCE{LGI|kK)N9l_d}hVV2{#9!lz6}~VL1D5 zUHU@it=lb1u>X9m-pB%}g3+BYyVE$0O3{F0BH%K$aw@f&!X z$*jEIz&>M>=bJP8n#kP0U%b$={S|JGBbqvd0aCN`obg*!V(I3HS6u#({{6K!rVSbg zrMIGkmO@?apwC|E=N7ZxHn26G3Oa|og(#-jup&vViDn!=a9w}a7WEo~-MX~t-26%aSsfdN`K{x;KoY@U=q%6GTWk+>qZjKECdd z5Q6*{4@AanG(~qfaIX|SL!32*`AM4oeT&a;m?H_?ojF&0gN|Xn&Nb-?9 zG1A9qMZ>wI`@7_gL7q@(Iw?`(@2OJ8b7J!DswZbvOz)rUfxe01gUMHGLjA@5B)f=R zxhULJa9(~0DZCG~!F=T0=?+v!)diMDKj@tJmhvhLLmomZ_Vlo!(%892GwKH{OnF;I ztAzVXO!Pr|IzR3%KL5FIbxW%_`7fSi{~r1NxAwH3|4kYF-%AsTxv0}0&Y1^o>g#>xve6Z)cgtl}H`@H9(VPEYWA*n@}=!?0`^rUXCHJhcW?y zhP5WXZ?jJ^-%Oa@{cvZtZdc6g6VUJKb%|gsO(2kQuT{SS@ ze1*XH+;WNc$P@i>DrGiQ1?MER@`Gmn2R#(8!8a@?qVn55&coi`{D(hQ2dnx5LcE`& z$M+*K4}uC2>_a%sGAdCqc{saC$vUXGnVxGa-+x7CGwj|7Iv90tNc(j5wE`?vX)MpC zyq^rBVQ9>hZ6wyUYW7R|@$og%eLuK5?VGK%6uj&XBQYsALw`NiPBd)B^ij}3b4X}W zG?)lF7HBC{#aAH!88Yh|fq!<$P#Q9Mqh>Sxt(eNL6q$Q6e$;{VrP13NSV$mZ}O0 zK-!_LS|3)4UQ$-LCohwrIUW;F6hdz=Doau>A?i$iv>=95z@#Ez{l>syZKjzaGI>8j zhh7V}&Y~Cxw6ZJ&P+VbnR!u9kr5(PRT0-cuJd9P(!-^KR}lU#L~qi(sGu~5-i^{6 z1{NR~;DyiiEXk5f(-f1CY!z9llz^efCx(ydJOYX+NSue+V~K|er_-zI#gId{#_q0Xack%dBeANyZw zTAZS@Tz=J*ktX&v2hi(n$@mU1;Bre0UOe9!Xj!Q%r_5_-200IaH}Tzx#1$b*KJ$?W zAB-l5;x<4}A@SvpCopd9R}|EuR74G42wl{-Uyk94I2Dk=Vh-!Mu~tnW`KgAbEpz>_ z!3SD+;pbq#C^MSQZdIGL7^>Jgv06*TE^VY&9pBgDknP4iZ05M;3)l*>)!QDxjli#L z8T~~d`eoF@4kXBqWCq2#vui%gb3h2dD-XL!7WD78zAT13C}-OrXfx^Uel8J0ZeL1p zkpu@Y^~01n*cT%yN$ZN*JNV7*+4Sf@gM(Vncq$fgZtg6=t5y6u;qt~W=M3@ZuWv+N zZe~$(!ryEZAda=_BkM08!XwX*X^h>E5^>_HB?+H}O-2aE)!Q9%PtXp@v1( zhGv2xfypa5_IZs^IQzn>!6w$h*;RWl3kO??b#E*wu24f#87#lqEdsSp(QGIAI%Q{5 zNeD60oqoUNwb|7vlx0MjQ4%9kr;t)*oe)M@zjSnwHl-|z9)2>ae3rC0luG%UyBh;7 zJW+78;}XUp9lI5yM%7VHp9Z(LK{z-IYNL556M@Dik#xos1)N~XUxuXY+Z(um-Y+>X z{j$bjvs-LjJWE(TiNpsZGaE7H8$~I`VU?#0=z$-)w}NMia{wf#ke#L*9K@Klj9nr6 zZ^(<-kTpZ;E(n;pF&hC#h&&CjSW0|yxJD%T!}UwvF&?W|6!E5~^_p%{CdiSC#e&RW z;OrR za&u_pfg?y-?rm;OPf3WelPQX-fEU6oj!rdBJl?5P*~J>1IJh`33KZ=+ZaFwdaa~O+ zC`yYVA3klLp@NpdvuOTvz z?g6DX&nf@;0_)HO~Ac>5(2h5-57-GDjB4Y|8icvJAN8JOuQ zGgKzyUs#P&8Bz=lHSRCLNZKb*WZ#!9yF?rvkvB#0TwE#kB}^~XVGQXFTV(7-Z$pj^ zfdh%VdIgGxD66ec*A1`N4WHN2Bvloyawi5dN^^K~0U-*eY0W{hPG@DA$T?4Jz4qq0 z1c$Mc;G6y+iSVf*r?r@ytE5?KFfKm@hXwDY;M)Nq7u*I})g4%r?p(HuFUW2HlLcUc z`?^HxII+Lb61gX-!<48^{RZ+zC$Boq2m`cda5=dU|v8e&VdR7LZ|xCj;^P zje*?@DF;#g_R%tz!pr8g0?{%iPkk~#5D+JJW?Vi`O{IiBePZ`H+9D^2(LN7&(z5y3 zo)-wZvgtWOPcp0VTcjUCJ9tm0A=gzL=x{oB53lfjf zCA6!ZLGGs~qNL4Ssa;|GSuwQL^yB|cvK zlhJ0w@ctH%w`-!%h>a9O%s6)h5SrmX%G!c;8X%m=8()Ftk@!dZ!$@Sct!0% zkybZQH&kequ5aGppe8L*)QSac9fg2aGL)VljRM6AH@vYh1~BorJEo*GqDF0)LI*L~ zE^rF62u2{VytL%CqTNW>N3SQ5^@O2MpnXP0R-A^Zwle~|JI!0vv*o_@C+5YPNu zTbrxve|z?yNis*U^xp_6U1V)qTfNXBenhLAdI{|ZJIMLRPw+t-tr|ee%D2 z5{-9K21tSNCMgLMANoV_mUWU-361DGToBfJ7nBVTyr(?099iQMwZ`?2Wm4#KTc`h6 z?-1LJh)Sx|f)Dl(>5rL0^kw$~%Qv$VM^Gy`=XH-yIF5m)9@SPJVOy|Zbd09RYu3GW zH)&T4@b$DZKz6+uBqq~JxJi{Xtm!>Oj@bKtky65%SlfqW6bZhVTYk;;DPv=9rq`^j z8~~273st>%ZAyh2Pd)G@Q+jxZL*){m}6Y&sVwkpSth= zh$ww!d#!LK|0CNAat#sHT6uY1hp0IY@so(+=0ck3r>lE2Ulm<=dcEYsX{#Aq1H%K4 zkVKicitEYJK~hc~w;gn*i@-3#C)bOci_hCR+3h1Y{YA&CR905aY;LHtKhKX>zUg{f z+7~_avkIlznq8b^FB{&y>pYiV5e!dG zAf>o+#brKKoJ?dmeSTouKT@@NaxSv`kjL;Xz=QS2v8~gnjgHhB2Kh3KF+EvaZU?v#OqDUM)@FxkV*56gqFn8bMyI)wBZ8!q-m3<&+-_XA~ z{1ghqF}`rHRf9D+yCf|t@SM0*!67W%h(&>MYSfI>MFFRxF@{b=r`)wb5=-(o4D*qe+FPI*m#SO#dQ;}2 z7f=m!P`1-+e5(;DL5e!_pT!4Zn9Zba}MJnm?=8A5zU{AJY7>6V53+O|?em`1ZgHXEE}4d4F+w zxG6(dKe~$pTKCWiSMedvSxQMO(WYrEuvBJTE|{dv_KqWau^y)OSL2_dclGD*zRr^z zs6Ct3E4E#}Ox^QHqrYwjt{yPy(uLqsoK~{3!&ZKnCN5}k77FI&v=I@m>L1gs~_q$;1D;9W?2+{ix-eNK1I<55Cz@wzFU>8JoVbb6-I=9X2 zm^+1jAZ>J%W2U#VjUgXZ2z;1?qGmvCHS|HB0z~rX%pJzpkACUD{>U!+BxlQwiKl<}pg%J~^4plu0xV z4ds!Edhlips20u}>Ho3a;P#u>4D1+zr}SW6?h!Z4NF(U!G7bD=5-H#@0&^y$sv2UB zAqJR!NAUv*vC>e@u=*Uak~okv?TCa(8Z+uIK1y7{eHT}vvM`3R6PJmT%j@-#z&{^P zxEr3!|Kf)IcLwmk(@bsox3cMfv$DwznffLAYjs8v_rKh*|40B9Yg*cW&9~n#^ofZC zn>vxQdJq|JgjSGYk!%K=FmbU)@?xzbp~zvf>UZBCJ^6S=lm-XG1;)sVYbt8I?oXDl zywkFq(9Di6SX_2<8Tos;xSxHb5Q*i==EYCT)z@=mWH%4mRG$; z_gXkGo-|7Bl4LCy`$w!s)Y;S3)7kOk`lJE7yO$d&N(L>MP6ryS&vqe1SScz=nR;*g z!@#Mq!naGKO)_z=MbQyLcVaU`z) zG|F^3vgz?s=TMmBN^O>{;H9Go_FE2ZCTdO#o8F64T|nXKaWZjm6}yf;zDo=Hl%8@4 z06P+F&I^lBYUdaXNZI)N>T+WnOo~c{sT7V*8aT${9DURc+g@Y>&?NgC`!U6o;1ru@ zPCc6-LzQ!2fInQOpw9p%-<~4G(`pe2Q}Etyck9uCpi~NOnVW3T- zNIP98ywtJ4+0u9wN?C1jHb z-k4w7i5>h(c`|k6YeeP(j#!0RI}UQ6-X=BjLXLhn+TwxwAPti!sZDvYukF2>#vP!) z#esR)+FJPcbx*~ztLC83$raGfmgx2~zafxF3$y4q~lFj~MQcTH$66Jjg-|SI638WpiDkL(J z%~e<|oE;Kqq^ViJe`ip&voRa9LH$*LhdyZmBsOs(VjLA&bR@FmG;f9}ab{;{SMdkW z4u|&Ik+%f@%23$&v?I3U(l7Q}`gHTVsrWoUMs7tKW`PP+LXoTta}1ufau+0vD>!V` zh_&R%X4jb_?K>rX(>(g7sc{Fff1wm$kC-1RhOC%eh43Q17^OX#JPX?;Fkl~$<|afb z6-2$GRNeg-!Wd&`!~(BoW#FS8w4TedZ4m|}Cm2LCE{v&_dH#D?!W#qLrAuSDsRHYw zBzl%B?36NdtO$ zjm%H_pnLgd9%%89HK9Y8x_L#Y)scUqmnqB@NlH7fy#b*|Og6H~mM-^OUms5O{M8Du zl#CSN%X|~aP#8kMeSOIoEGiTDQiv~j8v_( z_LrxSuP=E#fftc+@KB{*xI&DrEhOD-NS{r#5g-!<_K6`W>6bFO8tgGwp3Qt^g^8lxb>Bocn zwIPonPbagdx3SZqmA8|BH#au?8Oa|X+&;)U(+6GPAar)Jj5LgbIOtGPv9l%z@uo9j zUqWtb;*%Uz)w-1~K5x9bii_QN@eI(SXzS%+B*ODK)|QPNJwm8C=#2XJ6lZ^g(aa+n-#{5{f*@xD!X%8@IA?*5HR6i^uVXtDUzHPFlmxhf7^QD zOT^}P{`ireBKZVk@%Tx2)n(~kh7fpx)6ZcQ5NNxX_c;g-<`uaS@--@%6QXAe6wuW2 z<5F2)4$tPut)m>8_*+pEy6efqPzqKV$D!5=zs5;aoE)8)#A=*2ytX z@w3s1b?01$RxX`$v?EvUXgSiVjw!f9wfG6_Ll72IQ-4(a%ilHe3=?#-f@EK1gMWa3{t2;d>cK% zYc_cFAIz*z$4g_^9;yx&UiWQ>VlD({NA5dIZf0|Q5ODAf4C5pFVgjp6#q8?ll^F88 zkWt){nxPvR*NDjqqK1NEHRQ>}IFnpl$iK#z929gZOU7|+$xzwCQD6*=;XmOt<&i7- zjtG#Fz3TT7$@j{uPcTu_rgTaF%J=#$UE*ihb+*3gyrW|Ci!}CXyHiz)@cJDPF5S9Em5sBgXvp64!& zpAX(^ueSO7+-`8n=e#|zsqY`(Zs+vS`s;N)d8>YEs`uNrCb#=JZvM9EbtQ8Yt}M!ADH{-u-rRB9O~a5vlLU zO%>PE0`t4wx6zWLa|05;0Aol4v7X=JoK%*=gHcruh?K8WIXJ9-bY+R{!6q({ZsnNh8wQzD}0k2Ywfm6ncBSF{v5Ga*Fy&_Cg8_lYN zO$|D(^g#~KRe7fa>Nf)sAr6TjbjVL;SjHAaO@Oj8ut2rQ4L@-4(NZpRczuQWJ6hL| zrX`gc?|MaqG?-GyTh55%`+RYg1T#c;9Cv&g=Y|T8hAoujj13*S|$XfaaX6)apuQ{tm`;`e=yVSJlyu@( zyRAO2@xGC5U6U&SJg9zEV&6P$EY8>L zsG-8v#61UHHT2Sw%^ z8@(ywHj}Aha{O%`zMj_(8>M`RBHE1_hNVIzptq~3z(2&D+}#wKo{a!VUi*Q`NvDC# z$4r7VNj?#wrY1J1q?BYjjS*KZKycCH?Pi3-ze$#?(&u!1vVKzb%>RG7m(RkWRwGQo^}GZ^l3L*6%c#2t|lnv1<>2QU{2YGE}qSMqCoRY zr-xP1CJ+it!_W*fPN92>Wi~`(VXDS5XCl=IHcUsMkADni-U@a_ttptbfyD0)YGLC- zR%u8GJu94rR$bOKPHDka5EnZ|qUG2>xHu2~84HF8^Jt$#BS*uP1AauW#K4~RC4f|w zbdu=1>Gwq#E+6DAAX)fkjLKfho#%fk0Rpw53m?bf>du)cxgz`f?8-g&_q3qAQIxPG zYH)D~GEC`MOaQ^0iE11^dpF%5h7ChfL(5d!6^bV(PdSAv2QLxyX==lFEK(Xz9BH48 zF%f=pi(YXI!v<7UyBX+7#qhX56cD?CHl-n0;s)VK5g2$rVmkXv>o0k9L}#Y+fQv*{ zah{?P>*PEcWm;>5v$14JKo-&iIeWg5ZH-;+YWAwam-s{f^7MSpP6vO!dsqb>5FDvEKINA1(W#(g9@hOAYb0K7; z&5=y;kcTD#SZq>;Vo0%uZoYe1tKf$0coE@aRAE7(L={5y<^BFZ)bkhi5c<4PwZP~z zgTnG)Gt_!21UaSXw$*+Ux{!&i)1<)I{`ll@UNaoM-Q49PRXEW09mQc2IO7E92{!HA z5fG1IcRW-wg@H2A_6Rnx^2R+mECz6VocQ=lJR!Y~aB)Udo2fb>k>G3K$bx|*mgol7 zQbwjswO$#~rN`sXNLIEx$e1IEnfU9z#2p4yL{4=wr!ko20Bc}M-!t!7eK6G4eCyWC}C2@&*Cm=x&~=gY-`?_M#@tT7jWH&1mq8(-C`jQ6qKW1Yq@`zr2W4mq`xUFb=znInZP`PTq8m zNGq(Zo^UGY-X^OO(1cFYvqwxU3iyB67`gUJ$Sk4`f+h+%EtBZfR<)yw84r!cc~ z`3uHN;}jef{jrRUobBvf%OBAhH7G)FE@wKZieieIDCVGyiEdSb{{Tnf$n{-7!|t?a z3H?&arJes^L-N=JT4>x*5)9vmNNX;^W)i~Iz*(NoWBV|(q}wB*we%hD;8&^`(1T_k zlo+5L!Xe?cha@vlT_E7SUv#3pd1H7rXk_ z4YnC0l*}?fYDr225DyBfA`OF~(vRCQhBSKfgLpA`85r^q*ANqdQ?`L!ve1v!ypq_{ zgg8x6E0gfWVEKVHKIpA2Nk8;BtLOJfud##(DnX6@NAtIh9Vh1_r)u^CZYv*|K9RYK z$4;UB&l7TyzDAM*Y|qNU&$;L>8_1O7rag+I&aVYqTeNU%1t|G&5J%>9=s*NnB(RXn z^$ouInH9DBxy2ZLsl)886luTSjv0{M3>S5^;&d((2t3Bbb{tJqI(iz zA}3L~NDr-L_XtV!jLxj^IVCjvl=Su_HjG&kgK4~E9 zL2zj-7}58r+zeE?A|Db;y@;z9UK3sLPm3Lq zM{O&k>Vymx?w9)Sjb5K6UhgM2dkUu*ug>d%E}Eh!;Dge{skWd)m|B5-N~jOb z1;Q`uDuE2_Uq0lMHjpIgTJon_mK=@ZKErm$Fb4}|sY_#YLEhcMq|Xi%o0>0!r}}cH zfA`DtO&bX@O!&bAPLR6Sodkb=zo51Dx`y>0DSA85C)imi(T(p(CLU4X!|S@m%h^d1 ztyK+7%-PU-N5KNgg~H%&2^HteICY<+*(+&^en=)d7ISXzy)%|F1w1%|r2v2UOxmh6 z+|sUnhuFg`_HyIm0tL)%s8mN@Vr-pX6rvV{HW;#ySZcnYJ!K|;w-5-id$>8Np#rq3 z6%qGd&s2pG0LC-=rhTWpX8YT~N);cc;3T9;U7%ac_7`zb0?gaHJ>%Z&%3`xcIO@h7aI{TVE!9F3J4ai#McMD37Jm31k_~*i-B@T3F|p7 zsb+#6soaDN2eE-U$5Bzi$ZiXatl~d&eIrQOz372XJ_=K5=WpHPC|sSC^OTAoETkQt zx>CZu);Uq8Meq=5#THpU6rpw@musLSpNh?)7m4+;Mg>ndpU++g8?>zwNgbcO=T?M6 zOZ6U@W2ZzTot1hwW=SFC3OA<|E&gQ`2!1+4OnzKk!nyh9AYecKe5a^D&@t-#BdtY4 zlSa4*`gcF^Yy#vqf&JPH7@wIwmxifL$#5J>6JuWQEu2%;V}_FNPO`t~lno$_T7h*A z-@#{mk|AoJ8U-FBzkJTp;b9Qs8vChymUVnW4^DzZDf5wn{3>yXBuFaGl>Po0{pfnn zb-M73W_u2eKn$&fJ&a?9{jnd*?p4Xzg0XgWC>h>#oPtCgcLFw_ zejlndi()uw^Svc$`UpoQrba_o&7N_q`{m$W_5NXbIbR0<8Ck3a+8V&|(^xZzA5vIHktUMlI75N40y+YL=d=T&3V9^qtalW7 z`6&uXVr+IHfXZxP0e^l!Igcm}P0DbVvALnn9pfpbIfVo$T{~5VAOT*Fo9xc^SK>=| z&cpo~1$lGG3bGgW1JEOs6ka06yg1?Muy)u2h^#pR{^7G;?Rop$}+nCu4uBm=-!XcdbhDt5tb4Zgujl z!Lz1`9#e$CF8Fg~+Lx~Iu2`;8A~J+}&~|~Kf_56rwBnv-mNJMaFsA4`!++zQ z#SPFSvgPbqER216#1&91^zoO8Y}ruq-A~EwpE6Cwl!LQ9$Ozp z(MIV}w#G#~|3p7ycgZt>_-f+1zS_hMOQ7ED`6KQ3$8X)on63xdK(A}iK=fZ~Jy-x4 z6)xYd?V|IR1>HrRnpsoMpH+KDYjbRoXC}|h)%2N*Wf2_Cg>ojXpBJ2CjUCn*8(*)! zf|dhb8t?I*smlMLPAyLl|7Yq{>i;cu>hJ%@)Tt*z+`}XRh<{0);`{GVr`-Q1>eK^%=i<_x zCcztS?ZjQw80>D=2T8Iw%8)Q__2H_z5xANvwyh*twRr*AeryfpZ#-~28Ac3N+2E+9 z2m~4c^U5KFFWO(6JBpElpqr!EU_?AWVg4b-Z&IL=LsH+}whxbNS(bGT(A-R=I|k6R zTQ=-+*;DOG7m;lpwjugGPgNp@J+0?0-E|(DC06*#dB;{ku>VRhQ1Wx{%Ebi;mQ7SF zdxv7<<`oU&jolkP-U@FPd{W+~gY+IuFGvRnL5U@3O3}RfBa4^xQ!q=+0zPX-Oxb8e8V7RaF zs(>C+{_|hhTq|n;6#UyaGKBxq@!|YOpi6!7AH3eKQ(7>vx;;UM67!PMQroAvP~S*K zm^c6_-QRgsWF%3*B$-?ff42{nj$`?<i^_f2bDreSJB3pu@p* z+Oe|0z+sbuu?dO`_IY66P;PQ6z3GygWW1c%bRKJQaHz()gaX%=ilg?#q#HE=EoB|s zJ|4e6xMJ4d+*#Pbo1Ab9Rkb&yM2&iz|XX{`HG6qwxc2- z^|5p&n}g;8gZfs4?sUMUw|ao1ABp_T1M#y4t@9q3Scj z$eCcY6G2D7EEIg$+Mfh%#nU(l@8emcGKZCT{0Ckt31ZU@PL-XMfy7`Isy(~=G1%*j!uWc{lBNR{OeZEdM}kGgW*c&tlS zYrlT|e3%iRciS6k2Bs(`SaH?COoPpww z-Cw5ZX(q8-wdEXi<}BURx#(~p>hK&VA1jE$^=yJX zZ}(d#=$#`l$ugdpA=%i;6Wlk+)-$5s!W=|>!1^=02JpR~N7TfMZVVr`kn<#lRjd@_ zsUL-VDd$s2l(!N^VfSDzMiDZjS$Co1pG@MDlZ-J*zV~Xr*wdRv9Bjo#u1=vESl^PZ zRnRFD6Sf&Pc)+Ri6CR>Jv$5vh=<`-V`d<5vR;)B%BD*k`W5o&YMWZRv&ON0Xs$xrT zJk5*?Pl`|WOPGxuNcs@3^cV?w?7_Hnb?~-EqNujy4Fh~d6RDkIX||!J5r~194l{1A zho@+gq5e6u3mGx%TNn=(lwH0$~3-F(5OCh zB*H3u{F)huS|3{+;H*%H>_SmWGCpdVZ&8r77Vv|HawaK}UTk2W4P%bO#ObVH*|mgY z+G&9GV5mLDF~Ie7VO+~4BQ))<0nk!xo-M%Z@+`vb*h`9FdX!LhYS;?=z*Yygh9V$L zE=-Tg&z_rgh+90>SDu*Ta(mFLVG56A(JDBbyEpc(Mn<2Bf#a=&Z-+Fd!oellEYuYn z%t5k8Stdtc0FZU+4Nil~K8F$Hv*BwPjXC$-OD5gz0KbTY3KD-9}gRumB+j9n zDGz2bG-mUu}=4dmEJs<#y^x^0}dPAC5l&ZN80oNcyr z{aH&&w%e$yex%7_>IA@tG|n()-{~Zg^#TkVDyX7LtJ^=T{=1acRQwk}rI+ge0;uqI zqhSRZkfoOvHGBb7OmJ*a8~1JCxx)K1Fhk3$_@+B%BH+zg7BV&Pcq^2^n?C=CRN0+` z^q@lRCozFy9c84kesqptS^7peAlc%_tZ$J?hq>^?_)HRWB-^^QP9d~~?dlu6rmd=h zeh!X?NcNipRJdBvo2gRT>7{2-L0jlX^6}I@EmP2%QU9H}74NhFW@mf4`uT4ag8)%3 z&?-y^HIZ_3bHtf1f=Z1Rq#ffIqksA*yUTxO^k?9ZnP7u_`v&%vZmxe^`H9-r z8-hr|+wZg>0TtkXE=0W*g$b29^Ye>+6>ia{SUOp8!ztY6CddVPX*J!l6)bYW05d+~ zhf#h)?kP|mb5(hvh+m2pAW(N+(20h^ru7+_fQWoF;#v3lxx(%K)~Col;%izKUeL%PDsEq=ziTJSMOtx z)&Htm$OsZw&`V3eO%v8IJD(Qva=ebXd(f@-`)-{#*$y`XaTIh@1jPkqZ3{gSGR3SU zMVO8@Fw`a=4jQ^>0jg2yR-c@LcUzL6}!YA2a?lt)N(lireLb! zP+=3e3_>`~hwvo5lnb|npMy^xZX@2vH2UiiAXe#!jQa#Z_)^pX8;vqv3j%aDs5A45HBApFjU#IdK;; z2dcdm%D4LBg*DzEoN@m1!*P;_>iAzAgxvq0cK|ygp`^xw|4+Sq z^Z(GxtNs_geE0uv_451wNiPro|3WW6^grw6Z~j>?fBOGiFR$=l_404bpiVn*-@e(9 z|CfW1`|BXA)&zdlJ{VspDJU$1Gq8}-2l9SinJ%L5QCwjOQ$G#ZD(p5B!s0~(in2U< z{N(J75;sZE4d6hHI8_hTHqW!PU$QtbwdHU-{1V-cb7%eh-5jr9Z&iD0H#S2SOT~Eo zxqa<&^}1gmH;c~QJ|C9vFBYe7Q*RFLI0g7WD*dH}#7>LQQYsmX05EiAPW}Fj!qDOd z+dhq-Z-FbV8=K&|#;5v!meot?Rn_uo^phmz$jPH&fZ-Fw7RnKIrF7q4{*0z}OHaUa zV(1s)b2hjRBHC~D+A{b*uQJ+~%2~FoVWygSw^~uzPSnAcS|f9}6=m1l&rfx1wb}n1fWu*}q=XYq(i5d}v4pZTIiA`8J$&M#HsFa87fLb0}L(7#QA^h4& zC9l=ltl|89WM{m22(ZP^Q091{W1DMq9(XdbjpN2Vz^YZXxBLA72;LZRIckL*JGEWh zZ#wv%Sv?=YPK_DNN&#h#j!mi3yqu}xWkYARD${@bx5vei{=Bs%@-((~`||}N-}iPf zbh6)~kzQ7|6QW#QU0t?~;LM9ed>*^DfN^G}Pw03+&x14zqaD%OGu5rOGr6{=bVR*# zH}lr_ z&L&{BTjl-vw=8f|6cZ`BE8VCB*5R^oP4(!O0#LtK%9hW?HYaR%PHmVFf^HCxCV zy}o)$WE3fI(^n-8#$R%P@yuy2=WIK-Xu`sm7TX&-XY>gq@rWUn;umX<%)j_HI{Ft^%gc{G&ZF{c!sG0n zGHNRZWH{f0jf!PS#FyetoQ+^99g9WXsfo2Q<5q=XDTqzWB&`*lc2L{=hXIns`&eX} z1%f32K^wQ7T9vM%B016Xszo!;jaObgvJ3h1PSkYi3?C}7@HCm#^`AHVDv=hLl=SrW zbw7QbPH>U}(bZ7G2B~vN)_65?+52f5PLw$iX2OlPN-`-PD9>_38k?&>^NXz~^i%*V z;t=tw?zOOwZ7Y2JvA^m0+)ruq+>|M1mhw?sTu1N)e(OuSJ{% zA@JinUW%CSbjHH!7d$DvVRx?&C-|@_0<;4qB^zK_irE-O6<0R^$^&(Kr(zZTTzEes zm0MpNqN}S9amqtY`BnvR;<<$x&!_5q-1nE$_sdvlm?$VQ(4$husGPXRC$ublv1Wh% z$WBXiV`EcxJ~d`6|L?Xl8r?)kGJ_Q2b0yIy*XfG{2}D?IqU6NAn5 z7$i|?;#9-OC0Ur!>0xSZ5P$KBm~5dho>j_mL2m>KzpyA;RR|e2ce(yfXGn+8C{UBv zd>B~Y5)O*;`{$cxc2+3KDXLv}Q2V1y&$geX$u@ZF_U>+5&CPVi$0FKC7l~a54!CD5 zb-;@G92lP%R+$1)U>Upck+NfqZhrn;k2Ukw7hE_B>fBGuI~J<7qXRn{sv$}ef(2@y zCXoS&Z{Acpjl9z0G2Cz|CfP{X(FUvoB--j~sRWa}N`yj)sPl++0Xe$qd`ZpI5{ycpu6)Y$sz(X& z;VjK0Ny;ppHpu3_pSHTX1)`>eX9RUp&dz(oM{oPLzgHd`6`u`qRUkFFA`LN?#J&k@ z5Elqj-^WU|Cmb3bFebGTPbH>lYM>Q<+W;rxJ8&&R%UW>CGfDS6$dluFJ>P<7NQ=^` zT)|~5f`nHrgf0sWOY{mpi`AfZh5n^5FY?y0yxE{?SEou%Z3!jYp?(Ce9w+XY@6Lrk zXYUfW?N9f@Sk7N>Ianh&5xyH}iN84v--O?G%v;3CXif4tED#ZaxkX zSDo9shMIodI#X4!f-TPj^O9 zpNOUc4b%kI^0lG?MI%#aP1uo1P$h@kL$mmFAi2JNP!1#Ad{+&k%cQK{1+^jrvi@WI_UYszB3Gy(5~Cp01e}(qUIJHKi_*lv&)2 z`m+fPi!1qouo}6{bViTwytXr{g}u!aeJ$XX7N@3?}lt!A!*$K?s2KC+JSWd3mQ z;>2-Ehj|)BewkV&P_$PG5DTnm%5Pcr!-oQ~q4z+zz}p)SrCE_ndozVWc@6|QN0fWA zo7<2QQw?^sWN;mMpt>r|qmOwFfy&PMB}?e$%S7|WU|L`K2MIK*!S&d{ zXn%s+`sng~bjhne3*YQA8assm7da*k=)_q=;p)sDUD(z7*VcM;Ksifcl8_uFFeIXe z(<(tEpbd{2C!z}j8mFp;uHmNF|Bs`kRaT%lOKBLo>Y7wDh zH;?CeR9`eM@1WijlICKjWk^D){MVtAui?sF%IXmdx~)Th-Ysd%WHPdE5-JQ(4yzV$K`Nr}u!M)3)vjiHltVY`mb7+@ZVH27yzCOU{AjiYI- ziq-XF(G2B}n!=1T3NYUfLm!OzK_&?alfc5ap_Q{jIrKtF=2_MF$vZ_y+=m4Bv}Bx8 zPrN>)&5+{ib5wB^#j9u&g&;IggVZWYV!cQsv~TZ!9V|oDlW!%YL+nKr%D-(EI5KFP zpI2SF^cR~T$0?6R;3BtW*;`QU&@k@Ig_R1HhjjQVACos-@SalgRC-b}?k?AiQa+u^ za>tIvL2&fEZW!rs#`$N-WR_K$s4=q3dpoa!V1zDa%NssQbO2N42U|VbA&`!yxK6|-7GWgz zBrenZQonIoB8EWXy~3L<1%x8P{n=j3l`#o5KPZSiYLG}};IIz$VE;Wc;`Ot~+ra7T zj>Fc-=;O=AYg)z2*}0(8QmTKHk7drst*qM;wI=Sa zsvXhy6EmG}yq`ICzsygqrv^2!WLqsHfl-ejd{D_BFAa`1X%g>F2r)s z=roK#6`3lE;GZxb`>MDpLZkKw1S-)$Ap9Db`zQ?#rP5LkP@ldJo8otS-~M5Bmg@Qf zDgodMWdMdjfb@ZPj>h^9hGz8oR#qSN|GLlr8~1ss-_Xz;_w2f9hgb?beJUPT%BO^3 zKhe-NH9N=vH1w)KVWw#z+8G`I4NWPjxduQ(XG)y4 zhdEapfbt3}c-JH-v7<=rym>zI(X^epgyN*M_(vi68g0#j$C|p^sf$+gj3)-D>7)|r zzUicU$HMLBB_<8$q+9!z_yKcqJI?gp@KR7LslNJ3iz?65y6E50(31<3Prgh!lowi? zB%O(5-K?+I^Q2c9MRHLXzuvFl!+~Rr`=a< zq?Eo-6Ra!WmG6Q0q?L;ISbhT8cd{Oh^I4$7-G;bojy6RKj=ed`-e^SU8n3VIYBQ=EIj^GOTa(w{5KlqyZfa^Tk zcpY>JI9tSo}pKwMb^S_hyJ*(^~h3c z$zNs-C|2O2?mY3NGo@c!5clP0(k(A% zGShKtaiw?YFKQat?)>4!fNsR&? z0YGM1$!;(0_t`gg~kHOu%}$3!}K?HL|Rg+ zN9OqN9=^vuCtP7IC1l&nUh&)YAgJY3lO@P~0UMu5JG?owzWUtu@CkkS?yjQinCjMx z86OYbw)O!t9Tio4Zdr<<$+$TrzhXfnRd?<9aLCNi(X+$;?sn)3g$8km>{;w1AH(`TTCjY6w+?qTb&B=q6Q;31ei+L7y+2zBNrov+ zdSW5g|J?yKTlETRythS{7OtJ@$H$Tz59d%2S08CD?}w*{>Fl-vh%@}S)`TukY$JrK zbU}>Sj;J_LD$pGnM#do_w%IeY7ydw;i$^*u%9qH-%O&f*9iK~WD;6uoT%8SsP8K{@_ou50ld}SB^QNbknB%A28Mp-3m}6Vxw>VEF61D1gie96Xc9%vOB2`IH zb-_6u-Pt^co{I12+44priG7SX#szVg&UlB1@;};VXV`piaeTn#s1`G)3-}VKA*-E6`11E zJ{}U}xNRBLEk4jJ1_kXz)3-M{5OEIRyb~zr7?v1=ayW3M(TseH^Bu-@<5S-tTOa{6 zgm;S-JH!VT6e60#t)s`3&%qGuz>3c02kMPy#$ubGF*RwlteU?dOl0Gky z1Q;%k(#lFi$O3}zcme$1(h8-M~KN|G(S>v99bYyLn)h<9eo38T+OJ{V=YVdfW@~TnT$8q zLud}!t~F*F$|z4#K=Q}o{!F4>0^;>Wa`X6;aAyFSYzoAFn0i?j#RF$~+GMrKdCe=x zuZ7m3@BrjbikRVFMeN@wV&H#`e*S6D+W)`N&-6o{SstK>-9!G5B4!9EVns<>wt$S{ zpEGb!)Y8>HyE`Ar*wCRmAP{R{br)S&eZ~%MOQc0OqBO3zF5w6vq7_x`9e;who$MG- zll==AD>2qSvPnJxkn;~`AH)heE`iI9g~exztPl?q_pCRzi#s%%#>r|g4>#^}x~us% zXOQS>=;`_%wptQ0B9HA}4{yKA-rb*^Ov~@f=R%n`(JXk|H8f~6q`m=5auhI=s5wNH zC+5?ba*0zq(8&y6Qu5=<{UBx8f0<}lapTI$hR45CFA4482Gx<9>whQhSb7|-UQ^-U z+HX&h#u-8c9A?JAMMpYZ*=8uZ3dF9VrnT-`yIeWP6$YrQs{6-4%|T#`mJ*m!xU0pm zB;!dCbOjXfQCCu844a6<_e4QPyodE&)?<7HyJRD{JINW}QAJQ#4MYU?bn5y%2R{kq zHJXy`n^Lyr9nq?eo1iPp<@>+7=q*eZ%PN=42lLp$3YRrRd?=NvnB#=HSYIn_Qq;ZA zcJ#UV8v7&31vSfL;f3Y^w*vnpB>IAgU9vz$fsN+KQTJ{PN6+kulPtGnT=@t0~R*j+#~f(@G0fX#)5eEg?T z=z^^Ibkgbsr4ObBM$@guoabu}BN|Pzc3T2Dt9zJ~QW*{OO#1mI@uhI|#csv4>gKeb z{>r=Co?=NKU7#yfbSPmTz+iF1rAEv?nar6gWZRc(sz$mfd@l}g-(G87j+T9_>nwt` z4Lv>PZA|f!l-s7Udlk8|YH5N8b!~GjeTc1)-Co-~tG?@k!hhPKTEKz8sF&N0kM3dS zvSq=>Evs;j;{i^tg29ME)l6YIoXpU@YS|k8VrtY~xp!(njzer1E;OU4i^?(=aHrs= z-&v31b1z)}GFW(YTV;)JSJ@nGi78T#a^Eb0Z8ftC~@`n3^NXuP^{ z44SkpzR$uorh#0x1xCEP&*0^j^`qUkS7^&RPUC!$XyKHo|Cl7DEZqng`uF9t?yKx#T;_(&kBQTBq+hK+P|lud`UQ5OL%+tYe8!En!x-M@51P> zg7j|`B&xr>i~p>50r|R$Xa{iLECBA?AG`}AKs^dhl$LwXh&X)yfEwo^L7nIH++607 zFUm_mryxgBKXjY=3AkEG>D=LJB$lgbl$}>;CH|(WlmTdU0E6=T|id+2`DF1@6!Zu?r^LI{hj&b?lqkt*R zO)yRjZm;atz?vF%9o+3js>~g?RI_>eZ9JX~wFP5m6BS3+MTZ>bxG3NEKvoEr-Ptw9 zv`S~+(X4(%`;JyB+4V+fXmz~tMdCY7=DU3oDU=3fGiJsj(GY@nMCay_^JO{+{wXO1 zkNcvUR%&WDWHo0cb-vzdv~Mva8I?>2BfG%HGR8>xWYvKM2dLgr+6%Vf^jI8?y0A<9 zjWuW48GNJPfk2u22uD(3)k~1;1>*9MiAq7oZXsH2+F^4_m-4EYS~pb>j1k=JqbgN4 z+_XL+7Fbal(9s$Q2u;NX$`ItsfT0aDC5O2?kC~Nw;MWq?fDbfyN5{I$6Itqm$}#2c zhFh9~0WlDBj@?16c{G`K`UqY}JHk$K_y-#W!*Yhq1$=;{V=zGGdiNGK>*gqBHg(7x z6i-kBrG!-nOu>qjY>JfyvNyr~=&K5d6u{c`JkI2j_p>6Aa45&&8a9*eVAl7qq)p+d zd2QX8qjM3p1KB>{7`6jaGAM>cO!Al2rdXndrbB;%E!FZ~$vA6W37`4qvG{-OFzg2jSraHuG0#D}{#33c%*oIQbRjEGC^B=F+_I?j(oaE4BM z4?czEat+m&Uj1zm6I98bIfu%`$6Yed3un^vpC)qE7aS{fgvXPHS}mhuXv)WpSQFO!u2a&oZ#>XY{C2({14 z&JsBWMmL|%yp~S24VQ0fS_%DaP3TW*B8A##ZJ)NM9}YKPj}Bp;4BoQN&wP*BGXsiM zMXPR_i|2V1jHc?4+Tt_08E#+hKI;13S@p40gfmK^CU`Cosl+RUZ%_g;^BQT=#l`Hm z`qMTHwNG+zcM`|_( zp{qF0_I^8MPoALWdHLahI-_T+>b}xK7AVTnYi6U{w6LyiR5E*wm!4i}nb0rX&m3mL z(6wKCM00f1jsG-J^)hs0cXJIiu--0mu7eJd<9MqQU`_UZ-=GdzJnTt+E&cL+E()5X zHa&TT@#owo4K_(3d*z6rT(-m^LL#&}w>n~Bi5}go^)@!!hT2<;&1U$ovMuT|X_Kbb zFh*JP$Z(DXgyd-pw+EjX3rVrMfgZos@Sm-`EZ3OYTVvLo!J$Q}OJ9j8+G%#wC9QZu zhk!1u7Pj|e>Ye6JnZ8`fxU+tFSg^_Rf(3-v5+*biftT~9SjeiG$~b07y0QV}V8>ASPA8yOj_d+C|@_IO@MJi9`o0qjhp^r5rhx=3`s z0;X3j>$byrc3 zaLY7oV|ce@SKZ9**ZOP9C8L%keIB`jb)eUAV_Enjz8&ppAG^Enlli^8oQn}4!k6SZ zTFFoglQ1=F7D(6H#QPKnWUp{bUXGYoXx6kahAve^oOU$QV|R$ShTiP~|}DJCMcJbZiPm!Fvvw z<1XjkkGNu0Iu=!woHJ|zla1AcnLE|l{-|{&-ji-M##(lRYn+VCWzUd=V|+`fb@%SV zmhx_LU_*|BDa(O|Rc_+X7)%|unhX3ul z#aEUa^m=ine(@V|F|wHdqYxRE^f%EdrvpaZ`ydR`yf-33>OBuGl=n#!E=@!fdO}eGK3M>bn-NrOqg$BaKw$FW^s!j%&ZGc_{3gn&AgLc?D`jkjdJp&v_r*^ zYDpQ$6Tmya&URA-9Xxv*;TI!qStPp(@PD;Hond4K<|h4KX~sk`t{Qo3G0Mr5inX|` zG-1ZzDG`hSm6EI-IVzK80Ig#wy}@Q$*?{YC;&znD;*p=W;Qyf{>{11VG8K2I6paSb zsHnT71KpaKOL zyhBNjj}(zhjB&X0+x-rToQj+3bF#3V()KjO7YaUzFcLOvL!UCEQslSx4 zxDDM}DeO{yND;hexaQmk70N$RvyX4XKau=mGNsmG@I#{Idw?oNEiuy~o>ANT?>Mf? zJ*&4{>~dW?{BFRz1FJRS48II}g_%Y!EEa9@2dpASb{+w_3_=-EqRXJ}DJ zk*MaBs>nbyTRA%f6uPXo_Q z<{VRI6~Z^1*y9DVjB6V*We|fKRoDEsGLvV89DYZ!kk!=XnVQBnfuq!av8jv!-IOkUst0EUuor&oFi)8+m~0Q!!o znaI$#p#|x5c6ee4O{w*f52$Y1ggh4W2U0hHqqTiOQ1fl(hfbB1P@)t1oWtvDd&|{3 zUM@5^+@S&yNwg<{LX^Zx7`ofCqm_4?y8PhCN-|JSa)aPl%7&FR2V$e6cA8|Sf@cZW zP&~affxzKy7zI|i&U*UU23l;9ADDyL2Ux)32#eAsF*Q(eNov_{dW9U5S0#=?2Yhae zp+VY&NE~#r0I>x2T}+$j_r{NTwC;3P)0?I#ma`BsLWv|jM*_*3+56| z_jng4?>pEthkrFd0|AC4V9{r!Xj3K-?4;bmmL)y5(VqgAM$QG&LavVZq$RNCKn!yv zGCGi1l74nWBGd>e6fZ!LH)3^GB`vhkG)HKw#mSz@oQq5>$x9JQ)#on{oHM3JxdOR7 zt-M!_egL8*3ce|0!66tb7@61FE+$&DfIb&}n2j{4p$wV#MA4fJaG`A)5>3Ufq3RxnFOr~mHwWbVCmcVEX)&#=`enD;Uf z>xGLp3i}6uH>{zg=(Q`^CYD;v85)i1XH&k7Fd|tqwXIzPwsKX~X z%V36xI6yVQ_o4Y@cIzo}{~B##%kffbpedaWyS!`{f(lEbK0>O`>iurIxXOsDJhf`W z-yRQf=BafbldX)HCb_KaW_`>~cfq?yBGT+7`33YOgbt1XK~J6vQ!n*WQ~J7T5%MxU z)bJI0vP>zjigB@bWLKDhkOY4P+)Os2TwD4m^#--qHZ(oM4-2U$JPc>vfpJrK-%yY9 za8sccsA+POwK~R+ipcX4WjQ1W8l0=Tk>cZmh(qm07#0&(7=`e?lX6G6+ zHBE5U4+Zqi@lrw06m*G(g@;S@yf}H4+r&?HFw|_2TkQ&TQ}a1_`=r+~tfDp!eM-0L3h64gl?pB)9XG5B zQ%hJDoK!O}@=^J?l@9?tV9SnvCogfu9KJPfmWRN%Q7dirBe9S(yl%?Z4o<%+Q18rI zGol0hZM*)K7;L%iDyUvg4)k5qNxN*41z|ih^ucJluH|)>Ox&dhKLBY$9tQ)rU93iv zdq8q@qHKi=ZCN!bGq7-weAcY4%$uSY9_tkTS%LSVHi_(x*t&3(Q(*gyBsi*g`P+qa z5}5@KMQf}Y5i?NZSLOY8`ZQu9gF=%S*V<4aNCo!b+j=-kOPR-J-TQTS!iJwn`{O6bz52;y{C(!-g@-3@cQD!*e`w&uS=sQ6iadM5ldK5Y z#@icf&nNrW{>Qq!=*47&nBf%bF3b!%@c8l}GANz+5T$Z>>|@Iq^djtUi`QQEeLr;M z*Vb1jhvPCTX74U04=V!&I7rN!x-D_DaiJ zSUI=MsQgfWy75d+@*XXpD0i_W6i`W9zzT&G8{ib&vpu{upgwH&@=9_!tl4_L%7~2g z?Yd_v#h|~OeS3O+^4&VK;ZNC6b;+?Q(zc00SJKfZ3{(w$PtX8xMu@Ol3le4ZN_z29h;$JX98LHos<5`= z$%+E7CcAL)wb-e<5ok|MOd^qfR2L1zWjRkuPfdcgQiQXcvpij$*L<Y>^DV~iqa*uKwSIk8j}as#IFve z3C_*E$w#ed8A|4qW@?RP{(-Y(d!53*kJD-~C!1D`pEkC|0E0N$Mf%GZpLt24a>-aZ z|AfinI@fG1v>hRb-cyVt6Ylqyn?F+Im@Yc)wRu0R!ZVqi1{G*gEQ+=gKkfw5i6)?# z^ye!hxAkKIXpTB(^5o$BK%dkaj_fiAxk!vF(1%QCg@gn%mx||89Tl812NO0zQ?pfb zbvNO?UHZ>#up$~qdNnCoC89P7x)80(5_Ka_%pMnZPczQqQ9?ZLCtx9Fn;E3w0v0?` zb5CeAOh1!Kj$Y_oS7PhZCPg#HGm2pnr=Th_EDw~0m@IpK`>yyfa{I#7qmeNwD=9I^ zKsQ+RY~9YN_38UJ2>B8sN^4SzM1H|f@N5mY5;CCI3YVU>Ud7-MMzWl$G)^`Oq91{k z>e}laiTvR$wxK$Pb*Xvfy&`2FzVYy+IF1x5_FGY)Ii57NJ%~rIF>fG}x5y5-5~(>v z6jQ=yS6P=PPg0=Z?(Icj^1GkVsfq1$PTF>NP_QqpZG2|H$AqvhRb2K@fR6GPN-xB8 ztWsoVZ?bs4y1D()-!vaNe!MYw;}wxJR|Tsn%Y3313aYF4;KmNh;5YPa#U!enpPSAc z@|bBj2)sAi!ha)<*ZF7~ObBTey49YE-N1`?sCySj`_jE|;zFNMMxd3cEgu zw6n~nlBN666c&af*#FqUn2(t>A=7HtM{EL&sIO9sJzKj!xqifrUjf>}Oc+e2J5?5Q z6mBOhnO$?!s<7U{znY{vIr{-U;{x=E>%-Y!gvdZyScs}l???~?f8+++ij4b-b8n6~ zh&i*|kPMg8bb~`s04p;7kRq^mR$YR7Xa4Forfq?Ng(h9-sBfAw3b+2!Q;ATM$j~$iL}mB%h3@I!p(d6x&3nku zYMPlM%mxe&&~T(@}PlRqeKyUt6Nfmf0CU^HWXHguDVPoI%4o;0Ou$(o9Q~} zQ*j@vzb}oO3~2uNS?BwFwA1uXj`7s)zJe0;tQq9Eg{2rBLOe3o(G z6Pj*?lH1P*=Z-kW2RM|)u=mJmrhX7w82!ytu5`I(jdg;-LE588)--%c_H5G5 zN_>m>`%mb^>qS;adh;Oa-S%D9f^dO-u_xFjLlkSp?iF=s5}Jrt9uSPH{E1)b?>@RZ zc;2AO?lTN-W}8!7mL|YYkwv;e(1WvaWdr5(Rq+XVe?S4V551-x!v+oxCYb!jU4UQX zjZu@0HR%0xs}g92qijB~THxc3;>9Xu!6K<`=pDLTQp{xb!iiBHblbJ-W&8U9rLdM=B~E{jTFaV;ll#X;hZ!vRE-o6`s4uo+!Z zrRn@Se#hm z_;9GblQxWDtF0f^@DdDE^%RtaA2UFE(dgoPhoG(xZZtq7JS`#(#)JzmYq;UYY1=qALAL_9@ViX^&;v~Q4U?(uc| zz%t8+2mCmd$UH&V9_pKd#UvN>oDLC}xu*rJ+~rGvUo9hO=$H!1pg~?Y<7uV3E8T+s zYJ}fC_C9@7fCENLp*JPyCDadiHn7O*P=YmO4$cTucVBbjApt2hxY0e~+<4X|Re4P98tyrL%?L6ZY@0titXK0)DRC{xfzeRdY zA_dH7Y%qyLHodb7IBU^32KHB-IxM#LyhboU$CZL2wY!~nMVwty>!Ci6ayj6i(yu-@ zYCau)P={~a6$59s3F%(RSep<%xmQC_F~u2(4e9K7N<+pa>*FIsj z>Hd8GC3FK}T5wJGmEP(LvEb*pmR46cO*?hQ-dJd^@>rQHE-OE3 z)bdCSk%fp59_uJXF7Bm%&fz;7Mi}oQDncab5kpq`kp~=&2HAG- z$qJ2DPA);6#vGEopc@qB#T{>?u*S;71;yFd<{O&Om(b_~EL_NMykdLbBFOi(lFYQf z`l&_{58FYzUP2yI=2B^rC&^Ej--atsq+uxnost`e@1h*X5sX*jbW-P{anHld{uDX-4YceMV_R5Aey^W)wN#T4=5zhEYM;>q4@CJvgp_~QHhv=|3PnL_02w1i z_H7n|nl%e=&W?GaS-vt0o;R_Q;WL;4T=-~loOE%P04FYzJP=UYzJ7ES@`%U#u+KvL zRhkUalP76)`0teOJLTh}7{0{ShmI3|Q^c%oa{#0Ka44`Mt(MU-}E@VZ_QxW3!5l zt*s4&hui6n^-J3pSDhh^naLBBGnk5SwUC8A-L{n)GRC#fQ~Bpc!_U@BAiS9Y-QF)T z3EW>5QjP@24~*Vdq$-*aixQ%c4pA;hYzk+L8d^s4S=X)V^0uXywMWL`rseCv+9!r3Dhlem2B(~Kn{s`+ zk!_N(Sw7f(TlVO^ue7eFuYjC&js^BsM0B(xX4TWj_t3HS#hM^lwR%1ijsQP;jJ_fKHl;zplEZ zabGykaRoWm*u6SIE6Yf8m`TjC3@7ndC}&a?>c^pB1x1mw1^W;)5tZWq&FJOi!PZ(K zlNp>=zI;7`5lBTeJPNre+k#K;#pMfl1zBZ|&r8kH{w2bL8_$OiPBZ1k`KM==&t88f0Gt?gcmc)xj_#EdS`guUPR?$y23;GI#l zlK!;B(_%n7UOfShr;sKh89J34mP%eXr<>pcNTuk zZgao!P4plR#XFL~**deCdtrPWvsZW;D%N`aE~GYrYPGGQ80ih8jgVLBlbH}R1@fS6TlQ@UeGc? zy*1JTFhw__*A72hSFPK$P;+f}!312nC`IhLd#;>1=>V9bY~BE-DEn_r(Got+@4qoc z=gJqJhLL__iZ&e&9$|>OMn2|DnBoE+TV(4(!wNCb{ze!}*&AV5CNr5`!L~yVWTl5! z((p`o&O+0gGAd-R<8V_hf;M|I{#N7gG5<_NY)qvpM2II}PY!*!3!B$pp1B1Df_l~^ z`$=NdX*wt|AxqK_-MkT_O$=pbwff;#!BZS8X)$+)@Z3!fwZJFwl?h5VRP{V z{rcRZEoynp7V!D@1AZv~>@&7-q?V>pr1&69BQ<3wNh8^~8?mP-AEqitBSkqmF+M#( zO-CsuJMoEKekoklH3-sU4=fN&P{_mMag;NBaPU$d?lR5&5|P#ei?ogNh%1Ea=%}u) zj%%cNFC|&v6RQZ*Vs|5GOq&3&I^14F(;o02-iwN$WDNZanKAw%vwbx;pVVAz7p&i8 zHum2jKN!gj4w^23nfW)qHA(K$Me7*PvB?|GeV^4pHH;kb-j)i+a0c0tg~~@%`vYS8fre6h?0Uv+tz&_q4a#KiyTV)eaE+k_ z^_iDz{Nrn%uPBB5i&XieM5=*aGPVt`qJD@Ykt$vsLZj{gH$3}!#-VwBXNS93))JR6 zaF%nB@G7^@@r!;Ji_Ah;A(6M3D8fkt2P}doHsL{|66*eWNcbdcIbu#ad`dVcBzy+@ z+B$N>+`@tu;q8-_sHfOYwR=-9QG(~U9dEAgE@bN3tfb52fjJK{DWS^)kG@HT?V))? z#xF7>>Qx7|OqhlsHZ$T(OS$Y&?Wkh~{A7HUmnc67!-eIsC8$)PYwx-Qd=n}*fxnlM zug#%kAGmz}uy1X7=-i<*3v{l7ncXB;q@LM?vGHN)N;lGJBV{bqfHqd&f5!ni7DX4v z5fM^F^G58A!2l((F*VSoQ~hP#d1>Lzi0}Ak82gE$9;UzfC=GGaOE-(S$yYMg$e-+9 z&`S5NoRP;bmG394ITPx1$qmkxk|=XuQo_5(yu;hkI4RYdu%R!*18~#uACImfg(d;} zu9YHd?q>$14Y(+Z(Jf@3%qwSgcerE)Ej#vXM;r=-o*w6WiLiIXKgGKJ#_n|o_R5h* zy|e3JNlJ5r7Y>s}m+>YW{(k>AcCVZ)IQqd3Z0*m7$(zH^tloVqV)Zu>)FYR3^U=q~@IHtX}!B=MZO{#e0i>1s*`ed`#7Y4&%qAXi#m9&#cQ z_{?LDAkO;6zv%Fgpr62O%Xc|&u73rNibRT7D6Dj{RkGC(4VqB0-XDdVDzLL=0< z8W2m-leUKeV;2co&a{}Gd{9!dbicP=?)w-v-|KVYUc>#ALkmAC?<=VhINzG1Jtk zdd@m?cqPs92t%f2&xHfQn^W-BJBYex(87GoG=R0$hM8BVEi{cJfxl z$rQ7grs32Kic_RFiSShS8xwOqnK|u1h3Xbar44x16Rk@$cy!(SdL%G zs}YMKn4dTu>6L2C+GkT>+F~NyH8Y$`CBZ%wt)7K#Y_@z2p;@G=uaSeJ$^YQv7DNK0 z_{u~%fr1G78xu3QY+}F>Q^=}b?}(WbZ#XAna(<%1#e%6;fZWv28N&2K(cTo^XFy`9 zP80mPuA-~yq#^6YACZ_s1#9AB02PV5mxMu zPqc-m$OD4h{s*7mwz?Fg^)7m~di=rF+9SjV!qD?fh`J=9%;dC0crr{&kezr-B3cd2 z?o4|ax}N8vebtyO_`MghDv|(xu#Q0CACbChb_pP1jP0(i4joWubP->uH6G@DUkXJY zvQeL)hhcBJ^}lWM{GmHt&L~;>7pi0VMRosGv!DSr>mM=B|Iqz$|Jwb%uop}VzpdS* z{-iiR-a2q$A^%2k9(fqSj{{JgD=5wDmHwOJd>I9xI9EHTTy5A4y8tN8)Mr~4>k+K9 z9Zc`t1dNeMaXDUy46+BLJcFm|WWG3W#Ovq@jtJrtN9oV(?=BsZ`vs_5fOOgBSBZy~ z3CS;C+*#(5P`vR(#2S_@zzD^e3!E>$Ew|=AONxYp^0WhkrS-6IZ%5C0**+Ho(Q#8l z+85$UfY*t$o*B*%zEcb!GeV=BNsng;EE4n^35eB*DLNvETyzWT#L!akpq$m%o+Uun z4D8}Iy-QEm9Pju2t~#rW=swF+(k-!@jrs#GYfC#4ZFy?UOq$4?7loA2*Max@9)+FZ zQC+Gzl~JLplRQ>b9UuDvaoYQt49v*Cb$@pEP!EXWKooE!NYr4<-Z=#=qsp%S3d>2f zhtO(Ht2Q0pi`wm3AH*Abc@Y947t2s1BNy|(oVA{5#Z`JLy2sXlF#&+hvR)2-Sp*>d z@;$hfVRy6 zZmD}lUVqDT%thUtIVw?OSa(+{g*LN!Jn(V1OKc+|DzQQnF4#?^H+llWo7Dp}&jj$K zT{Zud$2BhgFdB+-SSw+OWzLM=;S*VIlg^c^QJaFlx3`5JlJk##LK4mRA1RXh+3%)_ zQ3pZRX=RPcbo~hj$Y6^36299%r!7xSe6}bd1A(Cdbbq=%8hMJ;Q+Qd!f3I0{-=@-s zEw-OQf4yW)Vx=e602DU}^iMBYECAIx&j9{i42a;{o!tRd(t-I*SnS3uALt6(v?ZWO zz+^a~__xqO`RAftz0b{mz?c%Tq_$we2;bJ0qU?&AVv#6>CBZjaac|mXl;E3@mvvt1vmvz|pAxTz5Og@W zZcwQG*!k3Wq3_5-(AEcUJFui$TZVpmXD%5#wWP-WnY~ryk?izwf%CV(wqa zl=T;x{#6|Rq&SBDRUH4b#gUJ->`)0HQ5^tn{hxRttN@t?Cum9c|0J$oQ9mZ9$Zsrq z2zt#bB8q_arXYtLw&(R~8=0e5J{+9q$yZ0a0R8r!bxHdUmj+~q)y+FUkSX?U`{@R0rs zvY|mPvh>}23w6omXA?JS6lm*Ug;`Y_C!AAaZWTZXe*UqqDI#rZ1YVhkqpJHH2$#1-S<6j&lzo&Em%~t*EDEX74B;~K8Li_cz(Dm=Ai+oxB-}n5L^U?e?&9xxzh-e4KKedz^U($pQ~d-ts~rz0nC0x4(^9J zHa%<}o1oN?Os%4!9Z^tzE#;Np8;F zaEUDc?T%aRw~l+^w~iZ-oASqwd;EXbaRYKw{-1W-LvPC*CC>_f+Hs#r{yQBv$}b(a z_wX4DYg2OQ+fY?LFY%9j_Yb~tW4x3*yubUcv&kaA`K_=2;I}G|NK_r<0{m9*zx%C> z=#+`#zA|3h7XZIC8W`ZW5&`_yCq8l8gt9Z>f?8^=Ikf77#toOJ$~GtNtZ1{qCpO3_ ztrA6=DXqv49pBq)MC;EacLlr9M;OE%I4?(`TmxW1g_2aOHo2n!`7yM6xjOW!{PgWw z^S}G8*NS?G0RX?1^f$ltXI9#8e(OJGr8)eXm6r5xW~E{O%t{+!{fDfyn_sii+<|#w z{>yI#3qj1FNqv-w9=6io??m@3q}|fy>TQGLqX8ufqT8 z51;YNjSaE_K!1PYxBkpa`{#b^G+?GNK|4wNfp$!0;%|P@T`(kAVDLZqt@4AHh`;%* z0`9`N&Ns`;>ecF&bbqj0Aw6!7|Aml#PayhLNKD{F|CjSY*8iRlvaE1kGUqu3DU^#$ zJQ#g|fCpuC$e*}>?!jkLy-Pg+L z|Mh&(<^Ruo@b}EYZtLpx4<*E_Kj(us$J!CbElnql+|^H-BpF@GcsuX?VI4_QlyWld z$wveTl+728UcQIH$hj z1R~l$BoMXHEBreNM1?;Sh$4SUAjYcP=+N3~D+8{XtVCijQYM=>~r?bN@Ze=C9`PUkwAR zeko24OP^Qu;zoG^CSTUakKsS|PN5NkN*g>%agaA7T4PXa(e$4G2Rk8KApHHwpgpzaO)-AbeZn|#Ys6Oz!ql2AZ z{aKt=BW+5K-D^bK&!l&S>(EDP1sph`MxbhfIU$3nsyqsOG3%fJsa}E|x|Kd>?Z-y| z_O0`F%V!N2N`|POMx*4ovDc63#0_={>7u68J@&whJX>-`FXoGIdjLB~y#}T3u51i- z=5_q19VD_5k@=e)bpJOy$oU`bpt|^#-|e79fE|=o{L>C%2iQS*-rh%gNdJqyw~Wei z?bg4gOOWpF?v@si?(XhxDW#F_kVZnfMOvg=L^?$Uq#FT&_qsvWTDoFC``ORf`#;9( z2fjNT_q^sj=RA(zfw=!%T%wu$GgJHmfdcIl(i;JTmSx5lA1y`Dfhb^dipf%0trx}=yuH$cgOLCKqA`@K7k z^G|e;AIi%M@=#U1;wCJmCd`v!dQQ&uP`5|np)Nlsry9%8RF0OXyVDxX9|l3@x3{s0Usdl{NfSa9!!7NdHi9x3uYB1^15yX8`2r zec!)kqBL0R*;e*`%H)2OHC$2A32$R=+DuVZoB1?Ofv+*s!5RG(%aO()I~uDR9dGH~ z?x`nuhp~ekYqI`~HzF77Z-L$t%g71Pabbzzn=MRl7e5u(zvf==dwCd0)ksh=_Gnhi zbKXwf<+T@9u=$oU4W{{)SpC>h^CYS6N&bG027-wOaYH)fr@+ZK_@HU9WmGU?3i5Uu zbf0%U0*E5l``0FPY;j=!Iv{bqf7N^?Idr{$1+&iFp{l-Q-+*=oL@uS1Pp8gROn(!( z*onzqi(I^O4IZw9wDR)%10ol)YmrNnMxRYjV8X{TNn>1VK;$B)d?Rw1d-1kaz_l_I z`c#pOT<`n-b&(3ai+_$0*uQ3W+=^VdFJ)}Z&Ge3xiaT)LQQBnTZYjLu-xaMnQ{(!;IUc`!~Vuu=G7S6h*VMz~yP zGQ_&BXqjAg*`q;+GI_B1$!2VpQ~{D}-J(OUR(5F`qH-7)tk5vY)-yg8E8Gjdp_DV( z(oT9abMeF7oPrZ>M{f@ulc;cnd-@-R^l)PAuI9FwW{>w5wxO)mDCkt?zXipPK7L?f zMy&pD2fB&BlP7z zcQjS-Ga0b5yi_{DW#ASWwn@FkIfl1AcapfXWsb_ec;L1lzeD=SWd9*wJh_eGlhu z-&hXqs2-zyubXITrV}UlcJhq97RKz7W{hY~&xE6$8mtQUuxqhr$+gS5l>3P}@8XiY zX6mi?5&du$?5*LV@#LZ;rG4{R?`04B-n~PAo!NT?>#Q&huXCWq=$+=mwaEhcma1Rh z6Io*PLLAXccVr$|n1Hj1R^rMHZz6!W@4^=nL~^K?8?+VGd#E>D-Hu3L=3+KyxEeo! zT3fhjo6%=zus*yUav`I+6IF3KDERhkskRUOhtQXeiaYPt7u&D}3>C5824VT?wttBr zT70F+U->=>fxD4q`pk1Nq>GinwXkd+WkSUy$Hy)k$p$>Kb#u+ zTTL;8)Ng-O68!fAp}qbP2wg?_H~SdQ@B5g5I(m?lKole;;0+)(21yCT(#Mz?CS9f7 z{GdoeAR?H9KRij+H;=gk2uTsYwnn-U666Cy(hfnJCvn-|4yZ+lxh{LU zdH!>O(212{=xei-O=Is5wFocq>idr)dJ*>0+gTG~P&-BNTCNq_YMMA(669s(#pItr zcsy_@J6S<_s@{%0$4bgpnXuU72COifMPr7KdspA2Pw93t`*yTM@A>%BJ;Ud zR0pZxZJ&q6r2T|p#p51H(Vjm>d05cS32Zhep2P#2O~;h}nX%H1(kakp^J!Q6b6QoQ zb0)OMb--qmidCuHiUWNa18W|8gX$Q6m!TzVQK_kZ#Kmev>cC@KzzJn z*QMh)OwcgX^Jq(Yq$SuA zH?zgz=~zrHcOF%2Mtmc3{rWR?Nlikg(`ahl@O%u^h}WkyA$px*v}}=dur0mOF<@sI zlj4rZRWS|Jn(ik?huV_qkq_26A>uFPi(yyimbEv2!qa1GVYK~2Ro<$*Z>n)&(4@jR0_tu7z(jE+@SDEp^EaQ9k4-f&6^sJW{`Ts|sD`NVC20p=Ohhf>516)4 zRe~?Cwk+f z4ha+Jw{36&oFmka@8*hu3+Va<%NRT(a9{!yJ{M|tqFWeXtKNZZ6ot?yEGe*njUuhO zA079BWJ3EpQXvz=&h#Ed*_0vhM(cZlPuACa()cIoyILuJLNEG@xz0jx(z5eA@Oy!(JorOZ zzLWMdgj9>u{9ctGD64Mn4e7V~ZctSwYW4v7?hLDIefJDV-;MKK-yM9b@7}uBcQ-xS zPDr{@_-J>l;J5%UOf=^1GQdVLxAwM0z}4aUg(=D)3D_tq<)7@Jfov4XFWJ%n8^v-M z)NEGS9`_aS!gK>(nA(02m>=jX6<=$j1b=4i*L&vzL2nJQG*i{2T=t>Bg&o}DSO~LhWh(=1k50WBE-0+GTI5NcFX>^cQQd=19=EFnOKft8sFK|>q5 zmN;nt&Lhi}ra^|94^=kVPc9OOO^PMnrhIc@*95}!Uc-&4fJMfqIE@QYUs2VlzzTP! zdjGWXu^|Pk{D+GCS5@N6zp2E3t4P3aaq@A_`b1yXn=p8>T%5d{okX3Bi1H&z4&rcI zZE(7NAl9di!d)kkXPXIu4R6JB`fDY)Z)D>AF5hM1nynz2c!Pm#56IZ002rHK^xAq~ zNu$~NlMXwk6zrT+G`;qZ2@s%_F#u`qHVU8ka|4>YigC*94jD2Fo4|7n1=PgHU}95- zI3-wJq+CzhWxrNA%AFb`Gbq8Xp|XE>Tx=ar*hB43YYIywv{LbqgK@l)f8BXU0&XTj zwV)SUY8f9B6O1(4XoWAzDp#j$7uk!7Gxt!*XrDS86;mppf#29Yct-D9b2pud@`xmJ zGRxdaK35dG_t6zK0JZUfihe-jP z0O`G#0Lz7dB8mkBIfgXiluvz!LB_^5zUmwxxUAp7vGJ|5DUY>8bQ7YO4YBrwbx*yCNs)_`>T|K$ z0}`;&N{X5X`jLdfFEVCh0}?H`M#|o?&R*-p2U4g5wn--~;JaUOJbr*_P0%n|2#usj zCCDf8-anyD2L2op5-f*$`@?m_82nw5a*fK1Y24@o`7Sf7Rn_}-7~BRZ!{8fG=@^Pu zUDE+4H(S;wX{|ZUa}C7ipSG;DL?0B#fa`lV5FPP{rO$1j1nI;R#|FY?nbDz_d@@Pj zigA*RUx<8p6Pdwj!1^FvNE&uoBl&5&@x7PI@9HbIm@_a7;?)px5JIlvV_F}u+48d= zqd$Nlq6+DA@k}{|-+zZknC-ZlTYRp#`!)k_5tluU$gGd@EP;}8ru+P8Ww-Ql{XA-LKh+WB&heHL*j~=d@5>Yyq={GT$zj@)zf=d%Iub-f(aal#`5$w3xJs-|i`I$>aGB}bpguDQIQNIarQUww4gCZ3wpJ?(I|=CyuzfPnBA zhOVMI6MSCEYhssdsiPAau`4QtZ5CG%!@IsJ(`@Ek|)&Pp~GQz`mGoP&;JPj{=Rch6y0;r-&=r$ELlTJB2&+f=82LDswDwUss$g+ddh0A#RuFKsjGSs zB|&oiAKy-a?`X>Z;d^jvC-`v*kdOZUj-j&O?-n>1keT$apBv});#nb=^&2d3EKmE6 zwm!SClGnDMCQrm1#0rw?3!bVgzcVT990`1fB3^{bvicE+f?ZT+gK@QKK59#gen@Su z?L!0NMD1q3%@SCmWP;1mVR*zNRJtt;$EXf=-ARUND9k|oLzXw#&^~&;8NT4uq4}Ik z=ae&^E-AE-L5Pprpr!oxN1ns-Bvp9|Q?nwj&7TqBVI>GcUAwl0K(1}1SI^lO@!C*c zo0>zBM7@XTBR&Q^aCdnj0S{bWDJvAceSSp-t1PUkbwa|0Q{_AnFVD9|u9t)++sU9@5Z8!{b17p)86qJ_b# zM92H$Zns7j-l1a3wW9zP@RMQ+{D&O{i6BP-+qI)0W@CJNHKN>tm`hVTR#cNqzug=eeHW-F@qIWRPU;pWcm zaP$1&>-Q5fFx&us()6E(8`aogsWITGf$`Vh1CXIWc39TBgZb{04_>}v1~B>}E8Mc_ z3ZAf%1Kr(j4qouW)JgowM-WEtZI5N8d*r}#u=oYJyB3!6bVI<@6^XhWNANwVOA9Yf zc@M!_V20x|TiD@MPR`)Ayq>>rmK-zRg~WtdJLubP%XTV4=;=UP5lcOoQ45ZiP$iKd zO_uO3bym!cq3=U2un5R$Nh~t%U?#u1lRVai_lyGUh|A>On{DI534#~4W3BwiZmiJT z?vKG`q0~fRjmfn%wL29VyCXJ9(Nvs#(QL|do;96cS!js2{aDN|&L~R$p_p$?2fv#8 zKR0)RU(NmhxVh6pB9Sfw#q9Uj#SF3?lnpCNcQB(vEuCD3y?ITY@XW^g8Lzh%7j~!s zdX^OIB>5!tI;~{Fh4<{bL+iQAhu8dzr;u6D2zu@uqOas<$Yr&cqZ+T6)iAIl@ceVh zt@}PWp6}}Hs3;RYy0c)yxr*6)zA({|5U>r#AeTi*6jL+;s`tL=H zJcpN5R}~U%?{f|+M{1q;6c)yl*|ESYjCLWtz)X`*F*0%Q$ELem%%79|_h+e)8l3>%nX;mfQ8L)iF>h0*lCHr=af3>LusNKY6_N8PfRO;l?=ct(zYv|sG}ATjN@BzL;!1x^ zs9JP`k(f_@p&c6w!bl)TQ%}X7{)mxaRAQZHA^GfK-Jc?Ujgf%7!ANk?R({7wa0iM? z-(Vz`9$jN3^1lpzqGJx6GHO3Gx8fTXM4L@bRo{BAV&EsneGNVmEy6IrH{79LU#jT>9#vocYLFN}&p8Xgtozk)egO?vK)JHckr=IT#|^EWvUq~liizyK_`gUy3l;_Q2P0nd_&{K+1pQAe=JfJ zHjlV}=$^OMgCC33^seat^ww?thg)~G^Y6C#zI4DgZ|4$yaN#?04A|zaw*eCmw6&I- zDd%ozKe-gI3$$1_-_yk7Fz!ObXXP77o8SQI1qR#jZU-1s+b}WM4eAANi;q_dK)nP% z27a2tr>lyA_yZaj#OSHehj!nhBN_kGw{FJ&rCayE=RPn6xep?)-3OmMtIox8>_)HR zPi6cT_gB8;zb1wx>*E8tctXj>4AN4>%&lKb-koUXmNDJ3oN!gM;far3=v-b>Or-to zs)qLcsut?cuZe$dbqEPiljLqhXJiy({AfyYZUqsVc>pyDS61knnq*Z14p5U`ldgXX zc_2|sdLxw1e0VLCP92tM1%D9AfGP91pnL3_b5&Z}qw(SY=B<1E3;)VCP@COst-Zj2wHJ4MpP4&~y_URK(SnqQSsQLnPPH!jRf{CQR;$OQJhWL}mOg_%_{ffWh^lS<0)$?q@9XmGJ#rhLyPYBb#CvVbw^fpvidcu#a%8F;zWG&ajXZFH5 z2qNVQgMU4{${i`yFKC-x(LSJMn<=;n;D<{?K%xWxA+UD_NR5;|@LZDrq0VpZ5WlA6 zf1Z*Fo7mnT|3TAY6(B}?LLL!RK`oLzS3@ z39aruo^P}wc-55Gl~ETxUU~e}o#x?a1#ua0r_1?KTzcD!L5_&XL`{3rhv?!!%sc&O zKdgZwA4T?iuroQIIb6KhpPD9GHE`74eFjpzyJdfNn^KTlj(T&3O&E(3%5hl!`vDx z4G`pts`&8S_cL_8s*lf?;xs4u!(hDUFM1B^py*!ZVtX6iMMrpV)xvd_dKEmfQuXCs z$~orlN5lR3r*%W7SK)LO{WFp0t{;XUKHfr+YNw@3hy+(Q?2~SfRMlabOT|ZBq^k|R zrz^0Sp@XLq;Cuq{5`k_AZ?2I+P1^rz0^7*QAf2MbKT6~*52IbmE=+-+tK)P3y-K!E z#qM(hElW0Nk~-D}8pE$eFnLqULxVj_Dd!RO5}CQi7>|#$%pE+%c5pq^^w7&M56l+7 zcA*n%-D6jV_LnlO-HS!dcLeuX;P<_AZ-8`JUn?$r8Gp9E%scHFmG^M_$V*ZDT~U8E zVGGpeIKADqp#5$Kan^b|qxxE{@^5e`gz+`@oy%6Q(o#}-&jG5;ZP`-6rz}|1FV^PqCI35-vFhPdcE{W=N zMnZ1L>lEMBIzUcu|mwLLVU4XN1F! z@LFb0b1xr;U7u>pBrRyl0{!#Ob59oq+&2pG0bMf`3`K8LoMc!PKRgK28Mv_gl>EhI zgP04+ydDb+2FHTTM=n(hzB9(AfpU&&S(P)D%2$Yt()U?Cw3RXQx_&x=NlaZO9|F?! zm;}qW?4ovOek1uk>c9)=$8BF9H5GSCiP)20zS@f3C`X0y*o}$rrCdt2r!dx0klF)> zeL}!7L$p+7(OP#WdPmxjlT!6GpE0Zi!YhaQ6ghD(<}PMC{Bsp|2G}?#$g_3=2bZha z(VrHzspF;Y|InsxO+>%i)IYZ=|9KoMuWN>rx?4fS)Vu`yN*D`pLM7wsd~;WZW8D0iKMn zjM|UQt#6);8R{4B)s~)!aU8?~9|xHfRv0N&Zj`M_Lv0}Q+@r4CY8w-t+N)M$ zy!*Q7dE+f{Z|9=fR_EL;>`#!iYJ8s{wJtQz%`LP>AbAzOnmn5L20z|-(vPpNBD<<} zFX!R&rsPqp)S~k*d=~|T)jN-#6?v?YjJu zkdVAUk&9l6i?gSez%Hi)P2;bZ!@KUt)Z0eCT%h&!d!#2j zpuy@89M3^(^w9tUkBGCh%sRvv!e?P?120PCkR0_Lf$?4a$AhE>R?bmA{1!t(geT_yZsj}%4o$mtER2~yHu zqLQ^kj=y^gCNXa2&MKknI$z`%S(dH151%N=E`Pgv0le6GKxrMt6LM_8LxH{{cX|KuRukdxfs!Hg6@~W79HavY{gyeE4A0-~( zW?Oac%@}BQ2aUvZl!bPPP6+$L`BL$64D%PlHg!g}&V-_>VtnUydmFMBpc#0r)Haumv%-bG7}QVgBQy;FlV6ekelltX z6d_cd?4fNu;7#LYh`x-}{Ok#Qm|cbqQu`s`jB+Ap!Z+xupi4?3+{oi5*i>)c4}ReF z1$g19`6A+0vN!7600B5>L{Ge1^(~Sh8PPKJoqRuXqp~|7_3g{lbp{rAuWAO}4`Fsa zTP_PP)$HnLF$f$Mq1qoc(RA%Mw`{sK{vD;@zqKde_-RkD$^Adr6MX#Rp5XYWJ;9xS z+7mo007syIgJaP0q=xiQw2#cZhytVCU2k}{>}9< zJS%sJBv}cqc#LGhJ6uspi44yUc4+rBAItvg@z>V5W}13lL66m@wDc3Sl=bt5T7Trr zF}7}F-D#Us4VpIvjtliiul+?+0>@4{V56ThdBo*mY`A8}qJu-Ny};|`Y4Ua!{ISC7 z+$)t+feOn7Dh&I_f18`3jq9JhC*M`>e~tdrCPjp@zAlou@9saEQqDjU(4A z5G3h$h$rQb>;mcljAh!5_hdX6*vCaBxP=4zxS6Pr37~ykR4}#?CdNp~dpIWUq2M&=O8gKN_|DTzN(2PfVNf(M z)2dE+L~8Pa(?tbf7m#qR#RF^e8rbj~;Yslx+dc`r4*=Go=Y+4k5_rfZt@=2~@NF`| z7ubh~jdJzpFI(I^TQb-D4~9=h?laJ+t!AiJ%sQt}k}e?SIgu>Fo1~C6q(Ax;G5HN0 zQbbj)g@t?g+Da`^j@6`(`TN>DRtNqNf;o;J^=56pS2MNAJ9|ftta7Exka9!5#;($6 zH1+NgCn`*Gu_zcpv&^^gZRz(J5|RzY;|ihD=$n1}Q|g6O$W|+E%LWuP!_Gvsshg=W zPK|7)gAXE)87D38YRv+w+KJTtEeI8uaElls4v{w;G>=o!S1=rOMHJ^cwq{(+_AvnZ za+Sdu8%O4fe(3z0!IA~m8{r8aNL9Pu^#_nSC@-J|cl_tIIo1ZF*<;{moB;e`{>{%B zxM>Xv!*>uPi+^Y-gmw8qnTLd1may#^PP`wDlO`fU5}etVS8}4Zh~+g2>7|*;y{izv z-Y8kqTs?a6c=&EdU8%*^g(VN$v%3RTWmuIYtVxDF>o}vN*ga}tG+gqrkPEZDcA3vb z2_KXx5m0|+MUw!p*)Eza^vvbW&wHnP@sp%IRliy7pDXZ3pUJKJ%k(Zt_(d}oLtP?O zY%8Dm^xif5+%LQ6>U@)YD_g6cf14)x;AB2}XPB_H@hjhPo35-xsH9A}-LUx>OAfy z1(s!@L7Z_+*6hxA5Dxccj*_v1e5PZ|9mFbt_lNx~UH#<7Q^r?2{!69Kv|an9HJh$p*UipP zg%BM;@*rFzc^p7Up7*94&jLCk7yu;C^|DN?$Zq;iOYyqvr8u$tV0jJ45;-&gGbpUy zW8a{p!^-HBus6Da$+iRZkeg+hN{QCJYnUuOk`Ll7JtXHhm@JjHayR`uiyfzcYnUvT zNn*)s0U^Z7P|BOcj-!D*=8E4EJJ{kYI+2aSp~kX`0IP|P&8nGRq_VOfRMLmLm6~rf zaq<;2`ME*MGEah6EqR|aICjQ+Pk(xaw0`w4_~#0|cAE^czytCxq0#w5W|v(fC7SB7 zly_zIu#^&SNP+_WGmgJeWL#z~B$wC*m6Xd1d^Myr-uiT?Z0>L=Xx_M8j8}i`S^o&r zE?+y^r>XJ|X$*6hDY9HA7p#bwa1R(7W>f+)vBBo^ymw5Z)znV|nU5ueGal~99f|4= zPk(AU{mI3z<_C*{*l>s(v{BbDHO@W2Y>-{G)7(DJOyOH zWcZr-P&+zGIVijG^A4Agq{77`^qkkU6U4A$1z;_BSH>IZ`#r=`fQOhs9n6^gt?fBTDrp#*r#w9?1PJ$$Z?0a`aEW zD!|3%CX04;iIRxIh?5hg))_u;no-PfRy!^B{c#5M9V>PCi&vhRrOltl&)eqr>y`KW zD^FL9^3$(Z-rrn<|My;b_yG?bRe`cI2mb!>%Dep){~g5Vdr%eA_n0cFq0nob4-i!a z6A*O7Dg=tE+EW{4XYJBtb2Tivt>FYs#m zj{t_im*4KKRyX(7@;}{M@%~@Ew{n00bbq+F0{fDG``&8($9wBS=8yMQn1BD?D*xwu ztLuUK7aO38O8=^o{^cyH-zv!;9_C5lZ6z^}?;-!Gl6aZP!llEM(45=5ar_V81TBe^ zpy%Md!LS~J`suMo8Bpu_w*_`PCH@Fa{c}du|Bv0r2&NAfGOO-Cur2&N+Qw3%GZNYy zGrTdv)ckrbtrey_3H2=V$}|9Bbwc z$nR^C-LG(uvR=T}g2jd9LvOau8deUwx<}D&_a_|&G4a~A%?nsFe!Iq|wngS10Er(5 z2NTU>+g~rOW6M32U@EoYOkO>3;z8?Hz8FPzlBr{Ux!qst*Tk3 z+5&5m+A33-1Y!3`Yj!B(xo2%8;dN1Sv&s-5fIo+j#7YF~MZ|Ku7!T$wQqf^?|U zPhHwX_M8?PvDE?i;Td@RN?3EhBkbm94_V2{Gc?yQ@QlDbzg`bFXtr;X}jzDqM z{8fSdLqt`Xgf#sP;PJQODszygcZ7idV*2D2s8JPR>rS4f(A&xKSj(($-T?>6roPp$ogf`Z zcgaX!%0E%4T?)qJ^CBURqk!g4KS0&kl z)^n01H*t}WJujlvpa;Gzoy%U63g<66kHtq5zu-DaZNTt3=ZHcBM@-|xYy9T&nkF0zJ>x2vIuyt30Y!N1@|fQ@a<)BK3>~&<2DT?c+?SeTUvI^bh=l6*T6bsf9m$Zv&jLL~>^t7=lMUs)0RJ1Z;)W{-H zA<}@LehR!V3=N(`TcWl@U7F`bDg!{AtFdAu4 z7!9_h84VEqEry>8oz_{(qYV~i42VyBNv-8;%4>{zQX>v|F}jL>M=u z@we^gm#Gra*p$)0v1#ByhSI~P9%&RKRa*q~{B%VF1rz>nXeB9t#wUS$C_^4RG(!}bomL?!aW#kyYJ>YtVUdqsKUx6B>ypU3LwRp#a8(ukS#d z|K}l?wc46!OV5s~4=-Cb-pLVpCfT5N_gBmKK0k7>`HTgIch5vchk49KA|4{HrjEt) z$lp5H-y<&jnf)VtT#6BqSf|yOee(N5N5}8aYZBo0Y5EG+`nhO@6i=Sm4S4OerFoid zAk0#}3NL+Cr|H)VBX3qv`_{s)E0y4KRN7BjU%-~B1n29gc6m)GnfO<4x^l+ZJXSx< zv4d9+>15ZnkZ8eiBcIEZGOVbi$G+?>9KFM7gy^%wSa;4KJ}6^a5YcP7(uSPKH2M<< zq2y5>3@Ftj2T*ll0birRJJ7X71d%IuSX$z(Q@_S&bYT){=UKS9PeR;`u$>o-~ z1F(ztc>+vn?}7FuVK;)Zm#j0f*MhQMqH96f+_R`#Ig1(~XL*fyMh?hXY;X4^yx$^j z_a${eJPxogF)Oa`q~7d%3G7Q63F<-dI1ShFI6hdAt6K%=0|&>|vtJswtz&J@fOv9y zNKibvoR3rYbv!u;CKi1I6N}sE+QtIG#N=1lKrpew z62HU5NTN@QZ+j}nbx%e4-c$Sk*i$oCvcl)*21_Q`e&3=eT|L_CUp77&I=LPxC~l@99_fTzd2-vfRa6M} zK)LG9=Qn!US!w0FjtPugj@x*+UQ97z5m7^;rHAu2E&&mxu@NImrXA=i`{U>ZenmQ{)d{Oc+vS0Lrk5@FvNxP` zUU_>YvjeW0daz&f4k9NWO^w=w1zyGoOrmCc>v7VlH}49sK)q#?Z&z)pA>J3pfUGT> zSA3F>i0sEE$V|-p?$jjYWr&7kK9B2=b$dbsQvof#+PTV^IdL%@!neO?KHp}XXCRjW z8IK_v+w90oQo}?h9#7^8Pfkp9pGSeH^l+{~3z1`EXU2u}SyN*^#ZCfbCo#GO1TKe% zbw+@Y6ht2K)1hpa#S6wzvP(n`1bBpU$G1~N@=bgNF=<`G2qqEzFae^YCQG3cq}29( zN$-1N?^T}r(~d2mWz~o2ughGpa4}cKs2MP4wkXILu&k5Q8!aP4Z#N}-turZP?agEx z?Jo3DPgNO`*(Ndan3Yj1GiD8x&c8B$IEc=WSXuV@UG2M<)h=otM&`tpUrze$-8aEc zt1Z($duqBjTUk^+Pd4pPzz|=R4sUi6E({&+&m$>jS6iD5O-Fpq7W6o{%%n`dyUgTB z&Pfr@#1zMMq5ReU3@-_J;3jj@9zNAc*t7PT^cOg#3l&0PI1B+uNZw|tGK@IVv}M#+ z4`YwgFqpp*eSG&?vqtF?s(2Q73=*oz=s-K=oBAG(cO$Fur^$W#KPs9+6kmY<=2BLs@1De!thOxu)$jt)_v3ac6m8wsvBt6b{=v)QSqytA86d)3nPGG63;E&uVS zy-lx!Ju^2i03CnNY_U8TSqZgceCX7J{f-*eva~aCXV)fptM4=2sGN3r!z4*t(l8|k zW0GJrXnJz3)F|ZHtt9(2zM&)|HwHIGjgBhm8aWu1a)~P6{ABYviYiWD!c}gWj)P|Z z3}eM&-)PdXsztP}`ghVXYP8srM37UwVtbdQPgw1#4;+^DS+< z=L`oeTDVr`t-1936iKNXh;6aPS?xBA*B|YjMex6P^)er)=J-TVijqT{C?}q>9240)^jQ|K{?ui;MWa^tlaK*DY{j>NU+LF&r*HwQC-z z^qp!tFWA-b@6^et>E`>)m61Enpy))IIgru{2gg;?muPJenw36RL%M#~$UD0p+`elh znJA!0v?M8M54p3Z$YJT-~;T@x~d~)hB44G;!+&z`uzheZl+Lb z#e=>p{1LMtq?Pu*KQqWz$n@4Ob5^3nWguUvBa*=wAIC|(p&ykU1dsPoS83u*OHf|c*F z!XqG?EOCQ)j$&x1)TjI`@u%RF{<}dkFd&$2bwkB7Z5r zT(G#O$w~Ja8Lmr;k&eB1ySV%L6!y?m$xxg8&=fQt-baVMh@6Gzdg?93m%;Ol8c*T9g?WYH96J7}3vv|ZqcF|gM4RgJ_v_+w?uzF=3eN)^2}Kym zje3OIO{%qc23|r+Tfe;|UupKSSuJ@q<~+G<1F;#l);B$Mho?{>UbZu_!GOd?L3~MY zA~v377tuxW%8Q>Yp&c&M#6VR>S+wVysha1MJAdnCWbSPi~P9Tz#%pi_%T!}{5xuB@N- z`9!br+NUCZFnJl<_Rk~`8-q5g!tH9^5~kYbZz&~7mo2>1p^qT~B4q0w}xeU@Pr?gB5! zuFWsGyThiVU!KQ>*n5uOCf_eeby`~9-x&%Sm`C8*)0db|gEP##{@gpjB)n%vK<9Y2 zFrGY$4m-3vB~B@4Q$|cRRx@Z#`20D!k``XnYR`kX51&5ol7AF?pnD$KWQ!<@_BMX3 zq1u@@$tIwVaUE8zn8A*kB3^&;LsrjPeTjhqu98)^{ma69c=eGd!9q10C?p|P!U91` zsaQ!Q^|K`V><`*r3|xpx9rIAMe+uNqJJgeE_w&zt+KkAAj`q|ivFo8LrS$ln2+eib z!C?=R07bKiWf{Uwc=@Vy)q4;hg<5)OlW5D$eK5{Z^~*@8@;k9gzuL#V)UA^r#1{!hu5)TS;`iS8TViBsEjOScq1m9F` z2Sb~So0MHhb}p)o)9qigXka#>e@TzqF9&X2Q4{7vVcgM6Op0E2KPnIuIvT^oweXx@ zZYGf=27ffplA>Ut#`3O}^N438{NUiWQ+d_&snu;T60ZgyNFdlC+$ixQ+kVLS1ihtx z#<~g~s$VI_w7rj4$qi;0rQqcbZrj6Suf>ez65{xFj8yAk?dQ_;ta1EP&-hhqzSMm5 zmY++UF4lLN3^eb*zil_Ezg=a=nM}2rv{kLkXQz#9f{Cgo5=3(!8K;Pn2_aR6bsAGI zDY?lu@BJ5nkt*4hn2<0Q93eF39%{&Jf2J9_WQg%C)&oHeJzGv%Xk7%q%~#Je4D z5BfCZ@tb{Hrtx#za%=@{^V>h7_)&G(4=bj^nf75fQuY?KFR0%cDe8UAF>U%ds-J9{ zM=5-orkqjJk$}VFtwI+hsc0g@z5R0~LFE>;ywz$Q7ulI{BUWGcD0oV##%epX4P0~* z%+rU?MaVXN!(H*TrIy2ei5BMjZ$=jGpLQikH@XtHk*IA_|!9r!#kiNmo1j%oXG!`GjlcyjKFETDDIPsY99pLi_Hj214oHbW{u znihU3r~k0?xq0K2fnuX-wKK2qTBN=LlFy6ZVx#(QVxx5a6dQHx8v1`OHmd2T*eDH` z|3Pfj!1tqgOi#G#EiO9j8W#-@!bJmF7^Z*3Mav(IblKUhs9Hb!@gm+18Zxc}P(c^* zir}9w;`PWyTb77-?xaxsVA}iPrwl-5HT&%FAELHw(7_H0Bf!dTheHcQ(BSR1S2DAA z!#tq=gi3=cT8%d^JDORMm0ahd?uyly>6ZgRSCY8LN=ByF+n5Cs{HQMeMT!^Q2&o{SC&(B{nn0&5X zj?nILf)&S1GopXF4;!bqP~y3YW;w8QcdlCEPuGTlJ+N-&_SnqgWh3&J=SN4yJ7 zvz&E+MXNpYHSHDyNAXO{u;B73cFv{1cJLPo)?L)d_fidmu1g-sw9m**agcfG&;s2O z)lTv+-mMYl>*~6GB+GLfKfJOR`iSn&ri7D0ooZCNL{Gb#oR�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%0ADtOk+nvi)>a26!Q)&@nG#Pl81L)H>cj+o~ssH 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 G|N1|aKDm_u diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino deleted file mode 100644 index 52b7ccc8..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Example use of chdir(), ls(), mkdir(), and rmdir(). - */ -#include -#include "SdFat.h" -#include "sdios.h" -// SD card chip select pin. -const uint8_t chipSelect = SS; -//------------------------------------------------------------------------------ - -// File system object. -SdFat sd; - -// Directory file. -SdFile root; - -// Use for file creation in folders. -SdFile file; - -// Create a Serial output stream. -ArduinoOutStream cout(Serial); - -// Buffer for Serial input. -char cinBuf[40]; - -// Create a serial input stream. -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//============================================================================== -// Error messages stored in flash. -#define error(msg) sd.errorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - delay(1000); - - cout << F("Type any character to start\n"); - // Wait for input line and discard. - cin.readline(); - cout << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (sd.exists("Folder1") - || sd.exists("Folder1/file1.txt") - || sd.exists("Folder1/File2.txt")) { - error("Please remove existing Folder1, file1.txt, and File2.txt"); - } - - int rootFileCount = 0; - if (!root.open("/")) { - error("open root failed"); - } - while (file.openNext(&root, O_RDONLY)) { - if (!file.isHidden()) { - rootFileCount++; - } - file.close(); - if (rootFileCount > 10) { - error("Too many files in root. Please use an empty SD."); - } - } - if (rootFileCount) { - cout << F("\nPlease use an empty SD for best results.\n\n"); - delay(1000); - } - // Create a new folder. - if (!sd.mkdir("Folder1")) { - error("Create Folder1 failed"); - } - cout << F("Created Folder1\n"); - - // Create a file in Folder1 using a path. - if (!file.open("Folder1/file1.txt", O_WRONLY | O_CREAT)) { - error("create Folder1/file1.txt failed"); - } - file.close(); - cout << F("Created Folder1/file1.txt\n"); - - // Change volume working directory to Folder1. - if (!sd.chdir("Folder1")) { - error("chdir failed for Folder1.\n"); - } - cout << F("chdir to Folder1\n"); - - // Create File2.txt in current directory. - if (!file.open("File2.txt", O_WRONLY | O_CREAT)) { - error("create File2.txt failed"); - } - file.close(); - cout << F("Created File2.txt in current directory\n"); - - cout << F("\nList of files on the SD.\n"); - sd.ls("/", LS_R); - - // Remove files from current directory. - if (!sd.remove("file1.txt") || !sd.remove("File2.txt")) { - error("remove failed"); - } - cout << F("\nfile1.txt and File2.txt removed.\n"); - - // Change current directory to root. - if (!sd.chdir()) { - error("chdir to root failed.\n"); - } - - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - - // Remove Folder1. - if (!sd.rmdir("Folder1")) { - error("rmdir for Folder1 failed\n"); - } - - cout << F("\nFolder1 removed.\n"); - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - cout << F("Done!\n"); -} -//------------------------------------------------------------------------------ -// Nothing happens in loop. -void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/OpenNext/OpenNext.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/OpenNext/OpenNext.ino deleted file mode 100644 index ca5ac303..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/OpenNext/OpenNext.ino +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Print size, modify date/time, and name for all files in root. - */ -#include -#include "SdFat.h" - -// SD default chip select pin. -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -SdFile root; -SdFile file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - - Serial.println("Type any character to start"); - while (!Serial.available()) { - yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (!root.open("/")) { - sd.errorHalt("open root failed"); - } - // Open next file in root. - // Warning, openNext starts at the current directory position - // so a rewind of the directory may be required. - while (file.openNext(&root, O_RDONLY)) { - file.printFileSize(&Serial); - Serial.write(' '); - file.printModifyDateTime(&Serial); - Serial.write(' '); - file.printName(&Serial); - if (file.isDir()) { - // Indicate a directory. - Serial.write('/'); - } - Serial.println(); - file.close(); - } - if (root.getError()) { - Serial.println("openNext failed"); - } else { - Serial.println("Done!"); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/QuickStart/QuickStart.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/QuickStart/QuickStart.ino deleted file mode 100644 index cea1249f..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/QuickStart/QuickStart.ino +++ /dev/null @@ -1,161 +0,0 @@ -// Quick hardware test for SPI card access. -// -#include -#include "SdFat.h" -#include "sdios.h" -// -// Set DISABLE_CHIP_SELECT to disable a second SPI device. -// For example, with the Ethernet shield, set DISABLE_CHIP_SELECT -// to 10 to disable the Ethernet controller. -const int8_t DISABLE_CHIP_SELECT = -1; -// -// Test with reduced SPI speed for breadboards. SD_SCK_MHZ(4) will select -// the highest speed supported by the board that is not over 4 MHz. -// Change SPI_SPEED to SD_SCK_MHZ(50) for best performance. -#define SPI_SPEED SD_SCK_MHZ(4) -//------------------------------------------------------------------------------ -// File system object. -SdFat sd; - -// Serial streams -ArduinoOutStream cout(Serial); - -// input buffer for line -char cinBuf[40]; -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); - -// SD card chip select -int chipSelect; - -void cardOrSpeed() { - cout << F("Try another SD card or reduce the SPI bus speed.\n"); - cout << F("Edit SPI_SPEED in this program to change it.\n"); -} - -void reformatMsg() { - cout << F("Try reformatting the card. For best results use\n"); - cout << F("the SdFormatter program in SdFat/examples or download\n"); - cout << F("and use SDFormatter from www.sdcard.org/downloads.\n"); -} - -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - cout << F("\nSPI pins:\n"); - cout << F("MISO: ") << int(MISO) << endl; - cout << F("MOSI: ") << int(MOSI) << endl; - cout << F("SCK: ") << int(SCK) << endl; - cout << F("SS: ") << int(SS) << endl; - - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" - "a second SPI device. For example, with the Ethernet\n" - "shield, DISABLE_CHIP_SELECT should be set to 10\n" - "to disable the Ethernet controller.\n"); - } - cout << F( - "\nSD chip select is the key hardware option.\n" - "Common values are:\n" - "Arduino Ethernet shield, pin 4\n" - "Sparkfun SD shield, pin 8\n" - "Adafruit SD shields and modules, pin 10\n"); -} - -bool firstTry = true; -void loop() { - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (!firstTry) { - cout << F("\nRestarting\n"); - } - firstTry = false; - - cout << F("\nEnter the chip select pin number: "); - while (!Serial.available()) { - yield(); - } - cin.readline(); - if (cin >> chipSelect) { - cout << chipSelect << endl; - } else { - cout << F("\nInvalid pin number\n"); - return; - } - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - if (!sd.begin(chipSelect, SPI_SPEED)) { - if (sd.card()->errorCode()) { - cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is chipSelect set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - "Is there a wiring/soldering problem?\n"); - cout << F("\nerrorCode: ") << hex << showbase; - cout << int(sd.card()->errorCode()); - cout << F(", errorData: ") << int(sd.card()->errorData()); - cout << dec << noshowbase << endl; - return; - } - if (sd.vol()->fatType() == 0) { - cout << F("Can't find a valid FAT16/FAT32 partition.\n"); - reformatMsg(); - return; - } - cout << F("begin failed, can't determine error type\n"); - return; - } - cout << F("\nCard successfully initialized.\n"); - cout << endl; - - uint32_t size = sd.card()->cardSize(); - if (size == 0) { - cout << F("Can't determine the card size.\n"); - cardOrSpeed(); - return; - } - uint32_t sizeMB = 0.000512 * size + 0.5; - cout << F("Card size: ") << sizeMB; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - cout << endl; - cout << F("Volume is FAT") << int(sd.vol()->fatType()); - cout << F(", Cluster size (bytes): ") << 512L * sd.vol()->blocksPerCluster(); - cout << endl << endl; - - cout << F("Files found (date time size name):\n"); - sd.ls(LS_R | LS_DATE | LS_SIZE); - - if ((sizeMB > 1100 && sd.vol()->blocksPerCluster() < 64) - || (sizeMB < 2200 && sd.vol()->fatType() == 32)) { - cout << F("\nThis card should be reformatted for best performance.\n"); - cout << F("Use a cluster size of 32 KB for cards larger than 1 GB.\n"); - cout << F("Only cards larger than 2 GB should be formatted FAT32.\n"); - reformatMsg(); - return; - } - // Read any extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F("\nSuccess! Type any character to restart.\n"); - while (!Serial.available()) { - yield(); - } -} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdFormatter/SdFormatter.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdFormatter/SdFormatter.ino deleted file mode 100644 index 40326a7a..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdFormatter/SdFormatter.ino +++ /dev/null @@ -1,552 +0,0 @@ -/* - * This program will format an SD or SDHC card. - * Warning all data will be deleted! - * - * For SD/SDHC cards larger than 64 MB this - * program attempts to match the format - * generated by SDFormatter available here: - * - * http://www.sdcard.org/consumers/formatter/ - * - * For smaller cards this program uses FAT16 - * and SDFormatter uses FAT12. - */ -#error use new Version 2 SdFormatter -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -// -// Change the value of chipSelect if your hardware does -// not use the default value, SS. Common values are: -// Arduino Ethernet shield: pin 4 -// Sparkfun SD shield: pin 8 -// Adafruit SD shields and modules: pin 10 -const uint8_t chipSelect = SS; - -// Initialize at highest supported speed not over 50 MHz. -// Reduce max speed if errors occur. -#define SPI_SPEED SD_SCK_MHZ(50) - -// Print extra info for debug if DEBUG_PRINT is nonzero -#define DEBUG_PRINT 0 -#include -#include "SdFat.h" -#include "sdios.h" -#if DEBUG_PRINT -#include "FreeStack.h" -#endif // DEBUG_PRINT - -// Serial output stream -ArduinoOutStream cout(Serial); - -#if USE_SDIO -// Use faster SdioCardEX -SdioCardEX card; -// SdioCard card; -#else // USE_SDIO -Sd2Card card; -#endif // USE_SDIO - -uint32_t cardSizeBlocks; -uint32_t cardCapacityMB; - -// cache for SD block -cache_t cache; - -// MBR information -uint8_t partType; -uint32_t relSector; -uint32_t partSize; - -// Fake disk geometry -uint8_t numberOfHeads; -uint8_t sectorsPerTrack; - -// FAT parameters -uint16_t reservedSectors; -uint8_t sectorsPerCluster; -uint32_t fatStart; -uint32_t fatSize; -uint32_t dataStart; - -// constants for file system structure -uint16_t const BU16 = 128; -uint16_t const BU32 = 8192; - -// strings needed in file system structures -char noName[] = "NO NAME "; -char fat16str[] = "FAT16 "; -char fat32str[] = "FAT32 "; -//------------------------------------------------------------------------------ -#define sdError(msg) {cout << F("error: ") << F(msg) << endl; sdErrorHalt();} -//------------------------------------------------------------------------------ -void sdErrorHalt() { - if (card.errorCode()) { - cout << F("SD error: ") << hex << int(card.errorCode()); - cout << ',' << int(card.errorData()) << dec << endl; - } - while (true) {} -} -//------------------------------------------------------------------------------ -#if DEBUG_PRINT -void debugPrint() { - cout << F("FreeStack: ") << FreeStack() << endl; - cout << F("partStart: ") << relSector << endl; - cout << F("partSize: ") << partSize << endl; - cout << F("reserved: ") << reservedSectors << endl; - cout << F("fatStart: ") << fatStart << endl; - cout << F("fatSize: ") << fatSize << endl; - cout << F("dataStart: ") << dataStart << endl; - cout << F("clusterCount: "); - cout << ((relSector + partSize - dataStart)/sectorsPerCluster) << endl; - cout << endl; - cout << F("Heads: ") << int(numberOfHeads) << endl; - cout << F("Sectors: ") << int(sectorsPerTrack) << endl; - cout << F("Cylinders: "); - cout << cardSizeBlocks/(numberOfHeads*sectorsPerTrack) << endl; -} -#endif // DEBUG_PRINT -//------------------------------------------------------------------------------ -// write cached block to the card -uint8_t writeCache(uint32_t lbn) { - return card.writeBlock(lbn, cache.data); -} -//------------------------------------------------------------------------------ -// initialize appropriate sizes for SD capacity -void initSizes() { - if (cardCapacityMB <= 6) { - sdError("Card is too small."); - } else if (cardCapacityMB <= 16) { - sectorsPerCluster = 2; - } else if (cardCapacityMB <= 32) { - sectorsPerCluster = 4; - } else if (cardCapacityMB <= 64) { - sectorsPerCluster = 8; - } else if (cardCapacityMB <= 128) { - sectorsPerCluster = 16; - } else if (cardCapacityMB <= 1024) { - sectorsPerCluster = 32; - } else if (cardCapacityMB <= 32768) { - sectorsPerCluster = 64; - } else { - // SDXC cards - sectorsPerCluster = 128; - } - - cout << F("Blocks/Cluster: ") << int(sectorsPerCluster) << endl; - // set fake disk geometry - sectorsPerTrack = cardCapacityMB <= 256 ? 32 : 63; - - if (cardCapacityMB <= 16) { - numberOfHeads = 2; - } else if (cardCapacityMB <= 32) { - numberOfHeads = 4; - } else if (cardCapacityMB <= 128) { - numberOfHeads = 8; - } else if (cardCapacityMB <= 504) { - numberOfHeads = 16; - } else if (cardCapacityMB <= 1008) { - numberOfHeads = 32; - } else if (cardCapacityMB <= 2016) { - numberOfHeads = 64; - } else if (cardCapacityMB <= 4032) { - numberOfHeads = 128; - } else { - numberOfHeads = 255; - } -} -//------------------------------------------------------------------------------ -// zero cache and optionally set the sector signature -void clearCache(uint8_t addSig) { - memset(&cache, 0, sizeof(cache)); - if (addSig) { - cache.mbr.mbrSig0 = BOOTSIG0; - cache.mbr.mbrSig1 = BOOTSIG1; - } -} -//------------------------------------------------------------------------------ -// zero FAT and root dir area on SD -void clearFatDir(uint32_t bgn, uint32_t count) { - clearCache(false); -#if USE_SDIO - for (uint32_t i = 0; i < count; i++) { - if (!card.writeBlock(bgn + i, cache.data)) { - sdError("Clear FAT/DIR writeBlock failed"); - } - if ((i & 0XFF) == 0) { - cout << '.'; - } - } -#else // USE_SDIO - if (!card.writeStart(bgn, count)) { - sdError("Clear FAT/DIR writeStart failed"); - } - for (uint32_t i = 0; i < count; i++) { - if ((i & 0XFF) == 0) { - cout << '.'; - } - if (!card.writeData(cache.data)) { - sdError("Clear FAT/DIR writeData failed"); - } - } - if (!card.writeStop()) { - sdError("Clear FAT/DIR writeStop failed"); - } -#endif // USE_SDIO - cout << endl; -} -//------------------------------------------------------------------------------ -// return cylinder number for a logical block number -uint16_t lbnToCylinder(uint32_t lbn) { - return lbn / (numberOfHeads * sectorsPerTrack); -} -//------------------------------------------------------------------------------ -// return head number for a logical block number -uint8_t lbnToHead(uint32_t lbn) { - return (lbn % (numberOfHeads * sectorsPerTrack)) / sectorsPerTrack; -} -//------------------------------------------------------------------------------ -// return sector number for a logical block number -uint8_t lbnToSector(uint32_t lbn) { - return (lbn % sectorsPerTrack) + 1; -} -//------------------------------------------------------------------------------ -// format and write the Master Boot Record -void writeMbr() { - clearCache(true); - part_t* p = cache.mbr.part; - p->boot = 0; - uint16_t c = lbnToCylinder(relSector); - if (c > 1023) { - sdError("MBR CHS"); - } - p->beginCylinderHigh = c >> 8; - p->beginCylinderLow = c & 0XFF; - p->beginHead = lbnToHead(relSector); - p->beginSector = lbnToSector(relSector); - p->type = partType; - uint32_t endLbn = relSector + partSize - 1; - c = lbnToCylinder(endLbn); - if (c <= 1023) { - p->endCylinderHigh = c >> 8; - p->endCylinderLow = c & 0XFF; - p->endHead = lbnToHead(endLbn); - p->endSector = lbnToSector(endLbn); - } else { - // Too big flag, c = 1023, h = 254, s = 63 - p->endCylinderHigh = 3; - p->endCylinderLow = 255; - p->endHead = 254; - p->endSector = 63; - } - p->firstSector = relSector; - p->totalSectors = partSize; - if (!writeCache(0)) { - sdError("write MBR"); - } -} -//------------------------------------------------------------------------------ -// generate serial number from card size and micros since boot -uint32_t volSerialNumber() { - return (cardSizeBlocks << 8) + micros(); -} -//------------------------------------------------------------------------------ -// format the SD as FAT16 -void makeFat16() { - uint32_t nc; - for (dataStart = 2 * BU16;; dataStart += BU16) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 255)/256; - uint32_t r = BU16 + 1 + 2 * fatSize + 32; - if (dataStart < r) { - continue; - } - relSector = dataStart - r + BU16; - break; - } - // check valid cluster count for FAT16 volume - if (nc < 4085 || nc >= 65525) { - sdError("Bad cluster count"); - } - reservedSectors = 1; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + 2 * fatSize + reservedSectors + 32; - if (partSize < 32680) { - partType = 0X01; - } else if (partSize < 65536) { - partType = 0X04; - } else { - partType = 0X06; - } - // write MBR - writeMbr(); - clearCache(true); - fat_boot_t* pb = &cache.fbs; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->rootDirEntryCount = 512; - pb->mediaType = 0XF8; - pb->sectorsPerFat16 = fatSize; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat16str, sizeof(pb->fileSystemType)); - // write partition boot sector - if (!writeCache(relSector)) { - sdError("FAT16 write PBS failed"); - } - // clear FAT and root directory - clearFatDir(fatStart, dataStart - fatStart); - clearCache(false); - cache.fat16[0] = 0XFFF8; - cache.fat16[1] = 0XFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT16 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// format the SD as FAT32 -void makeFat32() { - uint32_t nc; - relSector = BU32; - for (dataStart = 2 * BU32;; dataStart += BU32) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 127)/128; - uint32_t r = relSector + 9 + 2 * fatSize; - if (dataStart >= r) { - break; - } - } - // error if too few clusters in FAT32 volume - if (nc < 65525) { - sdError("Bad cluster count"); - } - reservedSectors = dataStart - relSector - 2 * fatSize; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + dataStart - relSector; - // type depends on address of end sector - // max CHS has lbn = 16450560 = 1024*255*63 - if ((relSector + partSize) <= 16450560) { - // FAT32 - partType = 0X0B; - } else { - // FAT32 with INT 13 - partType = 0X0C; - } - writeMbr(); - clearCache(true); - - fat32_boot_t* pb = &cache.fbs32; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->mediaType = 0XF8; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->sectorsPerFat32 = fatSize; - pb->fat32RootCluster = 2; - pb->fat32FSInfo = 1; - pb->fat32BackBootBlock = 6; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat32str, sizeof(pb->fileSystemType)); - // write partition boot sector and backup - if (!writeCache(relSector) - || !writeCache(relSector + 6)) { - sdError("FAT32 write PBS failed"); - } - clearCache(true); - // write extra boot area and backup - if (!writeCache(relSector + 2) - || !writeCache(relSector + 8)) { - sdError("FAT32 PBS ext failed"); - } - fat32_fsinfo_t* pf = &cache.fsinfo; - pf->leadSignature = FSINFO_LEAD_SIG; - pf->structSignature = FSINFO_STRUCT_SIG; - pf->freeCount = 0XFFFFFFFF; - pf->nextFree = 0XFFFFFFFF; - // write FSINFO sector and backup - if (!writeCache(relSector + 1) - || !writeCache(relSector + 7)) { - sdError("FAT32 FSINFO failed"); - } - clearFatDir(fatStart, 2 * fatSize + sectorsPerCluster); - clearCache(false); - cache.fat32[0] = 0x0FFFFFF8; - cache.fat32[1] = 0x0FFFFFFF; - cache.fat32[2] = 0x0FFFFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT32 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// flash erase all data -uint32_t const ERASE_SIZE = 262144L; -void eraseCard() { - cout << endl << F("Erasing\n"); - uint32_t firstBlock = 0; - uint32_t lastBlock; - uint16_t n = 0; - - do { - lastBlock = firstBlock + ERASE_SIZE - 1; - if (lastBlock >= cardSizeBlocks) { - lastBlock = cardSizeBlocks - 1; - } - if (!card.erase(firstBlock, lastBlock)) { - sdError("erase failed"); - } - cout << '.'; - if ((n++)%32 == 31) { - cout << endl; - } - firstBlock += ERASE_SIZE; - } while (firstBlock < cardSizeBlocks); - cout << endl; - - if (!card.readBlock(0, cache.data)) { - sdError("readBlock"); - } - cout << hex << showbase << setfill('0') << internal; - cout << F("All data set to ") << setw(4) << int(cache.data[0]) << endl; - cout << dec << noshowbase << setfill(' ') << right; - cout << F("Erase done\n"); -} -//------------------------------------------------------------------------------ -void formatCard() { - cout << endl; - cout << F("Formatting\n"); - initSizes(); - if (card.type() != SD_CARD_TYPE_SDHC) { - cout << F("FAT16\n"); - makeFat16(); - } else { - cout << F("FAT32\n"); - makeFat32(); - } -#if DEBUG_PRINT - debugPrint(); -#endif // DEBUG_PRINT - cout << F("Format done\n"); -} -//------------------------------------------------------------------------------ -void setup() { - char c; - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - yield(); - } - // Discard any extra characters. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F( - "\n" - "This program can erase and/or format SD/SDHC cards.\n" - "\n" - "Erase uses the card's fast flash erase command.\n" - "Flash erase sets all data to 0X00 for most cards\n" - "and 0XFF for a few vendor's cards.\n" - "\n" - "Cards larger than 2 GB will be formatted FAT32 and\n" - "smaller cards will be formatted FAT16.\n" - "\n" - "Warning, all data on the card will be erased.\n" - "Enter 'Y' to continue: "); - while (!Serial.available()) { - yield(); - } - - c = Serial.read(); - cout << c << endl; - if (c != 'Y') { - cout << F("Quiting, you did not enter 'Y'.\n"); - return; - } - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - cout << F( - "\n" - "Options are:\n" - "E - erase the card and skip formatting.\n" - "F - erase and then format the card. (recommended)\n" - "Q - quick format the card without erase.\n" - "\n" - "Enter option: "); - - while (!Serial.available()) { - yield(); - } - c = Serial.read(); - cout << c << endl; - if (!strchr("EFQ", c)) { - cout << F("Quiting, invalid option entered.") << endl; - return; - } -#if USE_SDIO - if (!card.begin()) { - sdError("card.begin failed"); - } -#else // USE_SDIO - if (!card.begin(chipSelect, SPI_SPEED)) { - cout << F( - "\nSD initialization failure!\n" - "Is the SD card inserted correctly?\n" - "Is chip select correct at the top of this program?\n"); - sdError("card.begin failed"); - } -#endif - cardSizeBlocks = card.cardSize(); - if (cardSizeBlocks == 0) { - sdError("cardSize"); - } - cardCapacityMB = (cardSizeBlocks + 2047)/2048; - - cout << F("Card Size: ") << setprecision(0) << 1.048576*cardCapacityMB; - cout << F(" MB, (MB = 1,000,000 bytes)") << endl; - - if (c == 'E' || c == 'F') { - eraseCard(); - } - if (c == 'F' || c == 'Q') { - formatCard(); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdInfo/SdInfo.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdInfo/SdInfo.ino deleted file mode 100644 index bee693c2..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SdInfo/SdInfo.ino +++ /dev/null @@ -1,248 +0,0 @@ -/* - * This program attempts to initialize an SD card and analyze its structure. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#error Use new Version 2 SdInfo -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -/* - * SD chip select pin. Common values are: - * - * Arduino Ethernet shield, pin 4. - * SparkFun SD shield, pin 8. - * Adafruit SD shields and modules, pin 10. - * Default SD chip select is the SPI SS pin. - */ -const uint8_t SD_CHIP_SELECT = SS; -/* - * Set DISABLE_CHIP_SELECT to disable a second SPI device. - * For example, with the Ethernet shield, set DISABLE_CHIP_SELECT - * to 10 to disable the Ethernet controller. - */ -const int8_t DISABLE_CHIP_SELECT = -1; - -#if USE_SDIO -// Use faster SdioCardEX -SdFatSdioEX sd; -// SdFatSdio sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// serial output steam -ArduinoOutStream cout(Serial); - -// global for card size -uint32_t cardSize; - -// global for card erase size -uint32_t eraseSize; -//------------------------------------------------------------------------------ -// store error strings in flash -#define sdErrorMsg(msg) sd.errorPrint(F(msg)); -//------------------------------------------------------------------------------ -uint8_t cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - sdErrorMsg("readCID failed"); - return false; - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; - return true; -} -//------------------------------------------------------------------------------ -uint8_t csdDmp() { - csd_t csd; - uint8_t eraseSingleBlock; - if (!sd.card()->readCSD(&csd)) { - sdErrorMsg("readCSD failed"); - return false; - } - if (csd.v1.csd_ver == 0) { - eraseSingleBlock = csd.v1.erase_blk_en; - eraseSize = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - } else if (csd.v2.csd_ver == 1) { - eraseSingleBlock = csd.v2.erase_blk_en; - eraseSize = (csd.v2.sector_size_high << 1) | csd.v2.sector_size_low; - } else { - cout << F("csd version error\n"); - return false; - } - eraseSize++; - cout << F("cardSize: ") << 0.000512*cardSize; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - - cout << F("flashEraseSize: ") << int(eraseSize) << F(" blocks\n"); - cout << F("eraseSingleBlock: "); - if (eraseSingleBlock) { - cout << F("true\n"); - } else { - cout << F("false\n"); - } - return true; -} -//------------------------------------------------------------------------------ -// print partition table -uint8_t partDmp() { - mbr_t mbr; - if (!sd.card()->readBlock(0, (uint8_t*)&mbr)) { - sdErrorMsg("read MBR failed"); - return false; - } - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - if ((pt->boot & 0X7F) != 0 || pt->firstSector > cardSize) { - cout << F("\nNo MBR. Assuming Super Floppy format.\n"); - return true; - } - } - cout << F("\nSD Partition Table\n"); - cout << F("part,boot,type,start,length\n"); - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - cout << int(ip) << ',' << hex << int(pt->boot) << ',' << int(pt->type); - cout << dec << ',' << pt->firstSector <<',' << pt->totalSectors << endl; - } - return true; -} -//------------------------------------------------------------------------------ -void volDmp() { - cout << F("\nVolume is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("blocksPerCluster: ") << int(sd.vol()->blocksPerCluster()) << endl; - cout << F("clusterCount: ") << sd.vol()->clusterCount() << endl; - cout << F("freeClusters: "); - uint32_t volFree = sd.vol()->freeClusterCount(); - cout << volFree << endl; - float fs = 0.000512*volFree*sd.vol()->blocksPerCluster(); - cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n"); - cout << F("fatStartBlock: ") << sd.vol()->fatStartBlock() << endl; - cout << F("fatCount: ") << int(sd.vol()->fatCount()) << endl; - cout << F("blocksPerFat: ") << sd.vol()->blocksPerFat() << endl; - cout << F("rootDirStart: ") << sd.vol()->rootDirStart() << endl; - cout << F("dataStartBlock: ") << sd.vol()->dataStartBlock() << endl; - if (sd.vol()->dataStartBlock() % eraseSize) { - cout << F("Data area is not aligned on flash erase boundaries!\n"); - cout << F("Download and use formatter from www.sdcard.org!\n"); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; - - // F stores strings in flash to save RAM - cout << F("SdFat version: ") << SD_FAT_VERSION << endl; -#if !USE_SDIO - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - cout << F("\nAssuming the SD chip select pin is: ") <= 0); - - // F stores strings in flash to save RAM - cout << F("\ntype any character to start\n"); - while (!Serial.available()) { - yield(); - } - - uint32_t t = millis(); -#if USE_SDIO - if (!sd.cardBegin()) { - sdErrorMsg("\ncardBegin failed"); - return; - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.cardBegin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { - sdErrorMsg("cardBegin failed"); - return; - } - #endif // USE_SDIO - t = millis() - t; - - cardSize = sd.card()->cardSize(); - if (cardSize == 0) { - sdErrorMsg("cardSize failed"); - return; - } - cout << F("\ninit time: ") << t << " ms" << endl; - cout << F("\nCard type: "); - switch (sd.card()->type()) { - case SD_CARD_TYPE_SD1: - cout << F("SD1\n"); - break; - - case SD_CARD_TYPE_SD2: - cout << F("SD2\n"); - break; - - case SD_CARD_TYPE_SDHC: - if (cardSize < 70000000) { - cout << F("SDHC\n"); - } else { - cout << F("SDXC\n"); - } - break; - - default: - cout << F("Unknown\n"); - } - if (!cidDmp()) { - return; - } - if (!csdDmp()) { - return; - } - uint32_t ocr; - if (!sd.card()->readOCR(&ocr)) { - sdErrorMsg("\nreadOCR failed"); - return; - } - cout << F("OCR: ") << hex << ocr << dec << endl; - if (!partDmp()) { - return; - } - if (!sd.fsBegin()) { - sdErrorMsg("\nFile System initialization failed.\n"); - return; - } - volDmp(); -} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino deleted file mode 100644 index 874d7d0d..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino +++ /dev/null @@ -1,59 +0,0 @@ -// An example of the SdFatSoftSpi template class. -// This example is for an Adafruit Data Logging Shield on a Mega. -// Software SPI is required on Mega since this shield connects to pins 10-13. -// This example will also run on an Uno and other boards using software SPI. -// -#include -#include "SdFat.h" -#error See Version 2 software SPI example -#if ENABLE_SOFTWARE_SPI_CLASS // Must be set in SdFat/SdFatConfig.h -// -// Pin numbers in templates must be constants. -const uint8_t SOFT_MISO_PIN = 12; -const uint8_t SOFT_MOSI_PIN = 11; -const uint8_t SOFT_SCK_PIN = 13; -// -// Chip select may be constant or RAM variable. -const uint8_t SD_CHIP_SELECT_PIN = 10; - -// SdFat software SPI template -SdFatSoftSpi sd; - -// Test file. -SdFile file; - -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - yield(); - } - - if (!sd.begin(SD_CHIP_SELECT_PIN)) { - sd.initErrorHalt(); - } - - if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) { - sd.errorHalt(F("open failed")); - } - file.println(F("This line was printed using software SPI.")); - - file.rewind(); - - while (file.available()) { - Serial.write(file.read()); - } - - file.close(); - - Serial.println(F("Done.")); -} -//------------------------------------------------------------------------------ -void loop() {} -#else // ENABLE_SOFTWARE_SPI_CLASS -#error ENABLE_SOFTWARE_SPI_CLASS must be set non-zero in SdFat/SdFatConfig.h -#endif //ENABLE_SOFTWARE_SPI_CLASS \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino deleted file mode 100644 index 1c5214f4..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino +++ /dev/null @@ -1,169 +0,0 @@ -// Simple performance test for Teensy 3.5/3.6 SDHC. -// Demonstrates yield() efficiency. - -// Warning SdFatSdio and SdFatSdioEX normally should -// not both be used in a program. -// Each has its own cache and member variables. - -#include "SdFat.h" -#error See Version 2 SDIO example -// 32 KiB buffer. -const size_t BUF_DIM = 32768; - -// 8 MiB file. -const uint32_t FILE_SIZE = 256UL*BUF_DIM; - -SdFatSdio sd; - -SdFatSdioEX sdEx; - -File file; - -uint8_t buf[BUF_DIM]; - -// buffer as uint32_t -uint32_t* buf32 = (uint32_t*)buf; - -// Total usec in read/write calls. -uint32_t totalMicros = 0; -// Time in yield() function. -uint32_t yieldMicros = 0; -// Number of yield calls. -uint32_t yieldCalls = 0; -// Max busy time for single yield call. -uint32_t yieldMaxUsec = 0; -// Control access to the two versions of SdFat. -bool useEx = false; -//----------------------------------------------------------------------------- -bool sdBusy() { - return useEx ? sdEx.card()->isBusy() : sd.card()->isBusy(); -} -//----------------------------------------------------------------------------- -void errorHalt(const char* msg) { - if (useEx) { - sdEx.errorHalt(msg); - } else { - sd.errorHalt(msg); - } -} -//------------------------------------------------------------------------------ -uint32_t kHzSdClk() { - return useEx ? sdEx.card()->kHzSdClk() : sd.card()->kHzSdClk(); -} -//------------------------------------------------------------------------------ -// Replace "weak" system yield() function. -void yield() { - // Only count cardBusy time. - if (!sdBusy()) { - return; - } - uint32_t m = micros(); - yieldCalls++; - while (sdBusy()) { - // Do something here. - } - m = micros() - m; - if (m > yieldMaxUsec) { - yieldMaxUsec = m; - } - yieldMicros += m; -} -//----------------------------------------------------------------------------- -void runTest() { - // Zero Stats - totalMicros = 0; - yieldMicros = 0; - yieldCalls = 0; - yieldMaxUsec = 0; - if (!file.open("TeensyDemo.bin", O_RDWR | O_CREAT)) { - errorHalt("open failed"); - } - Serial.println("\nsize,write,read"); - Serial.println("bytes,KB/sec,KB/sec"); - for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { - file.truncate(0); - uint32_t nRdWr = FILE_SIZE/nb; - Serial.print(nb); - Serial.print(','); - uint32_t t = micros(); - for (uint32_t n = 0; n < nRdWr; n++) { - // Set start and end of buffer. - buf32[0] = n; - buf32[nb/4 - 1] = n; - if (nb != file.write(buf, nb)) { - errorHalt("write failed"); - } - } - t = micros() - t; - totalMicros += t; - Serial.print(1000.0*FILE_SIZE/t); - Serial.print(','); - file.rewind(); - t = micros(); - - for (uint32_t n = 0; n < nRdWr; n++) { - if ((int)nb != file.read(buf, nb)) { - errorHalt("read failed"); - } - // crude check of data. - if (buf32[0] != n || buf32[nb/4 - 1] != n) { - errorHalt("data check"); - } - } - t = micros() - t; - totalMicros += t; - Serial.println(1000.0*FILE_SIZE/t); - } - file.close(); - Serial.print("\ntotalMicros "); - Serial.println(totalMicros); - Serial.print("yieldMicros "); - Serial.println(yieldMicros); - Serial.print("yieldCalls "); - Serial.println(yieldCalls); - Serial.print("yieldMaxUsec "); - Serial.println(yieldMaxUsec); - Serial.print("kHzSdClk "); - Serial.println(kHzSdClk()); - Serial.println("Done"); -} -//----------------------------------------------------------------------------- -void setup() { - Serial.begin(9600); - while (!Serial) { - } - Serial.println("SdFatSdioEX uses extended multi-block transfers without DMA."); - Serial.println("SdFatSdio uses a traditional DMA SDIO implementation."); - Serial.println("Note the difference is speed and busy yield time.\n"); -} -//----------------------------------------------------------------------------- -void loop() { - do { - delay(10); - } while (Serial.available() && Serial.read()); - - Serial.println("Type '1' for SdFatSdioEX or '2' for SdFatSdio"); - while (!Serial.available()) { - } - char c = Serial.read(); - if (c != '1' && c != '2') { - Serial.println("Invalid input"); - return; - } - if (c =='1') { - useEx = true; - if (!sdEx.begin()) { - sd.initErrorHalt("SdFatSdioEX begin() failed"); - } - // make sdEx the current volume. - sdEx.chvol(); - } else { - useEx = false; - if (!sd.begin()) { - sd.initErrorHalt("SdFatSdio begin() failed"); - } - // make sd the current volume. - sd.chvol(); - } - runTest(); -} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/bench/bench.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/bench/bench.ino deleted file mode 100644 index b4f0cf30..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/bench/bench.ino +++ /dev/null @@ -1,222 +0,0 @@ -/* - * This program is a simple binary write/read benchmark. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 - -// SD chip select pin -const uint8_t chipSelect = SS; - -// Size of read/write. -const size_t BUF_SIZE = 512; - -// File size in MB where MB = 1,000,000 bytes. -const uint32_t FILE_SIZE_MB = 5; - -// Write pass count. -const uint8_t WRITE_COUNT = 2; - -// Read pass count. -const uint8_t READ_COUNT = 2; -//============================================================================== -// End of configuration constants. -//------------------------------------------------------------------------------ -// File size in bytes. -const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; - -uint8_t buf[BUF_SIZE]; - -// file system -#if USE_SDIO -// Traditional DMA version. -// SdFatSdio sd; -// Faster version. -SdFatSdioEX sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// Set ENABLE_EXTENDED_TRANSFER_CLASS to use extended SD I/O. -// Requires dedicated use of the SPI bus. -// SdFatEX sd; - -// Set ENABLE_SOFTWARE_SPI_CLASS to use software SPI. -// Args are misoPin, mosiPin, sckPin. -// SdFatSoftSpi<6, 7, 5> sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// Store error strings in flash to save RAM. -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - error("readCID failed"); - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - delay(1000); - cout << F("\nUse a freshly formatted SD for best performance.\n"); - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; -} -//------------------------------------------------------------------------------ -void loop() { - float s; - uint32_t t; - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Discard any input. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F( stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - yield(); - } - cout << F("chipSelect: ") << int(chipSelect) << endl; - cout << F("FreeStack: ") << FreeStack() << endl; - -#if USE_SDIO - if (!sd.begin()) { - sd.initErrorHalt(); - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } -#endif // USE_SDIO - cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("Card size: ") << sd.card()->cardSize()*512E-9; - cout << F(" GB (GB = 1E9 bytes)") << endl; - - cidDmp(); - - // open or create file - truncate existing file. - if (!file.open("bench.dat", O_RDWR | O_CREAT | O_TRUNC)) { - error("open failed"); - } - - // fill buf with known data - for (size_t i = 0; i < (BUF_SIZE-2); i++) { - buf[i] = 'A' + (i % 26); - } - buf[BUF_SIZE-2] = '\r'; - buf[BUF_SIZE-1] = '\n'; - - cout << F("File size ") << FILE_SIZE_MB << F(" MB\n"); - cout << F("Buffer size ") << BUF_SIZE << F(" bytes\n"); - cout << F("Starting write test, please wait.") << endl << endl; - - // do write test - uint32_t n = FILE_SIZE/sizeof(buf); - cout < m) { - minLatency = m; - } - totalLatency += m; - } - file.sync(); - t = millis() - t; - s = file.fileSize(); - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Starting read test, please wait.") << endl; - cout << endl < m) { - minLatency = m; - } - totalLatency += m; - if (buf[BUF_SIZE-1] != '\n') { - error("data check"); - } - } - s = file.fileSize(); - t = millis() - t; - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Done") << endl; - file.close(); -} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/rename/rename.ino b/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/rename/rename.ino deleted file mode 100644 index 0953e061..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/rename/rename.ino +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This program demonstrates use of SdFile::rename() - * and SdFat::rename(). - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system -SdFat sd; - -// Serial print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - cout << F("Insert an empty SD. Type any character to start.") << endl; - while (!Serial.available()) { - yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // Remove file/dirs from previous run. - if (sd.exists("dir2/DIR3/NAME3.txt")) { - cout << F("Removing /dir2/DIR3/NAME3.txt") << endl; - if (!sd.remove("dir2/DIR3/NAME3.txt") || - !sd.rmdir("dir2/DIR3/") || - !sd.rmdir("dir2/")) { - error("remove/rmdir failed"); - } - } - // create a file and write one line to the file - SdFile file("Name1.txt", O_WRONLY | O_CREAT); - if (!file.isOpen()) { - error("Name1.txt"); - } - file.println("A test line for Name1.txt"); - - // rename the file name2.txt and add a line. - if (!file.rename("name2.txt")) { - error("name2.txt"); - } - file.println("A test line for name2.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make a new directory - "Dir1" - if (!sd.mkdir("Dir1")) { - error("Dir1"); - } - - // move file into Dir1, rename it NAME3.txt and add a line - if (!file.rename("Dir1/NAME3.txt")) { - error("NAME3.txt"); - } - file.println("A line for Dir1/NAME3.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make directory "dir2" - if (!sd.mkdir("dir2")) { - error("dir2"); - } - - // close file before rename(oldPath, newPath) - file.close(); - - // move Dir1 into dir2 and rename it DIR3 - if (!sd.rename("Dir1", "dir2/DIR3")) { - error("dir2/DIR3"); - } - - // open file for append in new location and add a line - if (!file.open("dir2/DIR3/NAME3.txt", O_WRONLY | O_APPEND)) { - error("dir2/DIR3/NAME3.txt"); - } - file.println("A line for dir2/DIR3/NAME3.txt"); - file.close(); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - cout << F("Done") << endl; -} -void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip b/extra-libraries/ESP32/SdFat-2.1.2/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip deleted file mode 100644 index bb8e5440a17abebe327c6f1a13d52dd18d47d0cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435152 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�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

    1. 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

      SKQt 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

      JCN=IyA( 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�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%0A%vsPc|l<_6uHUYJ^UeBx}b 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 @7Eo!F~+Zu?M{o__XVk6Q7W z7q=eJ>;94+I)rMmj!)c%+uENXLyupByBi znGymr!0xdIS84lQr`6)YX|+`QVYroXby221vAKJa)=k_0vA2^pcyjXE(mrRG-(7~@ zOX{btP0&epO_bisjpIfT1k)wBnl*Hh-(TWPu-xZ%H6!;$M9HA*(Ng^h?)`G7qu|+6 zo(mjD|MU#2hoQ0wRA=!?hdQazO0h$BlUd?lYpX~fNPi((XZR^v*WE2k?hy)HE7=Ri z#|Rw)n>1=@s+|D>AG5ZfaqH{i{gCgzza`L^z{qaubcJZZ`o0*;~?zO~M4;Nj9gFco% zjv%gvF6Jrn44ZHZMK3ULHnN19n%A&_gIuY7&HYYi<*k z1GA={%N%|f^uUzfT3sP3yQqTNyk{#^JjhX4p@%up5@MIj&9SA=4x_!-$H7{UNfO?3 z>0DTogIz!PO>KSu7q2!C!ZmVPVP(%{BmF+^o}ci0ER=D>pyM1(Ii=zeANdnmezO$yv|1?_7 zBe~E`nJ87&G%c+f=Irz>OXcjNn_w%IRx_(u``SzrMY$@LW$G&slHU2;`M5nbCR1f* zPvr+ZeKo$(s8yR}l+O3^DfG`K^k>e#W`t!lW&OV@J@GYJ2pfcU zHQ|J}Y>;n{4<8z{viJ&4p}lQZ^Rj{Vu@3y8TKkrq@)XGyIOD-fO(DKaZ85!B(QUB; zqKfeKWwKIQ9ot|n?UG32wizVmJapB+|4IP_EB>4T*M|0ZXXR!b6 zdx@O$hNtjKVM=_{vomTq5kS?o9I>f^Oem78q!TqMOU5Qo)Z7y}$NlOGOIRVseKv4K zDV1GJ+5QZLB=t&9;-!85m+Ygy5G8ZBJ$Ve27a+-Vm<7bl*Tcz5$==jcvM>|j0-70p zE!kO$d9ngK;pyOLI7wt3c>|w)>dif!Fwz-Jv06wiFuX&xL#ZQ;%Ns`3)fSy3>3@dd zdHLNj230+s>wK(6`Hx#-_Iq2tugBc}Shn3 zL1+1>Ye1*ixsk%>ZmM7C1HbT_8`4~5b2sst3LjsKq!z7kP`Bz$ql)F(Rc{muZ9GQo z^vEG^>Afds`vf$h%KE7uT0~`!MkRKVIwISjVP?k#wr`#D?jZs&>MRBy%WSr6a9Qne z8X{|4rdeu~Wb{xbX*Fcs7*FUzU#L1s^|aD*JxaOhos-S8e>zf3EyO>(uG1a#ps6CB0pK@ZB|&49pn zM=43ikj(xmE^vkNDniZG4aNGU0{7g4bGPaoPgBbeyC;&Ih4|!d*stJ#x*{NW9OD*- z6Gw0!qXtSd42_zZ5&-FKGCg^KpJ|kp%uGD?@yXe8TsSDlI$Z8{vnU!IGnfcM5rGJi z1y2usE#dLk_QHuhxPI`o?)Ctnj6|yc@(5|pFGvi~fRA&NGLUrT^dK%eYHm>NdDLP2 z?sz=x&^dqgV#G8c23t(^s10h?9)e9Tw*GL;((kGw&f(qu7s8r8bxX}6eRwWBBn@X`A;F7GCHYvo#;XE)@rHJX(RN( zax(olT=AZyJJ=!$M)qGQW=_Ph!p)91StTjmAe9D%FS+ibMDiBmk4l2;tNiU2Z8P0- zj+)fmWv^JZZVkUF00D?4j}V+%Fl9+lVG%D1nkk=Vrxq|nS(vwV3Lxxc8Qp3v`^CNK zXy)t2)wOHo938x?e!NAEq?XHKEsk7cdhC9Cw!xMmNtum-qBDd|K72qTM2#{@odPz1 zacfk%xrRI_^USez&j8V*`Zk9*w`f=tT?YM%XLNUmO<#^aSOou%SP+Y{;verZELlYx z*T8ojoj0vOZu;6k)1uD)&r^f1WcJm?7wAO@UMS*oghhYzFn-HiNof!SEhKv(VEqzI zbJASiN|hnXMI7P*>Gud@fiNavbU>j|Kg%grjo;}!mPfukzyn}KYj_Cb0pNycex?rH zlRF_K;RrEf6qtduQm6_d6Dd8a4^@kKF2!9c0Dn(Zxi@Be55F_nb03K_#hPmk< zAv@M##t#*y=W!8S3`tl~u}m1#rVNf*>QbGe;4pJ8*#@7*=(~G5yL5dkLnlBTNX5Us zQ^>ipNq^G{rNwsi3#>|-;U&W1#OY*aRX7CupdwmLjOl0K#EGz zFtPqO>Fli#RlKqgJ=Hbi2pv9o`F>2m25o+9f9h^%3-R5xt*LkJ>ii|a;L zU0wzZmuHqqlPKjdcRP!4>Kxjak+SlJ`#GiqzyB3t0&C#URC+M#4-yioKBb?C0>LEx zeUsMk@KEMFWF3v(BeQ=u26}mp=q%-*5Fr`-F^txE1eE>T)_|d|T)yV?55Rlm>DDcL zzP)6U3h3E^@8hlj@dQCv6XoB-8VWgUFASw@eyk~xkR)I|nfHSpE^B(8@8Y+sXSH>T zsS+Hz+GsQ6m&RWIZY`D~HWo5rClkmaGbxM`#VjGT*Vw1*3u4r#%Gvn1=5(7{Q&h4) zU_8KMuRp++g=Ax)GTt2XNm>|^xV*Sea{zOz8l#(Z=DuDxV2jferfaYAvS*qZ3&FdL zR$XAj(x|1L;gXZM>{q5pv3;W<`Hh`J-}Jbbg+F~WD6gD5#|*D4ddV*=kovXI{G35W zC5T6GW0v-;;pfbVYuBaea}SHE2UnfvP@Q^>yF6JAX8y_PUmk4z8L|>KAbleum7GmW zj^Mi)zHorv%$9YyS=gy|Rvq2xEE&M2qeSkweQHty6bftooUl#VJZMJ%)9$Zj7=wm& zW|_{J4z2OS$B*E{w-jR!^!^NZFLDOyK>0hQP>p}H5W~r;LlSY9wxka96xU1E9=vvJ zS+!}WlKo$+Ow;BZ`=T<%QMkmRl=E=h$R330I}+d~Ut5iU|Gv}BUMN}ZbM@fsUzIIx zUEq@IU>F$M`PDojm7MDn>Z%WbwD#Qf05p%Edo*0mQ3?5tAGX4oabBAwL!CZVqlKo6 z|Js@(6wMe=-^juytv#Mh9dE|EB#tIfcK=wU;al}o&Xm0OO;|P%=(guzFr*a=hZ!zV z3NA*IEhoVp-$ZxwT0M*XB&s}q@~!)ta;kUoYKe(5hI)8Ntuh7mgf+xH!r2cl)$Gyk zj}KUdL?V$VS=qv|8$D~S26$_xWLJ87I?M5op0Q--1uF*=_D7&?FpP#cAY^imYNO7* zdnx4~KX$Cjk-50EiT;f@W6nN}7woe~Y!%kf4<-qP*q|ayd5YJ)nhcI#zBiqxojQAE z6V=U~wr?g57rvCBjASGd)XoP3!BeLcj$nT#<2`=-2)`Vw#6y3p6+g^?Hxn2lIfP)A zO5S0_t~Aj{@6y6XJ-X|{WT-XU^8ZXNzRM16z<1v15k-kEXxLDw>g-Lp*GFoBUA?^h z&<)?Je!TPCvhIwbm3@QM&)u{qlg_HCcz9wvQm+$$Lz@*x?IaDws$ZAW>(uYmLOJ>= zuGZ)KJN=k7`;#N#)W%zow=h&>a3>gvIn2i38CK!PC;PLN%Ary2STPB}Xndy=Zcz{??#EF!` zEkFXvk3e56RFA#;=Jwj7hX;5RrL&F*$3Pu+NKfxFo&LlqXaAbLO|QBcn-|s?j}S9F z6Fl*q;)!|G_hZd6L(VIDrejbE?(&9aRQQ;sQ4_>(*-X0Kh)?jhbt>t4x2*cPSCSJ5 zdPMdI$dwhK8b~!N2UvxY3XVyF%;Hd#JeO>bo@cO;@JxQjKWT7Rpxgf&tkiyme_eW( z=V8b2m>w%+$Tlms(N8Ab(zqy0SrI%1tqvTZ;i$Nto{#b1b-S(lz%M-4N=3Ji2l(pF z?N-^f0$?KP##@@iU{dhUlLkO>j(0A4mcFYx2}50C&lR%44UsZiiruVB^=dom?i>-0 zaT7hxS{eG&HOm2v$iIMau4j|jmq#NLf!<$ zaC*eyki#9wQ|x#6Y)=xe8l(!e8V&J7$)w3jeQ49k*|WhZCr4wD*Y!X5;1*FcvxUOcHzAC?*}DnY!3=DG%+P2o9}l zZk10Hf408hueyMf$=PvFQq?6|p#&3f%hh@zB-&LOz`z^G3;?X#+`zo_uh=JQQC+;~ z-uJ<7!QWS|HQi5cvde7$y1y{wQFsvfzRcwBaaO&I3W~C+qzPp(i@<>(n(U;|mI^n0 zan6e_mR#*B)4NrUCkhQe=*LA-#u-l8ra3QaOG^V^%VbFC-u#J$(Kk?u$-|q#?jMfV z3;|dp-%q93xX2UwM3jMBSeob&Dg9Fa1R5Pc6n(79ZAQh&p#v2KM9A#zsmw7r#c$+< z9ny5mDCYALDy7@~#Mn6Qd#*6E*;|?mV6gVfj848++MkY^9Z0^vyTPp@^rnB!P!Ga9jYWi zs4zn%r9A@MD_y7x2aL}L)wSpq_|?b^n59@Ar55CBc_XN@DEQF{m#SXd~d z*T+Q8tC4l(3aCv8uT=7VOC%Uu_j*TJNOb?cSu~R?<5QzFB*O>_*Kqdm$Qa5LC=dN5 z{Ou#~myal~ZyJrJBUM~bDHE!&_n1{1DXYizfEtTOh4fvS{@Oe~ZL zK4t_nex55e8))nn)BkhKTPKA=INA8GjEiw~YIzAG*}jlb&yTYJ`>#B*mGbf7~AbbJ7Kd6b4%JFGFZ3#KRQ*YIZ$B4*d~hx zoTv?EKmp1A?82mA@rV?Q;$TX?H9NaX1?(-zD80V$k|!9|dG=lfkDz;T6q-Nc=?_M+ z#C-D+z)&7VrBc=W$C{>JOTI9?PyLo*=(v7^)*ZS)t;|39 z6pT$u68bwj7K=spkJ*mp? z=tMlZDvx^pwNa|#%eg$y)JyU4c)(Yr{H;~d1cv%A9dMs-A}x#x5+2GFXV7i*F9TvR zEc~3LL3g$r&q{+Olrv&%)lcowVHf%S)L-Rk`d&nj)BpI>B?uC7-dgwCHiPy2Ao}DQ zdFvceM0t>zU|LzlG(;_^RLGi&GUj$YE58A{RlYURHFxwcLc|S?A{}R?>$%1ORV3MD zl&mC2Y|$+X8)L~Z*rY>M06e#I((_{&Dc5+nclbh+KjBMqExfai7T_or*d_`hed;Kf zizxvoREkUu58|wv^lDPGv6j6hf1sA+nt6N4X!f;x{cBMA_masnC6aDQ>Vwylzw(2A z*l$tT|3j;WO!r%jfAQ(SlF(j?S(f&wwm#W7RD`lHIDlP>iHtzLCT@h_$*CAK_I;kS zwY${!@0;Y0+S?G(GA77sm@3+47-}06O-l4NNbnzcc8DAQ#}_0hv$D)~1g%l6Z=Y3U zv*zj-igTT|WsS`5w$52*0Flq#A&?fg-Q!yVwXw6kv6$rw9_m$3Dm9FV%k%v~N}o5a zF}<1}NL_EQgC7H3pd-DK{=I>{daebMc5+5DLQ2Uc#q#nyYw=z{cfQexTnsw!bd>FEe;Gjr9F$?`3I_f$qVJyX&)%oW#B>9ayiGGWf?|yU!=m zl4)(EkNe3d$b+Q^fD+TA+NaEF0rK300^gskv^={Ph_0J6mHDHbzU9e}V%uZo?@e*u zFj!JmV92b39HyJt(sYF`CgJ$78Zfm_b7iOTFDbOVl~a8 zPR>t-@;0|Cr-HMsz^wANybm6gys1e(q#sz+AYJvDZ`WeQR<&7OUT_KVy8LRTFL=Gy z&eLbe+ZFG(X~Ff+nA7&3F+R1^$E&s>kRoy`-KqjE{Nt7?cKC)5B+i?ZZ!-@)KRuH{ zc=8~pO|df!|2BK=r$;n%T2l?zg;Ekj3{j3V4$@L z6SQMy&?&z}GYV>i&&n1EL%HpNnbr3Gj+UwD*WB#{XIFCPfAxUTTYD~h_v6nWdv8^( z^iGnK6F5Bw-TW&q=m1_<5y%y0%D_SlTKCoTvet>O2iXj}*DLhidq2I2`$51ABL-R+ znC6c8(NYQ;0Uo~+_0x{nfvaquKyTmT(A*MMQE01>mOS-{wk4zZb#%I^adb9o-NF>& zps~Z^b#;NE`b~PS8bGaN!K}XItW8-X4fM%8cIs|x)*nvA%R>DdFu1_$Fh_vjL04mn zJb+R;8elWH7+__jAv--oVFIW^iXe$#8f~1CCNr|Fu9N&(nKYh$U;f%?V9K|#y z8QcxXc`L~bHYTd%U>)G>I71%?$M8mrU^5Qg*}#4M&CN~%?TZO&wYI$J2te>ekki-h z9EXjVkyav~W{_wh>yVQ4?zK#OPCoV_R$x2FTh$OO;{Bp{&IeyC?9&KWXa2Q#Chz0x zbE-D2xa-$jj?OCIDphNDbG2cJZk;DqUpdu2i~!i}uGy-c$In;J!w?W!4o;aHVM3p3 zFJ|vSvXi|XP+ztXtU$j0<>j_BnR!R@Lq94F7G{dp?STD)-Sk5kGlg>)nOFWrC# z3e^yOyJ4ThsBU*EcxHukW0337I)wry+)E^@9-w`|q@#j?n;&=O3xc_#8Av30byiXjHg(qNOw|CB8{PF7zGR#>7wH z<9Idh42y9?7uFH5%?ay>r!gHWMPPJFGoly;dbP501u%Tj7{k~_$rUbkv`Mu~_xs~% zl=ptFC$$Hgus>=9(ZVZhhaH6{_HKgtnzNZFg+z6#EflXs$K5tM+>0?w&j2IVgN%-i z!f`p=7;*AA7Wi(}ii*-L5RQp>E-oUOo{*r*lnBkLd7e)0Vmt7&>9y~Z^1`gh0P9hf zO?p6^>WK5MzP+Kof+;$V%%p0Ds1imuqJL|mZ9Spk$$@7M+!zNg4l8&55%|lZv6BYW z_bI%>#0OIJw+y6QB8Y=0E~1^mA#5EB&w4d6Q1Y+3>@~%X!3+Sm{bWP9p+t)h#R|6i z@4vF*qa0)26>DkJDiKFm1Omi+^$RjscM8eJ#G+5r6|(kfK} zM*hqysYO1RDvP8xr$#`d6RmedEtH{Q{ewv;KC(|Uu1sPmn$pBVQdivo^kZr@Qu98v z$IqU6>H{;l?xsyw#&3hu{NnXa_)Ce_WzU^j*N5IbPi{UlcBWoTqo)~hzzLOi6t8v z- zW;*n9uuZO@!WPDuulr!~%ojFGIK>^k=)l$SGUMPnOTj{m5FcHw5nkhD)1%~x0>X@+ z?C7D?muRdiUK!jawL$#2mQ$!%@nfHY`cF~H8rGL}NU_0Go-OWNWjM2s7`jEg9G0tqr3D1V5UW2=uPk=@7VX-5I z-=ph~5^qou!_K;B@%UfPgwzYRd{6;Gv<@iWxPbVME6zFoW}Rc`=!x|@UGz0XoyC~Z zYm=@)u{WHyvHuQL%Hja#97y@lAqVhM6nPqTkh;H}>taZ^R{`s}dE@<_y@m4hzuf50 znbV2lk2zlgs{O>%xdg|aoZS3q$B5q0=^3fyy%?tNSx)FJlI1%QYA2tl)jS^4rww=9 zEHF%{d>&WvfAaC!?{U0G#KDaiyY0updDYXfKhI815Em=w2kRU1EITb=5+~>oaB`^O zkEU7_%Z(v%;dA^k$^GK_a(+8{dr08byS_iJRP>4-jt@bAFijt~?ajmaa~t>O`L=hR z4LFPQzc{@;U3V%gzVCAKY(;G9YskN6e?ivn;O60UP{H#JUdn5K>g0UC8GgOByQT|r zGb0zrbAPdd)O3A0mn^M<;d=bhjh9bdd*_$08$hhrIb2zGyP?XtuivsmTz;4E%lpyY z%LQut?a{@<9d6f^ApJCbY3-M<_v|Vx!gL&c{BOJIX@8!2lr0V?k)6(YSxImWya@@g z$ergnjGQ)F@tl5?e3t-vc33s>;K^Hbra@xl(*Z@ph(mXI3v>5utSOTD`Y8{0Slc7o zm(ki|+L_B|^doWb!;yVM5KOmmyQxijH!+(lLl(B;s-|Kw9o{9>0izp*E6Q6Sqr*PQ zq{?y*&(?~ed0YrRlZ`3fjb?WEKP7l;ew)6ILJwWxS+mZEi_;v<)d$wJNbm|NqzQ|^ zqui|xslgJo|55za$ebyv`&j=uZoKc4^bofT@Vc6U?5OS9g2uYvOWM8uU{;Ssf4P|r zay7iK2}m=xCw|v{&wpDrU42p7Np{5T)=pXRCMHa2m=7K%afh~XhqlgEv%W@I>Sga- z%T;!jv7rb#X%^~Q*sAm=IMmf)P09Q5n#JSec9b*6V>T^$V+y;kWO=*&<;k_}z-Yk* z0edWT#QW)7K`+Uiz$t7>Uxu)K(q9-VXZ+H@_GV(M*Jdo0(Lwo%(qA*am5Ixo$XvKFsiMw8n6sTTrB)mI_yKarl--#{R(^>-h zILV_r(mqYee3yoMs-}qI2E;wib&}(amG9FTbJfR)CTSxYi6SJ83R)`Ib3A`mwBTiQ z+C|~+Lo!<|;8T5iRNZvV9T2%+bGm04ghAM2?5Eb+XxT}t6Fh{KW>7RQLMA!V626}- zQEp+l<8XQPpGp1mV^Zn!Ulyjr_!|Lwj{3aZ-pO?L3%4XG%dfmXC$@fv_XAhGcT%tXMc$9S=Ny6NBiP_0pOQx_2>17f_hRI7N*~;2>%P8>RLWzJRywK0}L$=>tI+{Z(Zs&?uQp7iW?xg2N(ygdn%; zos3?V+p_97G(Uk@&C82KVt;=S#=d`MUifMWi|QL^e8#^((|#J$>=d&U>66ABmk#Gh z$sCp4DM zd+@+iK;KyIy2<=Wy#&;rP+u|RpKSdA4A@R`KQYVWPJzGNdJn5FtH(vUusjAUAr zB38%pCuApcVDB2{`yAt| z=``NYfI?Cj8X_I`%iR&F1Zh8*oKCTX6Nw$YcI)_pUSU znJbLS!1JD~e`s|oyTE^!3%2p1y==j^`gczERCXw`rRb8BYLR4gw61{#aoY3KdW1#c z3KbI>qLBxyq$vA8hj|Wfa+cTgelGO`!t}4`Hw>G*yP$gpMzy8F9M3Ku<_{fR!lQUn ze7I7fG|d_$$_0fq1|oIxBHAG=(n5bCtT%}FC|iC@d5!}76IT&P3E)UE0H%y0biQt3 zaopbC4BjjpK1h-2VdSW`f4v zSLLB0YJ5po?Y?a>C?6aV&N@(04z>WznczUBG&C zvnqTWla(KSUTSmuVu?A|UudUye{H5E(B9{+&>4by;k+?lW*~R~VpW5U>XL!u$zT(4 z&ru^JNmSHWqGTG?$PFQ(QiH>3SoC}ETgdA!m<;Q#1wB?ugn~TgBL5qgV^Y?~H=(#K znNElb+^6_g^@WVeVMEc%0ltJNc|vQfcMvVSk-GNDS~{2YroCQV#nyeMeS=Y}ZWf zScvXyBuBNA+M1r{Te|D_+AxWl1HQ`rqhDcdehClh(eih_cn8w8tV z^X>CLiz5ss#Dp(@697|<8P-B0RzsHORSH%3fi7}4SrWsjYbQ$7|OCU4zD`}7ec3VbM$<7LM zLA$qk_+?t!zOR=!;dulWd5U0kSa^f)^}CTF+2Ig$4pQ7I1#Eb?zRLGkTJOt(s2xUn zE7?<6%J$Oa9)Ffz+l1?K&AGuDyZAg*K8;hiT8Y%#TITW&557t=k#s~VmHp&D5(!R8 z!VNgod0z`*1^bO(^pynId*{FS_`J7Q_g|=7*ycR+De?RtCip>!Ib|so;%hOhP@7^6 z!l{1!);1cx=A$wEV5O9~_ONt@-=4gEyv}Pn{FOH>ow?`(mv_zQJ&9iY%rT3KZV+9@ znk)|Wi-q-@2k6&kd;T=KRg-JtH^rqx}(^7HXjVIz9`P_mpg{9yBHE0 z2$7ECgKe^cL+{6nUE3sHqoCdAQT!}uAIv7|S)z|n%4vGsN?%uP7b@vlGC6!2$_$D< zkhuQjD%diM#VyGl4Uc5>i`w+{1+wf=ljkC_e3Y-7?U5gcanq(GQ+BfWojOimm7_{< z7(ppWftKSP%Ys^TMsNvOG$HpZJA~DpR@d%;-QU31&luiJrP#y+3`H`kkjRuxvkF#N zN?=MyZRG8j6+Vt!=@*8G>;aN#=+e}wvOA?x#FS_U!)4Yxeq{0~+RsQ5pu90*AO z)eVRlB=xv6*^4q9?nBigKpuS}XW>zf3JbGccLE?F{SK(gIZp2NnGjkq8)J+DIsg~xzo>QJXUH6BuY>WA;UdHGT{bwR zsCcyZ}{R^9HBciz{lu{&FkhRpLcaxMhv4fMN=HP>V9B2=0EPqz~dw3 z)J0L+rR|h3IiGCH#F9X>hAI~i)Zq0CTYh%@Z6C*qqODF~LxqE64GkYE5-W2N_e=v5 zd+%uSDBiJwqi6a93~|D;T~1ZIltw-N|jMM1j6Ozl038lZrV=9g6YLj1{M z$m8qM8R}ZI$Ytf23u4$jX=_7+N+(VeifvVwn_d!Pu-31l4TZ4)P)5USbW|( zDcIpcOrC@&wpeYZPpb#)(IMT2(^@!A^G}BKUpqv?%F(tv*0Uddy+Q&5K)#bveEby) z@+pd7?NbFZhyN&ySdAvL?3?P$L%ySK6`-;mhI&y8z$giHEI z>jaxe*5;(zR4&>-{P?wi@`^mYZ*Doz2Zbzg?MFbdP#Slb=xl-&q^TQTlAt5Auft=_ zAfZ4^X%dlCFVdi)2?J7ff(>>+O2d+3rRCq_{RXDUF%URe&?}--i0^-W-Oe6HF6w_w zcVhF^%x09EYql>K&2rnNv_Rm!e$+|j6hfjMmKcZfok$dK^&Vv@V%mtnOMQMNzi}FKv{rU z2MH;Z_ZNu&`_~o#Y8)g55C_Mwz}Fk52aI`&&#jUtaqU_%lF+)X30YADDa3^n0vr&~ z6$BJ?ya>9fSE=%MDq;UlrM0?|O;0D{TXu``AwW(|ViSJ?Z(xXZdM5^6S{HNT(h3ch z%00yt;ukITYP8Bj>^V}m0A`VBLUB(>N?61#qY4@^Fye*UZd%CLATfDP0w@ z4ypnX|8*IFzsUct6|mn8@A>`sXbw~y$&zr@37R1B*cd-9y^Ta%0m?~QL*AK2oN@ir z19vn*P*a48CJ+V}+I@B+la5F9llX+wLBMrP~U zCl0$?Sg64=Z#~sTJAexcmIy`&yQ3QH?3kjsA_gHx@xqM}_m1T98x1o2t`hzUbh7FG z3P7S}#dM|}r259(I5a|du81K6`Zq+9s6z_k6qWdbf^^zDAW$>1*nPsdAhrb%%O$V{ z*{mQl6p%}Z`3d^c#cxjF2AmPxlBVykWfbhTw`t4pu-_f+3H5%ipe?qJ>cX}Ld#4hg z!e2ITPv#@qny{_2=~97*p}rblw{yGIE1i%4*)rc;Tvt$Ht?~H$p)ei-Yuv?);tTih zAD76f`aADRDJ7(tHoBlbFhs-4)gP#HzuOhU@4y9$cfPv@jxxFzz3d1aqNUa!J-1N% zR&vYvaPv{j+}+f+(m=)n3ut`p!S>n?@B;$t7r+6rA(ENs{hc@ibXs$wDKN|}lSKdfYfig3Ab-5(Nusamo-y#<^zuRCXK75c&Sh%9lcBl&k_IEfD zLImi9iHNE?ZJx>y0+sNQ%>(Us$0@A(#^Ai~21DkaxE%|%yz93G!rx9oDZg5VzwsMO z4}Spd5`LINO@O){6djCKR91>ae8F&3M-QJ{(!d=L_@Mah8F7s-2mdN^_bw2;3pAW_ zvc3d`yH0KW?dm@B0Uvhgi6FQ^ude)l<$5VVIIiQUVIEX@JY160ILfGLng# zt)`2F10L4!-k+qXwt1q8=8&i3Fd=Hmmbwds;^?%PN#ZX5s$A=Iw1lhw&H_Ch^_=|S zd}6P8C6W#&DSDF5vOy6Ovb6MaO8fgc2^9Vg!s`O5xw8_Qt}~jKkcnTv?Vw%}OPAd% zxAlUCiN&Hen_M?kd{M0%xeKhYO5?Im&-^TY?s*DuqqBtW$J+ULRb|**uu6|CeGOXN zn_zca`YgH}WT=J9TO6OwV!rXiyO0~=7yb9FsS{uA)kM{KU60*Qw{H7K2N&Dtw-xcB z+M@5*D*Y^4?`Gu{-I%olP+U;U5qay#`>ERv6^1Le`DBOZ3!HDBFR)LeB(*R48Gqz& z&bc3p)>ZDVud^F`-xJq&)C1XaFdVY z6V+#@uyb7eDb}px_tB4!($dlw-@7yBwWlw`Cwo0MUhi|wccrh_+sil9wX4(4ZS)mC zzcwp)r;j%{;&2Z$!kE>(8;YY))1Gyy5-`%Ty_ffH0OaNvf4$}yY1KyPAC9jays!Pd zZ}|TwtMosRstm5g1!Nci0Df2i0E+)Pt5i?V$j;hYPtVNJz}}qB-qx%-%}pM80xb-f z2%|$lIG!p$D$rRzGasZ#5*1RR2$D!V%~UXjD7=YZkb+8NqWFbu8NdUGXhEPTD;SG^ z1NxtismLEE|G$sskPYqX4t0No+E+Bab=F=%xA>= z>A`_<-*ydt;i3;7EQ+ziE{e35uJRIvS*KCGll>BzOY0vix8gDJ>9NsK@#}1U_R5ne z#P-==aIVD{pB}4oX9a)K))=^$Z)Ms_w8sFznUQtu(P_)WGKNOb1ps{>`-605-&Igy zCg> z(#XO;Cp{;Bnd4XBc}KRgBifHsH2@X0+G{<6a{kWXmfA$XFn?t-2)I&9P)VzldeMD^ zaNta37R|sHNhq4-;LcNEe<7@WOeL^sSBJ=Puzo}_6x;=G_I5c7X;HX0I)o~3NuqIQ z;5Luny(fcwADLUxyD_24*=;{24P(9NTAb(?CT`t%@O@5Hpd(%OReCwi*u3?Sm1Tym zj~CMRc?l`TNMTyRB$)4}DHX!rm!lE{S}kfY$)GqXZ5)Kr%dqs+KMjgKM)`w3?YUdl zmwy|2`NS5k+V5%9;W0dI^qgL{vaWIqHWb8|GX10NDK`ROG^GZ<=vj_uWq|l9Jou23 z1>2ygjk0tRplGo~e10^k;~QtbFyd$R9&~dl;t((# zQ1`B)wKyDL#(MP@>FT8!{+K50n1UYa9YDodA%zUhuj+&P5fd7a#{X~uW$D37Z zx;9FgBAtH9QuaO*UBR1^mgmyXG@>SE4x?E5j-TM*KDLlzf!LT}&8d$9i5`NrocDoq ze`&pA34-B*j~NT5$c$D-MnLF`p-Kh2e%(mswHgZBK4Q$kz@nW5h6=3*{guqrz+k^| zZPr8ZD!Q<{`!8GC*DVi$-QKLDWT}t+Ev=nrF9i4P&4*vLl{8tEHXvXtBsDYwV6eIG z6GdHTcb+;wmuPAO(m*kmc>2F@nJfFPHZb{joV_m4`;j7A0iMk?m0}!I6dfo@S;z`F zWGC&g(tBx5MsS@fUSj)>k(+I`D@v=T8GV;|)}Hy=XtcNJk|4KIT~{^0$V5LCQBh@KhXId-d`Mrk#AkBJdG?-laYyGX9J7$9p#a7c{IDDD=K zLnOO0GS1qH_a`G_2Sa^io{jva`&ViQ^axI24^Q=@&EbTeHgQ zJehaR#kSYj-|sb98$(l#!Z+pqoR1`vsFh@W2w_U?nX=X03t0&0>zKdYD`*gEtnv^qe@f@sZS+2=W_tf`g zpuMpBqiM@}^su*dTxx)r2BBrSNaXfdd!Ij31md$LtFEzjm@tiy?$a~0-5cCJHDGSr zob6vdUHJkThj+8qA%ffcS2L@DoORAHp_JWGEUn%}xw#R6&7u0*Vp6k?U}RJ85rqut zZiQBep@C^Mlls!D2)%^K(zcx)l0;}BejzhRpi;tB%@02O^Le2u0ZnThV!OcP@X_N$ zNu7~d&0U05>Uhqt_VPj%iY8q~9Tf@2#CpG`Ws31rc$S=2i~od z!CHh=oG1nIE^(Zl6SVpF5|)c48~iH3vpLi2&^nks%InaS_SC5J z@X>I{u@=(BPg6=EiM}M@P)aLhZ1iz_AXDwuE?7) zDAd$F@JL2EZ_oCOL{o3MHh_)OJb(u~p&avQV;S+U@*9Vzoom$_fPRc@SMBD|mP#1S zT=R2g{0g>giE)@FRGC>Y{8=AJf7?9s-78CXCipo0WN#@oUPYctHR&X2gan;;h|b$ z5fH)QTpsyuW3#POQ*}Fx2*|={0BYf7qjtiP_uG8!xkNy+1;!yebsR0TCmNldfNXCU4;coFV;D5DEew^da@y84%M6O%p{XqIeMWIohz=cCTd!~N|TQzSD}jyH&K%Km?^VI_W}xg zM`#kdA?u6{38cCZ6`5v0k*SHxLaZDd{n|BVw|Isn%9El8w#lf~(!U*_mhnE3!aX^A@VQ;8jZqz#-^KxWzx zLvB@nb#JS3R$i&*(}+3W`$ddbLYsVX=#Yq`it0hsObuG5SF~ks9supd zc2xH!c}mlL5K?d^AReCdoA^@@l(ZSN%32nOghGT4_C%q<957*fF3~hWK0XXL3SFBW z!hK@WIX)y-h(RAfOV9+BtXp1FO3?UhBTkKCT`VDzaP0O@xD|PSaX3RI_^Q0(#uCCr z0#Dy|W3K(%$@Be_*vi_MKXusaykXad?WU~|g#5Em)WD^{^KW=v1*$UXrviyU6MZBn zv-Vl%5$+@WXiQ9UeN# z6kF@0cQ-UR4ncmp=Ld;giRlKOw+U7!=wSM-FNj>Rl|&k<*Wz-&sBlTcaIAVWK>6pL>}X&{O4#q3d4~=y2qv z3XYM+dw97Ik|DvNc!3q=-Dkjy^4iusv0y?eL4rs`)os?Ajc%*c$Vc{O>m8-sDzeQd zdcJ%KkICN$a&Pe{ywO+*n(~Da$+_u~hg3IF>8Q z|IS0KZmpoAXLC51E>_{$$;#W}15gT2W5h6>8_2Xr2+o)AO)wEmjuU+>_Q^ONkU6(I z(XdFSM+B%afuLLtCjNo`pM?eW|DUk1ur)Vvv~d2fw)n5M_^-D3ueSKFw)n5M_^-D3 zueSKFw)n5M_^-D3ueSK#wT02|p~Xnk?VT190KkPU007DVtSxA5Ol%BI9G(7`CFYT~ zg%h?|;#ZB{d?>kSa-i6D7_Fn($nz!p$~`*`hbgNeF^YzYhViC88<=_gf$fyvZk263 zh`9n1gaQ$z6w`af#q#7-+VW^4eb3hi8~x8m=}kr9wY&D$vxuAQ)BB3{M+=- zPAh$H_4iwA+N@vMD_y0oY<|YF&NeH<&gRFjCFUQ_^N#V$%I@yP#l>x<_Dxy%7v1l! zmk#9-sk7k|*;Zv|HWv%$+kYCn2N#D9%$qkC8r7j*H(?8fmN3)%-w;_jdb*FGh)7>J zM&K%xZ9zYotK=Vrb{i#wC7T`|to;h8VclN}VYQw4CAEi$(q?N{Klk^wT((UwC6eFm z50iOrJr;4~bIS%@+OsdaS5CefWdTN8__&5aO8+*_7D9GgYG?nk8=SaJF9VVP$(7x( zXm$Rw$muBj3MO|M%JDVptiTq89^q<)`2AJp)wyjnIQ@cN{zrvp>?mOAGW=7OR|{LV z$D_42Td#_k(iDp&MB_GlR!jwD?2Fj18FX|bv9M(uu{T;>GPLA!BYQRZ_I-xlK1gU` zp(Sg~N1@)&pV71R>)OWo{>JY8sSi|XvuPNkjF0u@1*xwbLg~Z#o!bWit{z3FKsZ~5 z(B&N+zDO47uaBo*D&RG(I*z8ZXkSGi#pMV(OY)@=bS^Fx%gU0gvWCNFkjm?_Toq?T z#^1DI=GaZl5~^&KsFL0?SJ%`F$|-+JK}MW|A&koK!#iuBdOFcz(XVe1Ma@fm?uuL& zAv<%Uja8W)ClvIZ&%&I z`25k`^C94Epqa{-0d=#3tkFg8Wuin;V+z*CyDn@SJuSmN6v%2?5j~(Rt}gf zlyTY?Pj%K(u4-dpY75-BXZ^%e8!=UD(hhNr=EXyPE4{sR%R^kxW!ajHO7pY>R~})z z|Jk>BByPXwc=dKK+a#!-yp@(*4NA7#4b4j{=e}b5?rrpj-LLse@2xeo98_5$^dPRN z-YMn!&&0nl$+4{IlS5n8Uv5496#r;$7h*zQ*adpLw%7NkG|phO@^Dn1U!ah7&*$*$ zE*qp?EnWwOH?I@5O4q-?SxJp_tKV~i4oQVU!z0(%*Ibh@xR+8o);)6V_?xG5!^B0t zUu&vSR}YGIZyKM^$ovXNNHZeTLDaaPuQzZn`+@%Iob~LFrxuy3G9Nw<1;mRSy36=J zL6hAS)$o6GZG7`RCzN?SSvlM_4luuHx5A4$M%E1elt@;xs*U+E>Bl#?6&R%ebobc zaeVb?jrdW5j!U?Jtcn6N3(um{e!fw&a&@^}3BY{m^-4`Zqj?%Q%#o$HvLwA$Ouw#uP@qFMeM=D*-F7Kd~L$M zk<2PMC@~695FKejonaFDJxPgmn&BFl3@J_Kh8NN-;Q;H`3o?ip0)W-wIAN4rz?X=t zMhQ;8J9b+g;_n)-Uz3d_?=H0*RFbOP z4gnpZy4xdu2=KfJq7K@6@V|NCqiC`IISv@a;%h<(mlpzyy1?LN z#AZhzeugX>P&@zP?dCY5$K*j~|lteN7 zrfJMZAX^z}9QF+a2pVo0p+asKU+tVe_gH-3`b{FS#~o_y_LzaBv^`A<3!1d#8b%vW z$0b%HiKc2e~;$%`f&J3F~G7fyK19!-J1fds_KUfj0tplTqaO4 z0ENWe$OVm3LVqU)4$g?nt|O+((1g;h-c8KZ4;03tDP$`~GoQoKM#pqPLTd`&Fa*M|?!r=j1LJ%`AX*vU{* zGlmoRR$oAZxQm$tbAQ4-PjUasvMhhAyDW3qCnost-Tmk8hb4{=6DdokQ-mT;pvX8- zQ9s@YY3GEX3YzoGU<3T2175#ME-Fep07iqPGNr*7SduJj9EXVQ9}E4YU9j*b@2wZg z6p&HwKt_Lq^AQfEaFZ?)a{NI69>Xh*BdA5X&~yUHUn2 zUF;c5lUY`gvtS`KO1pyI)b=CaFo_%53g}Z0Hv-Q^)K^cY8Y9L#_{l0%i1xW1FtQ}( zevA?t^DB1<35*7I34>Bz>y0x6msFu?Ui#TN=P32Y!PU`wWYNrJ94Tr_dC^4dDT?C> zB|rsCvW6K|0V=1b+b?K2RshE=Z=`w8eq1LM&o(u(q^{6F!R>7u>JHk_BXiKg=s{x> zcF{0i(`wAGyRxL1Vtia#Yz#i`T?!yI%BjYvi+iTzzPB6+k5 zaaK!0iy>s|*iC0OQSTs1U6^I+6K>!DR&Y{pS(e$~4X2lutXzq2>Dy(rg8P#t_)D$_ zqfr3O1=%rsaR8Zi;-GQt2rKb^-hw)ag^;1RO>4kXeums8r=rviq!C^g7o;%$Y!9%B zxW9}T!y+1eog+7>J@_!H6Sn_7SzV$GNr}@7a-QTY=0Jflo|UN|W->5L3g_E>%}3|^ z$)1J^bLFWuSN1+>S%`GM!w1yCXl~_Xn#wexkchD#Gl{GMCr91{c8yc&gLK}L*%TVR z9cW{so-1~vL|KYeYs4Er4@F6s=aiO#Jmq++=)#~gaIG7_iaBzf2F6(K%v(@R_iGM` z(qC-i826B%w%;;nIW`V#DwKw4MG0yY^JuRbhR|Frzv{>Z5cudq{n6n@a0erMTD>qi z1*?q+)7W_ip-TkSoJ-tUd()~eV>yge<`ZU&I9*ikjCYcQnV3jYfKg84ls^(=Rix9z zACEI^;^V4@`(W~q8x*K`5~W@djG{k~K}~@9j`we(M`Th!LZ&GP7%u4xr27h%goGCP zqnE(roJX=dOe}cRSRi~jFPLq&a;6xiu>GpP@_iE^b~@gUfjw(60s}B-g08aw_FtTw z19f|0{5)|*U2;M*v8$#|_*?4{Ttb*A8bLA#nR)4eq~roj2t;-1^BmrPJAF-rQQGxY z2ub2#!ebbi@KoxmJ1gRfdoGb3?dW^fBZRcp9xlUUMI`d7wg3EyWv-fL#tvOH{{;%Y zfE2-E2G`R-BCGeC%cp89M3YojN3O3W?_nj6*f_c4&#gxbW*?xN^{^Kb4d?F#npqS{9$>lOw}s611GgJXKZcrAB7Y@t3{M50aAIZ1c-&mZ+`?2Yz5wJl zk2^iF>K;irS&fr64sjTl3wz)ydFrf$OGfAIer>vACkitPWXcl{1~0fnoshsdtt88} zjZH$cArI|(8gB8T+FBHFgrFDmyeZiAbK()dL9>Wr7#A6v7mzC-5N?;l?1`9;tl!6= zXO7UM-)>-*6GK@s#kfb-mpD!{G_&=9H$KPnWwcu*-Y{b26ov-_rjZf5<0}rJNSmrL zYRp$ozaRaiuWbc0oC=_*7|Md`M>ux_8B8kqMLvcwF-cB9l%5^j<-mqJLJn3F)X{O( z{6?dS34*5W>oSr{MMIR4&$THQY4LC3?gT|q=!`2T!{lGyD>Cj4?{#X%qJZeC4S$mw z%{f9K%}}7==P3kBdAU126r6NAK4CaW-hi%0`;LNSz9Kb}(_VBC zD8X_a>#`T(&HY(XM9(H|8kzRKKg6_7=bH**ny-v(=IxD))U$x8{UOeZjJ2Wca4jcz ztMutK1@=Kn(_As*AHegeHr8s;rpjdZFX0LsdG%^C!)5yu_8=s~09M)(do>fnX&4vg zf#lh|-w$`X+PhdyYV-|Npys6pX)~8zsHtj_}h&VkKBv}D64}BGN!{5aH8yo za^nMU8S4d83!fi#kl%c(x3f`hP;Ko5BT;G0*8;e!9Dv$eG9<7Qr~4uA2f^lH)TK8% zJYF{jLt&t@lXN9##*D>l6gADdqWjJIXY1XmD|c(_wL}elG^>L3Q>&Ti{xXkG3eN~l zNMqs_O0RMm@H`!~dfvwszH@tMU`M+YUeQjsDeP>R(}utlaSNvp0ee~*pRjV}hX&;G z4ng(?2CF6KQ>pU)7$8NZH&e%y8%T;>NC%e@on6C?9uCG0-Tc~p#E|2~K+Gg{(bal;jq*62CGSOQ$YusK39#j` z!T&4oY~mrhzb(Uve@!?+#F;Rlw(U#~K9tdO z%EK663Li)ZE70I+U@UpJ@^|C7xzo3?n zUr7w&XbSIvdZ-SzjboGuiMWjzt2|}m#u8+3Vgr!`%d)P%K7K(>)qFf z?d@7!Kb5b~tBbT<73VPJ+EWId=qv}Gkn!v5)!n#?d56U*G&xtd-5#ILht!*;hr;dE zTGw3@1C}`5?rqzZ(Cc8b=x2OxD>H95rVP4gO^&o-c`F+>Ph}Z>&nC9W#j8BHjQ~WT zp6ns83T}I@ZyyfdMmA4fxh!^@7QMWggR=YW`JJ+en@rgSB|n%45$k7P&#&oULt|ai zqtmOro;6?Hys5vKo#P$Z=z2E_o{Z*Dnx0UbPl(}M4m$9CHeOV6P zT$QKO8&7tl`5ZgYchhU5SI_#DSaOK8>DKhz(g(V1Hq5qU4nM!iG1E!sQ6B2CrBCpa zCx0`<*voU}^y|xXhfz))&JP>6ukXQU$qvtIm+!dAf`PUSN9oZDE%C^`3PqeaBccv5 z6tchsvM3=yPg=i0K0SxD#ZC~!_e0HRltb~)hHYeMY6QA3v!=EMHb)W>YLMZ}~50+pLC5`lcw{|-G zt|xktL)V$`_Z>g_FAwK>TkGWa9FoR>;@NA8rUF;v0UcB3w!N?y>XFrq3reVK(;dvGsxB;B%;T0b@O%uoA zsr~SiPeeSBQoaA%AFMX*iPnN7i)wqaM=fqVTpz3s!`;K2t$3d-l>Z>zSmEC3kB2Bt zBWbyZ>+Fxia_%lX)I z#dK(L{=H%GnLw7o^?M~2_qeUR!qZcc9vxAs&)beA4tBtEUyF-RdKDaR&pHmTm(6}1 zWz>fY&cSA@_73GV4=wD=i`xff*H~WcG+b{t1w87Z$Lr2_j7MK$|C%RE{_x6dt{3g5ge99N_ypOv$3&J31^XVEtb=7(`@VINy_}wLAbl8wsQHSQ32mwqq_xUkIE77)H3z|hPHS( z0zE87!&IR)%9%;E<_zMhygHmQfK_PQ5ZDy8$k~1`JSel z;ALE0IyU!uBa+D$jO?LAb<8zR0TD3-TO6s{Gf1dv96ej zq*{Jx#HxFD;LR;Sq@%Bi%BdI_ZVVQ*`YHvyShxcrch{ITy72R#nC^JXed8SZk{eax z(+E}fVYSGuA>&q$c)cw1c(-otuEK4u;YM>mm3;!*of(BC08lUKoBwS1J~iiQANWz2 zfeL#$z;LolD(1t^!*RJ-bZNoEi{%1^gLgQ`r2F*|N~t_0Je8qwWkAjCgUNxb!Sdn7 zsKw0BJ5tr3{;Nuonq$^+s8Xre8`gxgcs%L&y00;n5udisu@LQI^xW31pjWGIk-G`U zf^(Oo6+KQnai?FCEY9l(QCeD9Bry3a8rHFmoNsQZ>P8$qG;(#Fp6}9~nJGYRw!}Vq*swgFwHj7cz34xVyhy)l z<#AeNteuXFjLCAp|Fv?YEHLIJOMn2CBLD@SR|nOW?^(F@UV_GX(vg-K!TNAJvhj9~ z7PC_gyMhx|g@Asrt%*v4e;q01sS+ob z$?Tgipw_PmG)6R=vt8Q8Ne*hvFO<@*$?~QJWK@`>i9sZi5N5s&^f>k}8G}6a#Q?hR zIjLrnX9X5J%ASw%Z)n} zi!?mgg!p9F$yIKRbl12NiS7-(>)IxK6Z?~{FCVEzE?76uS*|pYf?1}@EB{x4i*3X0 zuB_U>1uR>|Q3?`K{g0Fxu~c^FQM;2MM(9kyMZDe&cphrOoVug1m2lILgHgmvC@`o{ za6Sw3Hd;P>#crgoPNt1`ZHpiPG6}jI6+%^RQDPv8_P7a4fc43;Tc+X!T2*Guo!^TT zl}P~hK=1p^1>Ac~>@Wi$+tD0V+&N>|;U|6EhT zD9kzGs%^~k+}D>+GAlK2hh@d!@Y%tf5wn+h?5ro&FjCEX>LCfG;v7o%h`|@O(o#B- zz00H)RG3U_drt39<}^M!ZbQ{mD4Yjq=SCZaypahYtwcnnz9W#Mx{T+{KhevMj$D|D z+jY9pQl3W_1WqLU(@thI8N};`vHd+T10#9KB>v_-1>n`K`go<7)vW(AtpXZw zBTWC{wSe*CGM4UHOA3z$xouIR2|*xHm&bG+vIf$RY|y zVmwZe(+S51k^*Nf3${YIY3za=j!)mxP2#}aAQVHdkr8JJOIcN)67W1wG76e(SXZ|{ z*)%q+Sa5R)b%(oYY}mU8DTk6ry~SyaQ@RKQLT!Q1B8@DXZko2nx@lZMcQrDl&==~a za^Rf9uz<_mYCUbadaV}?8Nyq{J!%gs|AdY+Ay`R2r+P92SF%u!dT7l5;#$OFb%MYoa7n4uO<5o= zKdbn;+;^_A7P#nqGP-&>JItxUi+g*Pgwn30la3GCZh+L$*l+Y*7PeA%rK*we<06X*w3%2trc)nv z#dm0}Ot@+ds&z`>;ClrUM!~1Oxq04MWp5YGA9S@-PjO?V0_*AO@c@Z|?5U6=w6O@L zkf3AjT6Wi=cRP<8tWU$*tPkt(J&q$niQzHaUgO9t*wL8#CGy;CGo1K?AK!c8)mk2e zj;gn%){_SBy$2mI*hxY_74MbZi(``ExciT$yNVL5SK^)ro@_a2Hs1*0I%zg2*P{mR zod*@hf|{saoVFz8DT}ka3V}w_^_k$hIzL7g)PLWJqT5m4Zbp!5h7&7dJraaU$XH7_ zL{P{QOqynQi8R6PsHgs)_n~#3bfW*S`q7i(R=H#sYC+J~Z5D|_o8h=nhJGxHCtr1C zcFEH}e3^E;Q_nKu*i9IDp#16IP`xEVMI1W87zKde2@dF$eLHlg-t_omXQ3#x7}s)- zGB{t-E#D7%)lVutoyueySU`pt@)fym?N^VU>?WnPK2vEi*^7B8qUjO1FAi*$uF48w z3nQUv4`X?fVI<6K!}@vNiyrSLrTP1$#Kjw_i5Ib^m%G7q;jG!&-6#Y9(z~fNE2kj^gAjM)*-lm2@3=juO2mAL_hQh`{LX|(iBgPW{Rr8ZZYhkV1SN8bN7rvJYi$n6eakCci4@F0f$?WM)?CR~mqL1eaFY+Pql7I2xfG;zngi!6$hL_sq567OsIDR} zrp$kTiyOp7$vbWjJ)8|NiJ&Nah|}OfRX<^(jyYHmD_J&unzZ4=t*H71n|xu6%5b5* z@1&`tapT-CSZGtENauPa%d|@((x{dZf`w7O%0+lND)UQE_UPs6vx8B%DU$6W z!p!-%Gi4_8L*y2eoPTd&YPLAFT;g%oy+>?0WRx~c?Ym1VfEWe?Bc+o8rKd_O<^!Wf ze&l<+m*wTbPaF)#teJqE>>rTdb}#B^T-uX}9+OVbdYdsS%G|%G<1t$fa3&$jznG>K zTATS6EL@7}(QH2^*rVdXynYr;!UuRlmmWXLiyE-cCTa(gjN2m$d7H;x; z^ozV(Zlh-&gTLW;KX>2}i#u+=ZD; zOsQzZ7|rYFw({hX%rIFkrUPd=2};b4@I_KG$WN>KnZ>SeBjTx&IexVw%nVZyz-N+=*hLC^@xY%)wT zHaVpHz;*l*pMs2nD5+kTf=EA%5(4l_mx5PjazZG@fslV$bxB)=VZeLurOt&Nv6$n} zb+2Iq7+i}{?Z?*|J5Y9~lOsMH?+_T$p1u0x;z0%xC~w!!=TkWz9EVVKSphpSZ8_65U$cSK(8x;1EO1xM49a892Gs%uZ zL%JaT;OFe~`$ds@JNJ;1sAiIp3grjFVM$bYh}>Dqv*xP9?F}(WtVBEm&?CRa zD?=2pOLb+ZiV*}eknSP_91&7Y?$z;-1LP@K2RWHAZ3fT}l146K%NDp#e6N#uike0` z6?ewhKl$HTpq6rF8{efA$|*FktGQlS#3sF=KGPc*EymM2qWW?agy zc5dLdk3P%4Cme=cDVuF|%}vf(isGn0^{VglI29@`OD)ptUVosip*y>q0?wIHOnjh{ zeQloz+K_8m0wbk-F5UL5U}l$Yq+RU1@jMijMl+K_w7$vFHdt*wj94%X2~Vzh)rdTU zp-Xo~#-y0OEEM=J65Q?~;zdWV%iN*HTDa31)G8K%M%I6pF+HR+=`~|#Gy!w7oO)%8NjdJK3zq!cg#WZ_cc(<; z-@EJqhSxA;9>qpU!xuBgLCF$#NlKPqww&q1xm}ba)%eyAbI9_& z%hPsiYjGO?zrBwi&DDK1zTRFL#^ZCjhq@k##sbMsU+eP=2N?@@f3_;jdyP`DzK3Pw zKeP&F`_Iot2+yz-ipa~ z?0ZtkCxGpCoNankUt6+vTfVl={JzY%`$AxU;Ut{}+l;rla#EsioV5IS^@!RJl@FO* z&#ek~KI6k46n5R!>#ACipIdDzDsk3E*waa!dNCD+R(V<~V%X10F4>=iD!bLwJqR+j zad#Y=%MLxw6}%Q|^?Jc2=q;!wb|Wfp;}w^re)7BXgX%5sv8l&CPU}$c z;Wa~>Vt+Yj8dR4%$kgNg3e=eTkBNZnhf|{M#u3LU!J+c zC)Hj?^SNdkRd+i}O}ij`YE!n~j=ei{|NMh9%1$186bNY*WG54ka8)KjxE5DY{iTy6 zj|(qQac|V+4ICc9Q+|&0q$T})fT-Y|YF6Is@OA?f+r_DdBC1qcg{uH}IVISlTVxQd z^g8s)*{-mu)MOjB20 zDEGfAmbrN6z6^$w@ifurdq!D&Nzi@`FS}J;{D22|==C|>!joFIUVZ7gtzPNn1UjJ0|E_(26Ggvd% zutUYlm^3(eGut(K&AOFK6SZfQ+)SX3(U1zwDsAqDL3PDF-4b6Qh+3@U}6eOu&~o9!S!?8Kupmr)P``E zFeH8CnOCZRzuI@bm6;f`TVF7mHg*uZKOA3^b+G3O9-l{g@@z6}&}>QreyKiJ3wLXG z>vqH1aClo*w@8vk7?TQ7Y(TKfmr%Uq@Yp9f%Z=8`NZK(iDP31AKML&+5;SETz9-N=s9^Eub zM3Tm7_K8k~b(}X_f3Jmjddg||f-ihlRP@N2e78m_};cwAc*eO+(B-c2~lhYUt-RPZi)EU3%s zcJn~%7Rd*RaPSJ^G?iJo^XjVJ;JBe6n4$JMU~(uft?Lpw-a4_u$~sas`}jN7PKItLJd}{@o_NIyg6);D_B=A9#H!rzIqbJmp5YS(f2b+r{V$DYkV!L6Dchf4O)*)&bwvB2Q9xz1Id( zF*W;;j8B%_4YcTq4P+k2Ae(X}bAVt47;j6Sg$JrDHA0I0Wa+}bF?^vv36*YZj?Z(D zTwcg4+uEwQe=S(JvjB8QUVsZEeR5Q5dv;(Nl)^9)NlCz2H{WlSGnR8H1fxt4s zv`5%5a{$ynUjg#nA%1)QxE!2y$LIOLl5*uuc)W_lVd=OG8{=2qC{ac(`yg-&22RAIc($_*(bZ=jznpOVo( z($)T)1u?LEpmCxDg#gAx=QGrCX*)P8_2=U-HzkrnzHvQY=%EAGQ$* z18r9Feqx9Knv55~XbiDF8>GJdnK^2dnP{bfK=qK8>cj|63FN1kxeZE`V8TByw64JT z6S#-{WAJ`j7DClz{MFKF9_!{l#CFlW&QNxDxkD4ZE;THN9-asm3$Bu5jkdP!+aU z!dVOIVSKDAxF?fuw<^_+38oD=@4KZ`-M?-)A`eG~{`V}gZ0fp9D%D-B_6=iK9vZe6 zJm6{6{pN@DoWvmcWa38X4q&d7#u;1;iwuH54Q*4&d9d$&Br-k_X*ewa zFtCXWua~JK0ZXS#TNg{HD%qeqSq+*cX@4W+&#C9u>Pj7QSt#+9!`9QAckzDasK)MI zaCb?~{u{+jIXah_+AMn18N`9KUrP@YsCTd|l?1dVYktuW@>SQ} z`j{PZG_k^q6pS_)l6!E-#N?e80L}|ErWQ7-8&f#Lr6UTM*D^Uyae^Nh!oCBMi1SCt&7x!m^U=Fb*N*=BJ${*YgQO?@>LmI>?nZJH)CfWmUl-Lta(FpJNw$6w814 zogl!9+7d65-PM&aR-R>0^+_PDI4LAQ_yy`NC^JQIE}%fZ^n8Pv>ufN~CAjv_{N!3z zUi&hhVol6>5UZx9nu6<`pixtnRE`gtiy#{_(Wlf;MhVvbVmi1wL;dlD-hVu`bye-` z+o+ehS_dvn>tOx}ah9}5l2M}{Nxy%P#QK&*(IhBR;J7&j?Z?jTKX&F@QG5L^oMql$ z*?nOSSVbflE`%4N=!3aKXh*cEZw`TwsWgypO0NF7K0(NjrwtCn0?L9J9B>@O0kBjv z;Q{MxtEYrBYCy`z;7&%-|5R@oNs5&-YJWCoz;r)?@U~sMkX{`~5wH90be^HYNT6BM zW4m(=_Kj)ReD{EV6yt`jW2Cv=YeY)YLs~$N5gd&#m_n7E-O@XX!XtSDxcVoUq@c-m zMjBVmG(3x!crm%KPaYU^QZ*|(>R(EorQWgxN>i_0D334i=#`A07rOnErBp+`Q!le={9n!7oUJGi&v`4Ooa2CzY>?+lmy2DBI1fbh)J!@Az7&S{l=PG92FiEqPQEN3x`DlL{FJXMt zzgakQtFt8WG8QIZGw;(8U#h^s#F+04w6N36Q!fI_?I{&}Ep2`yL*O{ZI>-D zn-k$IB#2Ww6$;$V0&@H$v)q9(e4ut=t?Et6F233gUjJRkRK}*s`6Ml(bhG0CJ$`pl z$NivGP=2@k+kCLWH=W}U_7eU*jHOJBC6onQA^D@ScVl(HS!K|oa;|hd*Pb@01PuyI z$#4sWX(=d#W>XPlVwon?iJzHt2~XrTN}WjZ>GED<5Bjo^m?~VTe2_26@w%3h;&+&a z5vq#88t_KgmB;E&Yh)5THJP@Bo|~T;dE>dY;->TUHl@}kcMB_GZqr?OS5RIi=t_E?4XN*g)35nvhVMw>Y_30O^BTbsv0}8>PMz zgv@!JWC6vHv#rqE)gqKWLet+$Q~5AGVZ~jSuyjj}`i_c?q5GOSmv~45x`83liN7Z$ zse2#kz}gr6`Ym<}4K7Y*bL!As5d>s@nDB49+Khoq=2q6dvzDaF?QLE zlMOuzm_9Q;M_kGeTa*K~M50gbq<5vRJ=^t0zNNwLR$8b!-8{q#vXAueCBKRv=S*FD zn&?+}PX^Pncu28ya1D-Wy2bR%ZB#3n2cd@F*@$&oa=HgnTO76>LnVK;($l7;u@bE! zoHIk>TqHg*srS39(9V2CCBF|>)Sev=B!zND9Yv~TMq0F|mapxh+rqi!oUtVt6(F^K zQ?7CaMm6*K?hug-hSJ$?(J4wps<-rPF+WqL@#YD`#$b!;B$4QtXC!SZkZ8YC2&UfSN=`84EmFv)T&e20+3$5zIVyFZ zFRfAJVs-ScYvU2)G|h!&zzU!pjD}pKuG4B-gs~C;ymiA)b(agC$Zdl! zQ#XyzViv8B)g@21$=qEyH#z*xpNxo$~ZK{B--Rt3q(2*Drnvg*DFHk0^8 z)8o2OS~S>O^Fq2Oq`UPv>a}IuhkYvD0^yE&^z5=k>M$rWzf?d&(*kp!o*jwe1vwM7 zTu3W^PIwGyS`pIyDUnjYLpzLe7AvsDB)(yp5voGVV45A28NeTjEEnoeRSiD&39mBf z22ClzUuaDLpnbIYp9Ze${8BJ-x4|ne+*TW$;Gk3F1(}-EeE&hAPsUkH&g)M#RN$0k zgNOS02f47eFKm=)0YEhVpa2a3lza#%ST?pHp~sg~ZBT>NP8jD4F%?+rgW_8KgECrF zF@)h19W^_MTGCM}h+kDDhC3ra4q$b-CaXVSW?F7Tc-vZf>KPEDBL+zTK?guM5>Vw* zXSU%fBfPa()xt0le>~MvDHm21gv!>@T4Fif>Z$73!tK2>4&C_ zi+w8O>u~zhc3_AglDuf2&I7#ruzBtAB!u&Ovxx4?1C5zqvY2L&H3rkLs0rasufJ|N zCCzVEe277i4W9YO=%wa=qPMM9JP3Q+ww>@mQ0pF|=rw>mo;n(vz=0~Y=bAiwpge%_ zNgIIf*&?GWH|(sGvWPQ7qkm%FilpT@B*L*20P)d{&kRyLob42-pfTgPQy&0b1&P?3 zpuKQaqAZ*lN+s9%PdM^G9C2pL%fn>}T90i%%~6~r`(J@`L_W0IuL}EEH%1@^vX!94 z<_a^z;`N+Z#?oFKF69semSqoW)c9$LvY?Vpa8{eQNyOVRq%R;@!j2C=f4 zA(}ipM*tC=7eriVMewaN>6{==Xc!V^0a7*1Jws%?qA2LyY`N>!6}V`M^B)({`*9J# zgFJH^_H$}_FbY_ng#^F&Tf2H#_jMs7q`-pkQDX#CLc*V%1W94v27#i5%iE(GrHcx0j#++Mnfd2 z_EHvxuk4%S!;Q^w;xd3se2lZ#S(IbS+w~W|;}H$euOj)IUnX>L4rw1aERK-&c1!WH z0-bF@7eK&r257nz@a1OM#edb*~1Au z_!<7v&+y$bWqqa05HG$hwsL};?EF&XlrF$OJmAGVBuJM+h%h@_`jGOYXrg}?Ho|2& zeg4eb0DtzU5pSdO0}9zYSg@4o48M$^zdIsm;3o!Jfo_6%*w{V>VZpZC>VpapT5jJD zexB=?k$^Hfv5!0-5_LOPwb}S*sUV*D!r@Q|eZuCtzZDBOzw1NukIifI!STF1{*vw& zT4lOLdK`!o8c%~qW?GP#OHhbv9Y7e+kQEZIq5x)R!2huyz*qw>eB2f+UXA}qHF&57 z2pbaRR|-;PC@w~m?`chv2P_K+RZ%0tD#sqCst}u%7X>J+8kq1f0`X6x!v2Yw)t9Dq zo~_*YK#>Fm0WgsXKCr0P()03)zrVJj7hZu@*B(O0y9h**6M|az@|0TtrcsK}3nCpP zWa%`d6J~;ka=nkqlwEb}jQ_f>_$?zY_Stt&%0~#xdMzFR{(54O%2kr*f3~o`Qp2Hm z&E@>-`iZFWuLPJ$`eKm^DO!D@&1Fj*X(sqj2#!4!Y3`cY%DXMA;eaMzf@+3zh3UVr z-A3OS)YQ9~*_0}_;065M%2QkkQf;zPJ#%1mU0<^7ykh5WcAM|m?_24XMh^^bc9&8O z3^r*n&nAL7xW0Ggy);y;mww#4soGF=exQ3!yjIB=Z)~snuvz-{U0GLVZuHmr+#Y`^ zeb@b7UGP%6Xymw#u?p?@^2qEx(4#&Z>#F_wc(U%C?+C2BjA*gldw7AIl*V@bV5uV< zV)@GK)@TVmdDh*k0%)D~UvHuPArqD>Upg2do1x>gxw(PssePXr z(B7H6`otC4eW>=9ql`wpf(N!A<4ndPoYRiPEH~KK{z6t z9MGJwcfRnMhz2^35<;J1z6gS!FCqznL{b+`Jt{I!0+~?AB2FizYprc#qb;MYZSD2z zZu=zmx%>Bx_x4FwP>1W^yv+X0f0+0-dDmI1BLKZXcC}eZod&@f=UeU+k-72 zr2>4phslbywLU2)&KA52h=gG7&V!~wXV&F#HbA8xpk2!b^9dJ%{^kwhO_rxXtSz*u zHu>t=PJPXN|!E zlX!~)=dN7W$N^-rNZru&6#iBkjh>pilX-MP8eG)iGi?dH|BGFl%>=mF>+ z8M5u(T*#mJ`cEjk0R`HyZPLDBXiAsWZj4M2e9g+b+}!au>NlOw)8ooivVDcBk^4KY z=fhCUaL~-LTEQkwt|h8xKA6*n=uI*PYU4HhKfbWqzYGGb_7zy3aJL^!LQhd!S*r&8 zLVgEf(WEaOm-86YydkIl!oMJAid3hwOmhSR&rr1Q@@nJiDR+O)*1Fg}1 zsu3WQUU;s?NjN?q#Z5{B!vUE(U}6Z&*Vdx-7c=E(fxM)qkB$}ftZ3!e zMgMnm{=3ASU?OOpDb5nMy_kxf$Vnjv5$9Hk9dzt%3BXrY_(3-FMT4pfxQpdtMv*$# z5lMV`3A~zrKd$H>Z`URC*ZuJO78px-sqKumVXT3&#_m<$<fphlaZyFzWK_w=a_Tv*9#SvC6SHpO`ARs=_`qEaS@$;q$jC9{3% zm|k*TU*2chS?tl^@#IRCD2=N>id>*5u~sA_xOno}E|Yp?N7Fcg>Q=)b3tDactz1kX@Qz< z4Xw{elCY{imkUN2^3ee-pWqa4F9KY#x`Vo!$``ZvzVOR%S$4}18 z^0x{l!?y{!Nr4$zbXTL3p(2I84;N;1ivSNzz_B2EK5oGZC2v${7LntXdL@0#-lo$L z>K=?iAEjD$8lD|hs+-nj6|qp8B%2}fA`3+5pj#uiw?bmy$bJwk40?i@l-Oh|1wLWlY_=A8tYEC>2 zxx&nJ!Kz!^6H|zm#81^*b%~&;H9K`lZbg_hfWKq19NcT>9xFlTI9;z0x+mLWw!uWx zFLc2qt%n!(?d^O??tEz=Ork)0{NT4VGl>ntL4ZSyTATEGhsRO+H$tH4lfSoJ^z0BC z)>(Qm`lFV*rXPY?mGwN+*&R7|qFk7^8IK4-++>&z2HDF2sa>Ax>63n;Zf-ff1n%U7 z@J%B|61CtITBZmP;H9D7x{n0_hddl^I|zjc&m%}wXmRwArhR{1&DNuN}= za;%KJ`x~xZ_z5W^HmoRP#V=IV9(F9~ihR+_tdgHQ0AXREp!obdFP*vs!}wbuEqm?88z^?MHZ0`ikNLHIvvFiu|Mxd4Ab%~dz|Ei<0j&&HCi zbE4~2BOqA|z6U-MH1!{+rXopH1~9QN8(NH`7J~o0!aqR@UXFCLWIn8<=HTK^s$Q4P z1G(&@@BR{+bpjsA?K$y=qt6*5zMaWMBxf<>hlLM)fHDkrZgpx^OVE@x%ets25vs<( z`!2)e%1UxI^xVMc@Qbb1ELWtwjrlAty0Sl+HV!UTKQ4Dk6`D=oV#DD^IBdRjcu(3- z*Rp*$9F1p+4x3_>m9N0V&IKs9`Vzch2Ps4G5oPk}!7hOc zFL!`AcHUZHE|dFX_^loJs>^ks&oeF`56e2wmXc0gwJ8rT9O6fL*&@m5ZJZ#cza?Po z7Aj0vST_7}<~Qy;dJ({Eef+WeJv{V{|ACP)??ZEc>L+`@J^ut@{oabzswpT*sO&14 zH-NdQK%4=T0tVT7I6UEY(Pt5Sz_SsyhZe4YK{5_V;GGn&{s^)HbmPFDyQtMP==VbZI`}> z+D_hLVf>9FEg2{s6f>&MwnrVu^;@re!r1e=;|nbV0w4U0EGVSU(+AmcOPRv!m1U*{ zcG#Fv#aJsoE}8|CP?A`t5L^Ee&sniT_S2J@tS~?D{4(Qdi0)$#3P#8pWZrZqwrAW^ zzIf{A$W`UxWXv}%-c_kVKh=2u z8xHutW!}GK-oItuzh&OPW!}GK-oItuzh&OPW#0dbGVdQEb6je-D?1_p0J0eX0O@}s z^ZsWfv$mzz>q%B?@& z-7WkQM5q%i!W)vD_E!5#H47y-+%5iK*MEcvI3KdT{sp`r6mVW!7>?C*DJenVy{oXV2(+#Z*ur zNQk#&RZtn}`k?3dac%Fk!e#!TaL3n&VMrbo-7~ZRPxmP@6K@3h)MOR^>+NI1n-!~v zGSTo}(W_^L;ud|uT!|PXu;B*bL^ezg#=m=XM+*`9|+wH~E5hyO%SB<--Oys|I zp)8dv*H0>i!Ye)6pB3|dcL`H@(&&E^&l}2Roa8x+7H{>bWsIYAijB9LKK60uBKLDkU)Mns2vQWQ3B^0upT zpP@J9Mca%TuQ&C`qq|(WvrC6Aoa>vNAB@@Mw^O>hm)rR?=3d%)NS%b@40}_)#=hI! zHCTPQl^U#J(Bc5}ikCx)4L(sgedc=~4f@g!Z|A>S2HMz9S-wA>Zof>N*TBNE8<;vn zjUZp*e~wIi*=Z*0ue>> zkMMA2Vug`SIH4ap)JQknKXCGl`H%PLPdo7!#Zt0&WHzceZO7-%?82wcKUs~9&Qb;F z6Gd zsa&F)fd|jsAkU{EJ08 zTkV9*kd1PllI3CE6O{?}DoallovfZZ%EQFtiVB^yxScq^Wou~u(^*xSa2r|c5S|WR z>dj%PD!FQ7EfO8jgiYzrQ4C;Bf(92|1CZX9K9@>Ii_^UJ*X zvz}rr3${WAfSRlr%>k)jO?$uxkNZZu?~D>KY4Re6Ljkklq?x`nk$Hkv99S1w`D0Dd z$OdYorBcBrW2Z zZDjELNTPP?ddRt-2f>)J0eOxXL=xP52vDfJ{8*KQ`p!aCnE(irza(SCFtS>m_f)?f~c z$fvYC?j}aHP(<$Gg#uwLA`S$F8*Jieh>XPUNbAl1CLTbXu|wKw_D3AtzYM7*Hz~u> z3X}OsW|&2&xXqW0;bS+NR~MomN3S~)Sg~MfxJ{+zcIWyEMioME zj3FW_X;UeY%pR_h8L|2yfzvRA8I3p?&s0ZXA}IhhY}w;U^fzDS@3+kX#Zr<1JxXR9 z2qVyLW+pxZ zAmdelzLIj*RE#)4rotv`gG1rpNK4X_3T1`Kqi}XkNqIIr)_7tAO-C9G!-9pS104E_ z^vjq~9P}liU^$eC%O^c@p@mUIoV}I5@-Tl+1dThOMO{ce(XC7+zB}P7BWKB}7p~Nc~c%0g%5oP__SIGXMFnOlB-9hI@=I2>y#+zt(&)-b1h$Q%$T0 zc<|BY4}!#hF`3IAQT~I;JQ^9t8*P9Z>$MKgscgf;kkV+`P=Ht@V9x*0n=Y=y1|6aQ z6v3ZDiZCJ74F;_k1N&CDF4Yi>_>@f?~6qcrJf+Hq-EL6Sd4y<4=PEQTV05RqO z%&NbQ65D}rpzZwLib?mmZ|6%gh~L|utorP$IGp+5q1jnVMgk#*RSpVx|Hw4VGoi16YMM0h?B4Y_PTuWCT>O}UM?g}AS;qT0=Ordw!#{p^?ND=Ni@*P=`}5z?fzSJAf|z-THw$t7cN~HfeP; zVeV7w6V{AxMP0$O**P)XsSXYsfSlsgoG{H0(NL(&FN6p(_VX@V)D;zfM`L_NX%+s4 z{c3Xo)&W-1fq+8pH6xo~wzx&G4#aUVQ%kN2j4SBY9o#`ZX%q!)*lyR{fr0;Aj>E=#g8{i56nC-8(c@M5RNnqX5E{M6Z7Lq2m! zw6Vf23MerT*k7jih79?Dgh5DHwhf2SX~&7N5T#eANhC&sGQ6VI`E@cE0Pz%!L>4jB z-DoAI-l{3^FvA`#{ObwQh`~v9QF!vEqO|(4I8~yBiW}(eS_oL zYz3gDaf&Gsh9LL}V|!>?Dxxbk0}Z6M1i%xN>${Sbh>R%U3ft z#ErQA4$Wil1f-b8sHnksoAF*w{-IH4%l^sh?&`^n8>3cZxX9u!xyIt4qzx=m47!;Z z?zJe|NG*Jc8E9{~q9&Zv1ZRdLa-KQT%j?H!poW>EGYyUREP5tn)-4ykR^pg>f=0vS z0igjaqobzkH)#oz*zuFr1!v=%UN8vOBe>Yf6wkp#K~m$hj)Yo_o5m*83)5Qxa@=dq zYRyJ5$AhV61@IxAD6VPr8V*`x1+=k^J>l#f@UtnMfLKDMjDwls>}lL!$857=k^Ltd zA}R|hOHG{76DflXdgRjvdZ41TZ0=-}9EwqY66*!F(Rj5GPl)-GPxv-BJy9Yw5H`QBhym<~;e1b1LIzJZ(TUdMsR{ZTSInwA&p z_mfOS?1T@`lqG0#MNVv@*Q>8fe#u?6l1g({9Wb8d2o$pGMGi-EVh>bcEI2COY|fya z9CUCV9~(CFV#{y`|3fW5T8iXI2_V_e2->YX53#?5i85%-Evoa)TIPFxTClQt7E9vr@0;WLP+nf zs_jc`6OY9-5tB)bfdw${ei1!}!`6^Ty-x#+r!&{+dd5Jt{t{H#$3bA0e|!`j0u)c; zmM%xkp53rZj*(UiHF`uGf@;lGnKD^Ay=M?Qx0Xidi$TNzDw>nNlS#s6vRyN5bN5|Mn=`>QTYJ){0bFiG`y+h7D9Zef4rS5B-8k)gJ) zd%T!U0Ytn|h*&z+HF7LPIiv5u=V>Wj4Xf^;VFt^?z*wa<=MRmTWJs7cQm5+xugyuq zZit#pSAwVE<~VW7cV~XssuePb#6CSuCAV-;$qawIBDr-;q<$~F>Gg1ij174lWn6(b zkBcKiSqY7cZ6^A$e)Bk6wq$jPH#lsR05ipWhL4}xf)0lSKe-{UupvC^@D?_vBR$F$ zbO=087y(etB#NkkI&r{nY(fvEfP4zts6tF@%K3Vm>m>0=l~_f`%jY%W?jlwgp{2ch z+rYI3M-E^R$tA+%vF8d<4C(d?!abtm z0QN-ajE>UYe&kG>ek^1*=&y>M$+iz2vDbZR?QN-^pi^;g53hocqYQ0{F>p39F?KLE(zSCiw{iMc3#=<`YsU??gs-1^ zi+-~KSrKb@7!j_d>+dl)GUq$1aTlAXbDIfJq})Nwh{c3BuQ8X!W!~HVYQtFJ-}XzdCuBbt{=)iNk|dB<4Nt-fNu){Z2ZZyp;_KOJMp! z7r0sBXg4A9na;tP6uqEQN{k3H1uE;$o}0lBd?E3+-%WdGuhGd!^a0 zZ28)2)X?feo~nm94T^sk*dWX###Wf3);7Yt`Fe^73-F0EjhX*0v^-?U=FrV<@N6Qi z%>EFJh$hL~3p))i7aEF_+?>#Y@9@py<^d{$yDIlg(?b-noSUMgiT}Wog9c-+GP9D= z^(v2lFyYkQXYJh4q^L3{75S*Xf94qek-_dU)wrpoxS>{!mpX`g<1(p#T_^Sa9iiwu zo5ZWB+)0$K7qW6HsN6B)$!|1DUBbJMYj#}FD>;hdBjy$<02G{n*mx({6(bg~ALL)F z?;weY9fTPmfS?Z3mxoV^NjjR5-+6{F*QJv(Knz@h@&E|VfGB^sKt3+A3jeBSWxnqf z1UWY2DS8?uZoNx@svu&1&)G^Z{p*88>(|i)8`OJUtG~(Bam$O^oKb1yhIA_(2@~et zeFk+hulsX`fUpk%6cq4m8i5VTpL|4_^h^AnJ5_cQ<7cWsW$Hb0;)eqkdzqDH+XK=6}PT42QfTtn_oRV0xKZSB{hr*3L(~^ zA%U6p$kUAF8##emliQT&>WDfbrGAqd_d~egJw;iMO&n-i~t1YImtLkcpG7qW&najhlBzZ zFn~WJ-fDMJ7UHT4(vTMmIl>K|O4|m;ZD;yVep;z=T-TziMw%Qik|Bs$mysG`M&`m# zb2~8leONYp4B>R2KT)E>t9-H`J*fi3GhtM7{Y|_cOh#ZLvPJ+2-;(Ek*}Khq6wA^h zxgoORdahwMdR88-OU+$qS8g7WX>I)t8aa8(=vV;0;Z`7gRG09(mn^)fuZz}5ND#^$ zkNnMFeEr5v390lcFv2+x4k#uJl%lkG9is30)cv1_JTi0d;%_!}>Won7@HttPHfa_4 z^ zyfA6z?VTvSq#2l2)h901UwZzAa0l)!t;b#$4gL=edgI1M}FB=#UQ4wl9|jB z7GFE9SD`g&W;GwJ7eDLKM^s)=F|kgTSD}s}$y&XDB$}dx@qQ<=Z{*|+vltluGLr<% zzZ9k53v#we4FfNly&4LHjXG_n;l9mmHdc>00b3kI@K@Pj*pl&V87a~5lz-zYM2zRz zoym*W72HQRc@%8o{KqV~-PbSO2b|3-3|%TCgCT;s>ULduEx=T()~=;ZzPoT~TJ%ni zj&K6tsxa42zIk&H$9Ok^R<#Kki_x}o(kYS}c#rFVeSWtkv^hyn}+dDRV z>D^xg%)G^za%3C6#euq4S8bpzhZk&gaQiH+N6yQ4UKYSM^U$hY-IV#t(d(x19zHtG+$gc zOD?XfYSrJ~g{77r!7m3gnE1U_{b z6iexSmQ&r%9*x^8&Oz3!>ptHDQX{)GH6sWP5Pjy)tzxd@%@z@N`3i~AR1B%zluHKf zebFIUSfInpOut^Aauxb8J);@k8nonWhdjy~A=UV3P6D3eD5ZP>)-K6in??a@0dV-< z=2A9Dh44H6ho@bFo{LC+gkdW?#04Zsv6R(Hz{2kY&1NpBh?%=`kDOOM)a}cfs&H`dvI!RC`s1-v6*{mY_YT<5yL&aGaU7|rhE-J z>2Ys)P$mj!8!+jgU-Kufg1Pt=qx=2Re|^lQ2u)LsqB`kk!%--#lE*dX3bSkeqnY9j zG9U_YXqXrWE0>uo)rsVH$cgdF^neH}ns^xqDt%xyIZe3%ohTu7U2DLYz%hOkR=ruoN7S}o6D|ldZXHJbod?_#ZjW?$C9lncEuwP7M%7(g&YQ|$a#AXn*w;gF>8 z)rnzrODs@D(%Kes+GTG<9C6sF8b@xa`6h7u?sNzEdIoH_BuBD~Uu6F$j=cpF+>`wa zBT|aFVoZAm)K0eJN7*f>ZpCOVAL4_kHq3lVoGHK55njE4A_z%j4Um8Zspv2K*=GuH zX*{k010RCZ_?Z_DxG4jIXN*V)|4c!c1Qp(O$h;rw(pgh-$SvQw_yTvU-1!Sl?8*n| zVIFD6k2~^%ga@Vh<{sXibpzr=p$AEmCiOd*$BL0Vf7_yfo$}OrwPSmryC_-yd_GWv zNq)$Z%gB1{lI>}M4WNI$=BASGDm0>DlLfN4iEk$Z57Edul)qe|m8#0sDpba^J3Gd=`CviudV_2WH--YJQ4-n&7-bUGe!{ zUD&opyI+u?@Lk5aOCV134b;IAe@1nDHunu(w0v{E*pc%&vTQ)qP_}BI{zL6iK%M0^ z1}vqt#cS~A*|KpL2ZEL8#gyRx-Yel515FU zeL2EE_BqZzE!SF5zqNbN+86h?L+^^kXeQ4fMg31vGRW_c%fZ-C6#cCx%K!uZ)e zN*%FcRF8cS+4o|(Lz^Zb3Zke7gqWnqMvE`-+uP#uk$QNDQNYCixLbB%PyRgX>sX`U$vzK1*YSihnMgY6FoZ)rX9!~$4 z&v$?Dy-)?n;qQ}!w*7}7*xnJWZuQOM^a_6GCVX2HABO6|f$IGnT)fc{+zc{VAN}x9 z4!76uni}cQeAm_S?)AB&UpkrOlHDOR>)Cat>Io$M)LAV(l1b@(OEJKG!>uc3jD$&i z*Z-q1ghQC5pUL}I_6L**vR~&drw+V-b6)SQP*e7XV_Ynp?wbxIH~8TpABq0yZLf!w3CBDw1OtvhUAKyu5MP6y#acCMjq$Ik%ZA;(7igSjl>FE z42c^=#B|_7;u)(@=8iu!=|>}eSA`XvX$_6J5953xt(gDM9}o*hWXe&DFn2uE{@X|E zNg1?|E<7cm!Z_`Cr^yV3(;{{li{+#fc(N%G(Ts+fXeRYPL(u`m+~y$d_?Srr$6=n? zKNl3W02A_Euq$uLQF}>z2vY9MF|T#4ENNc{LLO39K)^@|j$o>Gy|th*p{C!Q7rbdF z+%R(>vhhJtDF%6}AB&7~S}F9IrzEe$U`>ImU{TTa3#Lwt>CEDeY#>go35`3@MuIo@ zIXNK%-`XGGlS@kxkZU%2LWyy;0%{9dsA(~d(&v`N(?1d8xfZR|GK5x;Zv`c%+l z6n|knZluk2H5N`Z)n}+O5!XJDuZ)dL$s{$x8+SO*Jv;IVNL)5-S2-{Kpdvtj2{{JR z!{EY%l!EYbzPvr(YS?DR2Bn?ukGB@o=;Xo|oVH&2$}V_2yhVLI96Y`wX1m2`sdN|9 z$HoIssy{xPgtEdJ8s1l3QYTFOFdio?FLk?JYN{A5i#iNvtp7eID@>c)%|^NNOhtOG zp0241VHj043OVXVg~1|sxuHel+lRzbpvzY3!}(^KMdmqaqJly$bZAfY64d)(ae`LM zRGbORx~l|Xba!xH6vcc{kn}ume|5QO%9?E&6YeZN+`q-mYvl#X8JtGt`A1~dub;kF zcIq1N7!JSR=>&*?PH1SPM}JR9r;o|^5hl)B>Bfkw;%jo>EG3-KTZgfvj~O`UO}BE8 zp3tMn$E#`BfZA@}cmf_=ZHfbEm%K_Ny2faGiuEMIi&{SBP zvTE_(g4kK%D5^Q0dcWGhE|ve}xrzd}*t{_cG*Mc{xn5s%%ws(-_fl~ddl?95lT z?)mkH*WY0H?QLAv z&$DctEWZbqHBh0oVN$J_vdl3%$hW{}J8+drd61P_D_$FV77emWTDr+7_i?`Nhz@U_ zb+!iZ7es(UtoIqFT6j0Z`kt%qTK=jMS$TdN@W8ohlN*)epye=78X^FS|xiwzs&KUw=@x`$yk)Qk_-l;lO z3;)8~{k-F!i6o7|#!mRb54Vou788PdeuInBP~ps+e2#tA>ZQpE{&fE* z$sx8gX@Hj+tZ8Fm{ixH_4;Dst=$7>Mwe6vf+p*%usgA-upa2JZ z8zC#x>qyralJ(Fx1SLjqlj>Pc9jCWH@O+bcbNNGBt@XR5(=J(`x#Fa)Y^+c86KJaL z`Zn=zr_G03oOiR&7NL`_k*dSpGYsB<=}Tk_9TdpQh6-E%Mf!%KgF$P$QEju2Uh-zB zgxMm>``33DV^u)(qRgGtp>FEQ<|xEJof@h6KfAP!P-bkBSdts;-wG}b zI{5HdFgi;MZOifjo=PSm9$A@4_ub>rS?jW5hi4rP6=rlZV+RbZ)19a~yjT*|6@{p1xYEjp@fp!=Kx?hZfN zYRJRS@04h`4w!|!uZT%8NFqMdz$VM8+B%!@x>kWR>nw`q$iLDVfN?_IK z29{$U$|YY+rlDY_`M1s-W^q5G)$b-{lXz1L z@`1qzhSK*ONkvE)vj8H`aHfncdF5m$toJ2^bR!i{lTqk`pIJY2|Lf4d{)LeOAHBdk ziQ@b?qyQFz2kg6L!7|(~x{gAR1Hn#WpMy?H`xpLFD5t_8%rb;CL90^vaYF&{neOYk z1Ec!}y)9U*!>urNM)808rGTzWAmc?C-3m* zx8hVor9FUz3sKY@Aj@hJ;~@LmAVdD`Gm*2Y^Ongx?doqKco88$NH&SJ%||Cnwf z{X_t(&yXurXf(zf10};N&)sTYi`7i(E-dN5l~@L@7!Qh=2-IhY z8J1O^G>ntsarZUpjK&G89SBaOeZnk`2qEz=_#^~5DNgdj=CnIEikITNoKQ|Hf>b>@D<+3>=OBPuS*C=f`P-wf={P>Bf&gIdk}I6|u)p!g|N5>T$`* zA+v6C#mmX*01$B2P%54hV(o5g^XD5CfI^|3cogx1+}2lITCvx#t|NB~M4UFZ=lsXn z^~n!!JC6Xb=yYIar;CqID7!%S2JNGAAFDD>g8V!c#3wtaGkOisLG)n>~fd7rRKqgYaxJkzs&d zxr>W@Xl+U&%tVY2&R8sz;uC`*CjQiY&^MR3g)F;)`+)jDOzp*JSwJ{D+nN1i6s4%e z_-|ywU1DxcHythCcI#Q>4(e47CV75z-4=z#C{ z9d32dWPf$b>K?0s+d=1U^s^hp(E!r8EmD8X;TVA=V;rh%tYn~)YkuevgxuPhzi;dt z)}k3RK^hY$I+19Iw<-fopvh0MN zl1gkw&`tYa?;@%>{wTEsLX3xFx}JTl%4%16jkv_=njSfIhn=sc%PicNMY>Fv!WWIP zzx00{>)e8N67~Y2z0Tz-qGl9|(++5k>1VdiHRMg;GVfvs|9B>ci*a;?@iDiFK!k|C zp%1^FpMuX}n{a>`7JQ}<@JdVmiSD-`r`CMh6q7h9Uu%PS}##WBEW)mQ%qVNGcA zx0ab^B#juzLR2g#mZ50r?F`C!5{1oPUYzoP@CQX%{m^aStW`QQ)gfck_#TWIr{!G& zAg|z3{d+TLha?2IB+xe&?OcxKE5}#?do)xLfVw~&JRHS53aa{;%=Z-!M4aV|gSed4 z>dEsx{{`m#2H75bIb8IW)aY|ckMBNFBEBo!ozYv!26G?Y%l5QA1tToy#2_^UmLR}J z9vj5_+qJzEHr9CPVdjh%OZ%2M7#(=iF6&?RSUAYD1XF3(rU^P4W zKm55r=1=lipWtL`3ZZr(qo&PXsm9DbLPzvr1z7xaLcjQJ`Xg^@o_%gjI^-7M6d+gM zcpokxHt?f0^4uh7ZGMM&3Usi#Y3qs)rR7U@|2bG)I_E5Vn;tyGam+7YqZfML;;Uyi zSHE7{5P2@8-SRau2f)|d%q~Kp?aHjePGK;ZpCLo&6<+%!4Dn2r#rk8d47=od3K{(wFoO zhDrP(=SQxNs zxtKg@$0l3(NH?AqA`G0|BtoDFkg4`_2oPZcKU`N zO;+!P#@#T(x$0&!c?GS3oHOk9uwoOu_2T_%FhL*;ib!^z&?uIQDq@qkv%da&JSApv zADxPeWGi{H{@WjjJxtFaMk_-p8b`}DGmi|zT4HMK&5}ABAZlx~)$)_c@)NQL@eW&f zEsMnlRz2$XL@np0ekEZQ{=%q2Muxy9Z6et5U}5S*e!swFiIKpEJe8I z>t<`vbDlZFbZ;~!Lrx7KAUWl1L+xF)vd2Z7lTIj%(Q@uoqrd(8kGxCBPq^{MIMlAx z*Vo8TZF~I&Z4;zT$-yelQc?D}BNH;AqSMvo*?IAH}V53SJ`?o_tWS%+|mpcC#67O@J}Su6TUm7 zjV*uU=Y0HL8MipOt91w=IVQn?;Rc(tu{QhgRE~z{) z{ws>U;mHVmK30905oxl&GL{{6W`_Ho2D^h=R08b#C9{FPK#EX4lXnM=|Hw9TP@$P_ zwZ&tEHrR~VZY9t&MGxcI2~ml>kkD04YdpVyz3E76Gl&21>^&#(AEar<&k&xkqw2?m z=In(ypaa4J?-Y6E2OrVTGUX=i$c%r;fYg+%B+V5;Iu9l#qV*%n0Ugna-$<{#7A%Sx=Qb-dF2Nk4cD0QQs5D| z@w7c3+OkItGQdihFU$_r!n=7>H4>@E!Gpgq>rUv*{O(8ZU3T_(GS&WmJM0r?FRXO0 zfFh7+y}W_LJYCM(%;j{@Q*MKW9S+x4>lljBLD>f44Cw~r%CDN*A19?;U>?sYGtVi_ z&MDdCQ*$Dp7f~3XE8HceXCi3S2joXscJl|MMFA&=bt|N1I^|cW>$0z><`XWK{*`R! zV`|S<+8B-QUd}>F?1nmEd)4;C)ymzuZUo2`gVH<*!tiD5&|1s*BqqW%=RPiOC<7ll zu?MrjP@8qqI}09z2pqBpb2MXIOXW04!f+mkV1hPbs&dsNATyni$WorD*cQ{`pk0+s z1TD!PG9YpkA0W&GHfFBj7Vgl;SP6f0;m$G9EiK`hFNsWqw(l0Iu7tAvdyHx+!J+w=_0U+|;x1p4TkRGt77%2jp zXR6Oh3WcuSpLZe_(6-fW{}G{CM?B9+*EHzRmwGN<1NjAhRYn*%8LXK$q=4LyNyV%k zScdRQ5N)&%=9R->o~~9tI+AG%eM-?x=E=nx2)`bXFVK)90%SPM8{DwU1|8b65$Dn0 zLFD-@1qj@IcO}5n_Z&O}Jpi(CYc5@O@@@){&dzF`iioWq-=$OOKHfq24ngkblp@F2 zT?YCnys_YqHnhmBJrQ9vy7)KJpe@3OjS-p*lG{ix$3z{Y>gh8zif&3~RGu z32rWjQ#cI*TQZtF#(JUAd*wcVG=`e5ald!_+SlXbTpbpa=YiywXa_V#qmBaeQF#NY z2Sw;#to8X&%1s(8t6^##el1{lo=}jFz<}f3MLOLL(|l?TlpUov&(w49jgmAq6SMbB zvG1X9w}~ffLAQm_aYzgDH?j{N zBQLqeI!5}7w^T@tjhxIZyR>~XkSv=89X(8uk;mtVX|IX|H> zs#h-D%JT)T+>hLiC3K15C++3{r2CqSQG@IA%=j@J)R4e-9Y>-c@0!$l4zMX9;Xtv6d&b~!$_S|O}8EBH-#M8_(E24p7~nq3y3xV65?_^0{~!%2z<>zT+Y_HalIx1NY-vUZ%P(I zeCZQzJI^PL29`~EWa~MsllX@5XM?17yS+uAQP*1W7Z?FooLblBzLYknWDgTZZ%f?l z)K#31$}P$xjfe6&%@x(z_}Pbzae?~I$wF5XqEY$0N-hQo+=;Xf*I#xDjAW8d_gL^& zCAh)mGyl%zEA_9W&Gj~^r=f_cF2HdwpuWm6VQuLv4THXuTi=@;Y=lraFhBby&k?Z& zX`YT4s6^G1<`Ym$Can`wf4Y4!JiG6jRVz!K2u69`Ddhh+GYoKKD}!HV(dy!$am<)x zWk>c=#H2;_0h-bw1nRY)8^ z>W>YT)dFInJgsA7b?b^6e`f?vKB@znX--+CQzsb#aj>fJpd2JrWG|d)WhzE5F&w*_egn`Y_10Bh$B&%ON!46IfpGu1zGqXV;-*u5(g3`Se0#ZAG0^w` za*sB#8Q7|=B199WuJ%I4Nn!Wfh`QK-6r(5NjKV0L-=Z&<+AEIbW3e zkUw%EIOaNUr28nAn*BuU>;m(*? zj2lO*ySm8=F*K5&iT3m3+N7hUX&WKBFilzeaz_2A=EQw)F04(GEdJ|wrDxD=7>qZY z6bxwe+?>m>hh$RCF}->?G~@gFU7MBYIJsBNA6*PZ7D=6cMO~44@^jt~7aNPHvva8x zd$yixvYzpphD#=0`*2H;NLn3b->vb?n={G^9kNH*LMDo%@rcr=(}ZMclg;&d!X^hR ztZUOv&wHw9E#-$-?t|U$dtOYdBNf5R>~8YDavVugfS~e!PrrgWv2PY>Lu^Ls#0rd z2m9^^++-6RN{BxUXmW&V_1%a&c%>D^LX3|e!O5N0)i*=c=u-k!mR!;tsPRA43e1Q| z2y5u$C=&?)F(LuZwY*DgcuY;GXggf`5X@9@1d3D-@CvMx{h z#?;T-@)VKuO9=@?&R7s@CF8G+C^^Lf3M=*_|4K=ESjl;*9iE^E4hJM`(b#{G(+%`q z&lM6Fl9byFLIxc{kWX}ehVlRG{9C7|6x9^eVlEptZPe;>Zm`{j&eVCbUq*$>w4FS| zyaqMnd0Volz2AQTxtS-)N}G3;&)!(}wDuG?PH$j+-q;A^REMr`_#WW`u0sK_2viJ) zpYZ)ndje5ukFQA^z2%u9T`^Ul@(yS=)wzOdgmHTS@w~V42_Rp7d3z7?6!T1%f@j*8 zrm;rs!>WPdHnZoWHHMOxh>}UARYcNZ*0(*27XB{#_Z9F>@;wg^LrW24+Nj4bBLNqQ z1LtG#L_MnD1e8JuNF6Tc2n?@!+j*Pj1L9gCjlRP#*yXHkK(i7 zlpQzQW#=re!D7!)4`L6YfkP(1A>GM%3ggAxPw& zj-gHs)XnQsDq)<2zXq1NTLMSclte6gdx|;V;3X}oO4oE1|Ms5lZ;^M^3O2V`4aaLi z=Wzt$N9=RP5n4^#q!lc#`;@?d6(k5A%y1NVN%)~H7oK5EFR@);dWsV*@+rU5-j}JJ z^zwukdilHTb0W`eiBsf}lSAY>9r~iJ!iGItODS2;G>z}JTbb(H(3PG1)vGNE3S0H_ z!cNom)P1FAwezzuwP=CFc;emV9c>;A`?pU&qk^sjo;G|H6m)+N91|MxO~Q#vjOGq& z>O&A75vf`I4y?orO>CLaJj>=BfyG#jllbq7mzU4)PvZI#PFZX__cGp5;p@UH5y7E_ zViR7qXhcuK=g+v=_Pu+KT;mR|$U|Fty4aj=swrD+K2gtf0d!7*7{=wXf@;mDs!#4| zT~5g-l1EP8w?~d+`U!?NYmV5*TH*SGIo9>D$K&COXU_L7#($jP?zyRWo1V;Pm@4e< zF0*6(bG1v|VI!{Fyanw4LDDk^d?UyHTwu?8*ZplvMy1zNiH3I~f7xKM;KNkyApQMf zX(#4vK_j}N?%8H6c=%; zH#s1qy@3OQo=2FirMohm%5Q?hvPE81#%jEkO06un%( zU#kOgx61o-xYn0JD?THNVO?XdN|W1jgiEiI7Hj*IU3af=%#hse|9gp~Sj|t>qk)AC zXC)r7u94mj7yS?tvv2wr*n5KEH^8g+G8+$luOwkFEf5n;IA|3sH?rgOCWz6&95f1& zsK@%V6!a4qjez8BOqUvH?*a$1k!&gjQpjlm)R{<0cDLaNYHw4k=$3{6G+Daff+jwg z6F6qW+!KUcZc19zLz z9_xr>Kt47k=k>|i8%SCcMQe<50hL<3*2VqIUKL|NJ{@b8KROieEcDJ@B{SEyafT^n zy{E0kOk{)`I=($MAZbZ&QznoIDt*5Cijj7I5>GqC&wbbZ*OA`}m)ipJEdA2T!Uzv9 z1iIaZR?gm*r!qHrvXjtWQgX+x;M!D_AB1Hlb}RRv5r7YRn8V+y1h}aT5r(>Z#OGNt zWz&yzISET4pMi@sy_v`xzS)*0FxIhjU_KVDqAx*fHy`z+T+2a;8=geC+rQMmAS*J# zP7d6<9`j4v}3<45*W03$fK&0$|zZutAW?z|7PNNpDad96j?}_u_ z=2Yr5w^pYGLA_oNuXa6hNmVdJtjN?zOOQ-m7;U|U9cfgf@U#5Qd)uz-)IPCU?>EBc+qYU z>eNgi;C9-S$Uflqv1FTMBNQ+WeKJiB)KBL4{A@zm0KrBaP8L|`tKC>|Z7C0D&hrc-n zkeQ(wVYt?iOrwdgMr zxscVg+y*IqIGz)9*rVzmwK1BzQvJw7=1-&g9(`0h_Iiq!a4#S^toE-n{=IfE_X*5%5$p>@}bb8 z*%{a#c1%s%u@v39fxVx_eQ~_K-{E-uv0KsKr-Vp%tP}xZviO-Cu~f_s)f)LV#FTAf zc$GS%a~1>!48#qF5QJGg0AK)=Di~q?94s$iM5ly$3HCcgcK>d1py0C7ctJ_CRYkg&zUZ<);#!nhNcrRkac($OO@#?@L z0azQX2O8k*|Cuabf008yXUDN*Y&ly#`6K-``@?4KabZF{Tx z;l!HM1K4nz=03!E(L_uzB|_t3cCDgNkprxOwunOg8Kq6K`~+%60(gRQLlNh> zxP^)W!F;PG38tc&f;A^s!@`=M+ji$mm&eUiXZlU%+dcPYmU2>KG5~8H zQV|bJ<@K}U(wDKU#$2A(qXLPE!}y`@L(`K#6u`higHWnLLk zep!#DFQ_3J4&WcUi+@<=xoyE`v9Op(3)=1+-d5%po=S#jf~ZFze&jd_&}f}ekq?9V zQq3OhGjx0c(G6qUYg_O>N=6&H5m4wmL06zottPx-b+U{Dx2<*x%U zz?98yGT_<&QmA9MZ*l?zHA@fc3y--!qEhxd*R70L#If+n1uWTDC{u@JdVv?rMnpAV z*BxQ*5p6ZwBl2!Hhg#*DAtCAcW`5eXs7@1m^lOvgviyj!{zwdrLXs z!$|`tv*tQG$`U~jlPMj1Yx+CiInAW|GH<*05!a8y)uoQv;-2OMx+Y*%!K18hOhj7a zJM1s*)ZQJsbuU^L($W}6k1QlRMTL5@8FtuWtu68+F^Z-w@~v95)I9`|aK;atav|=EMg1y$`C&|22f3okCzi>!;`6Mo!69B+&Glc%-SQHF|9c6I8QgW*f^RJ z%*;2Z?WlT~?dQpPE?em!qYd9oC2-or`sxs9b>EjEIUbtAMAvf(tn5irysW*9%VJ_m zlmIA-wQjPRngF|VtDjMCcmL&t5 zAuud)Vr~!g@aLN3GOtWtkv(V}GgI`bRd(Hz<+fPw1k`20J!Lz`AwHbU9QV`Q z9HDr2ZJ3iq&r#exUlJA7vPGE=r^)MWkLG8r$XSXYL+(tN^OoM@BKf#4EgJ*=g6&C! zt18pqp|8T1Nu&pd4}kPB<7@tMa!yZArCi<+G2S}n%9}9@A4tA$S zP@G1a0vR9?;W|Y&!=%ubDI*Hz%kYs5y-Ij1z{l@2_pPK%Q1H-mB6)b|A*?lKU6m~C zLy_EN(ykmD(Q!Enj#)*4J6lxFk4LxEGKX36?Kk3YL1_m;i^>S3D{Ts+7#`NaPV0|p zSlIWdEBFkBu#WJ`NDEi`v{~uD{YyM)RuzBXlGEMq!s$fvF_o{o@O4{i$O&N|7wOQi zd54Xp!A={dD&`9>K^ENaF%89SJaa9onc0X)p zs(i5Kx;gigTAVw>6tt((s}oN)VaYWKF>?G2Ny0w49U z^+2Ijc9y58ym*OjneT)D@Wn25JpXX=Xz;=9(OE6{_vL^e#Ag z<3|OhwzN)aa@j!vSiL1-B+TGCE5+l-Q^c1-2Z_BbOrkt0)&75~uJX%YoT9te6m&-N%u3A4M$FcoDp*)!`7Ib?f zre@>~v!z)B=z7qgqba52Sf|#iIUI}94VVH%`r<*mbB88Z)bpvOc<)fm=#|e%X?c_- zf%^btj$u&~51!T1s7a7wS0CCM8$GdZvjz)Opt$ADsU9lbp){4_5ArZWu1)GkYZh~= z|0*0l%6s2R3#_$xg5R6N42*<+28z#p-;dxnC_=-U4WRs~s3GwIH%`he+n+)r{9M{s zXnr#0U2L{HY7VmZgdS(Gm0?%IP0t(crwaVEnF~ZzxaVb9eT>VJB`NzzP8jYK!Sh-Z zC)1J)E1V^pb_K_4maM;5QGYQztOx(v%x51;$WHg{Poz~!jV4=;Krr+AvkS)Vec0N| zBcA6H^yj{Vg7nL9FL`vcckuNAcx*-2)2UEf4!z*F#4m|@-j$h!e2NG_Xl2L*Lvq46;?O(X5tUY4REgR7c4kFz5QRji}9xm-NBgU@LO1<_2+q zhKKyo(y{4c2Do@C>Cmxc)(!O4)BIkIRBQS~XlL2jVc3(UCg1EvL`c{E%tLH-k;+1< z#v+W8h{ji@)Uxh{a+32HMu1{Lv@MCXpe=Cq~8(6it zbbuHCk>_2F$>c&`gD1JjM_07{u<+B21)zHfll4WOO>uSk$~9Eg0f4Vc`JQiN#)K4g zWt@XkHm(cDzmA|*f)IMs?(Ox-dkNvyK>>4|a(?Sd~;ScuR-dzP~*|{^`Z{CJ3?sAo`4eYFp6A+87 zlpWj@ssvGbJ?Y${WqES{@KAzQd68Ta3h6PM-O=@SX-hK}(LIK|D5VU{vgq()k;C~q zdysv92m|_U`0(x!7dor%w-3SK6qQ*x6K2CIXC6hKpjJvDgDi;CVjQ|O_~1lSM>Pd+ z#kuKxMvJV`x*~cJT_+vBO*jtqGX$uoyB)Sn+CZ>C`hzN<3APiDDAFxl+XcM4;vc=+ zRAcFWL?NDK#X!u!^9}qK$sFp`yLtSXAsN%?ly*Ifdm=l zo=X+m^8hwOMmv}_Hg}Tpc6G8L(K^3B*W?593S@}xi2cBtaM5#l|Kz?#WW5fTDB~xQA5J?At3t2rNt2?NeBbtz30#H zUlQe;m|0U}jikR>nCrs&()dJd;jv1T7&1{3ZBiPLX9JOBJJ>%yG%%*q?lpz+i;~s& z6UGwMWuc7&{Nl)B2lkDgkB_ZKv18Way?ZA&Bg7zMB@F9U0s$(L8X&U>6jg|d0?=zj zENAiMT!rT|;AJ!ll3XAVcL#Hk7ZRTX^PfwIE>i><3W$yn;zYqo(wy3`#{zf)l*fC@{u+80mU^!S! zhBj$th@&0J`1+DY;UFx-j;ZiiBN6-RkJBYw&27~LPva0PSJ5M?`#n_%rZmzym=s0J zqT&cnqWDPSNOn4wFsbm^HT}wd=p{bNWgYc zB@zhNDbR}t%7_60u(dygtYrkefJ~Q2QQ3i)rLfB8ymJA!RYpxVbpr;I1|K0$%aA#7 z$oYsN6fL4fb;bHxoK@_UXd(|5^y{bs%j;@+T_kBEbuYW2Flz9<<-t}_>9QcQK%i4x zBQWjMPR_;mLo_inH}es;kr?n5MSa@pCGLU*>JqK?;i-XT#6{>kwLy5fSS`!B(Q8gj z;(Z;3lbX;T1SG_=?$nLNoU+E31Zxmu-W+y(O;6SD%;;MTa)xlcs!CMeS@eP^&zo(` zMfwWF4HmOG6aCmNI|JKP0L{XHqX*K`#Ik>y!c95D!~ac_1`BTH^}i3Wxo(Z~HTcC^ zM-mb*$s!$xBi#1Vs78_29RrmlHS7la`QAMq+Ier!G}VUJCwb6PHw!`xFr=yurwJU^ z;%I6`!k%DUp zSkQStk3MTarLGh?C&)-7HDNG<-x%J6Fk*4d!a~vmwvtJBrPX|4RoTokwW3ah`nhSL zkdGcoIgP_dfVPd~piv@7t=)Ptb}%BW8Url^dJ43MBMUcLBoW>Gcno3K;Z*`z2P=qAuhnQFTDH2~ghFE1zJ1IshoslJ4+@g!{FY>RPkS&=a&nFh7w5!$(1p$oMdJ4bw@#+94KS#xw)%xW; z3B|g7|Cjym|0oASUCuKV5&;0PRR97&{eLTyP2BZN4V?8%Ev!xcPaV*t&WGLRum<@L>vWbVyPkNZ#l>($7M zoi3U?9LkLqlihf8<*{jd&(FYy1Otc7hRB1l-_PZx^-a{Z%G22Qhug==7`kkcT4u+U z<{Zz?``BKPnNIXc!&xWC>E$MKP}8!{nFIsNLt>Cb+ReA)A`0~Iz|8M-76)+~;7d6Q z3mSW{+z$2V`1m$NAPu>AfhDzJxAT&c+bS!|oW=dT|30eDxZE*4Y}wN5-tf_#LM^7b za^9M*z=Nglre$Vpu&3vMc#zL*E?=SbR>;=tb=Z}@36F*HCLdVKFW+don33Gc!F|2W zb2ez%Sfd!{s5L3>h-O-_pHF&QT()r<)fRhAkUGLSwOxKgmy{mxV7%- zx$bMQ;P@$EuM+wL8)fsXy&xUIDGf&|k5?wJN(&2mT_R#kz zMkb=v5j1x5qaONhc=KZF_-ft5*PtQb$6yyI#gq5e`iQwrnzo*O{lZrO)MK!gxeRSS zAmf~C7jnbZZ~7X!=>Mg%)12JnkEiELE(wRG0#$lYv9;B&Hq>d^w_5oQAMxC14cQ9* zE~V95oT(~v8`4Fts^X_|d0o9B!85SfN6Z$;3)nRha@MGUu11O`lxXW`(5ZKY$4j2m z#Dlq7%0(5~{*FUjS<&E(3H$LhV5*rj*?}~q(p8}}22AP$b}f4|@HXA=dy)9{)qL%z zI<<3yUmShiALCE|B0@;9IMlyrv(xRozvC%)ndvtG@?rI@yfOgxv4i@<2?7?ptuZ+{ z#@#6Q?YoUjees60ky0YZ{j_dQ)Owt?TN(l%3O1FcgzRC2(i8|))x*#*q{PPuegZG> zy#CPa{&4Pdcl8|vS4{hk`{3iEi;etXuZpd6&6lB_opFhriep{>U{5zx6&9OYeXt>e z?LXAvvaXRv2lo7;{3tur%zv_jJ9N|;Nfe8V_5+noE;7jm@HjUR#%0q5%{3>TS^Hpr zR1~=|G>{#}vll*-|GGh>*GAG<<fA^U=o&_?%2)6 zhKFdf;`36O^>JQlE=#q_33vk|LR~`Rd}KK%GMKsjUM%K?T)fNG<7z@SW*3p4F;i}W zg#Tv|ERnO3|H5Tw{llVL_ZHmJ>+!W9aDr9qdSpJV$P06vDWu( zu0zcUZ`uyGozlB(69!4F$|4oMa-pe)DzX3Y(7vgzr6rYS0r*l<$HrFi+U9Av@tPT+ zx<#dKy_@=pjIUxx764tO`b>LiK5U*hrUu70r6IkH4w1=}CC#TxeO*V~Se6P7-&a@j zHgI1iP2;qiPAvxb@1()q)Jj@yi4}>FPGALpS?bqtm6{6+Uf9Ed`MQyPBtSCBfeac@ zz+t^bBqgdTCylBZCzsX0DB0EdFqgdJ)!_MTZlN5G-UTt~y{8vmLyP2|qMX;QwZm(d zg@0mjSC4)Txjy@cHE>6$&lLe1b&3AIj7nHF6?&=foR;_T?~i{E?TKysW8SOjI&YU? zx7+)a#K+^BubYILAr9uDhT3{};8eRc3^QCkh!c>n`e1qYG(qm>{7-Lhxd+}G!eBRR zx{vC#?EBqbVhRpks!#IBi2NE*KArPxziN{lAXGi{Uje2D|7rtUYN+qP}n_RKf$O>Xkt+#gRm zd6M2;wQJSdtE;P5^D-uEp2$v@(7^8D?#GJ@s>9Gj|7%#3geA!VZwE?>cQJ#G?R$mY z=?lD`O)U7Cux?&nvejVY?ojzDFWyI*@Dx4AraFZkc1Kz$^UFzvIicXQMO;)du?RL`b$Wp1hHf>ui61e1t{Ki88U;Xo~i2`WbR7@MdI+|v^2&U7X5KR zIdbKq(DH4IPM*hf>SAt1d`N+E74r`&~dG(1h*7;C)8dpk0Wt(KaX zDlPBN+v&alUkN+x83b<1$DSyn`E^e0;m{c@Jk-31L}F2&VCBQ4{6Qstd?;J!7o75057UF& zF3lGDdtP;gyW;)>%Lw5%$6*;EA8h;1A@PSu4_q+rU8` zZPgqgeIc__ZhlE5JhIgzk68ZT7q-m4XVQ zGn8RBAq?YJcj#dr^_Pw5&`Vjed<3#>&P==m=o z;!)p6{dIQTrnGP8)*VPLtfCNh60DXCfuwn0TfuQ4yEHL>0Lbh7;0gZ@mOrbQ%>&8E z!KMLbVevR5DlsFLLlB`NGRZCdtDpHo$}tz*JK^+4CwUb+MYncpV|huqqQk$<=N>ol zd**1;FcT&bKV^8j&w@%>(*Vu0eJQ-7UxyqQ0qyQhu#6VwZ^Hd??g0wTOTfjK!tdEWB*+h2+YXf zO+a(G3{bJk5b4zxdX!1v7}7j#B}xC^(Y))&%I3>RERFg=O<1GtJ4AhO8vRS2}7_uoh*{&BpFZ8eIO01?4U= z0$Hrd+Mp%|yO37CLG&Xs1srx3cF&KAi5cS`!@iP;nDL)BsT~%_#{aSouBK=pq@)BgET**T5f+IyDs0V+LDj2bLZg0L zSDDe=bK=Shb6-5N&})ED)=$UVpJj;! z>6!@^030wH%A{0Un>fjNUih$RF9Xuil6m4cVq%?pvrvUO;H47ciE?n}+gXeSh2^Ce zEOI37h@&_OAHV3zDi&gG)aABIH|ukvWtNUs40AKFw$6x1#X--Nd72Yb3EOC=tdrxp zbZ|z9&`J;~6lh66=B#EeNal~VN&koYaQi#~4ECKXgsL3I@FJncoy!YckqQKxDQvxz zFG!S5Jt`JJ%k^w=3p=vXQNi-JFA1bG%c+cXzm(3q6Vl%+B z87HcgN7u_256vS;y@Y~6@ynJr0Vm0N_-w_AV81pe`ZF^v_? z75j7lhdDjYead5!pQpQcZN0c4GD!%=V3H8AtiXkY3+iB!4<1FPyOQvJV|i0`!98@u z<+O0(yg|~7rZxEq2-Cw;VnsePh#aM{Jbo8*xa}H0EbLb=o>WDPb~*o1JS$)x6enMJ zq+yVyirTgezOn630MlW)@xQaI*|rw*`Q3l~Xn4Fwfw_mf#K64=ud-k!b{jnKdA&WK z1Gc^Jv*77&&-(t5JW{YD2#Z-5Mk7%i;4~~W*!HAlc2kJkY~Y6Zc;W~ArM$Eq_1?LJ zP?iFS5P;tno{Sk4s<6y}?=-v3>EYwy{hKW4G3R^d5kg*cbVZ|C$YPX4iA(0a$dZiR zc(wgt?#i`4Z~uW#7&vJw>hl+zqoVM;SOxs}V`P(gb$hFj!65d4P(D5lUtG8K;x5bA zJcq~BF`_;EfEM-=2Vz}EfPYY-+)ySfi-Z@UHP4!0-XD5PrcPFfaaqx(>KGT!o;0{g z#gHS-CF&voF~bPwW`7WfvJ}jj*tHgar}DLEoGlt=Cw1BgTXrnCNCgwNA3Mk73^7!? zKsHv8;%rV}PY*v8+@~be8ZV`E4v=^aEYnKI(Pl|ZXnyDXn@D6yg1F|^-#P4_zq(YkN5CfFrW)$&fo3wmAJVfqJiTIyZ@ZDZO?Yv?=uhShc3 z4SQ)fK7x26k(vCre0z8j1bpbP2hWBF@D9YdfdUFJl`ov5|FBMj-bD?WJvrlP*F zrcX($g|pz=k6~3AL=GM$V9@OfrkUJ z^l%P657cybp>KT@C5VteUSIK^+Oriu#si@rH-kfSd)+ls(S~gvSsxWy!i5Io@MF?{ z8PcBTwxWFlJ?p*~&FR&Kqbk#UWt&@4*O{z%3vBOR;P3)n7QCiPei+ZFsYO732L2Ja zN{?1gdK3@8`GH0n$Nh!qqIo5)XR)Eav)OI-z?_m?CE0b1`Jw->4EkX<^dChW>?51i zeZMQSjF4@5pN)#yAD{JO{+JT#1)y|aV3c`y5=V6xW#WcL`1Yd-x` zs@(mHMJ}ow9n(@Rk(pR^x#4BoqQGWdO|HN!C^F|gy7T>)QE)mI5yB$4m`rrdY7qF+ z{P9k(0FWt=bbVZ}v97I+rH$?31nnSa&;I1-e8J=nsyEkFRHZYC4rgU@U%6JjlZ5gE z-Rg2cEjjR6kN!-iQd5dJ$0-%Z)dwWM5pM#0EaSby7>V^abI?nGdIyWea8%wu6R#P4npcTrm-(^oH8z*EPw>%*PK0g zY4vledPw^)*BL|gkT}ouC+4x8EZQRVtsIdmr9K3j#C{SrTw1eUH!9gfhv1K5GuVPT zrVGia@D3I8^p&qNCOGKhA_?(*guumc%DuuBSW9dDRc@1{Vs+herR^q(h0bf)A^{N8 zP7w_cqoO%IcCJ>vND{2GPTXr8Jg2NIu#FWM6KxFes>gj;RkI6`EZ7$2k=~G{44B27@Jhz!*sQ!J6 zoEBX#Qt(&)=d9^i`<{~Ncm2B2B%C7(=I$Rz9Q|}j!hLSH>zVGsN%rAtqQbtbeJ`4M zT!Fwv7_`$VAw%;FvI!eGlQ4u*^yG0cfn;)J{DApjrtqfzFOwFy0>|dVk~h3u8LSGr zm+h&+YMMM%0ZeaSXTD@Zdd1}bF0rA|7bgqxbxKyr?;rM}fOSy&7Bnl-&5n6|#ga@6F=lR_y&)4~K- z!H*o!fR=OLveya(UHQ`Q?kx;lu)P-+pGp5+m$IPyrMLkRLiKOAZXy=f8Dm9wPsD`4 zyQSZ$iS=ZjJw%{7FOQ2Tp}f>|ULz;5<;d*Q*9~cw)U31Klswo>%o%l)ZQ<^u;9!jx zHD#E1`m8sl4>LtZu+FH>$oT?H8`i|d@|--nh9oi_G#K!hvo;kEWf!;d);aWt@keut zV9!AZS7cfs8~#CN)Bi$cfyIAjI;b${dD7W`1b!|7HO6yi)BvvuMOLA^Kmf5-8+2gw zdkSa{*osIo;!$w%qIr@@*v^4<^$p3>I>8ZX_n|W1BmQvi!ON<_Y0l3NN7VTOoAJ%$HSC+^Bci5?iP%A`UApOZw;Izx{3XH>t{|T20y~MypD+Q{C;j?+(AHrrc8)G44;CR2 z^Ok!Iycm!!&R|~h6Ib)ry!c10=i>W!YwXFvV`^;img4J<5;4l&%AIV8?_JP?vlfrW z-f7p04U^jnSC!!Fm`ATi)^=> ztPGMf;9YBE8|Yt})^0yI|Xr>cO(WnHHxMH?RBA$TjrSpH@ z#iDwUNfcjsYWn9`(4-n<_BB0bdJ3=cgsldcxL0Cf=yH%{#J z>d5L}U*gY)84;tfp9Tj3*+ck6sUsb>7lZ|OVG(fIvee)X3=3H!E6?bv)MWX0-KJNi ze8Ka+;FG-I4dIafsLAOzY8!STyzoy}Oqe5r+w!9kF|?lcu+NNda%8OcrcJz5x+^+y)H&XQH|1Lf_Ti^HNinad*^46eiAodU9zww|SLTlcaDAb&7v0r;U!`3J#SQ`qRlm2dkv zO_F6|t=J|Z<_|;I0Nw2Tmm&7u2+{928uDPjOR`3Ca)z&{WxM^*bZhKqpOUS+%1^y+ zRbymq&-ugS+JU8+lQ!;kzA6pAi*<`R>2v8*hj&)Z`Ygs zs8g@)J8HMwlG)wO9qK~G?c~0#8(>CpP3><`@wv`ETCz+<*0djPjU}+a{=FX^o=rFX zrpD2vtT3(C&@YD4B@Hqd1lo&l1FD`hb7rUbI+z=bJ~=vN&G~vH$q3dsS9bm+qT~kX z9lmw&ngC;sb`OfXb(`)Qt7>SQh>K-&*)9_;k#r54dChlwQFg(cR-F)fPeJgJtw#~B zQgcuu`gG~E-;|FG?yY;&(x`}JRKb%8dM22`FFu;ECtb5!ZA~EIHQLOBJDBFMy5Z4Z z*MdE6PQ{%VQJQXc9Fe8F|3J8`28}nDAMtX5>1;a1EK{W#mZez44#XWZ8U^BwhY8se zP5&hMd@TUR%K>2fq=(0jcC=`gn!f52YrQ=3G%!Ro)RYiZGyHen zIJ@Z)M)k>S7u=Z}$}s#jPx%|kP53ub&1{1@J%i>0#$h*H8N8q|_DosFr?}hHc5svP zBZZgsS5VGWggAG2SD8+W;A$rbFZoxciag5NN`KZ&`f5j}YEc%0-j-?1ojCWRRg6;H zJV8k!B261wyyU(EY1F^)axOIM!gLF^$&&d)j}K&wV?`)M%uDnoYgCW>NRIW+?mF5l zDR|QU$BIqa-c~Om*9+4N6L;i=qxK)^mA$D0HjJrWA3aEo_qrOAa_X5K6WX2c_s7f2 zsfrsPuZR7!2VEccuL0ifYtPpe)tQ_g*R8L^E8gwwuGhMcu?5zd@Aq?CT9uL=SsPeL z+uoot$74(KuI%BYDG{CySypF^Ce&=DDN!2H1AEj*Gc7`>QikkcPp+)UntJ)tdV(Yy zQDa8y5S69+3&`_L#QlA0T1v4$v;om(sO72!cb&H#y&9cHXb66(d*hTsUBmusoA`aH z55>}-B$%)PO-yf5wa=K3EE*$UQ8_Dwe!?;D{M&+bvrmbPw>@K>kXe9DlgiM58i1+| zvo`zp1{%>6=?&)3`z0w!oYKW}29&fkvh}JpGu~f!XFCPFD>I$vCvs&pG*RE!ZBl zZ`Le6ZHWuc9%v$zG3W}Ak&=HzG4Mw-b~Dk0?pc-+e@SWk_p%!wjhF1Wnx&q#W!0u} z6xr8{e2OfHZmO9WA5@)3Z zZ*M+r2`^-q6(u@^cs(W<*+i3)RY3CCia{`^@aqm3%oz%-YHmL&V_x9Zw&FW)nV61b5Db}B%eo31ap zHzP}M>i9*RZ2sINly?RkpQwl!VWvdO(%U%1sf9Ny%i^}COc5fd?M5h)}+| zgowiP^=&^uXvf8EeSmappYQR597n=9vI^t-5)>on>KXzi+2ez|p~_ZGx#H<_y-klIJO}Ws&d^?xqOcfS0Z6&Uyzs8?egPF=)#gPE1KJNZsa!q z=zawLr%p{Xg2rTIOkm$6c3 zI@{03*K^{Nne|)+81Gt24wvq6mwskh{SMx?wpJh_S}4-`u@)50Lf3LfFP&PM@@x^y zSlloAh39|KANu2^G(G-tfp^h%-p>1_Wf)VE-14#F^;{XTzzBD*ZbU)p_7V1E40)vU9Z&fjxR%}DCBV07LTF7xDyB}+(afp2s|w-Ry4 z2ey>Gxpc)!8sYU%8s>+yc+;)K-Hhu7oLSjAm?^<~P>|5`PoVU~IhG;4co z`M_*x)T7e;-o}3?6XQJSE@^DH~Fx9y$hULcz zc(u~(gSO_xm>$!r6n{dDuCo2QpHQGxLQm7#`u__~SE~|*Jfgahl0bq9VV6t)WC3fp zd{N&x)v03|ba@vB(8G7>=Ie5|UXihqJw9=ncINftaM&Ehmf}UMFH0nr;tH zM4uI@&v__Ew}6yMZ$jT!s34{tq^_=&jS`iZa+1g$?1CI`1s5jI?-+M z7_j6aoav<)%zXe_S3VhFV#@N|{-@)-u3B*U)63-I4uSizb3y2D?EL0!v}5WJ`kmeN zmba#NO?xo8r{U?w8em^EFf8g_4P82_Qh9#QeOkMr2rs!=f%??WAY^N3@S&B@Fcutw z`*c(A@aATU<|9OJU2%o})cE^1Z8-&JU8ymWmF#0Ha~`d1z3w=>6j61#ZHAUMqhQ&` z67%jV>FnIM`=XxNLP<_JM|iI;mo2yy6?SE%c0rjce4Fdz%viw|iDXMgYUiaD-7=Jkp`&}X6@TMz~>if_IYSGI-FN;&Ip^#I$nAOYn!Zflfb@n zS_OGE8Hx=0Ut|Y~z+Un_Avf}{lsrWw@+CX9(lnAD`b7})ZtSm;6Pz(aG4-v+_qtQ% z9^WVY5|4-Ry-JNAHC}z?q7r8vkiKxlser;wMiKwPX^28>Q5Ld-bppO$^1~vL_HGzJ zKC0aIS)DOOWobkk(AAwhwQ~V!?%{p#Sid|4snA?Ahy0=0!xG}^SYJbgIrfu?EFDgy zFcGj*xY%?R*Uv{>ZwfXV&`(Y!>6t?udAP@^(a@ck8M^l5D%k4Nia{->mB~Sc-SpB} zGt!Q~N7Yw&Kdx|%Q9&ZM=Da#&euh526Z7knpaOAV+5S8zopR_`H-+GwvrC;R9J75) zyC+jzINDuw?3#RzLt5l~opomP_Gl?P8_ZvRnsiLce5FS9*OuCTiO&;}nZt6x$}~;? zb0$^``};@-QHitTvEa99-iahVV=;OfPmSraJS&VoEF3rNK5D7UdNCThE#1RA@H-kh z7A_tw|CWk$TrweWdVM;tZgjG$%aNMwZ$COG9kcH3oV>hJhPJW9kE`k;i#K>JKk|6k z&sQv@lsL_7;?g9zn^jKF4G&CNd7RNgJB;yqT7cz&_*0|`hfjiCtw zo)4XV2_0HGVaGqusp|P)Xjb_fhprLr=LJ*H+AFIUIM~}CT_V+Jo3chsPQ!g1`(Eo$ z#J_>c+$&F-H9Pd+;xXI4Sr46JWBZgHid*kPL~2gc+j?R+*3f+#MS_-x)RGkm^dhYR zf(QpppuD#H{`TF#!_lKYx?s>a>#=I30sZPYlAa-E@62}jR*vmkgQOnsV;)ymZ*baW zUQQ!dd!4jiLDxI+U^F!et0sL|{a)INz~#1noB`Jy$|VD{`v2Sb8YkUDuHe)BwhA{C zXTy|WU+bQ%pu454gUhCgOcw+0@AFYS7S82fE0~=EctFK1z42Cvsvn1?~iyvYqhC|3a@zkh4FEjrn$m_NgGf>o3NLxhDz)~U7Cs= zpxb~u2Kcc^gG7YiCob&r=;k6+5Y5_(vcLN5)%+f!7wrq)XKx%Au6YR9X2<`DaPUf# z?_{B6MyJaiVDkeRqgL+N7JeRG9vQy*Cgu<+5J)$oD%mA6!unxD%HWg44K5-|X?3WQEZLze z{EiI&xNKhbC(PT1pi;t51GVyE$5byZZAZVfd)QRhF$iZIX9TlTBK(l_b>~QSDNFXR zt~@0czt8A2Qu5}d^*{~PR-4$i?ld_+z<7Z*>GDFiiV*Li>cN%03OP{*e47N=Sozbf zJ!vaHK!Dh4ya$;_kA{wLkV@D8Cupy0k3uZf8)^l$`Zuacfcbrf_3c_ckqfURmq_mQ z^Z7yAeGW{?%yL9mR*+;WGNcL7bUS*&ZWj4f>Alo25{7*>NpT1Y)vivMjJ*H4#Zir%Kvz5x7@IFknrH<@oGb|G3jMIB z4Mq?u#(31q;zK8muPxY5zD%VMKSWMbW8sd;5)i8UX%X6a^I~Bm*N8?iTY@Ci3>jCQ z%|Eu*3sVP29DgoVBn6d)Sl+596=FYWoGC}HpuRkR$6^(X*z<})h5jNl^8c zL6CKKeNk#ytfFwkYTzWBaJ&e8*xq0BzjtCv4Nh)PCzFUz3`tEgul|Jw{~)b5hLC%~O*foLHr;Ds za2FtB?YrzF@b}Hx#3~lgP~bYpA9v;$%eDvrUTUh1JGOUl;^y&qY=SUH0q`Moh$?u= zxad;+b2;-Q6DH5QiGkV;Tpz3fGaGNxef?J~H{u;<(Im3|>;Z+ZyV3_K(I0L%VoGLI zJ+gJwXUK8mQ%*(&Tof%^;BNSYpb<-R>EIT z!fy)n(?+09ms=a!(lKK7d&xa($ zggoUx95AXX<&wzSOYtqrz4*Ap4<4mb#!X&&c8UUNE6E*0x1goihvUhAy|d1CT>+9J z^+y*k4WwojbChZtmN!t?Q%5Xe%opC|k2dTBU^K*j(PzfY()_>u`v6;ba+FV72x( z_~mS(;~neiUZU0F!s8lX(k}|d$J%OzDhr?8ofrx9wePt<(mT8QFpJ=FDv; zTceULt!e#$^G}kLJGZ126|EcZP8MVclRUVIMV<^m4=Sh*FGc}b1QzxHcKPnHR&{`+ z9`2@#C}Anz*&nO-S(?O}1;EKM6^|QwadJhrd;%GDkunwhc?ly3<~gXOBW1Qq#7nY|x1rT;I)@S+Vrr#sdH1H$J$k>;=1e+PV6$W6lI~CPe3J`tet=xqQ&?!I26U zkaj8h8a4@|7DKu8C5F`hyRT$IW}=>~A7$(xs8l3+VZAzu`pYN{puiqzhC?=5n?%X9 z$Bu@xGn`!k>#8)-gTPpPMD1_s{$J~x>HRtSu6i=LU3LTaTMj4uYYcP48LwRE-=NdN z7nuW2UUi+C)!iIY4#X`-QAf1AEB-DcIUR&fEG@o!ohlvEa}d=@kRr!DPwe-&82B9c z9MK^2Wy?zDM2M3H5GzA+#p*%A*wH;1-`}#d0f?!`DV}?m9<{1f&k$W++1p>w%vQs| z-gnGycpM5iYCZ<6&fm}iTPZJ-SfuBisOOkUlybMCEr!dG?HSWgog1=fg7-^sx#wrX zGun3B(0BdrT}9ib#Ou6xVYw5e9IS9_a_s#9@6E#Li^iQ+7;0`{rv zkrr;`8qb$5kT(-;7Dz`}+F7rfl`9toDV9@!$_PwL)SXX<+V7O}fV`Bha-q0> z|E?e3@YS)dv#}ne9D!h&k$q!DUQgQfR{H8%!B+qo3&BvN#N!5QtFd8%gokma;MBi| zX2e`0$Qim>xr9ZcR;r>>nH&fkP!iBgo^G)bm%u6OPFCP_IgV85^MJUR@V$#bRKZkF z_CP(+!Csou<&b!l?NaN0yWK56j&vF@%0@QgOVvvBlwdnQff|v#{a_W> zVD~<$J7S|5$CiN65nUhyi&`Cvv|@&g>uqU$eP0{w>8X2Ni9hDGXFWon_3?H$;;P!F zp5WwWKLUs>|3%hiHZ(U?0&oG-{i99DR5MS9%?iBBgC!hGN7!FxfID5Y-R1UD;{!Dv zpb32F-95!h{|O~f;tb~N0|$mX>@xfT1mAHs`UAFo-g{<6HDt%;R@-obQ;!0L^uR^` z60`w@)Qj=u0=z0VIrUYMwsab|P_$^cJ|&~KFxIaBFAKQr&FpZQAhpWRh}fB8`o6pK zZd4C3foe<%T?7I#@>WckBO+9fDtv+pU^{rK)4u05eVdKP?OL5n^hmFljv)xAb51{DA`Lb&5-2gX6Mu_{B~dHkg7hj8UlX6?2G zdej3LQ_eQR+H@JPXFaRM8tF5;6@>v0fjo8;nE_jpC>*iKSU>?GT&U;>f$EolH_y>@ z6EqJ9kCqi1J&>ssg*w3gz3wCPRZCMiMEWDq)a8>&DPxg_j|haT4eO`psZogQellQk z+C-^!ACJ-xl))n;u}K)_i=|UU)g9)=GtfUO=)gU)SPk2F-&L$$?Kf1q47bwhaN^Sz zD06?0Pr3Oux1Tt#)YfHSES_YgC6ej~2FeI#GmMp~U=hnF1~QnCQL(CY!eCBI)x0V* zK4iTsFw&abmAf!7^H;e$I7~T39Bgp0vm0F>Pp8~H^2r@_msH_TtRF{GZ)B)-$J|<( z208D^EjcT}@=C0T3xLE!+fNBh8(L$Dh0~+SS1zzoN3^+OvKT`3yeeDC^G5swe9x*C z{xTZ1tRJ#bX)8Hh&jTL1Kbo->eSnD4)CZ`j$oX|*8=NQq{L419W zXHX(~J*sG1Z+fAf*NdY`S#<#_yyxfVXVa7K%2tRNq!f}6l5*kmbV`}%BYf-bWB3S1 z_sze;@bh)(Yx9T2=&EMF`@Y6bcg=IX z>uP5peFFKhZv z8usFjjO$onOAWIaWo-tKZeXwE%kCOb&dHH&+M&bhM|9I}0Y2L2N|9CfvU3aaR?{om zPwvO=|KcVn_909z4#6gs8tQwa=#lhwLEm(!&3=cjD17hB8i;yM?AhzPUcQ*}e(>n89?3*6jWiLf$Awz&EoI?GI z3noJywdeIHc?j=jGrFIW@soAy!%GuA6#>^&{jMxp+G>ix*4>u9&BdxoYg!B~*xPb4 zGUGZ{cm8jT{fkahKSkyEp_Nv6$e0$*N%EQ>azUghLlk)&gsHs{0TFmV$1>1JK9%;t zFE7Bp4%IXQ(}-(!T=iB)lXA*Uz^-<53m2~?5U=JF<1x`Q{vppSq#_7|5Gzm{4jhIc zgdi~v!ueGg$-T7RMZ~UK%G_-o65Q5mhnfbuRx=r?DD0`|ODxR5&wP8^aLTYNpYTQ};~m&4mO#6)H_#)CKAFIxN9MAkM=pX4JKw55niEWDs(l+PnjY;L+iwdy zZQki>n$EWPai9w#QG670T`glyh)B+QAn8T!e$t0Ae`Hi&Ly6`p3 zTvnvb3f&dADfUPyXJTy$oVOV%_LQwm+NTe>)b|Wn82TO5&)R}+G z8peiQ;D+P&oJIM7P(l`MIxCK|0p;`9Z-i|$_tI?aHajyy zOBi7lrJD#?RyGZ08V?sL_UDV`S8B05{qiB5_Z?2~S(&Awz($*sg4xPotj|ye$#bc| zlUD!t)$F9n*y^du8kHX*-dpgPgSvnC)&p?1QQ9CyVj|JsAax;u>~Wz%HiR$|lwOa& zETEmTpAx-49I@J8tJl~I>e#ZoHK5*_IS+S@y6snA3V-E^2SCIL*uxn~m}V0F3<~Wh z39wW0ifZ&3Id{=|=3zSxeZNsQisTDM>$~Fc9Xqqd#{jpGhxk8$Gd2VHLO7kG1y3+W zPIgUX18hQ@V}}Wh)DbBkLP&}FfFuzh|B|Su?jl6N5s!aWS)j3_@M&56N%4YOm3HpfBWj&RSIg+8bPwth-7znh#zH ze<;y2&X~ORD+xDM{gihrB>`aZN0Xgfe0 zWT4Xm77*RT3)BA3q5BA_>%|abx?oMofj;$dgqkz0E|}Plb6XkMU^J`GdB<8_qJ9)Z zvoPJ;K;QW=0e!|GNzs5*f(NmuuZ-120Enr%rK|5a>P8Cpa_T7$5mJGA9VE7Rqyct< zf?1_Qlz021n{e#+8~~ zwkh?EA5QZ+5nn!>^gp%@$CPGwipr@@$C{uDa+Kb^=%LKIP<@sP7>$YsQ!{Mmai!!i zsiMVLAW1@evtW7jeJT;5*v3hvUqXt^`mGcV3tjjHTWu*pM;4Q^4`=+D`%h#Rk~aA> z-5Q{#Sd1y2g44<%zS_EEZ|9MBxe7P{7JCv)ipKBJCC_<1tt1ywRmYrX9U=uCeTAeE z@3jeW733E}8zaWpSg9#I<4DVB%9g!>0?c|QljVT4&|0Jb6$Rb3A0ax-DA-I6&#boS zovtN3V63}*-G4(N3j59@dm?o~VgkgK^Vq5HYjnI@+ddy|N*x|frXplO!!R{QtA^r2 zdu^y0n*&VD4JyGUF!1dK*v0eJ9`4n`erHJO$Iwc!yQbEhwSZSd(J1Vu&gH25MlRp7 zt+0J$S@*SEg-4GihZtOs)^YKOT3rvQ+y0FVPa8i4*PF?1@WThLtcgR938R6OBmtW~ z0>9QsIAS1qGS>is=nVw4oo73P)H$ zq}ddL3L;byvN$0LGc{W7uYO6>|1D%DuMRD`4W*ix&ooyeBau$Q--`{?ZDZ!=)SwF` zw5LDbEwnXDu8{PjsH`m=0COl*@Ex3Tk~4n`h*a{D$Jw6fRY2rv%!!C(m{By6*b#nL zSESv0UW*cNDwVs~bteOdkzT?y0XeRmw%^gIb#cj41XU^%)z&FpFfM@v=}up8@E@nlk5HIw$2}AJZ+dkI<5-TvPXAEn1%`MlN1#f1)+&`uoI%$j0jB zPRa6vuUt!oi;3Wn;z^RAhJV?kGVWL9S~4k|*F=a*do2Ee&1N-r3pvMNM5A@QFpk1C z<5oDhqH@OqkBTu_{eUR=Y1o2d=~?GL1IbX)E5;!47eh4{5{ftLpPGRfO54XGU6-s`HPjk`9vFHBwr3lsCHnQ!FG)LdAy7PI4jh zo{_!~r*&{uZf3C59T_COBF2IMz99`c5<{R~MJMjL;3f&MZ6hk!w{vBxAZuUyr;!Mr zwdVQYZD{D|$;l3N68nJ|AT&%@2Pa6YTeaE#d)FkgrJ+PlCwYzS5@}l%-F_Q+3dzlMKc*7_EsFiqT z!0cnjVX$%6&spy78CR`#EM9cj@gs(cOfO2b8uXxPCbF}x#3Zup`{%j3h|?Yu^5%n5 zN#)ACFL~!sijB0yx;QgmPgek>$Nz|ED4IM(vV7LEVKh{!JKQ2cdonJFa z9IXCMm}uhzokB<5lVd1EH_k-d6&YxEW0+lEE>c-85sUh{RYz*WYf1Z|%MLEyrz$d^ z$p;-O4bGnQCR<=Q7bna@-M+-Ce&J`Yb<3YfP|~hTL5C->s{xHwAHNaf^x_;7es7$R z3HtIylJ_ea-)i#u_r$JfFH6~T!`$T_N_tVQ0-iiZ3X32DQS^dm-yMr`L69@<>Ep(4 z_9hlaGaypC!Yq)m6O!oLOufsF{$X$cP8h5j>0=YBRXC>Oa}VF*6ZJ$%yX_vD?RV={ zCsa4v(RyjHXXt&+_OG0K&|a0=e`N+&;!6c|2Dotcqx7jhNZjpdBkqvoAZkf^W6W6_ z91C?-eqCC)?^H}I$!sz97NI~|eL*vnf1A=|V>F!mwt7^5lQE3&tLWYGP-6i_G zQ=Fa)p3Wn62G65IGNG z?+`B7q%!%>SmkwkysN1dydaqOYFrhxFCCn>KzvV3;#5xWOmt7YGwLceiOWw0d99hB z(!f-7>XaN$V)vF(U+NYscoIVy1c3b$X)>1*OIjkAxYF|6oSbi4jxmp2j*80iqCRE&=-jz6bhS%(Ru97<~z}Li^umULev(kiT zp!r=0OTT^0`|V@Wth)~9Hs0eu^|PPNl#xasTZfrW(xSCE0`XW3G%8&J=bQ&)s%K7N zpJ5J$&Y=sPoOHqvXcHQvf68$+|MFs%xG_`u^*|cl-tx_JgHDl)h$J!pxLd~ih$GH$ za5bitJ7cv(wJl)QWeq$GENo^8L7vcI+j8dbr-rdsq%#9AOkSW~&TOm09mPmZuAD~h z{Bii1%qVF}w6W!1`DsVFs`Zvs?h^7Y_65nlrGwyO3jz$KBmK*n2hL|_pV8tMI_&>- zSkm^ccvP|>>-{YXHFZ_A}@Smg^Raeci6mb!9>1=N+RNI%u6`OyR#V`BR zp#rSm%AxzE)r=Zia*un@$AlHUZVY(nZCN$S9T7PP($g=k#DKPcvn)-!g7 zWUeMfwUdu6s3lmGp_Jjbp92~4C=_(MH1VY;8^o`!UJ3nJG#;c-f&SDqKK>XZXfD3L zq%}Un2&?v()8L&KiegSZLi)a7z125|yS7~_1Gd?_uLuAYs8ZtssAfS@r2}+5cVolO zEx!w?>x>`nicc=FxBeCk%;?AntuQTfX)8xJYJb{_k99t zob*NljYu`*#A*1Voaw6f(hyyAj^$u3VAf)*C^vR9R=;?1PdtQ+sqGeVqi?Dg&c``t z_et53cG;fMgRcggLL2`$^Q~$qOxK2Mz3PKh2)(@Un*aj{vrt6j45ZsDxFhq$pU?6Y zZBJmcV35VRW9@dopCbK#9cxP_ixI=Y0RXfh{e6ae)r?V6$Pe~ ze5i%E*t~T4bk2O8d>werxJ|!(I%Gd&{{FtWdX&ICG{xyb=>Y)n%w4v}!)7SHPmvIg zXS5}#+daWQv}&7v*QeI*u4Ekm0OZX%DIL%p5l+4?CJCEE0?~5bV<-$FYr{s85S7pb z-tFM33;(Y9dZ+eTBu5pQAY*zNS&d@^&2&OWK;p_dmG1!TUOTP?X5{cTzwP$JR7Z`9 z)92EP404{gqlJFjKfQpfby8MtCA2)S(T?ZvWq)E_?OW_?{SRH|7$iy%rP;P^+qP}n zwr$&X_iO95ZQHhO+uS$vV<%>IwtiPsMr2h+Wu1HLd=2!+vn|dYGCI5x>N~(kmYNxc z%8EQ?dD^9OQPuLR(6TkOpCtTmLyee_T|X@%3yURKL3$uVLqjR^OOa010LOy^?Q}h6 zZXZ4%z71|%OU%`sO5!9)`t?T`vHILeUR}L39up&(+ds?PU34qH1Rk5G7<4qEwjw)% z$Xh!Y7ILRO6xY$yrh5^DGTmxjF{EZjJS-Fu-61qgb4%@tQTmu=GI&l9Hy6{-YekQOlf$wp=Plqu$TGMO3xQ5pB28|PM}t=zIew1N#j^|Wc3N&5SrUz##&?Z0J}hw| zF{RG!?*?q=&mc1%7y%*lU5UDYCFU&agQ<+Aa(l*iUayThS!`_*^Ea2Lgq0@euoc zPotO$(a1{8@ha{d$_QDJHmm!Ye^s_ud)u&*bNu&1Ab;bUq^VOchUu7o1B_vF3vf@KM}Q88x`Dpvshn*+UBr44@`^BEhsdO1JnDmRYev6*IFT z@Mw`ee3BjlRj#@%^&Z$6+=NzHSM-66`>PKCy+6Mo1!_hD1cL7&K%$mFIyW1z5Nn8q z0|;v#$!SvENYQN-bg0IaO?!}oE?0PlT!&{EQJh;(8&M(Tn|KtBt^i-LuJz;ZgZEDX zww87#5yg5+j!}CZq9OcEfwZ~m1E@086M}17Ux`>h;}6yhtF5<7+woZ)Y^dVBNh*?D z*h%BW8l~G|6IZf!cG=xeVY&jrfc@@qLU$l;bA+^)^2++CIlKkFPz*qYv&bQemh_g( z{i|p~k9L+7yf~;MQ&K+Z9LLDZ^hPyoA{`^4jl2DH_`q&{K?%WZWmU&Fg@`E=Ewjpw z%vs=G9NB;!gyBn(N^5b{wBxRzbX|eK58w~j2O+X1HD_T-_atq5IfR^;C13_PH^j-o zGd-^@n($JsQD^C5$t%9-`TnzLV$k}ermM1$#v0sJKsE#Axz$oLKC%K!W#8Ix#>&6W%4j|kQ$r=s0{bQ#bryjU^vDDN zNdn+H-WY@cnB5F&gC|H6=z4qmqjW;pBiLic{ZC|21v(Ie770sBl-$8NTPMg}S!7E_ zDq3Kz4||q-{($F~%b9_Jfva(Kt*q}$fj*mIuc|_z=wYX;G546>>GMu<_0=^BZq~ZZ z{krzaO+4>kKUyRvO}I>RCR7+07#auRY0#kBnR5QiQL|sFdvu(AD$gDC_M^s$ENDAF zLIpHkKJ!cRFg!gJ)ALEHcHLwX$bI@Lf4h_!uLkq%UXX_zRyfWmOhv(VkrChD%wGuj@a^aXEWxOz(J{R)mtB1Bg`?RQr~S zigcQ(Ogo6pd#wH+-l9s!t=enuX$>OdCBO=iNZ+$4)$DLEfJ0mXLJ2tkEVZpeyg~y;!2iZ z`F)H-N_f|NAFW=SR7RxFmv7u!)m*^2GOl*Lw^}{CSaN7zKD=tw2D@K{&m~!5 z8-u$cXIlI{w$X34bDq8TP*Gzo%++%^KQO-GOqh~ac939gYMh3^r?*a-P@fvf9n2g zXx_i6!+aj8U4kiq#-9(bbbr0<4lq3XUHex53*1S~HVQUl0sQQ!3aq;{RUSLr(n@Vn zp}DANDn8Aqwr$v5c1C0*p+0Yy$p#%lm8)7=!e80ax_U`D1wk8T#4!{}sRmiPILuSr zfq|O!)O!kO@a+Ao_uPhk6Xv$jljgbkB_q7XMt;nK8}>YCsD(fEfxIl*S*aZQm>k&f zeXh&3yIQv?Snl6y9X?(0+4)VImh&@!2aqkODnQgSE4&H&O-=seT-ROjsUBn3cEUdD z`nz*ebaAW9#A#&iiUMc0=KF(Ry1mnocH{~WajN5#b;c~eO-aR+f$Bry~7P>%gS(4dD65|Y4)#WiSPH@z{%07K{W^2 zroq*})T81PzE`8S_c{o0`K>nb1;TtX{>Yp1gC4aLkmL7-fZn_t-}A2SgP%z8K9T-R z41cS)cez=5Yr?RjulkdkItPE|)_xlwfZjuGc^6M0Ic=%+W*_bkNVaZyeeLbF!rQ;T z$O?a@KmI>A9NEY}6ibcQnjCZqx=ydfxq{A0v~buP+ys}yRI7_|Wm{9;@gB=s`Y`UF zSfwW1{4b{D!*&%Fe{fkRL6e{@Udd?PKrTsJ-FmXB(S2mAc|G3b`b}Ruk9*1iS0}!M z%$I(y+@rtIb9ws?fi8{)9Kv^2+etrr7d{J+9?YVTo3vHnSH93s1V-`v5E9h~pQ$DM zp124CuO^~zjz`?Wo2L0y8S!+ zTBjU>eaoY_`IT-=ABkMf5zc$`*p{t+yO!*2)HeM9D57)*+O13-{s!aw-#XyaK}0ko zR|?O{jfeZ|Du1;V@_dx6Y|>xDxpr^fN!_LhcD#D@{FaC?ebm+wCGKPzg)gU2RcGqp zKHJh%Y&9((I_Lo>q2V0Z`0vr?_DmOeOQVH$uj+J8j&>UMmX)#SrUh0ExJdQF)mKY* zX{gEvGxWkl3u7y^4xN|qYKwNf6gn1i5DFLEe)UyRtAF2bezqDY$7l)F^%HQVo&DON z2vh%2nLwB-xZL1M>-4{?gHQ4=>36?-YyOacnVN~ml@%_wdcDLf$D&f5sfL29_rgsA z+nXgi_yeydO&RJ4R?RGz4~EX`AsINJCupKM%k|n)X|zpi2a}_J{)yqThmim|sltNC zn~c$>Dhb>u1vny+!w>h|H21h@2vS@{_+Y}1`uDfWHp}hb8G*Enj0rOmr>+NR4QYA}5S$#TM4bZ1 zqX)0-keQ4a#>RJJD37@Sj+n(rL55QR7NN{72ErGYW{B;4Q~(nAIt}YygMarJF`P)? zf+mqt_Lp>(2%h_sp6)6cxcj0rh(JM8#qR@5Y$3n3myZRJz6Sd@!7N~eBqRvM5jAHb zLBq8eW~v=g+{Wt5G!QcLp6d`)iihY#cZ;^z#M#68#j~a%SdbJIOD>d>B7dC7Qkr-u z2m`&HI+6smTI5S6K}{Wl&sBIe-0`v)F;Gy)nUI0TY*>s56=GVnJi#O}CVk;&UZ)wB zI~C7j`m!@TBqBMBSd@1-MpC8d$}>d8&<9O=r$%^2*9G0%6xU+6pK_DAtOsz=ZbEacZ7Mh~vBq^1u z;{SC1p^NuxME7r-<`0yzvrZ~pl_#Y9my=CsiCjeq#YJc`JZ?-b-^#Q;y681e%V*)7 z2WB7RtVW4GcXlQ-v`4wYEKgRFuta=}`3}(O$!w5<-lWb1xv}M-(8-rJWa9IXfNYwo zs3>(#IH4hw(TJCXNuZHfTsm54J?UbjKAk46O+5i1cUjb(&d=lTXFSv{rseTKx)2o0 z%s-tXg=ZI0haC(PSOk=oL9T++`p+l6!4@c^ z1ziM@F#PuwhiD2F-%FW5mzWa6qr80|Qvvi3ZbWu~bPYx$696UrL#}>FNc8aH+szD@DlhAS-^F@f@W6>qnxdE41oyefBtKg8Tmx-+HNsq^c$bm5_ z#m=EgwsggeK&0vjgz6TsN>T~^>R?i?Ig#j?AnEeK54OXju@Brw38190f)R15!iIuD zC_~s4fr-TTBPpH_DvuAY%$~2G@B6{*Xv~R%8s?Qg2F~4C__!ZX(LBy?lcP&x@^Eki zKrORl_b3MeaY5O|ln;vL5hyXJ?|7=&CuPJ8WZ6)>a%S{|T^e{)RcNH>!GP{n3^;p# zWBW~EdMM8O0VtdIJmeNUkSJ2{q3tKF(7{god{%q(M&uJXB9rokaDb#7Vj>2P_dJKn zJT-aL?%qql`qsq=nZaCflqD-L6p`pKMOh*X6Q)ySsqszlJ$th3F&KyyMoRnshT;TE ztZWqOHv%D=g55>EB3__^wdts|5w67uV$}p-qcMLc@1%{BBX>^;5`f4Oz2aownk_cQ z0-1vx07POm5tiDdj%G|GGgK2>91?0m@UqD++M>`ICxFo~A##M?;JDt&aG)14trUSv z)RRw_V&*a=tTvzFmh)25g3~uGm_m(2Q6ya?a%#JHG%1e#8&oWpj50D#la!KsPw>$K zg_($ueU3USiQO(68!wP8kgy;r`&3h?7(|KSSUJ}T6#Ea1Spz?=QmLo*Y=?i-Cu8V}f%XM_I} zbd}MpsQrXjOd8f^#g0BYYL=PSbT1jq>x6bPd)UD>LMWuiw3$T+cPMxvmwWIl&!O7iy!kFwTaxP+=3pGX0<^ySN% z{MCug{f7ogpm-k6cjSsmfAj3PId-U=OvZ!9HI>xhK;6Z>Bl9*)%t(GxpFox42qCe8 z2NV?)$~vSdWboXVdzs6wlB{J zLF_QmD~!|mpQgPwxEW5#i+Bu>j8%Yj5N@nMBDsx}5OB&WwX&*V8cAqo5QZUCc7lf^ zkg%=2G;SU+@a*_7$lM0gc`yRV;6!Y~3FD8x^$EwWp~V~ZoKgKG$aM@+O@Tc|aI~Ts zu%dJ(G9?c+Z5)U83=dEChb=ZBV+G8w8|L{VD7w7=vXLxdOk%iRC8rf$QF*7JS3cU!0IBYNrS=eTLe z4`d)LK+Cr{59rw^b1x6WmIRsUG1bpBB%x6))lnlU<1BUcd~#dgj$Jm2=k`Na7^1#T zoBV;VTmHSZ$NES2gbZlBB1R+?Vl?(}zlCl>DF_s5`Rh_1;AClI1;D7=qk*bkpk!dQ zD59F8a4KdbFF>eq`0DH);Px572vgVzG2<522vP{y30N$Sn<1l=I2wTtF0o33n}W!N*|y0T;*!go>ed zGMz%AXRg;`Oq?7tl5{r4xTNaf?9;oR=bg>#cfN!POtI?@V#+}Qq1}z}_$+~gm z)KnO7|A2AN_SHQ`@w7q&APQlGTlyy;jECZHY&;5{OPo5Fk9F;Z{%(LXq7Yar(Ycst zV7`w`hBW;o*5wfm{db;j*J{(sFJ`WfKR5wKFmM`;ZdlLe)@hkw!BIXXos<+;Rd-N- z_{q{O0UfbIQB`GPMl71#F%Bgy@E-(4O+0%cC zAaqC)QX@)Y!5zFDdg69Qk(ziwMaW~yQ6oy|eakuGNfcZHrlKlJ&J&>fbn?l9!BgfU zSvvZ>U5!`!RD=QL0o(Rv96?h#9tAq6r+y{52_Ad|uNJ1HN(kG5jY>ob5vZVIV1*P? zNJ9$R_$GZm%n(MYWOWj+*ukRq==bN|F?Fb<_}qnP3Xo(#-F%s7;G|cXz9_-e9e4RC zFP!X=(#8N)5-h*-jC&FR5C*(zaahhr0UAoku>+g5n-FT;U2&Hl>`DgAhpwXQVM7Jw}VgV|ovbLv9ZaEv_+y^?5J%(R$v>ct3*dY7N_$rQ2@IDs$b`%et<^ITtg38=A@MyK$dxUYi;C z>xqAL$L_@LApE~!;2j48@8sp^B*JtrC{t|ndQ@?5O7<<6Kj1svv^`PujKegJ6OcC< zh!G`8!Q;fI2{Md{Ie&a={nK7!=!~P6Y+&EMGR{e4MJ^zjnAdP6-aT!!FlSp!O0qC?lb?0VAb&s0;{kp5Ki$XN}|z$532< zO&B03S~|=HGb$K?(zS?zy;>I4pmk@(cmF%{3X#hOpZ^zCW=8}7fc^h4FMB6jLl+lQ zr~eF37{;=;-xz!G_8YG1v`T_vhz|(?X_F3Mv4A8X*i=(jpI>7JYaMynI7D!1{{7Bn zW(E^ZPH3v^RzmT{JM}%`8Cmi_huK`DFQWSs9V#y7uKul;h2gpQrDB<7X1+m~XJ69l zt3-t|&Qj=i1;u_>Zl1XvC>Ya@VCZ9*IeFYrSA`N}VJ0_vLQF(W*yJ}I4Py}qX~qJ7 zk#ul4@OT(D)EHZ$Qn`%MB*=3yiv{-j=#C6IMj1RB1TBTYF#9XB6&^MZ=hN?-m{%iY zhoBvc6}A^IWZ2Pk$`aLXu_askcpCPOk~I6?sn&x_BSfV$IeBpIiv4#1Y^)S|hrw*? z6cJT0Wql12Pn`jts}i-M69Ar0KTME>=`)=U`4Q|8zGnK-DS@~Kexp#2ucdqxJF3bd zbTkXuO?DXcoNwTeD*{ag0xz*e{4gV?eUSKOv&*hx8r*gExi`^s2v-55`5*{)6fClB zmBFa~!Gq@%#{)5+shV;tV9AKvNjOpWT?)S}lT`v|9ro}t4>DdYw6=b}D$DBFHNfV0 zbW6-V!o7g`Yb0CjWlJT#H}#%&DhBEUn90WZwF^bYbMW$woFbqccMEC_3UA7nfG${8 z5Q4>T{1g&80v|%41p2`9R0XHz~ibOcQIUV zeofx%IdFx|VW;$}d4JN-BfyTCgBPcx4!p4k!bC)yua-S(EAmbM`a6jsEDw7K$PbZ( z5gZ|b6$T=D{z|MpYM39I1JF`joI3z=J^IavDG%^#Y;8bKFZz{x57z;FnToNmL+Vov za{v2ok{)581sZv7#JD1vpJVvI)_pP-X63gQ>1<6YH5=Jj7$aukDv{;ey3Qx==wKx)>ux!AfmyAT~&=%9=Br4=hmOu5uYV-UlTt zfTl^2oUCZ566z@PqGN-`oJDA60oR{yXk=>mbAz&}pxh00 zBFP*R)KDlT33t|FYu2ZdV6Qb53CL$i|1LY(ap65d7)k`7$V=0}zxlTqOTjhZYj(jA z(v!-2Br0Q-+7j+*Spe2{4+j>A<8IEO9d-S|juVulNs z4BDH3B|aRJrWmu6=ee3FB!(9V1Tj-vm_?UNZjvlHgzYRxjU8i_e**UlrXgVtqu0?+NheM`3Z-b62FN3d;I(53V!+6z7km z`8IZVtU#$fZ2~4IDM_xuhdJFOih&!ipa6X{ie0rb)GtGAL z=UIncTdkMpW-n2tCSBhl@ltahXAV<~LMWJ@vX*rWLMZG~$MJ_K9;QZAZ)nCYuSL2l zQLAS&e?En%+DcUl6lqncR){Ui=XaqmV8*|8?D-A<Sno6&1#CULsH$A2Q#U z6SE7}&+S)y1Vs=7vv3@iz40ydl)w?Y*gHsXd*pN}g<;v_rOt4yRvA2YQ(5mNfb zv~>c^QNHLXv^d(dnLq<+LPuk+uOiGg6OCnq=)}ozWlR8J6fh5mrog4u`Kk(+C==t+ zZgGGSB3$D<2% zAxc}k8ZZ;*$M?CJ2B)laqok6V25vx$GLT^naHNS~l;WWbNOhsCFNCh;8Ng#jkEIs; z6IC&o62hN1oC-N8q9Ev8u!ysv4$Gd{)bSpcTO_vEe1V10R`2$+{~#5w@m>Tx=mIOIWwMGb?S9eiWhE=>ytm*u2YQFg z$9)1@HO^n?zJ@CS&4+R>{se~^J1SYel~$_e-t(h*w}uzjAL))~S9W5)a_?a9Tn3%d zQva?Y0u^fhtlqJWbJ1$8j@N}`1)(u+mvw$UFQG0C(1ZTjSln?4Flq`9KF0{-OmO1S z4feZ`?ciL%dL=7MxV%T0E8+q)qDTbT%CD@;uNY4gHGq!0CEJFj&#|k7ZzF@q-p&>y zR!!wY{@U1snLFG-u!_7&V1z0`&bc~YAyh*`WEl@QL%phW55;zglJ;d^AsdbOE+oS zH4(LdU46aW6}~K|%sP0~nW?R7bH2=)Ii29!>aHCZ9i0;2>|~k$=_FJ)518vvc%UxS{nz5`KIqmfv0CrO5v#q0H%Z6i)ntivN0F<0n~{T|N6d z!~0P6Pky<^jZ`muuh zz4!5V0`DYtdR{vfQA`Q3Sa8X7lDgeX+5GRVd9IOd-ay{c?PKCsD&hBW{)dcq@dd(( zEhSPg5Arl(k24|txq*f`m%d4n*uU`{aai4B2Xr8&e%-!*iwk)SnLO{B@*hx;pX*g# z)U$qMi>r@k=cHyM$;?UPfGL3?X^AO5?`OE)IxP#it-Od`E~`8clFa8!1lRK-7!X5g zlb&rl#GVKJ?I-mc=k38k@;*FQe9kxU zYNX-U8daLMe;+DxvTRCdsr_1@%s?rI#z?DFPp?+H>Xf<%^Vi*lvmkmR}jN(GiH zb}fnHv2WL5OUnsMV77NUtd40&OQcJyp^IcIE14-{nxd^)2%+X*ZLBO|#ek`50*2gY z-Zk9n#yt&+QTQsBL1qY|`(%hm?{TJTGt=ozb{)ZixSDZi(YCBS=ZJ_Hgm4MYR-j;gOy2qMQ9zyA+H_PI;e+aU_dGYjC-fsalZ`p8|{BF%A@+O8b-0 z;o^s>jQgHKdl1n6UIND`-Xw8Q5kNB4YUWyn%!aiHT^PTY`B#~2pGwW^OjFJ@W9W-l zBq8Txzl!= z`i#Yy=1eQ(0;@U=gL^HWbo!TS%oxGL)oCeLPthMFSwDiXe;!C2&}Q{t+n->_KI#Tf zsxvHp7Cix(`-HK%5$07;ssQNN38i|2{2~oNyaAZ`fJp+xD8-DL0)}rGoz|*R6R^aX zjDh}a2@DV#Nfoi6H5Apw@mI`(rnPt~hNTs3oiQD0vSD7m0u<>%F(%sNe{IGdGXd4x zL8eYS^^{qSyhs03+_JHL^3tD_1Fuf#(?t9kz=`grv+fPxH0Z*R!PjnHL;fg}7VI8HtB%UAa7Wr!AuYv<=LcJy>7 zIV;0S6svmFRV>j=y`OoZ+xn6BL{p;-;_A<}fTe?K+*wXOZmJxb-C*z)PY#n`>m=V& zhPIAP3<;ORIhjkcj z02kaz79lQ$?O6358}=}&RjuPePCq2u(-}=k+h1*BU*40A{2N?TX<^D{S{!Vj94YF5 z+zVT!>axl`3sF_1zoSDzESqPEoQ!AD6MPbT_dy^PIaFipcM>qE@$q+coF>#di>vQW zPTW*tSm&K>R!*)`2})$Sij3whSaMV9;ZBq`k6XvOkyb^(5rup8ASqU`%WHk2?EL`W zqImi=HR`LEUhd_`-kk#lQZPWzeL{J^gvL@Vl6$xh#qDaZLKy8(`C9Z~cuz{G25ndv zXEA?dtUx$iNM)EM6euGQ7Pi8I6eKW`V!^_I3w&*y2XM8wLq&E&u~#2{-q&^u#Kp|Y zppx3#*$E_rIwQu{c<@6ByOOW=Q=3*SXc&h>bE4AuYP;XEW9cnt#$UGS4hbo~ zDIH|Izv~vWTP!5tv%pTK|&UWD%CClx9_UWZ0FFSA>|lBq((a^%GT$MH zv)hzjAR4o%P@27$Jur|$!l5&bs1X&wUz>dbWNsG)&nPx#rEBp0H6;Hz_N-jx5u>pA zI_~wzx?lMcjFu&)HNY4-ze@ZzdZ7ndGCB$P&O2<%1dpJNHb>->%t;F#E^8&16^JOr zJ)Gjs0uLm?E*7+Brovh*n&AI0%<~`dm|2mFgNBFz0L@PS3+8b!baJtDv9!1QPt0?z zd+EH%k@S00@rlncp>|OGw3k(AYe`?9oV7IENV%!Zt*)(2mjFO3N0B5g)Y7c|*=r9> zKzV^WmUI=({7#Yxf^{}pI}d_2G%j!M&)NOaJ9|4H5o`SPzUrRGms_Y-y82n^xpA4J zn^Ums*TeN2@>CO6=SZfUU@F1B-d=gFB*O5nw^9q5$_n zVQe8tap<8O;$8-vNh6IBBd%T&d+9Vk=BbPXYR*U-#T+QCrCf4A?vu%Wa59Hf zPrjm@FapR+w4DM9ZOWp@9Mu|2$#8_y88mQWYSICyhqY*eIHonTkl|dC8V%m-UVHwWameCrz0Oa{)vE~lJHDa|Uqss`Pk0<&kJqx{vObSAayCs5LaXMjee5Zu(ZYX-Ludzr1Huq zCsC8)Ep(31XJo_1@4`7@_py-ea$o9}xFOtI-k}~6puL)mky`#>*l!_Wn0KwZ)R9mc zy=cRW=QGJ3@KL_2=RM}`oZ0tpN1MC!?jgbvdb*~r4uS=({ zDek(UV&zY#WVil;^HdOGsNZ)|;e)^GB{lzXtpY#{5wl}jwS+p=x5uH|Kept^cbwFJ zZ16&q^@bZ^CPo=3=ac&u0OTS!%9n8)j>IuX%p*dte-`GtRfc(jC;)2Zo8YgOhD58s z_<4!Ycv%%?moK^_MEFG@!9|53B^+{yktz>TKcdkvl#THukP{1jOsh&jO0tSVj$TC4 zK{3iyc*y4NkOaF61_-K^!X98{2Gxf+agQs`E6Q|1-2u^`@#;zmaifm_L0W{7$szAd z6$2*x%CvqUnSjLQgGegKLx|EHvwqLxy*)pP?dG$9d@Ryz_De`pDZ5YnHBB5Q2!^1u zhaEr*wdg~5!=q)`DDW3$2jNuuy3ZC^DIxD9#G4C3 zzRxq(5sWP~{c=UMKm=MQ1pEe84MY$ExzbO#oQXkw;Q&Gf^*|xe5abK{MA!(f2f>KP z&LVh4c&gxv(_a#xMbNEexn;BCyjk{#?oPilQ`3;U)e^=yD@1k~*5daXl`4;>^{`17 z9?NO7!_0O;NwCIOho&ho?M&#@wy2u>U+yd>_Cl)6lyVPGau8JsXpym{<^WxmO?5(E zbu+BA^<~&P8;-VHJ~$R|sAMBft^h!`N(q)S1kOI~vpp+W=)TV6=U@CJbesVH@OgZz zU{%#2sYj|oYe|(4DxqMF7%2n^cAXRqSPvB3Vjh%m#+87}M8(wh@kL3s0%R{zqKhzQ zx@wOZ{>K{JD%S;KV+tcXOh@((;O`iLHgOIHA8ceCq$wvOkV2N|%obS&jlwGj z-Am%74-w&!zwr0`Wvm^T{mZtVlsg7wiUTr-nSqz?O~&iNq*UmSsNX5|E;Mg+lk*;b z`{_9*VL9$fW6<&}{jlWw3Y{1e1kS+msthWJl@%;Pdms391kzQPSF$s+3N#NNWnhyPT6rcf!F{W;0_&ss=Ca7= zBQiq)20vFR^Q5U!3seF#PkvPLJA14{d~N>N8F0r%vQ9e5iaQG#ahZU>KA8l!W(Etu zp_HDJcoJYNHNBQX61&)nvwx-?W5co4U2E+@Qoe~zzqnTUer75-D_9+vM>R@=HMe3i zELC60ljmRi?ICl|(GEVy0(*0@3h6q-Y_{Nha&l0xLLYCAljTav+W0rD!diJ{Ubi7+ zpWCgi(%^XY$km^>+v!8Mq0h9*t zopuNyJ@EYxt+imR;0o5(?#2H?OLQ}q7$tX~X|cR~xu0SL-2Zj?#evT|S!ils9+V%b zvjQtb(@*isfLk?uE(TsIO*h)uv<)@bbmMdRmG?6$-$cgIJ$CmVH8b}T);kiYkllGH)IDHn1Fm~2D3 z7Qx%+XWoX?yu$2=F5w(mPRtbQz`QSBpSY&lUda>Z{>A2V{GcNZJjIMde)_yKiu$xG zI}hysURqAJ6qyEG9n;~cS_=60D6r&X*Q~PZMleNSzI80V<|kpVrAe~j>)f~20!d-* z6F+$-Ko8+%2oob~nIz3*@@3D`2NyLmeZsSI5yPr|n zJu;q@4-O;j12>q8nFQ{|GfB{5-P=9HfeDleF<@J20bl zWcX=_g*qEtt&CvFeyBR^)||EWS&E#hJRGKD5j_nOVoc1PjZbcsp&-?ICP_wSlvSKAUjtq zQ(87xOw)#)xpbszk(7Kti!IJ0Zcdv(63kD~Bo9%I6LaLfM0Tb~)~j-+h_(gGYxR&- zaLSDzg(dS7FwbY$3$dkw0+N3&1Sy zNAeLxl+Xogo+ljJ5<%v{2-$=xd4tM?3i>8YhV{L9%!Wpe-`=JsyT+p7)no6AIL`X7 zNuVp87Mu#>#&TmdcE0!@KaKE+ilEK{aap~<+)$FKTXb>gm>+>9V*)D>Au-VO2VlL{ zl=EWLw0{#en3Va&MKd45W4~7g2lu`Tg$GMEi%GD4#~T4Qc}xZ|eI&PFOVlOiLk<`m zb(ZHEG8$fzFq&Y4j6?Ytco`w5>cEauK3+Shm;>?MHQ(ffQQ_&$Bk_$Wj@OgOo#qsq zgd{u+W}rxBqi*mYQ%Pg>pbt3tirY5L{07YS879jtM_oF_j%k)+`SQGxRIz6_rkMN- z<@9zFbPD@NmHB|wm_NUPz6`<=NUi4GoW6GVcf^qSGeCmZSV4X`(%gs04w-EG2QtRAcbo9aYOxJ6V?nwe=<;7FjieRzCq0%E=~$<3jsXH5g&U7u*lLsGrDE>;~> z`?seQW&LtEAGVo(XUWE1Q)$-mZ&%&eM)}j$KBNlIgkOGG7Fd?mc-D=+|HeeVkS3!z39=5eoOV%yi&_wD`-c$T*<6P#+y@HK%8Tkqx zl1-h>VjbiXcj`S*Dd^L|7I{iV)5v%RdoVNaw$POtSw~|0?_cPG(9L3Ic6FQPInjv6 zI$2E5f`D)r>}qJ84ottxEE4*Bz8f=4d~&Je8f~Z|)$Gyv$klsvmh4ZS$p*W}ox{?U zO7cZ%FySjbISqm)gWdC(mvgK?iZL6UjFW?pfJcpfzBLL;jfl)a-=}bYv#YWP2Nik7 z&&i7Foc#53z$>ZRHYuvedfiaaJ~3Od!+S&1E0=}a46Hf@edGg)Kh*Tg8}`p5!1P1@ zrpFC{8@f))hwe9&ldn|@isTFpg#X3mw@Mm3qBX+!7ybH8ue9p|cj@@pd z#QrV)ehFDWV+`L?Zw$4^cVPL?p~VHZFeo*j3nOHe>UBIlKM#OzS%{AOdJaj8`52ythc?D!^cA2;=KDPo zb8|Tm>ec}f^nn|y(8OJk;41|cK%1GBZn8*QK+N?;>U}$uG~}3<5mPF&jMCh2n9@{7 z-n~tL{rQisVQ$=Upai9TioDlD9I7}uGM_KH_+Tq1U~5*?;-Ht~(J4lV`qPnXA~^5- zt9;_FHfhxHAooX63F4Am7k5$%04-nLIw+T5TB?dy5NJ8CADq0a+SJt*)4LS9P&Ti7 z)q2^_RJhL&Jbi!2kq+h~d|y`|sQ`1M@|?iI-ohN`j3Pc}rXk@pU&9pfG+HJC41vFv zSMWqUi@a-9TXc06-Kh007nh#P0u> z%>1vv(W_hYENx=_NY}(7Fd|AFH*DG+GeI2Nb&@i{jzomj|Cu{dyD3&IR4R*5Buwu& z2y?_8X0dCZF$s%sGuo;(9r)8d`{OY4bNzjt-OR^xIoP@L{8{bJd;3_G@(8C!G{7_f z01&aJk)^+9#0hX00rlXlo=NZsth4vp(#!t)c>|PYrecFiECW2rO|o18CxVSP)?<^@1fcK&KkK1UIv2 zhaLeEfexMm-ngfzbr1pTM~G(+Z}I!iu=09q9)0yy;_eJn>i=Xn%G0!ab-ki*TZY%$ zemCTRfERuYXWdQ71P~zj1*DvCQlr3`{yy(D#geVKjywSzp_tByyFPk%<-^YKXzR{y zVeIIW2=h^%Bq4Jn?n@RN(3m$aAV|1&Jz%>PsX(WYC#iz^K%V<4@`Lgfh?66ook>l* zLu+wUy!!zf8>Qb@pfQ3)l{nu_L?`lw7LJga$S~$D_->td%TZscuwcYjM5NH4`?y#I zHaY9;4uUyuHuEP32Tz8k{1*qtQU}hv<2*B3%;xMQTQQH;l>&a->ozyEHvgO81;aWo z-8k&&qcI7>^qiDiJLvWN)mQ&ke6paL=24vFu`}gw*j1W?)$CFDSECV-{+0V~3;7Xu z4{TM^;t}}-9KJAosZNI@Z(l(9(1W$3j!k}dFg&qN-Ze5_B%}Ak2s@L=!RFD?k?!DK zD6{Pi(q_DPo|w&4e@UK?Ry1};Ohcmd%ojGqfbk?Xl~2Oh%bYN_vuoGx4)%dGD8AI; z4XV#KoTRW$_->1S*a(emw_nT}+qZ`^R3JP;N2`_hb(vt(Vo=MwgT6pX|k?S|^U2Lp*o(s_tB`30!fUuqoe`!pC?wt54} zMl$Bm|3lX~28j|xS-Nf8dTrabZQHhu*S6jL+O}=mwrx+({@9q=nf+f;6 zDv!66^S?XIY1eX&B_ezd_hd`Vq!9aA1+KbWsIq)7icH0-3zwM(S4lX7e?rmB7wgf< zpM2I1R9D{aU&8ZSSAC{^c;c{2U!EgtPP`JI_WL-gIqp^;mem-I|2_qB~@+i^DcEW3ke`W^4H36T)Ivg+xWF zx87TznTF{4hf0GTbv&dRcV~B_{L$4D?_kex{3PkbO!iu_TJ72yN`=xs2~%3CmaF*g zPBpob>gUAW9O5Hcl)dOSwbyeWO69eI@Az$y7*W+0K`w~=0MU-Vc3EM{Eul#6A@lMk zRPsn5`rGvBS3NaG;}t=uvI=wVR;m>ULRx?>g#QiEy8I|v&Zy{6Z5c0@xkRo%(($xr z%3^K_($8wDYJ*)@HhPdOmTd%2g6To%K)rWB?q*?$_CPLVjUfJ=Z4Np_u z6_!?lqU?GN?1VRKx$zGMNp!D%IG);z*_gL@Mk0*pZZ@jYTF>tOR`?RT^HCpfw48gS_11%1aKqCCpV4ou+tagBIjvh8(??Lxdr;V8T z{y=`!tUv0~TC~Gtmhgh61hDhOLeJ?*tvt%JPoQ)Z<0<0tX2RS~rp(f!v-tNw<)JWI zr=?zL)RoDn&PvniBNA-tnsa9#Szu%fwPXok*i(@)v@B#uZu2rNjx!}XV8gIannuPq zsu&~I`!F@QjlT5{)aCLMXuJi;C|QdkAbBoo7U3ILi+sN_B7-i#ztMxdnrbM(;{R?89>6!elB5n%&#oJM`NZe*az0aSGtnJa!V z<_+}y9)*k7gG#ZcFXb0a?-CU~nW69!l#XSKzAu`fu?*a;+o>%wECR5~zC^^RU@5`K z8Lvo5v5ncCzuCKm*d%KTJFgi;{kd*NA`0JDA`bMa)n+-CeTjO1a0*j2)BSn|InIj~YenR#z32Oxs)L{U^4 z4g6esocVjs*q4F`t4|3mzg}#v{9yl3c>?$mg#bxR46v_h$bnr|g4UQs-{3*5rw1@u zDk!3T_4q)2qq!InBP%$jwZoi@C-i;~=utr!%HX_&*D^^|iokFWU5WJQ^YieVH!RYto=m|8=b`ka?3=A=H0xY<-T}$e zwtVMaB}^7Mku_t=!-otxyOfr{1dL6P=nrP*mE+V>5DZSFlD+$ zP|hT{5XUxM<5DjLgrAIsRrYzVw)FvSz|cS7C>(5@ z0xgTtjgOIA`ujlh$-2+^**nPZGD@0)A+J%bqvXK0cV^R9vLMbDpqb}TL*%YrlQJcNM#T=Aq@(NVjsq# zi1rbzv4B(AX~l((vpAMi0@i+7<*`Sm?jR6WC>X0RmOn9E<=5jp;(?aIv26&!T^zWs z#(1|JA1l0UM8cEdDD&l2zA9zgp@A5wPiOhqBfJ$hj~d!>jEZ_&S-iV*W^=`D2&dlR zyo*cs#B8E?>l5Zy!;JWC?dTkql*Q5C({MjWz;Zsveu6MIeV{Kzx_6cS9!p1En@%1ea2m z%K&s9<*QP*2v1kV=X!-h&BE;N3?#L#c;9p8En(K{-BZ~J?ZFKM>~WJMtgwNd&fEgH zL4~A!;_4g}G!|(8tEsX?H_&<)Ew&OCa|01H@3B_R#pwZl3rTi;HDVT9d2D=TwF1j& z7Le_=r0JZO|nVDbr`6z&{pHOWOj)zmYOP8Buoh_5%|y(tll7%%xQ?-T4BtMiv< z#JMx62d<)iBvZgf*rkD!_td7L-mQykSr>h_m##AnlNlt^cUdVtNIAYyH*~d&rXZZX z>{b}>ux9_5%e!4G(_eYr3F|PtVs0;q#prK2II%&O*fM^{qk%9d!dkV_}!^LvO^!Ky%B ztp77!>XSa<5>CNk#Lw@W{2$VF0{U>4*W-1C7{70FM)IAF6#hr3s_r_ptPZZ zr^jjs>ctt`Z(eyANt{DJZU@8vAkhFQSa52$gGSE zhfujAXVlQO&XYc;H>{t^QeR59k%iqBnLnG8Zq!=K5jrl?el0*E-p?X}OmhnZn#?Bn zkQyzYvCLudD60ex!t2~d13AfA<1RmbUVYnO18I>mOt;Pb%jatTRrLH1QP2N9UHmsu z&y}W)(*`Tj_qARCefIjaI#Hh+XF@ePSDP`dEK?oRmCrb}f6-ttkqS~m(b;2qqN~J&A|V2ycrJ1A<#&aC9*Z4AG33LZ>KZDS;_sR6_ZC_(6ZT^hm> z11nWC&XKt`PmuSt>^)`up&ZjDyj7c-ZGxEyHfu!#$p$cm7ZV+=%6@P2CC_9d9s%Nk zjN3DP2H>c3P1QANyXVeO(8emX3M!69-5=Hw%OyV@t-^qX zU`g4_=X#})7G|p1TTrLf=j*Qq`Kx)qjGsyA-s@Fr$)IwU8ONtHWjl~`F+9t+# z8=a<9+jrN4f;I~9e=gh7eMd znBG0h*47fCU1zqn_=hxyxye(lN1-~6PcBY?FUlu44Xpw-#6Ely%bwwH?A}+HFye-1 z{#>C%zM&!Fofg7;pdg#p=T}d?mZ0!)w$1$FCh_rg!dUi7;!wMQ(7@`gu60dA zDCsnKD9&u9=OU@69A%Vg&16J3W0rqIhnyxUTzxH!X^`2Xl7||zR>UdturyIE1D`Uq zzH%dF`kd-r?cIg!tNAEj*p*rdU%=FidtOUd{Ty8Up@GX?P+PAq8yX8*S>9E#|RY*uH#!3K^?{q8FF0N=A98X80!{6ZB>zm$zz)cY(R*O1SOwel%h`nqK8phfn|tSh;t`G*wb>)maA9Z zQJi%hW~3u^Z!JW*XD+xxBW5QzJ{Rpq5kSx@bltxFO4)CsO2CwS3!oD0 zFV~P^InmFZ6)8WJbXQ@D0+*ixkfKlsMS>zEFQH4|{F&?~n_*&LR>^_bTRM?l99iw2 z{4NQbRJp38duP`Kj>DEhzGGhnB|q^Mur>bv%YVdzoY;+s4K2_K6Ell)FtKI4%np8O z#Wd;$EFx%^2X3Eo5wcjjtU4u*lnKJ&U!@3kqG#ItP{0wzj!Sl(D;W#qL z$}B4(UXf8gDHsKwqTM~sk*&CeLoC=LN&ZYHxrkTC5C7xaVcb9EbrY2`>W?y`#3p@` zgEXBNf>_yrNw3x{Yek?P{QL?joLeFBGtqia5*aA`L2wvc*X4VTW3V7lyDj;{SK=`i z!>y9%i@mnw8bd1-aOyqViGn^a-0a3R7ea>#eiqnP-}Ug?;5+f|J9i6fCae?%e{+l{ znVNfxPKr!}VtIdi_nZK)4B?EJ*9zHyNgtjHCRb3z(4>oYE=OP84K9~}Q{`-yG*jLC z9j(J7Z@>~!<6A?@Q+)TEf}|;2EN33rnzQ$S?~7NMY@Tiu&GL8iz|v zw__Y<&agtE$BopvF@}CFG%OS5u|gtAWGpw%t_3v9=t#p1zf}=+a%P6pH zY#Eq~wWmGTxwQ5_P;=+q>ogqO()+|aRA$E@x#860 z^T;hnJ!W%Dx)%g8Q0XWeg&Sqogu2;RO;8?6%1ONU3{#F8mp-_-HeprMM#8=u-|am< zak9mYf7LhtE! zY$M-O?mKpHTNIK5TFtq0oiL|(p>7aS8m{3+{L%F0@4|k4V~I9H4u><$I58(ko;2=1 zvMs@Svt)}&;G1JlgsSA%=pK0J3}M8)X}aHMO?gw7MED2bwPZRE%v_OWHrHsr{T8G< zcWw!Ngt=q&b$63KY3ueqsvCd&JY|^>sXP%HPUjqC-3Tt6!!{~IZ+uL=~b8-G1VbUjw04MPNVAHTQa0{rlV%oRzU(7 zTtmVnqsR{+SmPHFJzz4|DSdFtNMV-;y7QhA6QFw3e{==6Nk`!fm4D_IQTblBbdyAM z9^|NR0gw*yFPfN%xky9dti;Z{+OSU1j{>5Cfp4(sqx=Ey%MOMRVmqAlkuiQKtY-(s ztAYBhH^Tf=fIU!N&?nYCCmQw6C)YEfH7hKJgd7_8*o&9Y?$r2Qf!OOF%yCrKK`Afs z8=~u`v%LVbocmbGGw4~KsAkUIw|hx*)3Rx9vrqG?g^Sav%jczzVyC$oP~JOdLDra2 zYi{Rh(M)E;pW~;w$W$U-ta&^C2bgT0;{gO@%k!gI$CznNm3i9a!v?o#;qKAq!^Xtk zMlSffnM4r|l9^)rieLQi21x`-SES|ra!2ebAN>iRD9$k)U%oEMw$PuV}*aSX!~EsmC=1F(GN^nVT7f>5K+n(5TNm2TZl zPASY}Z~+_39bU+0Ar9NA;-kZzd`C35a#0K4gmx{5$*h)Eh^@)b@#6&Fsf{&%`B^8- z9O4VBM86Xv`kUNhHI3z?Yh>=XJ|4KV>EgVq_I9&$$B%FK@^T?O8oVtSJYqJH!VLr> zF^R2sp4p2yWt!Wc`lhF29AruKIjkIBlRQe!AZcFJ1GP&i%41I&d~cP0QUH1>9nGdQ zq>?2oxVKxgW=N4Uwk#)RJsG@svg>TfO@_+=2&c_p3IMW4A%S0b%7MX&3v?cjS(>+E z-I$~@(C?20=l1u@sWtuMa?(=IU|}$hKqXNN9HP#-NQ#D$?)Z-#X@HZk*v_T+sAD9p zm}UOSC@FN>Wwr}1_&!>?ttYdIef&`#>j^@jR_2qhRlaQUAE%25=#|JALo$V$EJ5wk z$$?t)!6o6&fehas92yBdIx5ZkKk zYOnFFMaCeXX_D9W#oEH5G#p2^@zW+8Gopl}1ES8Kfv+9C2;2ooWv_!R! z8Ik9n*-GWexDG#opjf6sQd8kPSg?`)oZ<&*fmBL1Ju;yv;KMU9C6@C#^fXdGkM@?c z9@HttG-SyWH3_KHBYBA?GYDxO!bQ!;BUp_dWB52FZ@_~cVH z2obZ`7oR~84G0ALaEEj<1=kUDX>JWw@lA21RLmy^LJ@YOX-Di`RdQ3b*2yXI)NiX| zQ6IoTz$Tp3HBrv~DYxN~9f^01Rw`@Lwn<1L)9TcQOg|U!Ut(Q;`hyp zGTEox7VuM3Ix>-)+Fk&MxKA3wAdeg1Pw<@glB&-8OGaR-QhN90rHPo`GfGlQcgtyt zBRYIt9ueh=qGy>tG`c7GMJRor7^H_vQQi=ew8SsNx%v(DJuT_BY3TJNPvc_K z`ghhM21ce}x-@WJ2xV`;ct=nQ&`744QIUY!yA&OG1opSrL!CQS`9a-JT%2BznfKa4 zr{_*w666R7q^j87!X@`vfDB0c`sj=Q{&!0jGVaAp?yj-kNDT(Zb4VNcOzwkV3l7l; z@KT2viKol~|C>JY4&We25J5votQtT*&q%$58jajS5qhv$LJ_$uFR3~VircntGPtukU?9Piy ze2W_i6{54B5EmxT;P_Fq8?bE$g4h6+bzjFlYnN$B5QUItQ4J47%3dr;F1y)lGTy{t z0%w}l7Th+eXT#Qzo-jqti6417rplJ6mAgbE(s~4i#hHH<#!H$aA5epG2P8pGO1FA$ zI)|<5_l-CIJ8*JxGljRx6cP4XEy&0UW+Xm*=!R2o804Icu*t(^GZ&oNUR6Su zY=5ur8~F(r;E@(@5*)qHkbP$(Ew%=*&UI3pe+`G}MRDoR?{T#%yKk$II;m^CO=ak< z^59aXQ8cjzmR;V&lUR%5-to?wyrb$S9s0-hywU(yaZGy-m+Q1n){?c2sLkFR5868) zcI0wXl#B2exe4i$gUe=Ka_jT;kPX&*_DGDjb@G5t;{-@$npYgdrpu-cr}w1ek={#4 zW72*;^t~yY$Z$H$A&$W5Lm#e12mq4nu@0M_6@D&I_xM;kr=L~L+)IPewrt7srK9T- zK=@aA!*8VgK|!oo(&d}FpO_hoE*N=JlCdpr;!WH@d%z692t=JoRBR8xhtdjJEmqgO zC&}ET_WaDg+R>3zWaygAP4J(bT>cyGtg{FCbvlI1d&rfl5eNeH%&qRREVT`vA(Cr! zkFgc`$r=Vq5<}O2_gR6squPCeG}4Cvmjk((;Icql166stDyraFI zxDPsXi25B^{hIGe8xV(SxJiC5o*s?a*XpQ(_Rp1K zi<=V&*}5kmzGOqenKJ1PbggnpM`XeKR)cRtPVHkFM>V1-tqq={X+^I>&W+KR8F0k? zeGoRKnwRVykpVNMC;o64U>j1JX!iwhV#hAN?J3j+!(dz zl9u7pinHnaMUa5~Msfd%*K=>BKuYnDK~l0F-e&bP zxSJ^6g-~$os%bwwFaaT_m4tuM+U zNC0gO#{h4ocsHv3j7#uPuy)n^&ov>Nm79Q_xeNfKHL%Nz4dt_P6H79toq)~<)rp9IArnop6y>$u;OO>zakWg-LMX4A(NUkVm79r zY>~Rg4Z?m8cZDxy-ChcLt&{r4nD70!jv%&6m7qj zb-`QcI&kLet8XHY_>(es*?hUm%)JPElvg15-cagoHZA5B&t1LFK20Z}nyVgL4A<@<`_ z?dx1%vR~t6r$xZcCY-7zUAlo~sY~46-G$D&_B+Ra5$kE0Q}A;xx4;9O^KtIx!+3)4 z#=C)^eOu{!TdM`Xgb%p1_<1x3(Do$jT9|{g53wqJp~}kJOZ_@HNLcz-i}RHqce8i> z{>b}zn}G1);NrdP8yNzQwBS#)oi!Z^E@Ki zZGr!R6a8vXsv7QFJ2M9;v6*$G*OdNR#(!Qn_nZASdEmfK`**UEO|nyk_jWGmiil)l z(GUU&{kr!IZe&viw!ax>vChY)`W~#6o5DV2$GJ4F^F!b=0d-Eg%b8N!1Qt90WIE`l z2kWs22X3<71eGy;e%8CXm18TUR%kW-<0(R1&RiLUuZ(?Q5oD`aG`^UYmOrF%n7cAN zNIG9OZ#CL^;#p{?Bl-5+vU9o7%Qm%$KcATBnlmKl9`819Z*yk7Vd(O9<63^=Z?Tk% z#A8;g(3DwmLpQ#b9SW+e#iM(A`H-jJv6J1(+Su|u-0y#`J(qRXI#g}ZNM>2y!k?@V zUQ14_u10d@vZtprZNI@wG=9@;Dxiz0aPgVb`(U6_4M8E81#t!J{iD{D-`j8qbah|S zcc81F06NEbS^L^F{_jl#?P&dlbww&cS0w^!bo{yY^-zWWI>LQSR+Cl1dFH8(dfc_n zzMaaFC3Bh{|EHW$W4X)D2~mLkhe`6=rN`QuKrvqdIA88@T)A6cBwF!2XRe9))~|BQ zm(X|X6Hmn^iHZg6=q?*>qL~~zn=2^EM25E_6Mwi(c*DJ9UzMR_2cmUaa5%>Nf!Y}7 zb)`No{c~Jn^!sK;@Ti2Gjsdpmr>Dzm!v?pkeHv*!4;S|oq!dM z>BEqDZHtwyo;*&OIj3f)`<7J0dCq!0!MuBN(6McGX}?TKXG^DvC9t@{W0W!f2E2{S zqhkWdoM7Jn!y-=B=p-3vXw~hDkoh}%z{ag_ zHaDE|#kx&iZi4FSU}&jhV&W!uThE8j?`7}2r6$+oQOD=?Mh>4h%g@Hw@or@3=q>e_ z>_+|a`;70Tfh-T%x7a3#WtES@E{1^jpY>6T z<*gpEOpdVwk2*8RG8=6np}af|R^U>LsE`{rNk}XkZMki2 z*4Ei4_QuY~<7WqnFgi{kcwU&8U^K_qkmTVQ=J1dkp{qt?0kI}}Qh-QBMI$P4X(*$* zk62RpuSyk`1z$9y)-iCSVZbK6l4Skfg$Tmt!s`r(qn6bJl0#k|*0I(T!m&PP!67Ib zz0*!4li9w1t>M6$tZK}?8G5kS@quKJUx4Lr-+70C_2Iu|ddL3t2BWIv1zOGn*h?Du zeOMIb0qn|dSUVTKkb|%_z8k=*=IgUt7EfcEopH>=G(_a`y9YZY9n8WK6QqaG;G=v_ zLdJz|(l&r4qCL9G(3FXf4{x2gciR$Q8f}H~xy*fjq4mV*H8An(547 z8!jwUc|I|wZ}YETh)yf%`V%+g8j;6^b*TF7@Y=D-a0)v9WwlE8YhK=ZBz%RP&mA@{ zV9d*x9S`Fy^Uc{TJ&BiALf6n^!`t429v-fi>JSvCJ@hJd)w*^7$Pxiq1vo+T5~FRW z{syCS;MTUj+dwxYjaAn41rU3!kgiJ~Dv~lV&hHf18wbQ<>vXiJq-n^770nfzzddK6 z+r&ZRq8*^l>Bc5m8=3uMf5^CdSQ^^?tIm11mD<+ROWwWc7DQwSDJWeWX|jF(0gN zU)(W`?f5wG6h$A6X{v!2BxC1s3X^Oa!UdMl3FsguI$=Rl2PiBegCcgvM1s$HrjUJ` zDd{MEB$|KSY3&6z6v(PieT1nl_8 zlhHkSe&=&ptNd_U^A?Vm)iwc{X`DI4n)0v8g8yq~?@Mq!qt;^}son3#A!3B36^>aR~oSIT2%Sa zk$F*voZ;x0(b-YFY16{F+}n6*=-FoBu3;Qytu?kmoc$#2e~n*&7M<=U5Ai|TT_w#% zpLE)4T-JJYx4z$A-)nO%br*HM#IjovwdW5Fc|t{!`c5dm?=SeZ{CgwZ))3m~`e4zL zt5#&dux&iWsD+vs`zzskQ{kzLMbsRPJ6Ti6zRL1A3g?33j>3^IfZN5}01ibtk5Jl; z4y%C-YvXmNQ?^-gN!t-I>+O5Alk`=lli1$;OW^4vat8JQWBEO(a~fC~=Dx(}-oJcP z-lVSU6nm94gvXM-`@noP$6W`=+i1$P92Qc`LAIkh(-W`BCi&hb;UNXRBKC7S0xiIJ zb20k_QowoBMR||d5W52iutkTLS7Q->-_^)5^- zx8!_5&FL+^En>MjLrHl%fU-LeUpPw++N%05`V0B~Y~a0V;8`~5ItRMglP{xQFpHn5 z1-@?w!gMuf(JHfJX>FG~Xk`B9cnTQDpLF(#h=q_&GNT}z^3bSkc56AD0wt~jJO-Z; zMwyX&myrgZg=Uz{TpQ?4QBXU6`Dh{iCm#;uBvdT0{Wt+AW@%|ghOt57SnM%~bP%l^ z)OOw`8~Cv5z1GpjxNAkO$GSaX7hNzEWg{eYAM8Y8sd|hT!+&4PXm1aai#-WyO&BY+ z_`=J6L9VYbWewAaHQGoyweH@OlAmkKzWq1tyb7{zSJt>#}Vp@a`>{#{HB6A%zl1zdVDPDZ4bd)nFyB0oi>2bdP(-mGs?Cp_=!ak4Ev;0>^7vhUd?>v};~u z5xaBS7asbA*_G>%ex3dy1?45v1qRjVyk^MG?u&%!QU2J3BQZ9z0u@C)8q<~IK`W)k z;bl+D=`RlyYXnPkcVGTkXE>{z{IE$AiZwD}31{Lw5t|2Kzw&fo@SD4{Vw=`N%s0r< zCc2);YM%LU4+mttCL$&Kei%lYjwJdowXl)r^Wa1%YHR$pVrs}q=+TF-ei|HWnUyH} zpn^^!E{gJjiMo%SF5cO=0fw%s1_urrSA{yG!{gu_vX~r>Pa2L4V!cf;?hKUoxtOVb z2w*)golnMO+@1*uc3K$NTdhQ|o~?=MJ1BSj$fNgNex#tM;p^>kWQ-v+O)R zH!C}RD3FqOEVtb|J)iY-{3dbsOi^Mg9+$@CO)FoF$eJEljduR>DM5^!SQ^nKHlBem zR!5GN7a$2U49x~3Rw_KdfXE1V`OU@aa2qS;@Ld_mW8w#Pz=v0vE!{nR430H&1ndff z_drqT*+xK380}Nw`!+3k>G8AvQGOkE$cg8yh73=) zYryrfZkOpAZ_TCLVwaz;KDOy!ot;1IP(TYVe{yM@5bk-(vEz-DYk@(R^ua6qAY2Qt zUNx~_oDnvlTj3x$>np6#YcV=KgN{5tVGL2Qs_|>x<|1)6`aSIo?9T6OJU=Z$&gmN&s2KI+wK)HVY>KAT$^eFD;VxH3l!BHVq- znBJUHM9upD_{I!0gj!|Qr5pQI18x(Z4m6THJAVcWrxi4;SxENxXrt z&0HY=Vy-`rr^53$$kt)^XiuiXhtN{ZbJP+x34HOU(m?2h?ID5YN%*rS`oM^xvvdS-nu+b)&_jO+TJ>-4$9@z1$hdWIgeZ?YvoA7zMr8J1 ze}>RHt6J2j=-fxpUn{Or@9wzE-b8v2bk2C9L#&S1eN%mjzK#MLc3VPL+%8pme9Rm- z@deVKbrx{jbsbyq+SIgMjC6MIhLB|{i-^8{*03*AIIWai2!GxNY1Zu0H9@l2+2OZ$ zeZJnGyvB^X=EJ$uZE#s%Y`5N2zHu zUCqvK|5}1oDLN=G5&Y?TYrRR(Xw-EpeRrvdt*hzq&Cr~-nozI}Pjqm#eM?7iTr z&zfe34)PDIl71c{UOS_P>FDOm*=OPkt%-$iphc~m+Z+<1^3p>iw|;%j){cg10Q2kP z=O*bK^PAi6>FEwUnl*tHdC@3W&Nw2Ot!edcV?egx=MVfqUGaB2uEv9;8ThrXK@G){ zo_ktf_EbNm$3T-}$L5d&7VNSFHVT|D)V7BOi<4H~b*dYlt2JnpXtNe^MqANauIzP3 z7K!K5*=vAy=<~8k7#I9=^~d2_T9f@SuuZ75?bbwQBf5_iq`H?umsdPN=4VxlHR=;s z*t}7$w88qhvG;5$!!)CH&0Ii(9J@-kqTV(2%g$phfH9>lbr>4$b@=C{93mkbt}GniKAeleQ#+THhK?*~{GVk-`i1-H%op#o zvuo|OmrJ+j^K0(@NJLAe2bb+mua-;UhKYi> zD2uWlvRv=_&bBs>@fk=(iujG|)O)~*WVi;uN;^kt5vPMES70d)FgZ28R2NxDng4<& z{ZEfHW_siZ)~`o8^4B9x_WvuC|4Ytzss;O^75>Q2=<4viA-d$;SO#M;Xjz?#5rt^z z7^ew#864pTCMHyw@q}tp83WTG1`JsIUtvST(bd$t354*Exm&lu& zp_^{Kt(}=0ubqabW(0H<1W*9}&2c2x_!44(-9!|yJ4zmUYjin&yb~Jz-q_p^4I18% z6_0f&Q%n2=9yW-VoeOe!!zz+#-1?mpso>5ySszVuZ?*C7fR@MnMW?!x>j=Z87Y%rC z2}#VfR4i%^n==$6zdVbA6>8mggmq=KMC32wccF&A`vEO)i%xJAf?RJ5W~TX6cKa-j zNMwba>rCii%Xo-wxK|@;V5!&MjO{K{LIBTBbBCCL{9T#bD_gC55R4z`Bje*x+adXE za=-w4!y*DRu12D9S9bbQsWmm`(n3CQpU5xRY_9k1qc#AwLDa>Ptv{doaX9yeICA~A zS7QJ0&L%Fp%s55_UX(s?5c#r*h9#)VzOp~@XVz7O32gZ65K#0yRGd}>*Ny|-^U>ik zX7-#Xi9cKBeW6!Wjey9SMw%XxO}L7#ob2TEa030&89Pjx8Z22}DZt|oa$CR@7|+uv z+W7_TR@o=e(EU~mTruz)wl?6?|AAzW8LO{~U%oJ4+u0`wU&TQ!|PB^ccYf+2J}7_OpH<(t$g+L#e7y)BD;Ul7^gO$ zvpF;;^}=7QJluY`7xJS0o6OziJ&v1&O=ayE;`rk6wwjhKZYV^Ae@GI~JC>ZAUCm)U z&{1uw5({V9d+|q`#E9<7K1C>J1g|Y_H#Z+Z34Fal&SF{hJ@F;y$*R>X#e;Ku`k#ak^(Tg0X_-{&xwLUK<; z^(vW%=%g-V&>)~0r74x(vRVSWWk4UpSZpxEJGvm<7MWu^j#MHf;^~qzWv5$`l$^!I z_ADh+z=|>X&6|67udLn2d$P>+Fh+@0lHgC)F~VM8slb|;&DN=2kP`-$+O;Ad-bkzH zQp-GR+zN_SFvGnp==VL`4g%z{K>c1iBfXQ0r2Hf@To`~_8&C)_%htrKC^Y?@D?-H_ zNcM7Y56-{OsN0dRQnIovw!b<2Pg7_+l}*{=7LQol=bpWl`n@f<&M=8s3b@>E$Rv{G z-#(sdnx603d0X;$pv2QTxpRe|vFdcEr>%>j5_%;y==D#igD?!mB-pX;$qh_i;%W}- zeO#ibnhKf`GBU}go!q2G-i8bH!5!46^=;xte+D`lB9fw*qM7Z2Fe07fdlAJlON5dS zUqaWml$RuNc*_KIXb!+A2{o$qL}^8JY4OBa!vz&9JaF}q+ACXCfW%o{f<&;Hg&AR% z9cCt)4zXlFuYvd{&&->^Pf|&y-%YNSJsUaCvE#T}l0+ z4GCGKKv~2^kL|?pqr}~YC}sLJiVSSyRBh@oY4(9%HTwbU-B5Y?wTXa6(35-4LhF4# z4Zp5ckyQHWZ4MZw_Ki_jvC*z#b~ga^1ck4{V+cVSvF$2^OaO**w~>qAxP>`R65h(t zlOfNYR9L~yUxBP4H|N6csGPy4d;9<>=-cGWbz!I^@=XpkS?i> zk*B*;DKJZ64ZOVp<#{#8WdaT5D|*siXKSbml)n*Dp;%?#A12=oj#Um2alk>>olDSm z^jwD2iY=O|8@umD3eBc2j#DA=H^fawNGt4FwZW=U-abljEu=SN0RwviG3jGFtpCB* zH$`U_bZMt!qvKBU#Z2$$bCCzh>6lpHsD~c2%v-=Xru0 zrRo+^&d0s;NJ)8cl4A+?IR5A4jm{8C0#^UzPldia`?+TFkH2!BmvGJhIvlmg|7rver*QnLv@}!oNdzB*>VAa;pLhq1Eh=dMH&-N?HvD>mnZc_` z!BTG^xWXVj_A*SS#Z85;GgRwvTPp!GZ`bw_rY}aYLB)z$hnSC6P0X#j7g7Aep)-&p z0iBOdb1gu2)!5lWST~eQXiubxvi?@c%X{h93!{8hd)|Df-6VFcd;iE#K^oKP5vH+- zR33*OzCA}M?-tV9^wf_(qq?pEbVPkCMJ^eOeiUf-R8^E(Y}Hg3(S(pf%NMZ6O{%Z1 zctL>qd9lZO0FL+7I1 zp9UpUr_ERoQR(4RhsV`rT{}iaSgFU*j5eZ!uO^<&zrUEZSH=pfNf;>8vb6bk$V#zp z?3Euw^cRq8-H*F$xN}GGtrv`g3-_q7HW=@JOdo_Bd>B3UNO9dr|8zjASIB3)kicCi z@<+OTJ?Q9%6B{2`=+|*Wy=eT2m`aE=m z|6atDV9wobd#M!P`>Q;bXD7y++eb2y+wqslJcPbr51x;in{zI9P92>>tVFW4wL%0s z{DJrND&)_ZiZg=}<+6AQ-2CF=W81_voiLW>OiA;@(d%eI{Uua)M+r7x$~Tkc8=93W zk_tMPc)wGryVS62(vGmN00Z6 zz232Z!hZ~KiDGl*8SVEzdZ$~C4(h4?XiX#POh@X2{ZuZ%Km{y5gLX!R`eu3D_Z6?t z$1K8(ZP$Bi*MD13%MhQDt``?Y)gdQy-JwZ=<{jYULuY_WOiVf0CZ7ztka195X`{a( z{GcLF4xIh)j`H$AS3~kTr5B;fp+A`Wif{G4r*(SgpyA!Z~f59)&(X z`npRSRu>{=0hi~#Aa#hzDmBgPrV14Ba!T~czwy-uIpQ_rFxbmrnHYQ`$m}{7SN_ZV zgcAau$P5%BkCmG}6c;}ny@=Hd?aV^c(Yan0!3UO&%?uRS(MS-7EHjsWMmbe?IDf-u zt+q#_WA1 z#9!4rcXP%q4|S$s@?+!(*4;SJNmYf34P|67hR7xRvJ|fiX1`*a-wgQc?q7CulXJ(EkMvQS_p%&2M zth171)&R`p24Qn+e}o4J8aqFd)?K&q-EHqo+O<9zU%K|NhWK}_NK7eU?kQzAVK^N3 zH9@XSib0obJ*0!YU>2o`H`D~5wCOrMM67uZCW!5<*4*f$g2?jd9i(W!*2#XL&b)tt z-X9N%OSDy4+zpHIY4TUleuUHt4`+R*&?8}pp7wfIt`?TGI*TOU6>E8HUcuHd)d$B- zwdj9A{Qo$N;kSFS^zkN#_U&FY3W9(T{NL`y|Ll;?uy9ysOAhXSQzaOmS94Z3Ul(6C zzp&nSP0--p3s1~ECNGABb@5mIPgP5bJCGLk$^-sb?ioL}4~YA=xdUI%m?ZTpfm zd@YQ1;{m>=)@(*9_$!Ckvb)?qJ_tvg$rHLG`bYK;ZX|E-T!w6PP@6@3cz&c}+H z7L0B$kiMaXy!fxOWXUiwF+DI1s)4d(L;NyyipDfaI=GjQl7F5A@#_La--IGkij_B{ zL)=x$^#@aH9Yv@#v!$3zTzt5G!TKXSJHU35mTuF%?^W<*n}kSj2yI*ebSDUjy?N42 zc(oo4rRm?toAB=EvZHk`Fjn?+CA>F3PWYXX(&t()Bvomb?mn6o2d&{29?^y%BPRyuCuYta#wNRl|8F)x(#U_PpZQO%UnuP^|JlZse3V)?b;h z(IozMd+ytG=HzMi~Cm>Et5CEAu51?Vj3;BuZFWV@pl@AlkYs4kf&YygV6Y(3! zv-8Ch>QKj^tH4FU7&V*5#;0cY)@_ugrn`Na-ulmggDz??nxr@Ms+y12fPqiAD(7t; zfeCAP7hErF&4#a}nV6&;_Or>dF5+)$QMkN;26CjIFLoW?e*2v-OPpPGcp~Vc{9TRY zHJ&dsFTk+G_ zo1U0^yg#O62X357x1QDC5!pdZ<1{lOR76y{UT-```W^iUl9@2Xw{-H5zOIS{@6@As zg9np6Vl@C3?Q8c$yW-6!GoSC<923UR{3m^e|C9xg3i>3(QAbXuMMMqe;=Mey!Sq-- zCL4tMxLZ6it-dZjkC(PNRo&b8YoREUZx__twEwA~XHDeL&Q;W!f!YkbJKN)~!5Bx3 zTCbK5crI-^f&@i-+Jbh-l)O1E;GgU+sc>neZb#K8;CDO*#Fo=rgr7$1Z>P84ROf2w-VB8?Tb#6Ef(MeXUY--{R`&U3szB=|B zZDA8-QW)q7!!OX9RKr-y&cbca{nmS#(p`+z83t`D%BrX^8gU7#%La%8Cqh#~_xA`(%eIxrX*%S4hIn!+w03}f1phWdrWowFKhRK|2H3yjcsvsza}J;ybi z<=yw<5kp!)GFVEyrDV+{$;e0$L(($b`g_Pl7rmo?&;#8cv)9`Khe0j^Ze*>F{+j*1 zq9UxS66Qe(yz@JI6<3P8cH~{9Y0hb0c)-^bFEP_g9T!|gr#9C|G3RTLbhv^F{`cvV zey|UCcpvuMCyCL@w();QF?KJsPwi}RvZr%P4+_+ZnV^V?IHGRIn`o1Ys=^JtXVdL# zp>R4aH0@n)?>jTA8H>)6Mu+;Q#J97BAdlag3`A$rAUpf6)E8#36_xWqnHSXYASqC(2x~1fq}}y# z4ti$&ZUhN=0)3R7I+az4+^1sDnlAjq@X#j@y}F_$5lL^yYB?80In>L4U!?!i*=Mpv zWtp)&*Z?MS3(c7#MX9mhhu!O-)k6Wm3x@I?ZnK$eE1xP%ZLGA=magQp0D}x__R}!t zV27Z)hJ|Lta+K_n!(vl5Bw-jr&JnHT$!u=s3Qyua;S*%dW&x;a%2W4nh+!*1erfb9x*uiCX2oBj z55NNJh|Jc*-c{nKRP#RrcA}1LzqdXvfCEa>B8^uoMkT(E-|D^c3!eRxQ*-4z8!<1v zynbD*z%(+641DiSt)3qasS(3U@3a0_!0sBN9L~>QM{Ht9C+)VRQHjy$0yW2t4;;OG zJwR@JP-_vDRiZS#h9A}}v}mlc)Hqs+T<%&3BwE0$0bX@hWmoRh1A7AmOq*uNZIS)K zz!`ukNYtu99tCW_?ZdzPL$jRTcBp6Cu?xh3gNjOnR%}KQi^7H$=buHPK}RAShCy}7 zl&A73(0BJ=114y&Pu2CogH!Ttxn7&wkq#@0l_N8lp%l%eerCvbPRF8GNrJmA&- zfmm2{!*E5!dqFG^Rh_mle&s<;-?wck`_$$sr0GoJoQ{PU+eHAA6Wj)VX%*8faS_9< zV4RvwP}7_H{)F&jrB5FyKzYj(q_N2uwW&R~PE85w^aI(EUCiW-e`+()ydttTHjz6W zGZ{(_*WU!*5SEJ6*VT8K&4;_aX;viw8Yd_PA_D&8h5){C8ERtYSZRkM?H65xh0R+? z{@aasY;p@*8Ki^O+RyLq6f_&g2E#2p_N9@~n}>^nGU%v1uqks;GaI^^)^I%^ z16_xOm2TeOIE%!SAU_(zZN=4bx68Of|B_O=XCH4eLm2^V>4o z5uAA~0gi)sxd*NABP9f!v*4(ef7%}p7LKv>$aBLcFV$RHS7x$43As`p4FZED!k2Pc(hff+-YYe0(&256~YP=AlLuMlOW z@p)eV7u}9Fb=ePvKOi9BL7*T%|A$8bwETaV2j|*vHfzJqpS-`npsMU^-Fjl&_~Vx^ ztm{r7rRyR%);j;lW8F2hQirvX94ymber+-rSdP^u#3_p?`w@wegl910cVCVFbqJ2> zc)nbqr|17%tL8^9zA(~ye_e~Q+3KJXX@7g`o=bUqtLE#X`h2|`a3Oc#85!LS3ULr^r$YpK)fSnobcYb1=KTnrYSqMJH8jsHWx$jWhBv^JL7Qw;e==! zcWt&a!9{$vUaP|k=_meLZI}wrp43g*lk31uFQViN#5!eg+8OZnnGV3*vwtf>WZ!l7K4E`K6jt@9Z{(e>i^M9UWfe43*FS$%gbW zu!%o$d_CaZZQ2<8X|M{OvYzwO@$hq#EOj;W@(Dixv|E2AeX+t0k$uMNg~sy=qI`#b z7UrBDcTMFJl+V*mB@uvFW->kG(%v3a9S&UZuN8N~2!Cv_gyn$FD5Tvk$5EBO4(g=9 z(DqS1zoc6e&(c5Do5cdn2D!4+=dm^!Oagl5$~W^eZ_+m*;iJ*70uVe)xvA^hUcpEz z%4LD<@8>B#Y*=g`oK zx+L*}+T&6ik4Gua?+*O%Z*$#@pRa~pWoJ79AH@UwQTq3OE*Pi|Ob8eCK0G!^hY$CE zt;Xg|v)rv3P_!ImZ07}``vXiSDZ@Kz!!>$?7Przz&Reqqfez649v5z!9UgbJu5Dl2 z1_T%pvcvPoE{5{UwevG~XM07sV;&Wz-S78bn7TIp{ZQ-3o|EZw>?-Om zE_yO=`oZ;e%Q0E3jqCPa@Jw%;heo&cV|pkCaMAFT%8T{ z{185@dHy6MJAZK+n>@7R;DN7DzB6lC82t0zIx^+EB|))_E7Y*5 z)t5X|m+t`g;nz_{EDzO%+_@EySaqAXpmI+RPc@kh*Gr+Bj}|XPa=q0h?Yk@4)g$`H zcA++mF#^J{wx5>>o|R*ZJz;`WdNO*k=(S~-D?9bvJa8KHlehIKpz@W{Y`TdF34FI( z9EE#(b>F3CSnhuXq#)SoES2BTf(cxFhnX0eZP6VT_RAp7vHV6U!*oE`SN!HLev;xg zip6&u5g`QApG!`{mi-Q71S*sf{`v+I=K-S%sXlA*O=hy^z{?Sg#iQ9rBy)wb0EPbA zq1zj4W6vzKxTtQUv&J5B6g|bGnL!+Um2B!>PP@9E&)8L#Bh8cYfGWe62HR^UF5tdp zgTRtMhN1RcSm3LHCwa2Ae+Hc$JSjYj1S`;#oBMcMFgq^bz4XzAfAl7f^851TMAZnm zOc}g%oTDc9QI8seEM#t2xvz_a%c6sl1_}X&0{4=nC zb79JjzuqFLl+&bd41i0f>urW;7x`y;~`hiod+anb%XiiHR~2=_h8KbL?qFEXqK#B<>kp}`%;AiX6d z9vPfQR!0BKvUUZ%@t`5dQ6T5Y>!=ytvt?ya#Y$7UO;HCIb5QpwEQETS%}O(+X^b1d z-{~>JMM2blq5@GOv;xc@(5F%JYDy&;d)i4W<*07f z6SwWL0-*-;1v|~w-g`W%*b;%$B+#g3fFFUX; zxf=9ClmwNhPi_hQGnd*%OnTPni;T$hM2_O{M6+t)M7j}=`^NrwNaG(?TT=nuyE-+> zD^oal(O#m+1_G;MVRbC7p-x$x<{7NQKT(zpzAC6bnoanS)(an|vQOK}R7v@495{9> zg|eswk`56i@i`aJ)bXPXCi7^?_>ek?KV3=|`Z|}VZ~)O>z$nB}!pdAQbYA1Y9KHM} zfuE#JE_D-NR~U;b2Rt^`9Fv{Js}$t<^Pr0Ul_=kYHtbXiQ{bB#lXpFeH|kmAnWt)^$K7p`#UyRiXfF4^a`75c0e|cDVOjNd@Bfe;(dN6Tu zD~(F4!djzXE(_;*DUkQ(s|HSI8}^3X8cW!&zs}6#muQiI92=p=^A-^5=>a~BM3EAf zSh)a;)Zt@|Hf{H_=0!TB&55&=JvT7YN1_Jw%wTnx+vJdh9wrKjK*lVQUKA$CS@w~? zBAY0LwK|&q(nfV|*95)Q%08MyA1uS^06DObCf=RL|EwbVR_HC zdLa-a@d!S+{Jl5foJz-uzSFbSL&lC%!J?!gy_2()I4a%CfNmnq*h)G*^c^w*=3UKI z;>>xegm_~1pZInZ;lkm1=>>}%h&uul$C2abU7M2;(}&&fdi3+YdRwPis- z0z(&rb00=rcr*9{DKY#J(}b;*a{BTKlmfx0naEGv?JVsYzceKihY-K1;vzNdE+^OU zqJ2Ve59ve%TZ7?OMCp@$XNitsB@0&$e31=`0ytv7s&0)tu-rZO+W|88{z-k4YN=BU z_eTwZiGq8+z2Ys4XD4&NCA$4~;(`!iJK0m(?vo7LDlLnTe|R4#j9h3%3!NTd4+)3> z5mF!-krca`8M&+-&!^lQVVPn)IsEd2;zKD+So0%YM>F<>4UMqu80f2-Et|0Y?xrz8 z$0`*$ki0m8Xm=#+g#r>YgsVswlu#}MV}3AYJy^4@M)tWK!v!rYQf7qkW%Lar8xK63+~3p};w2S^8}owZ zKu6PTLLjoS;g~J#6*Lg8FrAgaWDT~Wc2q)^F4Vm;=qD4K0;5k) zQDt9RpE|p13PJ5577B`Aw6G31O4cLfC`yF-5l`IE2)gf=GEsh;bwg(3$Z^>EbC5Zh z18I^Wgtj(PGOtltxIda!|Fepc4XVSiOVdt=^LRfBamW)bHh~(z`lK@B=z<`WY(9&` z+R+JT?Y3>~;8eaeDwEyJh5Ha`PS2y%CbDx}GA)PWW*nM)f??9o36uf2%6`y4%&c#6 zU+z~Tk^9XFleFe4`UfERm6)+K_1Z@Us8?&O2ZDc(cIR;7mAV=8-m$SWtQyKWT7iJZ z74E0DLogN3NHx`vyOwTr_$@wt{hPvnrd-9ADvVh~CNGpKbT`UU`_;JwZ(~#T7fOc> z-~UE(O1x6cXYb1PA6aT@j987^8j0jT59-Wr`7fNA; zvEXS=r;D=(FF#U;<>H9*t#b%5KUS)u(KIY9mjvl!n(g4+A53u?yEO&l4W|SlM2=XW znct>Q#QZic9Jh0;<%TR2B-l}MYFN>gdSb|!HP>tD7e{_6(i(FeUy13>Jh&f_5XS?Q zQN$0)P^oG(`^sw2Kor)q4fPh7*Snsf2-3#(E2K`d=uGUG>MH~%f8pNLBD8j_nmCT1 z2%j+oCy5gIGdmS@#TRz`5j>fd*Jhf4JzGJd)Jg?TP*$$_qj(5uLfPm(%4_nSX7$UJ#E zcYrbJ^|LgnESKoO zm^`YWfxV_Lp5H!ysKJLlWBNz>u*SRNP($(~<)K0c{eNA~F#%NUJeE*yd#a7qH!dsv zz!}-B*3k);;@D!`Ie_8}df&ti$VA(m!RkN7lma;op|>_6W_hml3p?G>MMepymQdMZ z+&J`0hg7&BzSJm*dbLE0^BV%Wk3A-E3fKuP0nfaFyyb&;BM88+#*N3LC*yo@)zW2$s#uXE5p?`4ilkte+$5dJ4f} zrOgzs^f_}Ew7a)G2^94FFUnV^!#KFHPF4^^%YVWuSO5}XdbI>38!9#otD7g(NIbQl zd>PHuB5mkJHBP~DfFoN2_Y!#CI02lW5dQGPgwctDf!Jh`YFCB7b;&OwfpCMtDc+?9 zQ(3!(=c=!~I-*UU{QV;sL3)TD0ah%-8h}4FX$ogKWhq+LSDmD8+v1UDXOZe_E0)Cc zT7Ws*K5Wa1pwT!HB3?zRJS^;mN%i7P^*iib8(IwjOXwowEUio>7w}*LamYh>(+q_} zA_hWVB2(a`lmQ!|2)goR{cW56rNs-$4Ddt~$ggV5V`IfJSbJL43-Kcx5$ab7td_xU zN7G{NgGsW@U0c*z!%^>)b=NVCq}S%I?YyEj$1IvY2ATw17yKxR2}CliUDsi{Av+`Y zzTed8b-$|?=Nug`Q5sJkmJ2=a7+lC!ly1&4lY9dqiqt7BsO!)5DoWRu%5-knQl z?Y58X8qe`ggRw>rqF@2FK=O1Ac%+dDm$!1MXQK6jWjMdUgOB$ii;RXSjOcUSjyQuqJjS z8yh>j{~NQ99p^g)z=cuUTLYyV1TmaFZvc*LFZzH+=OleVa;EN0EiJsPHjguAWWG!*_<3$DK0B?7h(bSf% z5kbV=l?H~Ph=_Z$zaD?9NSU5?E5kOS$y39~Cs~v#W(llE5B(DhaVD{FlBgUxCG@H# z-HJb1w!F*WC8S?LW8ss>ybw0pHW!Vp_th2V$K)QR0iUVs6550}PnwF?j{MCuo%Gpi zw&Y!po>o~R2|z%svgN0Y`$f$nM%%{F`E0`}T*_#OGf-pcQ%fRsw$)G=GMqxVZx&9n z(bV6gmt@6CbOm67Fzen=&!(dlo4lAk;D9h3Ifm((WteOEyU$P{7w-nQrhToY%OzsV zKc`?bYGBX)@O;Vy0|Uxt<;GH}058s4%qKclM*=QO<(h&vv{6DK5;=*}BspxT{gb8g z`5(Jv>zs(}*xA%^>cBLLpk!46NHW-!`JjCj{J$hOhM2`;;J}*5)~8N%!#g1JcLQRy zI@q2eq(0a`xEmeCUr1K93Ot(+(!c?7dnXg!+3U0uAsr z+cHL?isx=MWPX%kX+y_nWK~TH8`e>ntrqO|XzZS=Qv{&~M1y8s&s zb$!G3XGILd)E;LVfP=X>OW!zyXi*-8!2Yg%0_iHCYc^b#4uczaj!ib=Z0b-@?#gW& z7ix?&QlkcKTi?RIh-B4HCf6r@%kl;|P#j^b6M;^Tqg@l1yq^7n5Rglh@N?yNC@3E@ z#qZ;D_+17yPnN^(mHoMJ(Yx-fg(&Y!U%Sw!>;kV?jIC^>Pz5PC8vAoRI4rrr0zw_& z4w}&EjYu_cARlRSvVGMU-?FZg_rv$I1H@1m3zrM4zK0<0t_Qy3FkHe0{(yUvwF!y7 z06j*B<6(eKD-mNe8>)f{7I?f2lea2~S1~jx6ljbW4!u4C=FwI`QpwHovczbrVrS#GdC)WdG~r^lKp*vR>B}i(LJcjnzvzJUAOtzzO*1WAjN+?E;aXFWQ^Rip1 z`51-aKQQK5(rKRjYQ>7#joy6GEUr#xKiX4o-`8VF-#SIzlI6WlmGoe*boJS6OdFi9 zj!2nRpOW*{j~LP+CiI#-*}E8-3&%`YDNz^8X7kW6@G&_GL=C`oiR8+|7KY(mpa?dn zue99eEsp^Ch*slfhUr%lSo0Ww?Y(|*%0Mv6ru^IaYL5eTaqGO ziBH0XKgoHEE>5iy5oe5NIDlNw_$&F}wYyt`e*ALA9ys;J^n; zREOXjo4A>c8rzg*UJ2$xfkjthf_5-UG^svq(yX)1mto7CEM4y14|Dg)F)0tl?{@u` zJF9#=H8*G=k`u!07VXNz@yl)p0)s`Yzh%=Z;L^+WHJL_5;Q=RW(~VN_RsEwCJntDd zxFVHF+#dd)WYV2Zyf0~>pLa9!!DT;bvoC$A`xvRi^52G+IeQnDFP8)P_G>{?yYO3j z(Me2qh75o)*ir{)80?p=%%SWv5B3z@RHw7Iz2j{W&A#^IpzMW_t@=egFFCa}q9B}wluRZ@TEI+f&=)8?aYs%l)8L1^_LF1pEb>-^5~wC- zfB{x_m`aw9=LtFHbfk#x=%HfcUw%u1PyWxGmfv5TPpDWQ?G%r~m;*+71Ul;OqtE5p z@I$M3neSjeqMynsm8V@s@4qxe$;-2KWCjN~ytUW@1~7%JJRRTI)gOf{$!_SIZ!gC5 z1GV1iKI@5kbcG}6y0k-qn{7D8KM+<7`rh8I%BfV}ypny~Zih7awA28rUbMD|cWp!J zD0T1Z5FrC+uxKm0C(TOTMA!`4Ys7G48@Ip;LKYZ)m$?hlNiP!U=4;~@RmnK?Wff#~ z=Q5nN*}48;F{)50Psa4f-<+x$o>aQB0>6J;ZH!pL>ZQHr-5Q3CkAg86WSi*2>rRe# zc4N;^nbO;VmqwU4_AjqW{K4>9=us2{#wkj`q^!e@klwT=h;aVVH=@Mok;FKM>}Yt- z^b^hEyB-BI@etHmuXWMf8QN1k{g|O3CLxMQ@esX}Y!u$Qn zNwIPK6i8KnR&e)da~K<_?Z6OzrQLrwehj`xjmgb z!{7RPTH8~RtJ@t?+Xy$d&TW`!xlT&ri!{_yUNcQ+;M$;`63>BOtAgy;#~|1(6+_X& zR(BC*G6SPKIj&pK%J3}o(={y+hd6UW^qcchS&2s% z3X5H2>*j8rs*mbJr-)z-Z=vVOA>vZxB}C7{f+NP{U>U+}L2Kx`?B+KQeaAjBcltlD zo%)wnA$7*dO>a+3zpu~!6&wEUS52ezh?{>xb|q`?{Tc+G9ms7k^c*;;*BtCW%eTY! ze&~s_5DDUh3wCV>eT&o)i;=w#F_}fjOp~*MIFuHS2hv9FoAm>f+n2?8G~dp0%b13N zck**dc94;z1OThAM6-K%rhZg7%MrDd%tSAhBmC;aJS|jOe<)3f0;m3>Qq#O#mkUdzS2dCBzvWzONMyslQb(~hrY-vf*Y*goqX{xI#{GDt=mcfGOA*#nf@GM zRm|o*73$*wq12I8F7o! zps#N`09}n)5Kmwl)z|Uk^ANl zeDAD%t4w&tZy8)PvE_Hh zG~1EJb*e%0CPZ*9r6xq9c^z}9|AuWMMmM79=TmP(DxWr5CD}{)>v?dtb8yjWS({ZI zX_kw-SkphFvA|b1lv)0&(FN%9g5UWBOUT0EUD*EEo1#Emm#f0j)xmYv`nz{qzz25UB62db zGURf_-@(cEwze{pU01q<>Y;PB1oT0-!db8moIE(s7`3i;swO-fvveK@+VmxAN%W@9 zXB~;y?=|{E|0?A%9k(z@bDR0z4ynHw-O-f&rn)_PhbIaL=2Y!fa+p={ipVu%XhiRp zU|F6$dWEud;N0{`0p)+bW^Uia_{obFBvj{hKn6^jLY1J#cc65=@}I~oo1LF0la%Sy zuru^G!4KeBlVPcY?30^=ufqH{YO*nWFdwrSZdKXVk{eGz-!}Y-&9soZj`d&aLZjvZ z6LbKriw*e8cU!rWtPj$+-ssG3r}A~1xjux!yG*f&HSO5nH`hk`EsT9f7zem0m4$_3 zTt+K1BO$szuce^kly5c2M)jB5-8tOTwMd~T`keTsDfwL!rXlP*4G=CT3HEop4VydD z?o8m34+>noe~&E)yq-bw*0FANOvjcpqr!U`EWn68{_ZTw6g)>_s{cKw#n~p1X-G^b zY#7^BNHNG0o!cf)IE5M8-Er~W*NN^QlVA*G7Ck5>1%%_9njYA9&)Q$3oAFT5cjHDn z&NuUD3#P!aO9VaY$(Q8Cu=;$Q{CT|KC*SHadyG(W7s(V*4t+O8rBJ=ZU66CUx5|HM zQ0{_9{xoH<-=ltB{?f4mWSOWQfq7(25FC1coD{pyg>{DqwBg8q^#4OCM6!tdRA9>y zZ<;Tw0uk=gR%DRWYQz3$L(^U_{I@~eQYXI1^h*NhJw#PScXlhC83M9pCgyi0zju z%uSl5&bdJMR|Iz_5ysg@8oeDZl@OA`1rU49{@1t_lc0*0JXHn*3&mj~w4Y*M*sa1( zdLdL&ayaLR__^IBk&%E?iS=R}iY>MQ*6Ic8A9sZ0-G(xJv+D9P_LbHXG|VA5Q;zz7 z!VU!#F0qLP435BOqls}6}zn?_8B#dr=asp7E*3)aXMVXV+|Rs#bV&YPe6>!mHFvaO;)m&Tw8pEa<$y)aV3E(V6d>k4+63cJuUio?HX8hlVE~>` zps{}9MECo3q9CC4#)IhbeN+Ambj^qJVQX>iBOY6DqGB&w48p*0ak89(uIeb?_A6%R zI>x7GGXi}!f{$4P!<(Hj3WQ|;vZT#Gz)wr=e&-u;~C|jQW!5t)vX^hGf zC_BaE*{5Joj^F?d_Mk!9Fp2(%wfk4AH25yUrd^79HgZ_viBQsBwztl2xgKDFH(@#gJpI-JxUWI9N?*;#n3quxx|vbsi?%QTj2nNGwacbG|N%@bGxV{^x1?X zV_+jTxvzfv?XmCGrdK+nU?cpJ@uF#Fv?bdVrnr4TvKBOW?k$B`*t0iHG18 zq@?u5ON5;3o-C4mj(t^zSAJ;azvh9qd|-T2B>lEGWi{U2pF4Ec&2BS(&(EKJ<~SaQ zSPRUpoW?l>0MBMKq<~Bts7RKjQV-()OP1c_@qSbZopm`Z}I01lT9FqX+*qez-`AwAdw| zJysxd^a&pd988M+qJPjImito{io)Iw`>oho!SBVWgjT+Vq4p^({rc+Srvbb!M!hb| zcN93c-2D9&Ni~EgDkF(Ya}YkgE-sx|15P+kLh$|P&bLU`xLz3A%4-i?+ow0% zRMe{1sVSOHYAPrIZdkJuaF4z3a5=SQ#|YzNn|gf$&3`PgGrz~Z9?q}8>Z3N8+Auegb!cm+9wX{P4Qn{J`iKor=)Hc)Zjn-f7hi`RmRY&aym;WM0bt`&Fzkb z&QI#EyzP8kLM`!ax;OLyI3F^pc`$!fl_E%=z~NkAFqU(#7OHH zT(axWh*wORLRq9>RCiMGi{zYKLjRFkxRj=toK(bwF97=DPoVkGu!f7_+b_0omSL#@ z7_fNM2}O~;K;%i3$&x$;*v;cY0)1J1*g9Q0sbb7=oIY150y)dOmP~`e#wj$?(whf; zND^s<#8o0J^*+>@Dm@&6b8_kLSqe_>{)vr?izlSd5J_xWw0uI==U0cV*QJwWqkf+!LVC!6baVG~E88e+KgFvc7Nt=!If51R z3yv=yZF$uqf@PR=g;$@;Cl_1(&Xt{~jLewbUbx5~!5oOP0+PmuH+}rBcD}}S2Z6)O zW@GExK4+JbZi-h3k6q0OndvHFpya=Zg$cn0se71mP|YiX)PPASzxZEHoHH=zo)l9Q z8gC%}t=%liHGW9*0bexfwp7vQMplS7>fw~EY#y5GtLvyJud0wE$9wP(HP))au?Lh; zJti~EVJSyq^W;EEYY9Y%4OdcUzg1O(ZqkizNeX6($6$GJx9F(s>o6C0hVsV1x!8LY z#L}{2^@f8)>)uVIJum-fjlVeF|5X0by7?@TtJZ2~OIx_`lIKV_xrC=aHRVb-L$@yLNK1T8fgzH&Lc|fsTfi7qO4q+XIAGU zASk{jwKtEX!GU@Oe#1XuuY9-mIip9cfi7M9wK=gvB1doKN=pgu=?bX2v~<*+;}qtMo- z&Sj0O-AdY3ng#^S8a0~AlKAMgifkldxP$gIS~d^zJr&JBEc`NeLJ()%#km7V}UW6PDuIhjN49a{%`DuYReYu}p%{^Ku3R1?Du5 z1p53v(Dk~IScUB{jk^RKyp6shtq(_li+Y zN-k2q%h8+cMOQA4Jr`}w`m|&}ud0loiv6mJ3G+MU{Oy-}y6h5DxLQ)1q;}+ab;nXA z7RIki8?g5v!UD!wAd&B6Ly-iSAE9Jnrzvcx2`zQ+-f;8Xl#j2k4CAHL#WGWhLrR6+GHC;0IwE>ZqkCdm1d&o*&vx^P0i@J^OXrITB zMyTAd!xZUkHk_LI)pw#at@MMM_C9ah z??N)l{xZu2wHCZ1wjy_wT32h8 zt5GETPq~MYj?)oEpOe1JkmFSvF@4C~#yIM`E5QvJ;wSF*Y?C0RN80Z9y%!v2{JZc8 zKF0My=YYmT-t3yIF1mF27MnJKdEzLaU18{|1@v+%Q3Q-D|4+zM9gPq#QPYJ{4EgpQfW%H6%%;| zdRU}jldgKUd2nF@(q5y+uy7OR#$UTVMYq%I`+C7Id^ih2JSybm&c*z)%b0N(gZhq{ z?#R%^{xS$zvlIJv`%snQGYvvHyt`Vt&c)u87s7D6#@kv&>)Hmud)!TZcJB=QK+g#Z zjKG&-ihX0AC0f1fr%TGqKGv)e4M9_A3#vSHUuk@JITj}oB_kwCFK3sfM}WB#Ce0)f zr%x@GQAqk74q`-8zEWa9aIwRM3Z1+lInl%hxL)bjw&9zPeR5v-Uwa}r;phW4TqI4z zaGOqR{Jq3sb3gA#yK5xqDHqMjW>JZG*ppePg&es%Z}ZNimW!ibXHfb!A1snfErhqt zV;7zj2_^?w2TO1wQ91LoyR=6@OK7KVyF z8gXQ9J5!hMZrQaq6~MIhXb}hzxY8H68VRb5mFWt@Jv}Z(Xt%ugsSvY37jhcJE1VBv zbTOiE&ac)zm%FaEj^|DRX??;;0D>s=OT$RT>z9y8YLqeuCyq%jvM$sVgF!s}iGfFY2WeAQ5#hg-2rCg@*_4ouK>vcfIi&v*qxeAT75;I1Km% z-&b3`#>?x6Y)K<{4B&vA*F|F35I!!xD)_0i7%|)Pb@cdd!17#7g&6wTQb75#j1ds? z4J#0egzfo(^JF0CBv)Y?zts`F)znm>nCfF3dV6R3@{~E(9_O0))*;$LyW>l#b@Gj- zjJKOYTjR@|iA~1j6Ste;muU%SYP4YrR+@h?fZ%{(!L;ZqOg}rBgb_wC#0R8C`WGW% zm&(QLVG51boP7t<3#s2`Ze-i1rQLB|(Rm!U`(D&M+pU7pqc4_--xvMYT^RnAA)Mj1 zP<4+n>kagWIZEy(>F0xT#{$%`^~E4o6LwX>!?`Mw-TsgRv!WecRm>RcZCU&`?L4z$ zNo=x8=WKtRRX+ehtwr46i5(z{a(p>6a728v6CxX6)b9|+_+8PUfS31g?gRyhqryNS zo{lE~QCdMmra`)VyjRCH)y1-gl1msu82BTHTU-AW1`@;yh#oMH$c$9}Ud{m5q(?Ps zejVZo}Ual{^ex?x@_2c`hc075ya^8eh4Fn zsfwd?{s==FB*`gqQ1gX$_TOqRAH%c{2PNhxuS><E~EBq5xRJulEmfWxm5h7m?g z$ACZ`Mv;OYA`_KM!%Nc%VH6fs*u>Z1hX=3J0@tdvV~#A`R&@gHY)^djWm1`#nq>_B z>fEh)4VK9WY&su-A=^Il{-eoq-i}QqL zr%6V?(WlpJhi^j1RfaTrinabM!s?d$W6y4IYwChB{~Y&#wB)(*rSi6HUTF8-^*UNn zbc#NorN-senHF$yZuiA4g**NkM58{|j44Wz^4CrqRgmcc95T2WZJm1yR9o9&xPq#h z))#DR+)g3q*Z1U_(bNsw{5k%Io|P*&O>z z{#`wbbVHp1=AwPIAKZnz{7?Yb?&)z+b&Of60zf_iBLZXXk|9GfogkBmR&l483k>q3 z;*kDB_X6Wtd2Cw`dt(!^$;9KQ;(NZ7U%kAg3RNcqUzZpAhV&>JW2-EjGybOFT*tBQY?juEu4G*S|u(_Frg{9~kmuh3Bb^RDkbyR|@C>6rzKMfbBiYM<6<9JbSWo&yZ3I{7OUJ*kDueII6#o@rw^kEEEBFtZ&Of-1*5oW{` zcC2TNMaJ(n>@sqrAct6H9KbB`w<uSufa}-LV6CW_`Og%At{)W zv42TnaH&qME;j+N)D=VtvXDB3f)Hy|o;12#n!i*&R3%hgFzdOUaL||j7rkIgt+Ngm zWA~22R4m7yLUy3I!v4<7^)A6B$rRwK{RT5nWnX<66|-lZ?OqsP<3GGeq78Vo#d(zQ9n zc{P*^VBAIw3|`(p1F1ijYKWQW2%aQDv*}h<)I4npRcv=r(+f}Iny$mOo#7*A=PemQ zRmqI1g6lw!wbZ>C4y#bwEYZu)rY+}{4xdxJ$81emUL6po+NzoOgOAo#nNKx|F4Wxc z?K2nufXgc_=%%J+s5$F6&10_Ery9{~<5UeKsMsB30E)NOSf^f>`p{~rc0}`zJtIm# z5_P@b|0U_jH6V$E(|?xFn^8*z=Ys^YhmwGb=SQ>jnEyfnidFiT-i4Q z=H`On2zS9`cwa7RuDPSmjA$=O31Ia4uz!ev^6UmrZ1%w4t5u2RmzoGW4XFCsS)%Fa;<|vG$3UJI3uH5FZ7~ z>0c`pEN~odRCbwZG1h|@{0if;1!mG zFRBxzCYO2NDjz4`w&Q>gZqe_MN1KHMiH*L1YL!F~{ZS-k^9eK-i5bM#kne)7(ujL; z_g78RIGWXFxWp+JF0a9a-_e+SLWbcdDqQCpdMjn=DfDw10|U=$8%`0I_$Phv2{EQcWK^fJ3l~? z5Yr`+j1dx|91E235%Syy%45?mAHNIx_-|c6gXyHq?TD!H<9vaL6wC?D_16+!qvxN! z+RNCY0&fd=N{#B^pAu#;c9n)yC=%)rD8LC)nc(1zQo*XyZ_nR*N)BD8OHs6P$Ema4 zak9N~mX#)Q?b@wcb8qTX6CTfzXFh$WZO2I&IddYW>?MtbEzW`$;rJ3XTW^A$v&*UB z-faZK^`R`3cs$rH!5+R9&Ac{a%m4j|YEoqmT+-~;-*sosnK$c=waLk^NN_j@Hs~JH z?5?-LMEy3q&|cTzkL5159{_N~?HR^$lobqM8u|iiP!gul&^^jR5?dAY-zf`tf&RmU zpOfRlwW!zTc7KgMspcc**($;``cWt*m9N&o*+S3%I{KstqvdvC!pRqFTj%t^a|b7; z>O4nL1cmEgi?WMX{Tt18#I&>jP9K(b?G|O+FLY`^L7uAwCFDD*QQ>Gl=)do_hWCfW8cg~6dgy~#Z_eR9% zo5S+(Tf^Aj4p`N=bSs(Wt_o%fB zE~}fM>*kW8R~SPIEfGVh)P%^WpQ%!@f<=FHPbRCe>9?p8#5V0yHs?b>a1VLT&9O0c zGQ4l(viOGyayhifxmmfx3)W-(#`e&+KD^fWET-netEMs!?RB#hi&&nJt;}|K0mrT) z5D`(JkAH>Q7uT^?OENbDqeV@4NWhv~Eom5SnBOif5{Q8S5marViuk*B?;1Q$9&N6C z=1H$lU!Oy~c}s3ec-E!ndJgkSKl>gIz~Svpi~VRc+zG(=My2#oMqT8NBEso5&W>?D zUOKvVdy&zZK4h|sv3VAqPYA-PC9yKtk2VRmyRxZN_}i+~*uMV-)Pd0HL@ z`>@{J4ABHPqY*ORZJ3Z8P{BT6(=xL>I9XZtO`sXv3*$}jvm8jYD@#-^Y0Rjp$lMMi(RxTvwB~3}1uz<-e|xF2eFFeu zSR+9QO~WCma(P+}+t^Mwg37JJ$>yX-!O0FHdBH<9v)RucAeoH{hIoNjTU}*yb1Rlg z)jg1RlCP?1Gb&h7sEf|_Y47dn=wNGR{VetC0ZXM5WoZ zSSyvb;TBjrt&G;E?K&14Cxag+6B?WxxyF zonvj3_y8yYRK-#6<~rse5FnB8+$zrCQ+32HkY6+&cI^_ zD1qDNSDCIZeaf5lxP7Z`yMeoL^rYfkzINzbjBbD75g2zK$j(X2_dd|q)k8PNYtkyk zZdL)OS^MkJxeC^>Z-)~k8aH%@M6d`o%P^-asZT)N0EMo!E;_0@ zG)G0YuW;@-8o88L4B=XIq#mwq8BC$e4pT3}5cf$^tNz}y-LhL>Y}=g8L*=}_pEK!! z$u(WJGgGWpp2?pq9P5_am!s9YW3??%xRA#FuL#ay({4YeYhlng&lFK8PBCHhd-w&GR;uBEEmUdoFMu^>-yl)g6NB^pDoHZWa= z7^9A#%S}_3(7lSH-w5=u&jEkxcpf1}EZ|>O&c>>Bo%@0GA;FyYFmohC5QM}eDn)+G zf_G_6Q5)(CAG|thxk94}T3CV@5Qy_wm5SbN!=Pz*Y$2h6raHFsL+MhXIWD~3_QuH^ zxL5dmXpBZGT-CyO&pR2uJ29^*&ckLemB=vpC>=_+umMd-?!{!vgC<)hoGrn*>A@Sg z5R`nA{1$lC2U8P*c5jLhBoH*sQaytlE1+#67S)mSoN6-ETcdrcdW3U<-J}G0+GbOM zs4h}~aJ2)=nfS6{`i>)tl1qGsAie$`xiVZIOvq}cHBHG9%-NNe zWkvjIVV2V4*BNpx?Cbp~E!^eBn(uql;PlqxAEGyOaO|1s(rqAl%|3im_02jUJuTqU z6X^&^Cn3li&2HZ)x=o>RR|nKMAH`eowLF_V>4r;Bop`UsOoqY$&A5}6v7u0c8yNjV z6k)(LJ5xsgDBzf3cc4?OzJT$oEVLkE68gz2DF~Q)Cq*2kg3B}e4f5=p+U@BLRTL4E z0g|{#da-JQW{b0=Bf~s*T|WH>nd+`ej2m#z5ZZTF<*SLXqUQn=a;=a&2t?~!&@NQa zNA#f90bm)xTLSr(RW?jc#$qFw!?ej+1V@WAqlBA)Lj{#EpC>)Ko?$R$+N8_;epijw z%qEE+V~jD5|3*EVR5nKXE=;o~Qsz$Z@x4aaM3VVP#~Hn0IZZgnj<^Qs3 z)To&$BTJ{1QUsF`Eht-;`!gd7bJhV7i69Ur^Y=r5oQnV#fCxu~paBwwizn;|5+GOt z2>G1T(eMK#5Rn23#mfg__ce8y_3?Z-&1PqO7@g#ro$PSUdfaq{ornT;o4K#At${?} zVsjg=i>_P&*f*$tcd8ku?t2E@qA!}-Y9E^dzQ6FMjF(cZQvkU5CO@qe@ zifJ-IrmIY?(?p&&UQ!ZJB$k_akhR^4p;6m=i!bKn`QtAAR&p{K>=MAB(UhECv2>14 z-W|iM2i?im{5KtIqQ)SNofIw;Svdr)d$L7Af)N$2nw%J})3nz2Vi#h^f?Hqoj0G?F zOu%ksmY!I%(UnM(Y7lb@^MqP0+p(-&D%-I`V|KPV8fNSONij!yU~1Dg8y&JJX+HM! zO|-D?X6+%`|-JU`44!s3#Bt1z4o_nPq~yR>2r17w(zHohvlh8{>Tuxfgsl8-U#Al z=ItiR$EKBgQ1_dFk&;bi*v**Nash z)P{7J$N3twH!ES<(szCk^R*Sif$h{>u)l)LtUF=zwlWs3P6SDs|8K-_YDe0Qa^~ZX zj^${nm+fkDAVffw*0DhB>ZFy0YY}ZMFI@aJ+g*|gSV8n$SH-nJrdrjZOy!mW>?P|) zVaj~??aV;cC1Y-IV_a9IR&GU3$_wxzSw2j;l5j-eP^DI1rL%^21D8R%wRaw^Bc+PF zG7q%wp%LGaKFCF9H{!p)Lm?0{!-LXve>whS`oT$aHZ7$p1VjIEL%djc8kI7vC9Bja z!pnG!4dH3f)q}gHqP2ztg0ltuE1F88od3BI%>h`tQDo)g5R*kK zaDp5fmE`3Mo9k_WwkH{rG#5Egy1mDB%LaEqyV!%D5G44TXQzsJbLx$q?{*Te8|lKT zB#CrknQp{iYEN;~nJR8(ZTz+&QYm>= zHwIzOnHkml19Nz6@iB&+KdgZDmP?bL_PK-*U1i0Vf+XDHCP25XjEEAOaSXT@U->Pg8LkD2T zVN4<>nWD<8PplQ$no4Kgp~uN$TqW!L<%4%uQ3D79)mc?$*#Z%bWc(4%O@B25hac?T ztraoks3gLiYv9+;GaS9i1^c=7oE*BW4gUQFOlG$BIq{RoCq%os+X5q#$q_Rn4uDe) z!8`(ziuh!v39IF1Kd5xZ?-g>8Hwr;_D$NJC6tn5ZtDenC>-DhxMO%N6j4=Ec00Mow z?c+P{0DL!{eH3Y`J zbM1`g&Zcx?iFKBc$C}X};K+*e1mnTH3pZL>+a@M{DY+m}JLNa6CPKsnJ%=mj;X9#6 zu$Enwdis4q$Un^_Am%1NdrVyt@cV^fZFM!Vph?BsVux&{mmq`NsyQUr6F3T)h|Fuw>tt4)^t6d*Inc=?s(>?MTf(=kN?L zCmM6TO^VZz>E*%;*Yx#a#z3vF*AcU=ETZmMpfFu>i;xpXUBSBG7atK;n0>#Je0R7M zTYFs`Px*XD0IdN-uQCHRqndry-K;2+u|otfm|Tloy$?hrJqvYO?KqeiUQ3V1;jDa` z1Iw~GA;}`@eA?h1!8{>9X({y_<1wW$5#C;L?*-1Fjq@4In@Xqz;}_71=Tdg2D7Yp^ zIUijvDNg#eV*)Bt`p#?AY(FuvCDaf;%BC0$K%!_$ku^4?Fn5uT#ed+G31&FSj|?bA zj+OvUjIpJB=vh+vW=ev%YLQE|PcBxL+T=vE4?m6S9>8RzO_o3eE^peR@1LX#ire0P zdJiLVB}5lb&|AM9jtjr9lBzd&!+Tm+kwaB!@Bj_2-zi zHDCGVY^kSgEUG62$fAdSMY0#ENE|^GhmO?27j(>R9qxagS)yZ%__udYc{7=%W+fzX&HKENGq}(Q_(# z^C&<|W9{2a=!;YX`4DP-aMl#9+o?<@kZ5-eAbK1y+g%mBUmviwAl%&Wc8-Eqh(!q& z|0ZMgbro+}i1;xVmTDQI)lH2pYba4PL2PB|_f&wFF82LQru|!MSE*HjA338m7D#6{ zk!}1b59f78;4CzX9=Yz-XL>}CcqMiiKI}rhs)M~q z`!jp1q9`bE$HnVIS1})*J<@GU+J`n-1eYFr3^OA@4GnPm#`}VTx&yaJc^k?o=xDdN zWQWp}RL1J1G!=gAKGl3FRjE+@umi#X-&*+k7c7| z!InWNO?f0BW4#h0T2_RaE(_ZiLVn&QR+_+>JI;c~+$Usy>(6M5g*y0at3J*F?l0ve z|NX-yoQSj!Cv@YA+_PelF@(X*1}|ut%JPz7!IZjlXs+F(iDXrYC@+9U(m`Dd3#WwU zY}!NjelGl6V57CSLI(|$AWFD=h?ip72#WNYOmg`eoj4fk)wH<+wt|ctLc@U0RT|le zH}Be9SlDbV@8~&u4@qd0+RQ&+I`*6NL6Xl2Nu3;SByH zy6BHLU##wkJTnR&ws)C=oQSBY3UmbHO!>^)4C&K29_#>$?I&yPKXRN87yi{sxbm%x zVwiIS&HD(AMiZoD6lVA81=yH#*AVFbp(-2VPXEM99{EsH4R=%Mu*Gpmmg`2q(61I& zXJy;!wban-8cWn(`ten}`)gxc9IJPU!{;)5HWLN#O#|S)l%}3+UH=kaV%h7B$rFGR zDSmsuydR`-w(}RCItx2;W;4((5$>W>26Mu*sWJ)5r+oICa_E5pExAQ>_aP5sl*Kex z(V6AgH5qZ4C9RoUSEEf9{R9_NGpwkmDZ=s9Ao%A56TlQp(5q@;PeKFyH=DzWM5mZT z2Ryev6;v1KTxTRbIR|mxMbgsHE*>+Q)*-l?`qgPo<-BtX;K!2`Bzjceeqp!K)jBt< zLs|HeW*jY5M#sjr@Zrxz>}MY}^MuhC+HZW3%j>+^i!wc-J3!zBcY?@33u%DVjV;AH zogLh$$dgd1Mbo0L+;{ae29*xEY%i=zQh(v-6oAPq2hb|L!>F#Cz4VLE@NlBIY%+B>yF)2Y-o z@xBo+c5XPzx0><>>9L+Vmdj7w`zUuDVbb2X@wbf}A@`oFVHH@lQ~V~eg6#%_R!B5W zef&u|WGaTF^W~uFuZGjh;x7A8<}QjZ7eww(;e>+lV{1=kdKI9jWJ_gZ_3y{-Wf|~B z%zQE6bG&IUYf|$gh>vA6I0}_9DU(4b-L>l{(~!Km%Rj#}TH@f*UJ+f*YQTgZtdhbc zsQ`GrdQDmCL_Jib$&PY}V^8n{^p|8+bh48PNXD?a(-t0qB5Sif{Y#J)(4dX$LrS5{PD~qBP8!ErGX$o-A`Z%rTC3LCv z{G>9-r!^tqTRd`?97sIS=~ugpjZ8&hu$e10%Yp?7q~c`mDDp*Ely%eEbE#G6t=-F2 zBJ7)fae?~W_kOUpQ@sDccfAxgJdr@^I`1~Ki{~01dv(ob|=J!euJn_iRHk{M9W zk+VXs*6-_7f8dt&X%=u=+Q3aTvAR2mGV*7y5EQN{kOr1n^W6YZfIR%O6D#>B&W{xD zx;}18z5G!Y`CT@w^mS}i8g6=i0atIa3UOk|ww!(hmIj>-U|XiUuM?6*RT~Zc&iFRu ztYxa-c**FW_WsptlMV}gNHDf(jfUCn5`~h}Z;>8rt5O;}QORw9# zo*6PHZ^3G3LtOf+!E$&{f80S$ikkJ-2J<@$CR1D((ji29uK^v(GxQh=3ux?QuWoj$ zBYIVo1I+@-iU$N~lV2X@G<2(x2`B=VIEf+JF=QRQ_rm^WFCF(zB!zd}gCXqbkdU!O zhzi@C33`Z-{PP6?%Q;c*+?eQ762PmF+{D3VaW6+M%t3UGTp%|4dCgR%ERjwP0*ab#0<}>l;xpmJ1j45&NF|X? z?eV}ce4W&~Z+#&xpM8GUKQ&!HKdqN2S_ujY3VC$kynj5FVYqe_F0I8k*(fXyDKwSJ z-5yyq535mMK5Fh6cTsTL*9le2TNcFb^rq=}5e2h8EVqx3SwAx6HL<#uqHL9up%6^U zlRJL67OYL5d$cMmS2k04jX!Hji4B8#dwa!;H%v)a%>QQ9*mSSxdD=^6yX4fj31|e{{<2Sy+ahUi8^~z}MvWgrMWooedlUy7DcXF$ADAzo?ZlYk> zvh5Rb?o@0Xk}$(3(B7X1-?+#==kz@Y{Co0#kH*-MWP92MSodg+6+L>eDph^rEKIsc z2j?;-?c?40ncw(Si~oGAW&u8lYcOBK|J-0lghlk`Q0wcwP>@%L5G5bc2FWfT^Zr`g zZq(GC?fDDH*lXUW^odjT$Bc=UnXP}z=kuQL|8ThdPar4!zk&S!wzvJqq$73WI+)4+2-JPc%_O0(DQoUZ;r!$zQ3yu>T{GwUiiG<-Z#@m%+0vJ z6Z&xC^nBb^J|CyU*y^A=r6S>DvSub*tIKM!;`%(fs6@kTxU%@L<9=Umac{QUIMICF z*m*}2=CnQ9+ZL;lH>0ev&-guOGwzHPr4K!|xlzmVRyKN`%F4E$^=yIXGw`=vfqO)> zWOJQF=vx7P)DuNL^OK$%gU#D-_MAZqi0^t{MQE}cy``u7b1Y8gFTSt;o?Z*>) za`1cCJT&A?YiWF1bZ6W2t`$6W%`eF6**N_vnQLpZT7Z8Kca*i`W~}SDbo47gjx}{! ztj6-u8hN#&@0Y{WFMh4jPEam5F3)hcLp{GQwwh=Se1E*QSmmMG=^qqO>ZUzBkF@VT zoQbH&`q98)i?3Opo^~1V;-kVUdlh+jX%2iM0LX0-<&ma(^VfRfWje0Z-oB0CcKBYF zr?VN@Jx=nW&1K(wGvZ(OVZ3;KYY(_{<_P_L@%8O^+<2N9VA;3dq66#s2hAe3+NssN zf3W=J`p3}k@@MM_y#w&DYqsm$lmv0U~=@9^4 zAh-dfCZsY;i1yvAp8MWpXlB-vTMe`7KZ*P6KNLXBuRLKwpV+GSTmHf0#6atJ%SWZ# z{I$F%xwy<|b)okUjrGZ4CnoFg-Bc|Fe9=~{f%Dc;ZRN8(&AQDi`lAbL)Mn}_ZnIR6 zI*adymZ8oW+!a6{D+&g3nb%2XvyJZdHLmyeX}WLj{N2d+rT2ypi;w18*C0*E1r6Da zKID15FR$4v%JhAz?RdZGZ;{IirA3J`vqnjBlD-H;Xwq5tzOIDH^{FkR7hai{eITn* z8;?a4+paG~ZY(}-N9h^rgNcvg6{-?D?M~j;4pxn8OluTVKujzCt*O+n1o7eNa&sJ} zel#n>6=-pU<|#L7r+f`}?{iaCQ<{sb@u~P#4@IFh!S0`68y??|Z5F6Cx!SbB$6aIE z44he98~#f_(`@1ErfT&N(B=y7`Uowe9Np5|@{5z6`{nqT?c$S7XtZU1VXd?8OMq z90;>l5t!z%XKl^)ZRsWG?%{fCt~OP>`A_{8n@MnsW8WZUuHSpu$TzZV+a84wZVjjH z?mHvP+7DfGZyiX@y0=2hgQ3;5uYhCw^>~Z$&eIrO!sp3%6HkGoQ#931-^UJa|NH*! zt`Ap?y`#fo<-hfuF8PsDK0ZjMWg~ zo=ZD7 zh2H#e6KznAcNktz`nBI*TbQ58LA@i7V37C!+WD4yLO=aV9~MwONZLepaex zA_m0p&hBQ|r8c}5FLjeGr>oC)vf#I*ak5;X`r`dRNk|~fbNnT2OJw>A zq$FcF1{)r-iP}P?!!!lkiWF_5j!u+1$4D52K+SU5n6re1F%d-e=-oz{70es(9PdAs z78j;M^)UHp_~J*R4n`*VoMhuPoQ0Ss|wpBIkEB2m;lk_@yJY=|%g? zFa(&2oK1re*SC@0+!ezUw9Eo!H>f5spJWRN8Rj#Fi{w$Vq5>p5>iaR?a7v70QCUSWrr0<8bz zXW)R*2ES6xbe};6>r!Pzq+X5IwjA896r{`boJ+-?%1%U+RkSci3N@0ACot7> zNszp)zZc3oIG;KmqjIU-8kn`|^M0KJlTSqDCKZ9DaMr_ke9MnG*a%2f#3-R<;&Qv) z=C^(^WBU9=fI6fmLu-LngRm}du#T4me_OLE+qsY_WM5@YtyO=i%9IOI2A zt>tEq@{LhPNdkyYqA!#MpPRYBQ^-8jjLmRx7(4kOt{et835ucA2Ra5dm1Fh1X=-8J z7|r(tlS**DPj8dKOS6tTH*D-lmJY7WzUukff4byCo*7FDQAu^eZ8;r}G-uhsnL%mN zhXGDvMB;w+dE={BsP%?u0cgqQNP$r!0FeqEEsuzb3^wjD!IWXL`$)d$J%cHUtP;xM zZc8nys1J<9*_SwM++2Yy7xySO z4Cp>N9c_8xLzlja!Q5#wt|cOvca%VtK@2_|7fux{&V~|Xc4LTso^SR=1e!Xn(}u>M z7=KHLRlxmH_^8x(E8 zl6qPvM6 z>ZzpgfH_P@#6y-GAVMb;H>Gq41ZAGD7c9XCsfsJZoGqSTaG29HZ7l0vzJVVNYmMq#q0g`|eh#cT~60$UK){dL)Alg&V4HR7y)NQ#Ql4)p}7T+fdK>>_EO~~iHj71NYH#L*8~~a zR<;=!cmixOfC>;Ji-UQijcI@+`6$fP=U^_Djk8oLQECa$AV&oS?bRFJp>aCpBM$n9hrDByqF&dyEw*&PM}+ca5HE4%Eeukmk$#c0 z;X(#M1_M=X+WhvR(%sG`n1al3#2mO)=~!!@D2#nEJ{fa* zX1U1-kXXZ>1E`J`TTVZp0C`Y2r;2JHlIeDZ6T-MxVoW+=mx8Zt&1kRX&`3o!XnfxM*kE@NfZYnuq{$+L^3Uk_3f6v=o~3B~C^0{65uxflnbhwClO-l|sRsR2)8 zPe*I*L18KO5OByOe*iEW0gDNt<}I+mCU@7r#G_E+u7>{F@x0=sVMjqwj6`rM5L2Z= zqg`gHxaRO1Rn(mB&q%s*9cSZjK=>*P#Jpr)~2Xw^0tk?igK6JWvUYGt5uW zrN*tv`@J0&r9%8U{ZjzLxooW2!cC%3aa4EP|X+K|noKS?|`U%hw zFky?aU`0iG%#wOVgXpmk&A`{r;7a&sqn^KcoScr!K&f>2EpyT{V!tBL5FS@E>zl=5 zbLsHx{M1on$k4x{8ZclO>1vJ({cI21k7+5d zS%3cBr>WP~d%aeJ&0&s+BM}o?(Gwj|io}ZIU~24RL@i~zEwrQ^@G@|Tpq8Q~07s~n z3o{U)q?e1KlBfxgHVE5KXMw{*3Awd4bPHnRy2FsD7s4ob=qjx4EL(xS z%)e{7r4R-iW`u~N#1MH>#Xyf^^H0|Y0}@E70q}TJ0hg0uWDzNCXkIA!e}ZCBJzUBV zfa;9)N>RM;7(XD25GM6g%xVt#=exB|T$uNZTxjzLb?*2+%x(A`Zu+rk7!Pt{f-*%Q z$I7nw!)*o3K{eA)#XdiPTidPU;;9z0hil@vMsc6ODk|Ct5n+{|2r$6JaU5H{JghgN zb`*6+k0|wtSE)G(_N2G6fqTy0cT5cVGXSy}A%-ndgIKYX24hQzAZ(btRp;vOx_N~m z0HCg`ekK@PTwn2X$*D@GJYYwHd(ejH=pMR_q_164OtQ!-x?jlEBgcn9Y_E z&LMpJd5NX9h>({y5|8wM7Ij2edN$d16%|%JAPdj>oR8S z5^Cg>015txW-!ooiTEGH6n2{OR0bhOiXzCWC6;XPrSN-p6pmcYvO>NY|8I#Q$=aV7 zM`a&DEj}Gx4Q}E&T{tjaXS2q>2G@}5*d*EBq+!UImD&=NH56Vo7WA?1_%bo?+<}>< z6pJ45$*7C9=JbyupF$4B5K{szF<4qf&k%B8t++Ygerqai@p|%AD$5&=)?u1Q7`G%G zhx8ba6hSgHw7O#o98J&iZ9t?b>cK=EIAvno!74C;5D=AdDjC(a1IFIH|Bj+}0CTkm z(pmT_1ViX83(}&)FgVGcfm8}Kri36xkmpqg?C1)VXg80|j>ila5KagwJl!Suss)h( zlmeaKDr5dqXK&+_75jApcsu*#hu!wvg>WM)LQGJDj1M$~N`WR{88dIXS}g%m7Pgzk zEAB6R!?tY0HT;njmyO>&u7xgeQg&mu8kF<;0sIDu<+5-eDWkP$V%$Rteer5HWU;20S)m5r8?WP2f^UPQ~Y;7(2 zE+L1eUM39T^424YQJKdZ5bu>Njrpfszh=JGpsK$AeY(c%w{a-ywi&Pu4FKTD2>^il ze>M(n4Qx#G^qgtUoo%eIwQTG**^$2S_P&ADG?*m}v{G%xQ;|Px*(_=YNVkb38obzX zU?g$YFD4RI3z0wIK6dTIB^$HX5-y9kuM6@X1!wGEr?|Z_CCPVlzMMTjW?$_72Fn58 ze-Fi_p_d6)UB1s=E9vlc@eucQ_w;mI&7>yeSCb3 z`g9?Z8ht%$=0Tf;#?RPZc9U%AXIl*QAg>>IV+Eh{UudWpt+mz^vmnjcbI%b}`?V(o z@?+|j_ERDTy1d$)?7}uLQXC=Nzh4u9#k5~oep+(t z8E}0@o(JTCwjno!?xz2VeTDfW!q9rB(<7@cJQ!ZoXyFVVEccnLPYQ!B`)>ud5Cy{l zjl}AmOR+BPDg19fr2GI;bOb;+v_Smm(i7-VW~O&6rP2C>eO$J^3G5DuqExmp{(Ojp zGhO5z%b&i|06sVqK+28jNDx3~)V@abF~2ukC*mxelp)^1V8kgwj3>=&#cPjs6o*-mHV06J934aL=We-SBu$Rv`forJut_VyqkVchR z(ubJT+ud2(S1e=q&sRM7XY#uNPq7z;S*lf8y%NHOo(wR8YJ6mZ2i>Kqg(vmlZSl#1B-o zHD7hgXLxm-!5jdUKjBrLw_cFN{3f^wbXbDy-d_l%W9=ZpS zkdFD=+I?k46l#4Py%3mFYI>-H9jB_wTlN!X?CMdSX^5yp#jI1dSTUj{(TwtvsBN2n zd!lM7+{pc1d!oc$^Q3qj#%mV<*`uiUr!*CWDzL_+>K50XC6hw?BY`|>2md!e>es7AG{G)1H?#(W_0k{iOrbxT>{?Hvj3 z?*1|m^e)F>65V8o${=mvL_;hwssnanTF3&2Y*vVYH#=mo#@i2=v_xP3X>Ae6zjFoV zhSi!p4#Z$XK77tWn85c`dt-Jd?Ay6Un=#{641B!vCa9DOtoW-YBGlS@HV00T2zwWS zu?cOB;2g4FEc=o7m_YF6VM3(nnsT4#>N4c;A1qjJl>_q-S&rKGqmda% zGIy?S)jn_^+>2(JHb;B`x}w7~T55GJpDab2f}Vd&bc&7v?i4L*3`K2cw6GYh@m@F@ z?{*e4Szxh5r>mbdTUrY?78{z@)Q&s$A!*@Ys1KWL z;+7~+W5R6l*CN>)DP>X}T~WKToPifu<+uFvSeUqsPBKS3C5%!X$Cb5koZ9MP)Pq`l zW|hrMT9LmASb{4zhTAxIN`JOkw9hf!q^B9WN)O$>e)bF%+AKAoA1l!}0Yg_rr*MJ9 zL;ri|3)6EJNB-)Z#xsFif-C|k+pYSb-tsLz^i&y-?0_d@lGpVAu=kGNy+lvHV3HHt zwrx8nwr$%wv2ELSPHfvwPHfxBH<t|*>8si({uU}`TZ*n5;yfR@ zuBw=kEz(=tyIQqYl5NfFa~K((x0y=TE7Yu-`zGaWM^$-Fbiq}Z4%tz=h0kmUWlGq_~)9enhsf^7~pak18FEK-AA>Pv@N*7_XCM!%YF z>k(J#;$Pg=Q#VTbnXjpQb(}o9d1|7%mB+yNR*Ma=s$~{hGq$WHH|-jB=c`m;`1G7> zxp=?ah%ZBO1DFlb&sNqP8wjtGjziNf1-8Pss7cZ|s0cqFFcv5WCn+@OYI=nNJr7#iR*~s^m2&py@d@q zjWN_P<;Yn$)$Lka)rpOlQ^BcIO4bSIpPIQ471iY{bYw|$U>@%+**M`u8A^`3)IpS! z?Dhp;%RRQPS)=U$k-o9wfX&!Q)uPiC=uNC3{KK?c+iVfu1^gonkaK^X!-$7@QUP*Z zx*CW;O<~u8-}p7CU>c&91!iw!_{(Sj52xHn5zSr(Kq5g+>Tqb7wH|u7QM&oM6EZ^F z3YDf$Sz&LRIxZ!=+v<}p9BH`rzdSG->uoDx0TFfK+#OAQVKeIhG)Y1aDy)0|66!~F zz6oOW4la#Y9O}pAaSZIy*ITXaC=|@tSsO|@+=v^biD9T_19TM3zxkYjRP z+SD}sadgY)9Dha0k$d!74x^d^nHmIkFdsrNNsg@&=xRxh8|TtSJXVhC0d{4J!9G1tCJWB zsC2KyfcqE*o(D29IY>|s5hZ$lU>#&4UzvciRyOnG#j+OGl=0plKQLO}Xtvc;R(cW{ zcdy(wEelK?%)1HR`>((cGT~S8`6vZ%h!>N`W1fr3V2i(vwUw`3jMZwrRIsM!FW(f9 zrtUrWh~5Mh1k4hsAdUt|A<+hO^aF}+X&tzUk$u%tSQr7Cs&^Ryniamv2G9VN(2vEU zhvDDVYmw;sTtDT5RYU(R+M!FCh%s(hLk-KnH!&0FPI;)J<(({AJ;}eZ%J+Q-=&6n( zA$VtQJjv8ivl-p5t<$j zCtj9XaERjRO?+o^Cw?h)D2lk}K5U_wGek*r|Cizf<~7(N1lTF72^@RlM*$Qtx4gGg zNY)p=C7U+h0xKZLt=Cd&*F+$qaSSp^x#q*#?297v_3r}4H?K)|GQmh~OWtQ`8dR~n zaZLF)3frA4WrlxvTfho?LmYQw=6#epw~C(*kw_)VtCXu!e(Lu!StkDVC&K@`ANWsj z|FYnmQYt7AP|wf(zXbRH*M8uCOSr#)y>&i0O58UxFxY*1bbta`_$!z_*$+;N;Cyln zOw~ea?~W1rP1t5|b3YCXOFNuPA4`Phygl$qw{w7J2C@JVtehiDktETHgQ77s2GqjJ#H?|``u9D ztlp#ba^tRf#`lJvw{SuB;7kAcA+UNT?yH*$Vxxvsa(4|^%rm#w0n`cGEJ+Ifu-Lf$(t#-b0 z^X7AhLUrkSd;tJ@gj)RiOHMZoVHSB3u%CdpFvqxIpJwvZv@H%c7!IpS#f6`RXl{;`FtdCvL_4 zo5h@c%-tFz0z7rROfJt!>qP`aKO-AH6j9@}du=px zPceM9-o&}rk40CbrCZc_%DkJRsb3Y&NdHdD;JAEcI}8218grLDQ(1&l z$603N?A7HWUmpCGIJwMZ1MY0^!EcACY0mEvB9kNj9d>TMJxu2WSJnNbkFU;>=~=Hm z5mdGFcYi~-Y~=`=9hPAGyqFow8;y77b;RX4EH?1`IC{eDFWxXQM5ll*vnaHA7}*H4 zMqr+aVNhH^Z<$=qL}l-+scQRF9N!21gS(90{^3104-dfiYLZGnjdioj;~~xAEW6d- zd8ftVnktk2`DFWE+E(}OJN2Cn-`4AknU1r>_s8<|5x(V7 zl#`EfpC|6~uOsb{MJ2nm&7Owo7TJp?cQ>`=>DJGS2LV5wKM5Na;ODtF+@SfccSkziTe4E|>jGS@aeY z6@M62PC#JfMZ-C*x29bSXI#2y&@TTVb=Xs3wTt;DcN%w=l*SRr`}8Q&I9lOwlrP;M zVC5>clMeq^sh<7!V4VTpfJmLg=3LHHCq^o#Cz^3;iFxbXrC*Ax$tnsmmNl(lOISeE zE8+4mQJMxKtA!I79nx=O>YFo4O6o>Z0$(k`Ry?m7i+}btCJr!<)RqZlE-wI^cwW}K zDPy>RcWJntB--}l*;~V%jlbri^}?U9$rNIaEPVRMGBTVvekdlIfQ~ z>3_bX5GI8+Y@FrTR8f^5;Y8IF%|r)HmvRrpc@?38c26y&Ne@ed{RzACB%~!pdYwrRc_}&Wo=)(R<9($Jx z=6x6!l}$?JkaEw;6;qJl-}S|L`;9G7LV{civmzT^wkJ{;GeCV1M)n*$3|FWquNh2Z zp2m=;+1HN0%=Aa951CEH9fit71hTcS`@EdeMc^mt2F@Q022`koiI?dD-obw*zcv-; z1ZnZJ?7&?lt$iUl_-;t2RaTI6|2S)9h?Pkg=I6He_WstUI%MA$h8_&MrO`JG@7)!E zZSG2rweo33lD(J4fwz$zy2%@n+>9{4#LA7|j6DF%59*~~xn@=M?@|IT>D^b`6OS^N zG$V?zuJs5l^(daqN`9#~uJi?iFEloay*~@HUc-%`6yTI?JDm%kT(!3Em#)^|^_k0)zgLS_ zEA-=?vU%Qr9C8~^bfgFi?x>2l*qxD8FE_8S9g}t2y^6@}0Oi)H&atbAwgnxAzZzN1 z7-Sr#i6d7AjF{f3qu6T>Tkr&fFD+e%S|&g4S~^LdZAYK|<(@2{T`DIC^Qz%gCGF8~ z#w}b7NRhBPxg7g#BU<}M--CIJ^GXh@nsR{WhTG`SsX;?{-Lz0>oFsI>l^QU%M8I#! zj6{#3B63U31gITJARDkNrVW|RzT=T>1`dvniVSylIb8fKbSYG66taORkY46;CufbO z0Va^BPL_GAc#jY$UA2wp^eQ`5V_y>5Ki5~}$?R45?DRD_2iTK6d-Ny~7fb>MUt{Kq zn6aa@d%3geGN57pBRY9BmasQ?Y+(n^uJf;|whD}e_{hO!z3bD{FuD0%oa$>MglPrM z(a#Ro0}4`aWR##l1$n`C$nBeOp|sFlj*N1HOd<>NB2ovSX6^6EXK@RUn6UV_w^6@x zLVHF@Fn=fKH~xlQB$W^oBG%yCzYZTU82oVOdJQ3h9S)BX8R}w9AckB33M9n#wBd~e zeI+iqgJp&3c^3KlslF>rlo;QRc;|TjkW2vf7^{m1cR<$bk9EC zuBIM8Tkm&+|FzecU|)I=!eIEp-^);1NDox#YD=WigUpe&(!eihj=SP+3U{q;T`yO6 zzS`z?x-!#>7rU8%biSz~crL%CT$+2t1+$LVxQ8L!F|L#n)Kz1*EJR04PT|Fep5(>0 zBQ7|)wVdZi&AvMAHFk4}+0o;#^#`^HkRRe0IJ*D9%#r5JUZ2_f5j4a8IIJT+RmHII zi%EmLQ}=2{j8S=beL5F7gE=<@fR8IzI0KYdB!jlE?SmBY2tNKNKg55|CFP289RPAb zK<)J)Kq&vuug%QRMc>TQ#`J%jN>1ql?0+&DzWDmS5UM@rNkeR>0SQCfwn=6apT~-}c@75_WyZJ4_!g6*zYJeFq{~wwE5mREQLn3 zv_5X;WOP7X?J*GO-&D=N(v$e@d>?gwrY*bJtuM%_U3I6U<0sJa^`F7iI%%n>FlkvOtA(Z?xD@ z?47RlvR^fVe09-N6#U_0l2!JGWLh#j9*A=ETQ0&#a(ec1R11TI#oWMcE5$-{O~;MR ze0D<4Y(xYSfzhF(lENV6h^dKd#^I`^IMiX$0~&< zha)~kne);~m&t5*G{rWsSh|{xd71ny5+9Cg5&wnbYHq5h-Ww3?`b3ozI_UdUpOIYF zcrD_1|H$(f6kZPB5Pq9@(BXHFS|%a8SDyb?!c)MXnjx=bLVe16>J0x&K6_mzJ6#^un_-K+7% zS#0`sn@$300=4x|eER-x+Ko$rfukgcTnRi~gw3z(NsYnRUe}jyq;RuoqXqWiq?A{* z!T@9W8oplD6cQg zNpQPT7Y^{)&d+@zHzVDF_@I$GKnzda`SmVo<}>Js8c^7{)8eqALZ!`mVPr^#Oyp6< z%-Dp^BN*3KG1Qjf(a`-|H?JBG_@ zU11>YRfl<3z;uTV+$Po`_A#oMBU05n^|!a1_)f_2B;ef!_V=bu(mck|V^f~C-Oj?e z1y&ybdt$C>tTbw1?ekrDmba$*(fUux%%K#wkIMJb8}zXwvC!w)kex;JQ;p zI&tR(vjTI3P?a+7$xRoZW};7)>feu=cF2#6|GHVsB+q^<+#E=Xb=Q>HDeDDjV5Tn* zimsn$vFrOAD3Kz9%r^_Y@`PU-jg~d=(fGgn0l4*116$u5(Jg^ZP`0fw4R zj#>#CM5h|SEuSvF%>b<5>iMf?J9Lfwz2E~BY;uuhjYt354U9FKNdg_zbDQUTpf7C0 z)@He7xvBH$$kp)vpG7AdQXTMmldbML{lTC6M?2_DAX8f{IZsZgQFU4I)?%IR6E7$X z8Di>Y_W|cKP^Jm4{)Bv7rmL9ka0hMGq#EX2@$L!Ep-#1&rVzRf@>$>QXNOB^>6~RP zq_99}Vn|{VMZFN9WhP@IlIPZ~t%v++E|XF!cseg{ty`OQ+6RxpL8co@qkxINKgCi; zmF+5!NH#@A^q5^p4;4jMVKVeJL$O21*tB(w@DR3n|F z$HYLg)k}7$-#nJ+>6*S2R#m(0+GaO!W1n_mnMjAq9T7(y@PD;XDv-r5`kQcQ&K6y3 ze4|-4-x8ibgoYLId(z4j2SbozLQRcOVv4GHn$oGck({^kFCHtpTf1K%=W=l1?xpv6 z55%CNO2L|gIwBW8sWFQXrTy-d{DbeRWk@BDv0V6OU{>-yDS91IJJYu~O-F zHXX3P(JncATnC||{AE8To#f7&&q~g1R39~u2%VcvrckG`_E2Bu-V{Gs)T5orhUd+m z@2y#u)4e}SlQqou6CxKb(S0%i7T7jNd2}*Qg;W?Wb>mQxD1MFpG&x>qIjB0(Vpfva z%8UE0^}FGByczdEY0J7$%PAA?Z6c+yTiQ3T)9&|4r61qLe@#>bt%WfaWDHcRgxC~O z^6zVU-ZGrpL>s=QBSm4(cf*yHNtrz~P>T9FH$!TIfcxVx6hW~=Fl8yqYrJM51Ic)n z8UJ_igK1C+5}+u$IDcLz!cH%&UBfK_dw0&~UjYHbB>Qqa=DPXW5SGbh^purjX4dZs z;yJ8o(-AC5;}P7QTF$7T=PspGA;}a5B#xx(;E}&!l`PAl04K|~dFIpV*0UbVm#&&< zHnaE0C-w%M5nRO4B4d+5Lh&UuM;3=<*fbo;uBQmHIBuO}Suc5{By~c2KTfdX zBWxZC0!VaTY%~o{oQ1{;y$&1vm|#;tAWW3MVoS~xL2St|4DIm=PUP9pS<{T# zsw8o*so2)*-CLDj53PX4?RRzjMTbbL+KNV0FLczj5pl{7uHhjf(=L~+kgA#!P>-cM z)+R>zm&##qc4a&ef{Wup4~)Tx{9pT_#!%SOWrZSgB2uQ1GoI#iX2dpt0uOwbgwWdbm9q`Ocs9CHugUb|!QyQE?VRSCE>HKQcA^MgM9lSOMwCOU5ObkyCv@VUShHU{~&GpS<@PE3$ykVy9k#=)}Um;dfo zDBgL`IW<|$FVx6AoClGv5lLbd5jT?%TBJm=(S)Rew@7*8xY=nkRP}QjPIN3X)k}3f^oeWugP`%@ zk6p*Su;jv$wU~@#>!TqK$)W{O4A!A^1Q(7uXck**h4G*0@c2^~JDX2e;nN_r+Nc@i zwx1mKEsiscQjKd6$*8ErG#Uw^)P~x1by=s1z#aA6X4k{eDQ-MD9Se&|jYbRx5`kF~ zw(X^Kgi7B!o8om9ztKJU-g7~X$*lV*`f5a-zub3@0*$3>%C<+Au^=m%T1GEI@ zZ&pI@Q$m6`+*EIsHx@$}K9gk)5OQ=;)^gj>z?_fCzfpVctH}wm?fF^aH?Uwk`iB&7?{wCoMqxTuZob5 zB%?z-I12EB-!QU)P4Lzv$-vE`kBlITK|o!a6)za!38USp!k>~%_pzZU!T^hu>m605`!=EIgVmewVpI=~LCFNQ7FzYp;c{=tcscE3I^;mBajJip z&4V?w#~w?BLm2v~nk*R;I0Ui2!<>bY(nloFijjh_v1bt`2H{u-Zb@If=M8VZ^E$Pi zped~!xCa`H6@d}kQjtM{ncL9Bd@B;h;#+3Y3fktpaUC}NeqNqiU%9P(xPVM0>Ugp- z=5T9JZKG~@A?)e)e6vP(*wz_eeAj;{5_cOhYwB)92wAsKNfyV-GP+G5R)AWN(}ZM0MEs(sm;>LNMnw^WZ)xijIW* zRVvD7jAp!n+M|!elpm^K||@GSvO$Y#%~AZfZ?U6664c#MM0H zif=u9&FMFdZ{WpxEPcu)FDP;=V2qYSS-=cZi`Dw9%|8YG$n0(PNc0wgM8MvY^Pb54 z_mCrkql_ndO7S{n0Mf_+BoVvz@DBISqQSILk}Re5M_e*QWHktC8qsH4@!r06mJ)-M8EWGkK){!l(iPB$mO+dTCj z{sN+x@hi}N$D@1r}dgRuhy*>Kh&oPYL76 z$%Irhh70Z8Fqwp|XdiaiUt3xxuPaQ|^zP?~=X{Ch3KSiA>N`&zV9HgTTK@E-mq_O& z8=Vo{36Gr|>!M(758Iw9&m zp`7;Pw|R9&)m|lydlyS$i>dw2(#w*_gy79C29ZWeC`9)}EYKKz)Y0vuod6*oN!Ute zjq_xbtkW--t=Jnj3q0O~rzjs>V*yFPcBH6CkO89<$9-mHCV7qJSD7l(Q=faVYDlk@ zc+cDNWuVT+v5GzhMxdxj1YOXPc`37fOBM$R^ga zq+0Z1%(Z|zi!&oOu&Q^=<>~*<>o&h~+*rBy@(YQFvB@gTP%3`ykbpRyHpa=93^KX4 zc4vU*hiBRTVB1)kt9~Ki5a>i?6!WDz?q-TV46?}_Qps{2I%#odJw;L#V=HE&5 z=b&m47o-~`W9&8^#cM}9Wd|ieV8==b<4N3s^Dl3tXB6)+iiDI1;U|3d2An$PhLp@U2XHRlb)8j0|CxZQH7tjP~a8TqCuE(rc> z7`vqxkrKLwLQ_Zr9&?RuA@9zQe@<2uVlskd;%pq^mVFx-YV_!#*cNcI(js!;8dC8r z+4QKRE&?#bLF#nH-@sUt5@y41mc7Mv?uEn%R3?U*0yPaaBu-bcGHCMIY0g;?WB}r~ zyI3pn!a>*q;-=8jG9bonPuheOlS$A%_Q61e$c)Me^;8^)TRhveN%jg~mMCKc)W^uD z;T!W(?;_H$4&l%h=Ma;+XQQ{D1P-hZBp7nNzBruH!MSgKbn18->uX0@7M23z$CbA) zk*3L9Z2onyK*j)rkYY_7nq-32X4(3sxagoyY~@b)wFj96?#Vk~6&+zhn%(ld?H)2tUq;$PVW&0&ry$#E-4F%pWDGrbdO)%oH1rHmRm{`YB{Qg1XE0U4Z;Q z-kOAx**HziVHhO)>pMi<N}rIoqKEYcDX3z$u&iICqdB{%+XEG?Uy2YYn&QAXok5 zrl|-%$oz2~z-!sYkTfcLQi&hHeU>m<6dR6)<1dY>G#Nr0ez(psD;Z0BpkBw#9nd)Z zSVKUs)3`-Y1F!$*3Z=FhVbwWI`Tn0|TN%%$cHY&mXeLh6t@+x^#N2*Uw}`R!DLTt* z2?SPr_d^ZEsG8NiV4O?WHsXZ~*ekZs)KX3j1P(ZN>1bb})v(4?ONUXC3UiDCr=ljs zK2G3o88WA(^FqdGcQM5ZcI9F3O) ze8{X&p2BV#v=lL~j>)^ZYc5er`nJVDG|2kl5W-**`-TLRSA*54AC3z?_lhau&i@>e z5^0Z(IRrqL4R~fzW1Z}^ly}ubBTVA7K{%D}=_Mrzu<|X|$BN5GinQs@0p=r7rS=uV zx3s1b*s2NtXw;juhP?unV2X%!4iB9#`lK+SP zx<)Mg*i1`_(IRq~Gy-J|BLprq@FWnTTRA+#gJN7C3)}D&cbB$hys}Dbm{>(Wm+CosYI2bL} zz(^v94n3y%(7ul6EGq8t%F!V2$oQ8uUfCXeutuIo_eFR4`1WX#KT$M+qj0_L1pMt1rpnwaNBEn*4uheGh2aJM->oGTW|v^o`I&_k;>5)t1}xX2us zTU&mJGuU9VQV=I4Y0zr*eSjAcfZ{juIX_a%rCZj4;Km{&)ZQP~;t8)Ue;3G381rEC zXsCED<=-Slp>Ne*0`M839l;OdHrB0dTRVR+(^$*arOU_Yi2Cp*n81j#2Szl!%m2w) zmQOZ5S?;qAEN;bwIShg+frRWU70hLVjVi*AU{eX>?**t0Neb)cc01o#H?z$w^2LTZ zQ#(b6uWErh&cqO*GEu2ef(5}*461>7je208L+>6mnnvBLvhQq$0Gby-CENw@fkpN( zPx>E9cGVA{gUmp^()zedVI0dt(32D(K)QZ%CuBivl-Y^-`u>pKM%m^{oBVb6hthzT zaiR$ki9MRRH}p#Kq7cG97Yuxv!>`jQYqE2V(dl@&nhYQqn65~&`irt5-G_F&q3WYVIeyMdZZb88KrMQ)3IdnYkjqdL%O zwQZP$Sj(M;9h47kTv1#0)}77F0i;d5r2 zP+8UvZdvS(69={uH3XaO9{wGI(WsykNBAAM<`A{JckNEG*Yi7|Ka20|??@5E94;q) zvZ3#j5msxp0_)O!({`5NwLxRUg2T({--aRX7=TOf!CtPll&PG>nk1ZhKG)Ie13G6v z7l*|z(o(k(AKcx|XZaaNoL~L!l2a!Cd)BoF;dXBvn80V!6DQa@g z6n|6E6SuEtq`EDC^1~4^YcO-6osr+4CXI87?UHJW<8iE|GG}eRiQi*y>-Mp~oO(P7 z^v&$kJkP(oVi8Rlx~Xa?^n7?fzfcLvaG`B~&vYY-@Eox2`5sv}n?jz%dbK(tezVq_ zc_F-(2G}d*t9E~*`0|zQupN}3iDG{Rz4b<11= zAa=oiMJss8L+X}1O{$?^lpPd^pL;3F(BTTuEQ?i(i-Gt2$7@?;ldd>~HpFwdc@#)8 zF4>Rv%-PRb=8}Gan{|@{STN|lT!oZ$67J~TYTKg`Xbe?Cw_>}~L9A%=3^(bF*q=2f zssHC(F2kh>DvT@%SXSnFvwcd!=3n;Y<{frpP&iwuRjJ9U7o!}0mXg~$Nb`h z`LbiYXYKGCtMb^-~L#HDi`gw(bL8I?W!<)^?~vZXWgKZRYW%4RQ^|1u)y;|t9+@@ z)PVb59?dyvzRTxTN7nVcp5=zz{j8sz0BhI*yPwO)G#kUJ#tZGvb2IYA!RV@M!&_}a z@Y9JHe#6u0>QvV}6~48PQFVgb^hSL6@ju`d)JQ*1V;$rXF<5p<(-U&oc22ukR&(Fz zh%^W`mN_YTK<86l>Su(*o|$nfO8IPYv2nG z5XMrv-S=d~#FvwYj>E|V&!r{b`$Evu2`Z#7XP2dTc|)SZ%iUuKP9>NL)kHRX4ej-z z3HsHcUrO#k*Tq2-FAz&^345pW&5*u+ftD3AVg8SFX>RIVd3I&8;jxsBCohelnw)!#`SXkDl` z#Ah%FDY;80Nzl16W@a7L_U)jomoU-gtIuR{K62V$JxrRMEbc(G{ zhbZA5jqIL*?L>8Z>Mb{QQ39!MQ7G-nU4prJud9DGi}()>jt}@+8|>xwfANK2?F%cn zBrQpW|8}ctQJZx}El9ZgB`v)A)Ufe;#oPkqsP_a{4K8E@kW3meJlfo@T!kSIp3J&F zTgt)Q!1mjLKtqOt6)T)%K@p7|4HKGkkYw35W$_obc1RH_YbPUm*en7B+;PrzOKs@b zrh~r~m{~HpE~?eQ;BL|s7$!B1ySImDbI!EX^rWcEaX>^ldW5bU?C`Fvu%w?&@m~A{m3EiN#$r&SG4GN$F+)w zg^mnq>hMmbqT^m+z9p(L2jts!aNEK@8IlM_rkhi}IURm~kXLdt((rrNs|}zXW!L*Z zPA-oC`hL7z9xvw%y**xc2M_vw9uE%!y%*gdXUh*K4BL-8UEe2wB#b(My|4GnWtqC4 z*WdO9U(aruKQU_Q)7BRCk7oGn2HGDs?LBKFIyJ$R^g=TfiPc(ne6xBV_so$?Hu!DqQckYP-JZ_(7Z(KING2Uv zt2F&{6It_7HkA_yb1j$BuSQ;ICXm$r4wU62L_Ts#y@4W}t8%E|DqrOXo`KqYsD@0= zz3BBE!j0h$9~j9GH1&1D4ONocEhNdH4khe~aPG=DXV*zqMMAqL6`U(vlj_Y7{rZoi z{pWGEV2q~SNW=cJa%c&e2Gx{8IxLb+h{0Bywo~Ld*W{sR*Y?Q5EMTfVl#?EBZ&HR+ zX?oHI97Uf{yC<}sQ3vM0!Ws8=EF!ESY$I34;L!unLC(w&rKlzFPBH$Fq0x_Tc0)FUoX4Q-*@TVSt}T^y&kT9+lJ#CA>T0QyX>j%?B)|lGQfX9gbQ+v!Gtok z3tZ_RGmnzs+>PH{UN{;*y0F_QwdZ}z?Y5$cMZ@uv#g!wO`c}#Df@z^|&@tnHOy#=c z3{-3OH)a&mr*v*<)Mi3M$4uFV%61b~dNS_6dP8=|!DH#el3N^o#bDSD*Xr&Dw|0xi zG8AEPu2svH_x5RxXtkVOe#{p)=lV-5Hh1=XJnYC@vs<|l0b*n$s~+y)o?Zo89nF2_ zV}ZczhQylx&->~v*XxtBJ$zUaSgHbEnE}68#3g3IB1w$5`S$FDlq){GTbS)AGvfqW zPJJ2UgSX}mw)r(@nW!WRCtZ~%SZzZK>^p^w6PjvwGDH0@AijndpxbFX0zc!|G9Pu) zT`RmdD0o2~;^%M{RRVg5@XorphWb;T>btz0im3b@^T{(8MR5#bvGl5zgSm~A%UFQw zO(d5X7o4ej&aW^bkmhw%8SLngizTnhz1VZUf1lImK8{Q>Wd!-g*C!28a25;iEwCDT z)LicBF#!97$R}FFVkk7QRU0Kd1Ns%f8}n-x4}}qtP{d*jB`VOd(ppzNNI1x32ug=C z*pJOu1pZ7-WnlX1hfPiFOIl#V{!Px&cOuUpOOVcsz}Z*Yz6q=@np@Sbfm7#u5OoNz zbx`k=>D`Y=aZdNIC@WyIeR5x2EHe*%z1^+F+gXY)KkD3~Cb-vvE4+`MjW8RDO?WIF zdYBY_y;kAoa!HzjFsF`qC-ACG&N4=%Jx}~-=!(yzC;0|x2`TnX#YOT?0-;5GGpmL4 z%xB+^nikUApsFJVx1%WCc8tyjv)7(neF()_`GR0OEc}P|52?-sYo5%KH>1sKtIgjY z21azI;EaVbh4IIG12Gb@TtuCuNk6I^t=$2@iP>oIX4h5A9TwPW8(79ovQrzh(XE11 zkA5Q?9%5f;pCDkObJ|Ew+7?>!O&w!LCgmawO`t7)ASg){J2r6s9&n;f){<8EQ7+`< z>o0UD&yCW>kA4vgwi*WJCIl?46N4*4zBM$$6mq?jlXR;gT{&Al%#e(d;xwEbo3^aS z;?7=4&kq;(_KufSC#u0non``*$&iCy*vv4M(=~k~PIQy3D7uRKH z4x*{go{#;ZQgsorsIa^fu^O_{Eyis34dvCD0)CC11RfJjB2bvtJY+c96HF}AWDX(f zS+5gpB{=t_Eti+pvFoag5cxrq7lkQ3TFq6APtG#K!tdc@U9|L*EanVZ5YJX5#J+9d zB6vlTn0au>lD?GsA%8*;_pqQJvqg#j`2^&cS8p&LIRQ;9R>(MqPbYfq=iMv%CLex~ zZWe$)2izE#{nE5DSNE2io19%v=lE>f?I$L+uNegFobpuZje;q#VGfne! zYoPbD=5R$G!z{Wj^D-@f>KzLq&*<-|_hoCqcVi{JP>yJv8+XO|{6KfYJk3Psu6^a6 z-3Z~F8OhL~wf$mrr$I%CFL_wk`;}1QelxXeLidi{ye4Z|}+Bh6U zJgqF1Ez5hyZjCqPXuaYTy$tT(&TMkG)!Gm6zPQPb`O1Lz0lj zkIr5=1}#5@*;0lq5;s6Vk0v@cEu@@m;uTV}YM1^4d7cbE)O*hQ_^;#S8b;caP4ZaR z$x^h1SYkXKQSbD}haXJ5b?Um>;8)+=w*tqm$^1ke>R*Pu+# zNgRYeiwEx}n#~P@0O#5uqMaePrNON4SZ-!}2oCyJbIz2X?W0udt2nNvjlXp%8-x|2 zDI^UVJq03q#{T?WR`1t`^We$fn^{xYw>-U~%6zdP7G#vy<;OXnn8w0bvsjVdN`U!!Nto?jg4`qtG4@;4(?+M{cKH54O zibhN>8|AzKk5b6Fp82yA2*dT+ZJ#usPl2P=9amQ#Y{FlC_;NRP^wK-@xwT3?XO|c7 zmzAshTC2VCW^TUM`h#VqzS=1{d2&;hE!BMpPtMvOzh(xB_abTD7{xe|>r-M|6TBvD zf=W7q+hV=<2=Btj9TEt%G4-nClNygS876Qa)0pqpv>OA%KVD_4-SDrGtv=5)GTlBN zUMT_A&5zchQLnbn5hqqm3sY6I-G*|xV&Ajd%>u2CBxgG}b?NtNM~e|4utrKpo_*EG(zK{;l7lr~mZ`9=&U!32h%jAgltf)s zMz3OXNeP@z_>zv2KbI)DQ*6MX5}_>XfsP00s&rdL=;v-CdM`eGa4GgO z6mw_blvD`_LfR>k`q{04PnQxce@ker@LZT|L1}@optK31=?Eb(X`dK7`!zYvbC8_Y zhuA498d`^8*+PjAaQ^8A5Mn(K87~8kipZz+xv@E4a5D8iZeO%Pji{UseT}ICR{{?_ zHk;QEH$SZnKeYI8cV_B3EO!yt05i;Pm{VUWEg=o?skQb!0(n>nPnJt#<>xiOq8tj6 z=F?#+p=RLFhJI6)tg;+KQV^Maan76S{QXNy-`74eW?<3m46hBDzrRT|>fBdRGr3=i z{Tw9yGe+AKM0!`oi`+J9`w3r}gI1q;Bls*rR+r^ZyUeMrA-1lUz4H#M3~LH5Tq7U~ z?tFzqLB#(;o6CLP+OA-le+bbf%eJ^Qd>29GN5|J! z{U(P4{Gi#9DS*C*yjd2_>fjLbJUC;#mh3PmXy1hQxWcibZe=*n*D$&PCES^mCTJ8G z*ay4JCjPaSV5eU)x}n_v>In=M_qBnaom{q%nuKpLId=JAFXz$)O!S(>zcGBz!CTPS zacXILVm+d=3-cz#CHt%RW%EYS*H!pic&#x=9^WW0UA!E9Gjzv2BvO)-mIDEUwe9n~ z&dbC8MIM^)kKDYPF(XC8qv`RQ1ZdMZWM&N#ojZIUOy5E?wuDKQyrC~|l?oTc?`7ul zJ$_6GbRY%WUX2J=5uohp#-jPVKu1Kzp!t2NNAV|G9ByzFIM0nDmUlR`ii)-+d1RH8 zrZ2}P&F&P=3l-nLSShp_Jr%J}hE6XqyS;5*FOlBwDcuo`1KAo87abt747IT7YDl=O zU+*JAKQUS9e18S;-}A6fbW*GToGiXrH_fP-2tRSR4o<#xZg2-2!Wn2BR)UK)7z!8^58DHc%qp`u5rmy^Y^n4>9owxf@p zY5{>J5XHlQ!w!Yx>`%8NMEn*-g%c{$u&p!{0GEy0>C3M>>i1~m9Pb{;E>QP*ZPg~{LL{jpC{j71oM1;e0^SR zZLFewdz{)VKL}9;=oe2iQaAof*7<7VG3JsGW83xtR_Jtb@Q2%D^;!gw`k{55-7{D} z3CE+2SnUL&K$g*`!xN6kimMUmpSUhHWgRHXekopWc?T6}I%uNdR=7sj@zqB4{INfp z#;}TX6=B@EyVk+-t85lmQApG-V?jY;qQo7%f`z{tof)Hk`!d~TEslS2ALVg8Ofv67 zBv0Gr({b^nE{!4g4#npytlfEq^{Ozjz}#dt=*A)E77YTH?9hggekQ#IRGlnJ|2G zG%hbX=qV!6*E?@&SW_vjQ3_HaN9T9-z>)pvcz5Zreg5i>S*|F7hugE>dL_OJM=E_p zmC}^5?}~5%r|RzBTLD))RkVW)(0;Jvfxm0?y3X&P;4buEv?a9&r)AjBgA!UF+|kj; z0-G~ouKL3BC7%^;FeTeId>5UwF+Ktd?8-g8FH^=iHQLFpfI$B#u|#;4t=SW7?b4|S3guOqq}9o;;! zC_zZYe5d?+ggK{jr=Q~7GSI&%6Q7=Ne^6oWKM+bcD=vO8G}NDc``61mIMC?9Y<`=4 zcP>+6COSCLqBh07s@+LVik$Ab*1da?_D2SsKjQ_FoG#zxlYk#k{JDg~PqLirT~Vc? zMT@7R>M}ntmY2>kn@0zn+P;7(U68ZC83rc@0^(C_b-ti89?FN5jM|GY^v%UQ!oROAbYoP8ISa)G z5S~_L8nm5`K7dD|MnmayI`ttizR$K0&tbu2Mb`RZOz=O9k=At_H-?7CtLr`(Q2eRZ zzlgjI4<*IrO8r-LcBq@LgYBsN+X?GN6V`1(vx4-FFRm$P5qtCu3HHO_ z*HloklEq=f{lU1C;20gFLdRC2R0lLucWSjLZemWL^y5CuDpo?6_cj5HVhLNs@}R`O zgT54!QM=Jd$@u7U3cf-UdiSiyk;$m}+!Y*ja8ZkVlX#Aq_IBA)+i6Y#Isa0Nyl z=zFGAa~OQ=%nr+0VbUsb+)C)4VA-Kj!07(qsG+2_z9ID5a2WEb#Hd#yO}R$C>k zGPolL9f_7^gvRqGLmD8}%`nk-e7gU|kVWmH8_>1#FM2w?QV&mV0#s5q{F@txeVRz7wKa4yDO1~$|cbBld;`UYj z^x(XxnWbEA@czrOfK6|a6SuQ@HLZoOP|I_=Spp1g^wUD6^K)_Va(bG^Z!+6Z&^b>v zq!~|4TS!P5Nx$>AnqK$&C3|I`=T@U|SnKDsRdsj9&}<-2*!z|^^&&gwN*Z-wc#$40=##D9s-_g0$`7!9A z!&JN5Vq_l1dm=2A51|4CEn5ladh78uXi*$+d)%oPwV^g@dE{ZYw{g7!4P@?i9Mba` zRbwUipNgaTeA4{X?c>CM&5bF;4iJb8|HAKeZ<1}G%P$tn@sGTVpq1jLXH@&y?k%YY zMKx3m@;5l>YK+^`oOxnRm14;Nw{E571_>STO#%X}3pAgaTd|~r*=5AaD!rN4_0S=7 zX+9LTrV};d4{zr8Gj8T5+rh`e-SttG3%aWixPR>P%D~hW4f0n0VuCjXfe`eQoWf@Q zMzvY8lHuCsh#kPKDN@+pY3)uo&IpsY(S_;a<@OduCM-Klcr8&h%g`HPJIb8%t5<$h zJALVwp(ppE>%ViU#wjc$`~Nho!;Swcishy5(7I$WgvE@f3_s0x{;q10c(mSFuo8g4 zd?>5$f|+36!ugK5-cxpI_AD%JgfJ)U{?#)yGQi3WjqDq^kNAP|u$)oD^ayHn9Ab7p z;*}x$3(-6BWf5>as590`{ZomPR4QvyC~P@h!&7%Zoz|^TI2<;=#n;&gri6zMO-*XH z9@4zN^|QIa^eszt>qS6Kpr49hi8?QaEG#g_fn_zc;EMM8Rq%Pen`_F7^F@E0v6&W7 z_}?`U*{GI--|yg`VWzK0-|6VTX?<6Qn5%nnC}@DO?Tkbd#;!-IQy$Cwbs>4Me6D%Dg&rK z2^yfdaU+FZ<=a7b|DL4h?}o$mI`8^ua@V9jTH^c>Wb3_OL~J7ZL?SlM)S$QAC{y-e z#s^#EOI$BnABCj8Xw#5S7rG&_Nu}q(>95!C&g}O1zP3sK++9+f8P){eX06;Tmr#MWxaf9 z@ypLvy?9Gp4H|p9ujzCYnf${&X(;+&I1pt4r8Mb5D_L6B+C>GZ+TX&b^301@gy2vT zX}}TO7uq+9bPS>$E1tQGAt?|2DhO+OjhzSO5`~ZB^DL`z+iCeRC|%2ixc#DZrs!5c zr8B>`J3^tmVyV=y^x%xHD>heoq28@*;RD=UrdXM(5(m4l%QzH^9M7>2c?>=eSCDFX zdh7Xy-0Q$zrl&#K_4KZlkS(rtfaV zv^|BL0Y8B^V*ifSxp4gAdfl8jyQ+e)uNDoD>)mloG;0**I!&Pd+Yb@(p%2sDBm1y7 zG0M{pyE(Lg>2@>GP)mh}@3M8*cKs4iO=;9#&{j7II9`Gh4FDEE6hHwLS|OeJjdvQ$ zzkjQmf>W%*8`3OpU|dn>x=j`zppm8A_Ifrop~t4pqRoJ2i^klp5A-LXJVZjM9Cki= zDFyoXUCfrISJ}|(QFvVHDwU~bh|c4WrD^9B8C~G&%aMJw#}3>yzA{}yT1@aPDY~M; zp(9OAnLH>`9UVAroixhjx?J7gta)KFSLl0g_F|vjp|>_SrpIM*5jXT6KL4r($IgI& zKe}eZYx)f{vV$dl`|?G2^ex-Ag~c3ri@lZk_RreDKIHiKW<-rr=}v$8WL?0n+dkDp z?ibg;5tvJsqUXjpmnmuaE9U7z)H(gsO&MF5ZIeSu|v}EOh zI+qCsXjwRYxN77l%x~jgz5LA-BSdsJ`MFa|Y6zMjo*}a@gt2LLs);3QbBNjxhW2x# zj?qR_90>}?CsK-n!Vlnby1nbBV@Gk;a3}87^ML!eG=fM_Q;%_|fl*O0hz%|d4Sy3? zT6v{UvdP6SrQk^MXMK;3U7NX)`zzwbmf#hW=KZM9hh^AL+7XU=}@76X7=!TkadOk+;s`k!4~c=Cm#N>v8et* zBE|NFBgOtKEp$t|th?w0d*61+2y*{Jor3MFtC|*G%e5H#5RSw7kPLDX zOYCJi3b9TjmI_UXiH`kx`|7t15u0sW^;L+?sPev>sUu|5MJgNo?Q9gz7TON3#2!?v zkmh+V)bnzqp9TEnU~uTscYaN@@w0ik*BgtL4P#o@qgcS6v5&H1jrI&7E91~%lAwX_ zv$>bZ7qr_nr)-5PB84H{eT*c)Fip9Dfh85*+|@(MvtE~*^BZ)R7yt3%qiZ$5Rn=7P zn-%J9FSYEX1m0h#fkq)4b=E6pvifmOAY{etY|Gi5YN*3Pu@M9te=mQG>w0VR+PG`b zDyf{dMY1tQ>_2%@3dCMsySnwXD^Xm#D&@H0d`&JkB|vjV>$iBqA5%lB@TtMMyw^Z* z%)S^lx}w#c%(tCzNBSs5OAoENV#NYOyPP^p~v5RX4M}lUHftm#qN)tAnFg z^%V_*tU62@my(5dzCn;W)~x~s7`O@)7Zqh1=g1UNk-xx>UDH!+8-vK_&I3L)9!fe;2thByXYV4wsNh5H=Gc$Y#jx-pKM9T-ltU<@ zVwg~l`1tB7rHj9MlFv`;OZ?8e&=E!!WUq{-TkX=K8Pv|%RJb1{d;@>!DL0OKOYrQ+ zvDx47i=POAyIInzWXBNcaV6%iQ7hDy;YFqqI=CSAGZSV0SPODPs zt-JT&Sra)F-Q^Wrz8$%WHDMNOL>vwe7mxzN3>nQbKs5}m9JmCn^gHt@_-Xk>-?n+X z`<1^H+r#6M@97K8JPJN*lJR*Snv?xpo_?RzhX8HU=el4$3e}*y%YPdX`_eS!amCH4 z@xsQA7XF1ZQ2DGa7%S+%+XtVCKYxqdVEhxa!)d6p+4*>-DjdT>+EOYRn0 z;1Q!ah|=4-l4hG(UOjF6u0veAjxIo*9&bb<{0)XwixF{Cn96~pXi-^*c8Vn(B%ArD zIaAiOI_V77O5TRM-tW+_B}MN;&Z+uv60s&s=8N$PfLgSHsl zYO|s!R?N(zHo-KF!DL_{jbtgzar`-I4TFl?$GtU>V<1;x| z*3^qm4UOVPX6?xSo|R-krEm@b3914D;RFoH<(^Tpzf*=g6K!{LrXa`F^~q@W*_3AR z3+PAn>vi27Age#mptWB7L-=vEO=Rm6+vwBe$_3-1732VB`fj`~mudsiVuGG(v-S*r zl9;}=mPJ_N1XL^{BwZ#$monEj6Hofv!=wLgFnut!pyvp57LQRG-$o5a^*rSR1drQN z!`+6rYL9}wt?(A{WWyK5kKbxH` zCoMKKpFO>Smua@G^+Via)`|aQ3~$}ZT$t)NAFDw@@}?tbJR~Vw^xikoA%N^U1c^wZ zYIqkdu)&AEK4!rCIB7)i4*lQ^xna!@K1g6LAR;#cO&{}WeQ9|=x$-sM=T5PcuJL*l zM9C}K5R+aV^&Evy)`Ee`gpm#mQtj(F>(dCXLIrV#3?v+II%4!|Is#3>{`YO*EF=G~ zjEBFgW1m-*Z;*pGBcxE{C3ns5c3%`X{=oEQn3;Jpq&it%{FGp~sROBt_Q8t53nWlJ zne9tY#IwR|f@5;Tt04@dfk6kw3(|?Hf!ztJ)Q^9GyFydT-{jq1Yd=aHkV!$ z5fn#DaI7hyC>*>ax49U@Tkl6z*W6 zXv#w`;wGc$q&btJlSsBfyz*LU3+N0&9lbBjB7DB{A*C$rlT7y!inKQ>eX8mQlmG6R z2Rdf7TGaTx%#F~%D7z5t1H;>L>^8^p$4-zqA0-q3LBGcGpH=D&!+VFU^r|y7ynpN& zOlCOzXVA9IAx^l1a-!32g(R`Faj2^pSMPLWA114S{wm4Rg=t{IH=zFBJ>XbDE zCrn;3JJ$?8-B(%LL+t)>(6EUJQoMv7r`VdhFiyk!I!#dyYP0FY^e?8Aw-cusI8GpX zgv`g@1n89L94)7%VLIiF5??xOKVyuGRLmNM6J3B0XEFmB z)J38EMuOLhn&q;sUMp2Ds`mAYx@*SXm>Ci!(xvBL;$yBNd!Sol7KMMJ+*^I#2>4dZUsOUZr%};2hGXPNuDU?NKy3 zL#8wy1G-7N^q_GeLI}ls!Q~*qD6J!+T*@cAfX0#}^?tD`SsbU~s~^RT97ng|81^zD z@_0Av;nKBGJq$nkX`~)u18aK|@O;pDU2M5+V6G+;pMhO>R#AS!b`&kcUa|$+kc-Cv zt8Xpp|7m7W#)sAIf(ym4l_sfZT*oi68FFw&ixh0L$>Hv`_so3Q!fkbZYh^1<5*?$m zkf+AB0G^N$V)SO%KU$ZT+ST4R!(nN;G45XYTDmcZFx9$_n}Su#G6;|Y_bo zka=N6tv92|uI;#vUtVC`ainV}c95=fJ7&qvc>aTx}djmK!d!0YYI&V)qF00e00Ao2#W#Gy@XJ;dwAc0R-{O>7uOqttK z@s&a2m8&^z`lV9xT{`*i*GWw6ZwC(+^F4cMq228O0Rdk0kn-#`TSG6H9qLjJ6X5%- zPDt)ASG^Y>>i`T`Gy#d|O*81g8w+(lA4Q}8uGU$j%oDYye} zuZGrKG|SU+Et%}uKJrrRP%H<6MeO=^n)snCqk^`@{dCp>v^)Xp9R$nxza-3ls!nN! zzvr+tUujfs=i4MdaIs|_%g24(kf3VR`Dnmn;OZJkVo5P!)8BS|Lt%!=LvG5e@SiMC z!t9VBhQy)Q7`B22rHCV9T66J=P0Mbk$vqVYCD9G}_<7lr4puk$CKJz~xo=mI{JAsh zvs^?sAzYd^u&gI>&Dau%`|9(DGdqPp*RSk->A_QS1Q`;^i4+k742Jc{2Nd;xYHquK zH4sqS^S=D)l@?>s${fkJWoa>LoLYD;HW_IzgUV8A=`(%??^S;sC`;`x7#Q20WHxu! z*Gu;_q@u+KmqoBYB7CGUYednE%dW4OY?y{{!RBaT37ui%;qye@%44t6imP`6c4)(0 zDk~5N*J0(dAk%J?n)7d(+f=h9@ZL;432+8X^Cc6UoNB?)?^Y;B7+lTxj|J}Xzs%g^ zvsR(zBkiz62ScdK!&B(_AiFHaz1aeGwL{67B4iLbwOG+sfOCe~xV2_f*>ZvREM1Cc zD*Iz)lYBrbhuW*NLaN=BBInoVIejVm4oV;qwz%tFs0E5rTm#BF9C7jxBT1RrlSWca z9wy>>rJk&a-eMHx4L16?+*3yE9uE6QKL^_~pN;L~0%=v^3DvDAX3w{(Vf+vCM9(Db z_a;XtzVF0Hqt|8W=Lpw~^5rf+u=i3zg~V#-n8FGxHnK(#keXJpb zvBEMfoof`6pskLcPfV!+t#LeSt886?*!OvxWF2ZNh-ZG`eWeNwSxJ$h#kg0TZ$*hw zBXrBKNBj3wE6+WmA&~3%h>IPm!Mi}L;89yk7{;@8Fan{jewafrB{^jpL2VCjF|D~+ z?E8gUf>Hn43w&ej)*8fQk!+J@ObYS*FRGYx~ z4+WWtbcW;=0%yJKHjo2VUU&#&fdk5>#aR)`K5@O1haC#0x=%Q_`VDaNXIimSX;uOg ze`go=s`I7VYT_ne9{bn*polLP5f}@89m`SERN|bIa_$_9%qKHfFn1RGJJXtmLD5g*KSj}&h*7`+VAMuTvY0bXIi$}$Y+v1zV!L{i-F!` zx{&lLl`@iX(XOIA5nqk^wimUVfGgKw$_3CNyQaj1wAV~I9Isu`n+qp*)CA_`&PVr5*Hi9i}{?(AYSi1vr=jX7l z4Y`{fE|9_aWR0jzB5N@%)}*kCGP$;Wfuztcy+_?<_eM;-og;AzgD)uIAf$XGnv+I= z76u0Zoi&vl%8KuJ0#5n;5Z~i+?Eu7(4{gcoNsAgmx#u!0r5LCG0%8vpoNq+2Rp16h z=tqK1>)_O`%*e&XH1ZYCFuZ*8Wt2}icphlNi%oC4er7laFNB@m)ODRiYtJ;)EA_1Oe#yM2 zw@UZ#KfB8l-8>f%$G*v^6W*(Q64S+i>07XrT-ki+bfWemoa}sW0TE|FwI8O>OEf7$?~ANg`df zojVdc+kQQIm%&NdO|@%k$5aLi3k=%}I|~NNaF%scKbfGlNU##?Sw%O#boO}_oTF_S z8o?>k?e8_Vgz=yjbQBNDx4Q#PSGM2nW+^{v#x>VH%78$o?VmIEn9=1u4W%Pz(gQQz ze$A8mzC0Bil;TRp45b)WJW`O!N;g11mz?tW&NN(BVCT5n=`;ua&Ic1(X zeIDm^qvGC~R`9|}6I&N`5%#6SNPMm4^Q^+d+pp?cP}XrPFFfd5ZvC0QgPenr3Wl+u zYYzY8kMZ}v*NQ5*JK|aKi8(}Qq$fqfAYru799(e@0mU=$C1IA6%;jP^5#dt4;UzSd zpy(b?&@qgj)AL=$Qp}C1-TNw39tiD7_o~!i}9xeMh!^$=j5iaUunz0XCX-s46 zA$*ZAx>ZHm{I;7>DBG5lAS>Qj3oE_MOQAR+L$nIA}U7A5EBzkRj>CXRGOFlX;Duu^(f=J%C#XA-xO# zPKz)b3+U#B^Egr8aJ+85Aj5ad4?(&})r=0S2q!^?#A~?3Fpr$beyPcVZk$5hs~wIo zP-F(Yn=YoDQ;gfSrMS^wj4viWNYeUa%e-$bjwkbHPjM8!P%IYuH)G*iRNGCN(PrkN zM%+-7^NdL9l>JF_b(`I>8jm>`!gN;*E!VP(jY;!z;S<8uU_{RYAp+JMx2DRXHG1PR zxPEIMHe;)LwAL%MGDt|?e4&lzgr+UQ2U*6%%y67&Tpz7l@p zwULO3QPZi_r#eBM)C~=_?u6BfnA6j6cZTpCVvB|~Qg^*932*#EH`%F~^N>AxT`C() z28|P{jh_^c5EmLA$_HnU5t=;MFLzm0`CI%5DeL*D{T^-mGu>MZI|t}u_28S}S4(~? z06zQ3Um;(v3K|tG$}?yF;9Gjq!vU@CA`7haX6o!V#lWNQ<(_6{D+zhZVO~*V8?aaK z*33yuPB;w4NHVX!Q9`;Z?m_3$4(3K|FgkjJ>|{H{YC#5z>00NHw-;8W*f1;kL9&@x=ZN1uS zzU^)St=|^uZ7)+2QCB*9a`x2f!h^fLx%to8@u#nKUq4X~wvo}~#nP{9+_vUqqxBW6 ziowlM=|n#2!V)Er z;TA<;fF)3MM?UUwg8+*PGk#M9Iu}JeVi7d?{~{1Gkpc)nKo-1uv3qZ~oaEmQYk1`M z*1gQCHEyT6m>Zvm&MYex6B-jhfdrleaK9meAn*HsI>#jX>@M$t9eXNW) z8|qtHR`iagg{IyrJ~IJ@!3VkJvGRY`TxiK?B59@la=7*xbFC8-4nTSTbZJ^%$ObU? z7m-6?GiA-j*Ky`6LL%YR^;x3vQE*tx9-Q|TBMk-LjQX#7sn=)`GBW*2r0!};d2M++386uG9*T!aId3IYi9MGl zUkL}Vx!qmZu460&RFkJ*8gx&buF5>&_{w2WVlSC@lt>0@&F4P0Oi>|hluK8aj=V{o zV;dpv-~rpocF~;zXph%}ULF7dh#9z!{WiSY<7aTUHn*l>z8M9Z4%!@}&^4TTM+}C- z0mu)rd>c{!P}6}TVclgS^&G3ZmW0`0Xb?d)yETy3cd;a@u?>fdU`PNTOAMe?8K||^ z6j35qFb-^?ceC(jI?(+Wi2FybWVKWJc_?M|k_-_YX0M+4sX{Lub=~LVxS5C(CSTzB zSNuy?o$pFd@g#|Ot94^mB`E$L4!)@LdI$c^DepNI(d@usg<<07k8TpQLfH|e!XcDN z_PH%*=#-Lld4#|4-rNy$aPa|HZ*wbbnA;G5?149-<{JYAS!+zZvKcUuGV@_t6Gx{ zDh)sKF!B~8ai@nrj1qUZ%3}}Qud(pG?J>QOZ&sV00C1b~e{a9T)Js&5m6fNLxc&+~ zJB#xKZVc8{#DI5c0~Z(+)>+WWH#-YnT!Y6dI9h+@#es0p0<`@do@L>+ueAs&9v~_m ztAOS;F$D8)m&$XecVg>Rol@JzD&&}i1MyEgv*-2m-8YF2LCVuN*ehK)lrQT{g)hdy z+w@tf#K79aUlZAPT~MnZ2rUA0w&2TvAe)4z5tmia7AF!9UlKci@=T%*B@IqDsc}z; z;kb;^i6cTWhXK@lCoC5>MBT${&_D3Yp|B7RDYB%&@3eucpoLO1oI~N@ z?n_Zp5V?l2oepGJ`LX1?DrprIc<Hg4YG(1 zyEE?v_HjY2t!^&>0;Dt=|3KM>1q6o74#jD823wK|i~Yl^l_vCEXQZ>fhPg=d9yn|C7?g-5*Xl zf;6~E#TPSB7v`?YO7&_cheY4CvHIY^0ge^jNpo+0epzsZ0?b|a2|>yRc+8oMk3yI? zh3*nyg~F6ixfGh>a3nHtj#Q+e68Ai;1(~-y#+Mega|mWnG@y{43XH;g*8jHDOQj1X zmE!|doa54uOE)4^oVH~Sv{%+vjb_*W;qT%cg~7!#X25or+6L_{o4aPCoX6Fkv35*7 zRl2@`36vgO5pC;1h+z5srC4IEqSHbKcvej)lQJCEPpWz#D0$Za=cgLI6KruLzme2i5e^0Zb96%9M|3dMiWij)v+TABE8I zLp>l1vx`*jK5bHmD8mr+n!R$)>C(qN`bNw#Z-TBMX*gZ+ex2cd)Hr$ zgsMaF3_vF$HuQ2-B*AVPm$q=#x-`oS0!#Yq{76ywM=#X4IXIB#h>?qt9g}N_bts>sk8u3%3`X-M%b)sZ%D!EywVqNcP(+fi~X3IfA z+dNbqlbXh3Y~%_W-@Uy)sz3zd#t@I2zAJ=H<*DKIA7#_-?Z*w0g9sdrWvtMX~2M{3>K{r+^)IS0D_wbs%BdhtKF;CB;JYCT1s=bQ$wO8@p=I1PK&>t%6j$rIlGKB3C0e{>(*Ms_JLDw`sitC59sN!svZA?41fZ9x0IWqPkcP^8 z9fwbYOFW*(e`u{{?9?=D5d*FRs*^sg%d9qw+PA|n1GR~0Di=4*Btv)qljO{}H7B+gbmoVDLlcT8zI&26v&) z0-I3$C&N&eiNSyHlrF8S#P0J$Y7H>EM!;HSghFT5q?%9}f`nhTsWdVKMp5hQNisWR zj=glP{a99q&O2r<3taZ1K_-Hj#^Y+jKq~nve!V(&eFshYe(T7s>p7_QE`6qQiCIS` zz^tGOVTM&il!18c9#aK;@OU3=tle01p?R9HtpG3;nLG6@?807IEdQw^;w19fqpfmv zbZI9EN94xdcyw)SY1$hP)?Qhr(-P=6sVS(m(jtmzUZQP6)Bg{Sxu}??Is*rSnrx-D zX)NLugJJF}cpF|toyCH=1^*13saA6oHL7hTg*WGf%*&E?Qq&3_lykhvJuUr#Jk&&Z zZv=Jw6(uWkl-SB|?I9!#l`>TniG3%rxNmLwS84L=;8b%wq7j{#9Z>o_R83Dn|91%lAUy_jz+klvyxKmJF^bT*6oWj;Z zl~7eK-mU;0$&d63>(#8;H&3ec)Hw-W+;q$k|J<_kX|PBiv2p+tdu{crNtr?hCciJ5 zzAwIwLBA4!){C0H(4xj+*e`6;I00bHS`U&-RB2 zE~VEUKq?=r?EZd7bpU|y+E3h0+8Ac?(B!j3@RTaVvS~KVM7k#$%LgeyO;;$dU?jut zdL`bYnILSba!|Bi!mn_H-ZT~&;jyK>I`>npr)KS(u=vOaQCeO*@22}VJlk~Wt2B8e z8rLUCp@Kh=<#urqw{Uw^YxP8Hl)wu`&{G9&W-N#jvk|SD#yEr1a_@-V30QjeBoN!4 z^W_(jfVUgjdM)*|+H_zExYL`OQL%*GZt3>H2EczFfk&DFF;J3r&Or3e^YCe=&ez}9(-~t*+LdFnj z3`0^btzpxahSMwRi&{cM1+U=U`6D&c%zcdP04es)cZ#CTzD&e1p1BCmSUJhEScY?ccFgsv(p}_l|kJ6k2DjJ6`(JqhwRt&Mm z*{ojbxrQ=_fY|jDALG&aZ+CGEI6lT;*Kj5q-}dVYssX^Vb#D-4kI8Uc^u}My1s@c) z8V{2v3O72sAt;n`Rb+kg7>@$1A&X;)^TGm<8(yd~naGoTR0o@qj^lM|n5ayNeHLFG z>oWycrx+2{YvPdP=%q)ly7gzUA-Y*%K+KOJhTPgXD z)T~J$JoTNsj!<}U((fSQFN*#|eSp^r_d_~mlV5pIkwDg!Iat0CCp;DV!+>zeZCmjDk=nfQE&hExJu5b#e}G9)>@3%p7i$S6?u zn3j{MA26fKa9Nkq*qsodIRC~g#U(M;&=ztVo#S`2_Q#tSG6EUv2YvB)9jD4{;ygE2 z3g#QIb1i9)ie*L`N4{MZOIyh#;X_=@%P{xJ@CKT$=S=7UcyFOT^6Ip5u#>{thl&Xs z+}UI*v>=9uc?y;FGi1UDJn5#JIUk(DE?R`R;*#giX@_Pi(rY#qT7rAq`hGuapRgL_ zXEw9h{n~^1OK{>T#{{;oAQFgt7CxNgqQV|coon8JS&~gzh2c&PsK>yDRw>C(RHP&M zJ6dmwOwzX_4JQuMoR(Vn8dgA63!=6-(1qa13?FLAt5V`4H@<7ZI&gBHA>HMXnb$Qx zxB#ZAZ`%T8tlLkGl{&ASOm)90=XS&Md;4?Fit*6&oI!t?g$dzNMe}2yL#c}xjY$Y> zIP#JD0v;@0#N($MMJ;^#DsWe_N=zUu(ZYndjrsMk;QS=7X%y zjBoz-C&7uPFP((51F}}h%C?zSlM(uH;ABaYsfa!H1RRdP6(CJs?mMn*`P%m5|*>XiVnk;4qN^NeBAfOjLkuA$G8w7!=(4`dq#B3_- zA`87VB&R^h((tD4BLiAjASvs9?uHvv%ixm6TFu;vrs&4*q4QPRQGL?kvhZfOMY^x{ zf}YJb;-Ej}!cqJylI~_53`yYjc6T>IBS|I+$jujjf{*yn>QJ=5^~{+$E^4RD!7FFO zwH;KVd=Oq*kC&2iRrRw%NeqJB)G|5X&y!-sut?|io)4hoO~Jt^I2=G#U( z!DAI0Z;{s48Pb*r9I1I>-26Qi`kK6`53D!o2QsQW^jlO4! zCvXY()L~v<^pnZoKB%W_V1C=H1W}}(!;S7kQcOzP!CE z2mY*M=ec}2;r1qNAA*-10TMw?s5~DvY3dd`cpl)O5lF$T95ER4%#?USQ-$6EBe$vG zDavK2n$l&h?Z_qza6Ctcoeb1z&xqIBp{I~G?cMAIp{C}XuL3I7vVA5Vm@N!mAY0NDAD@|R3i%^XsLgyKdbySPQN*@w~M%h zvqoA45(K{beiVAH0`QK4%QTL@gVcy8@olH38*xd1hPyJJG;>sii4JPvj(@ap8Ba&I-x;qAkjEtO3FR!3za#+&` zuNODgT`Y9PU@(97bd-pxV{{lQ$B&|Y+e@yBnjbUFd-V$!kFN#Ol}S5pqOx8EYkHp= zwO~~{d^GeL#Za@Q*Ncmb{ElB83&|VMVv6;-y68p=a8a44|Dd8g**SjP6P#kAdApgI zkdg(5u3uM*oAZ;cAG!Z#_9v?9<7gthWg#)Ji%pfmR*)uxrXyP7B}*f(+n@@pURp!W z{*T^-a{_VgC#ZicW`S&@Zr)nC-ko=ggIlAyDTl0#=XD(=f|dThc=@>C(f^FDLHb9d zbzwm&a1|S)$Wb{F2Lqxt6{PgKdm=ove&BVMZJeV1hhj&U0b>`p2E6)XofQgqzeN0W z#<8o(dp)NTIX7;{?7a!=LNx+0C1m{z@15O^an-J4Hk4VP6-dx&HYUF900l@jRu?qD zuxZ6A{;m#V%vKhQO$vdSbbcmA6&=b=_+<81G}rD`oD)A>7k;s>{^@ zT7|*=YX88{6<9U%xu^8hK(uFYIcf-OzfUgxUKd8wA(BzH$an?Pk0^vM3aM)S>0rI8 z&^7VI9TXX%O39UZFX^f=B3{Ba_hC9=J3*$wu1hxKp%>I^aw2gbE>`2 z_lC)u(elcYqm`DF=#r`Yl$V#c>(oasylNBs;dF3)AR_}Za~f!!jR`Ibp%@*s3}L=L z0=pPEsX1%<6Xfyj%ub2)0r}D+`^Z;S0WewX4=jdmg-}Q!*Ii_gdy%i5hyJ=PF!a z8+Bm_N$SHnbbV*_zAFx}*{+#4_mYkYLc*9dfD6m*c2FXd;G$S_P+LB>t;>sT+AyeT z=~o>Qi6M4QgD1E99lWuu9b`5B+p|D5D;fMiv?MgK;mA(hfO2fz=XYRi<`s>p3TPVS9#vaj)4oS?lqZAwqRMDAo@5&S zB-|dPqoQYs;-}4iivgB{fWG}UCc%%UL8ue{w!KI=M8YwH!>RNm{lTGdp$-_ z`mmP%?8I)vX%hbvlG|yra=o@vijmF!_`DtLyCEGa`3~F#raLmu-(l``y;r_&7O((W z|2JBXss`PHLIx{bDhs*|@fKUk^@Wt+b_;K2R{is@nWr-eNw1sw-FeZouTx1< zt&YX8ukVV+v(J>1`9xl_sME?uNS8<3VP5agYR;FS=$GUzQnFK^%ECmKKb2qp;g@Lu zP`i`Ej}Mja%6zK)CW_2g6*wwtlNELH2{^5m)D-ICUBgL$ee$r4Vn$Ovz-cYce%yK0 z?%oFV0sUcy39aq?w*32Sf}Rqo#lj_RZ-YeJB&3fTl425B#!h3XKz|vveez=`lsa8 zl~jE@k5f9GeH-*PwW68oqomVTe}G56t73m8b@qG8RtUTF$14k{GD{dH*JE6tsKbZs zDPb@9XX-8XQncDF?6-{a7Q1&`o%dkO*2z^UQT!4PxOw9hMX%X6N( z(V+3>>0!9whc-`Eo#=7#aTOF+a;5;IDb*Emy^3KLEa|HopJKAvr&WP{I#FL zmD)I;^>CyMw>ZE$Kc(O!>B(ERDk=u)_PUQ8Q=X$2gnVP0o8#;@t^4G>3 zer1)El*fYvk>ld%y346Mm*i{Q4-m5dgaXb%shsQ*lUUD@(Jn48qwZZKZK0s}KH^X! zDQ9ooF@gUWL9g3*1KD|n$%6YQh6O6(a$rwJl%@m#LPogiEkKx%&uJk2ja?@)b$_PP5Q|3r%u5_fzrV|{CYKv6OvL=<|jmPp8#K8xPIZ0 zC=#@uV%w~UkXy^$iVOQfc0B-ORp|ro;J2Ebl51C3AW}e{v2<<+@f_n<{aJMx^&nES zR_?IcR%pC#Z7BBQXwYaDp~O;&Xs!sox{&u4?Dy zrpPVB5J=D8sIAr<>|I& zU4BABB!m`r(@u=Sy12xR>l~*f1F(m#tX;lgl8yi5tJ)OSF|buyFKdImoEF%{c`a^m z4NC5Sgs=(d{}dU=xldO@pEuX2vP^jr>_RiMyUue~KDu0d=HMZ9vppOZ?+^11HQ8qo zNlkk*@UHAI;a^J9vLjf&MmK4VlRhI>Oh)JnPLzZaIXyrdSiAnrYmqB*X>ROWzD`M_ zYxdo;TNbXN;MsQ3alcypb%MuUhpHc|9ZSzHt9`5k;9_I74uvu|9 z{~ReM+arCiW!?;ruXDRtDV~8&BU4Nbq!R82#uHxu2X=J=lzyx=i(d*gA(G(V9R>w{6_EZQHhO+qS!J+qP}nwr$(? zyYp7_$ISBVYEu;%dA`itEzS_R#LJ4B#F4-XDR=ZauxUF>gyfi^EKQj%Lmlr*kQ6rx z#ha+@Q#h?EQWox4+Ba`0Yr*#$_$Hy=jXPVXPWy=Yv$1PXuJ1@Vmwda^W^dzQHND`Fc^w@e|=+IFa@#M&Vs zQxxp{B|AMOF7l^(!J7AtP#e@RN*s01z6qj=0nR477-!eswxt@N2C+~uSe3~xbay>Y zssn53Hp%QE#cG!e6QgcAKQ+fyIYnm41;_PJM$2{*G!+;5a}GgHBvuS3NH0dk@+V@V z_7NY72S8gW_txqiMFACYa^|aym1|NI7Nm9)x5ugaWJh@=J%GSiybk|py(Rnoo6PW> zf8R2j7WnbYzy=rSQYed4-umCdtnj7_-w@{?2+}vy>V>!USm=rXPYg6E!f}Vrk%_zn z@l=4?%a7o8QFE7TT+7l~p$M_AW>!fw!uGa3y^f{jz1s{u&o3yNc)1$triyAeQnR@o zf05FhHj^daRwAQ`UPj^fAhR1EP5}J;agHUx{@9YIYP~G#S{jhu*#HG}MF*bl-NWCv zb*Si9X3#Jt!SEOHi7%~%gmsO4=BhKbYdNcTgyN1?v%5xc5F+oJZ}fq zo;0NkRE=I@WhiLw$pi-JiOR&BOU#=)|74D$J#m3f0Ldd8+&_wq^;eX)&PG>rgA#4h zhJ)7%eQN_@4Zo^?IEn9@N_Yt(UW6Z{*Xc;Bu5{52F&yBCrkt-7o*UbU<*Q=rY6GbC zM&804SKy_o$jz0t@`eY1yeu5@X;8kWfln0;es+nz5Lk{1YYA2^sTRKa@+rFeOx4iw z;3~rf@BaN^)62o;!&trPGYqyLr`3=vhF8i^8UpciATYrf-K66}4h90Uh+V6tq>nvu z)A6=k+v#$Llc1pE{Xi8HUY3vSPxyIaeZcNE1eeDCeK-*Wa|#yv(yS+2bA||GPhVIA zjTUu{?xa3F!2lizGV-J}TWEF{bp^&o$5n2>5vIneEq*$&Q0`>h!_z={Z9|NBOXru>V^JCWRDeC}RcJ{a6>Yr4ic+|orlfoyp_-Qa7s(jp z1XDA)A9fmov2syv6#Ovl1!oku*S+;2=T#W)%K!u|jf2+~u?%7^>jZ=C?|rvhc{iGS z&82H>l8;G&LgcvND-wr#V7gAXBLuc6KM|IE*EF$3(GK>FTlfAO?Ky(UE?6>HhfkBj`7LnZK-~O{7Aw@I2)eoQY&ec3_oNo}kJSH;GtyxL zuq;K8LIUGDWN(MPde;Ebx6@xD2a?4Fal)wujOZgTe2~;x+kx|g=jOI$2&Kpz4JT|g zI{}o<(MwuUHnfdJ%nMH;TBWw+(m*Yf{>`eer>tb3ir2)t>lGBn9mqk~Il-PJwPmYE zmAs!}kVVg(Gdv?&Ds3ARBFKKs`x5{-2DR+SCRkamO9`o!$UZmQ`JLlL*3WV6tQr^!n=}6C;?zG?gStdj zY16&yo$((5Ojt`6oZC+8(-@g0tS^#W;WL~wYl#xme7-?z=j+-u?d9W>Wqnr~f)9C# z&~1s-&V*?UK8s@^EXan7L5Sqt784oX&st-GYE7i#xB)-V2%PfMn)mc5nv19aiw$SP z0ef7wH2~{2BW|!YB~Iim#J6RRM1dixQf?UBUUa^KecP-cg7KxQCwi$@*`+l;8Cj<4!6xzbsR`-yFtU_`S*E>M;sGiy*nFcg zy>Po9X)UK6qr4*X*sE_LE-oVG<{^UxT#EPX(*48__H*VI1i&2cTf@s?d8HG9|2ih| z4rzb8*6ZcRGSZi%xNr!>u+d4e)WF#Ix0496qe%G`j3pGHYM!{E#}M=|aMCqtkuKxZ zI}$|7lbWODh3Mlzw+PH0{Lfhb^!zoM@J~I#m2hmE`NQUqQCQ&3z|Qhy5NG-(-Ysvp zF_^I&s`+_7mWov)KM_SsmJs!6mU&ngS2a>bQOE1M2Kdi@@hI0A#%^7^wNMk*LHBDy zxzkS=GNRd@9U@Qd9)Vb`CWWk#;BqK~0RQKw{htV3cT<{C-SJ+@(yu;}PK?#s;$*<} z>X2PFQV-R4R{&j|4iCrvD3+fizR#-8mUE_$@6CWCKZ-b1;#`lf6fD4;b&9=#SivER@JKr7tRFH?ed|%Xu+dd}b3yjw47X4RGFsh@l4x5VQ3Vc_#P91LdowwMy zC9+wv9w4_lS?bM@l&`*M6de)^Kp~oZ60{mO^oalaPmp{)IcUSe(dE5SJvg_Zll%HR?uKN&1BOTb3>;tED${`JArq~3#aJbjrdfrhRWiQTu4_H zm2F$%DV1Dvk8KG|2}k0@j$e?Hh1kXQ^s7i?lHsSlpwkUVix5+Kr180!>^0XA&0R~OUNftNO7ca&+|15QcEd( zV-G>0&N5Wc=vFl+TUcA>P0)6}HX%#Btj|zEI|0Nzfu(vg3XF_*j#x!3Hi~=UVV0ij z2pB=Q@#3eDG+I}VlrSO#3JU6KAzqO41w-U)^l$YoB_+2q%i6m&3o~<+q1Q`JvOd?k&s<}+Iv)aTv*OWgHqNvH&)!FXwdNNlSQiAK?!8&>^||3B z9fgjD28Ey)#Jy2Ur$Uy46P{iJ7f$kyvkTbeyPb;M&9m%rEaX-f1?y2mV9u~U{rGdm zWJ_qK6ZHe2$s~0ywD!g}4lU9E-g4{vUzWlv-kv-t%?T*s5X!qzxS+)8)+-os`v=<0 zAui>P>A#sHbbmr}aW-@FOLx(~Ebd?rt;M6aFZBlBG77hAvc^;!er~T9{HjrGOUq>} za6U`SDpkwb`OkG3AI@JEM}VD$ge^BLTA07S3K^~L5>uY-&-0(&(VwCA`Nc)oP0r|o;&oC9%bKHGp$Kd@!Yy7wm^=! zlVfyr<}S!44K6H(7D2jEi1y{m+M3v4+2T65kD()%_Ftl!(8M3ym_loF*tJpi>Aex3 zRmF22>E6>BBVSyrUdD9$R5-GCrKWhT9!(!tg5HJ!R&3?_7()8Xi@Yq|$>KV%e78gv z4m$Em`@|5b>5oM_g_1)b0rNo?yC&0)deOr%x(S><&7XL^mjNw$Qq z!VF^r#RXkZsn@==kzp=A*9`jV9s`VWO^&!WgZMxjSLCMNuA74gf9F`qhr-NrRg(+! zC=uog=wLz410<+<{o{}^>FG9p*G?-;wyzY?2(YTP)Ye3rj()MZePZmjqXMA_aFO|G zeywX`7McA1K|M*9=9e8eSvyttntmXYfh%YajrKEEaikx^H_wJ#rjo6yH3=luBx zY;R~9rIk4d1=~HFW7~cxuI#T3VQQ(i-iCxY#aUO)^R5T^*WsV^$L&otrw)_$D!vT{ zDn6uF`W+X|MrrC266ex)NT+4!52exP!7oL<_1_W~(_5fo@en**}U z%ROl<%Q|IDzh&mG^x5|4CL%v{z%6dRW;Bqbg9dB{ApVB|6|7x?!<-kt0P<46ASnM5 z4-f!G|8fvZcsu}-@%pw7&-OA(JM!Z$nZh!0r^_1da)X2D@6TNmr!CpxMJQgc$ItemWm9A8Yod2o>+8{T;>D?*Ua!0Ey^d;k z&Y-hGs|!=e{m#x}YN4g`R!ie>s+X7DPS?5*kz3~b{LZDCS7|Y$u4FB%+eULiXSqya z5LavmSB~t+;;^sUtSQTu*KR7VicuQwb*z2IS(&h*p_oKhD=@!@re!9@`Qc z+0E=#GbU`6`rS>uX7`O379Z4DgPuOu-_g}s*Ddo~pX9Hu$HP^w*vxU54bG_5%lDge z-qX~O68iq{c|=(UI2$It&N~SwPtj3Gre3QZT6@LAObsTx)fzvg(ieBWeF+?g(oGNb zWhFuA5w1uGqpe%J&6R6(c(_F-^WG}mJ>tDCPhGkVF|Y4*uGo?1r`8Mim~>BAgL*8q zNClSB`ycc9oM;D!C~-Dh$XrzF<3Pn{!kJ5rPTvzX_JE(WGR>*OpR?6oItSmD&r3t+ zJM&t;$5W`1#&aMejL+fC;?<2#{NV^PXHmX#-tr4!G!~|gQ8X?t70U{XMMaau6OhW6HeF?BM24bjbEcR~&=Sfll}ar? zh3l)TRi!jQr(i?&p>PIO#L>fH7(<d$k*-P;Ry*Hff-E+> z2@B4w75Kq6-V9f=ipb9zS=5u!Ltu5UpH;|n=78OA6C*tB3D&p_6)<%W51l1&&l_v$+?wL zJ<@b;clr%08uynG^tm&YDA@*({&D@L`yW1i#!pI_*ZU;z5nHbfRk|K89iFvLC!og) zvnjS|i)KBUdl?t^9zQ#02g|2APO`PL{q608@|&Gs%WfYoP~eLDU7~A{(#hB(FNzO4 z)J>o)zwXr3#hKWxPQC9Sab@o#Xv?$iPB*-kM-tvCdfmOjPAaNwoY@=Ru1#RwyQ+%b z9Vr=Y#odk1PGh8V>%x(m9=(r&*Bd{T@5G6(NBGhGtUKhgQZ6NSiZ~s|R~a6e=}b$9 zt+^FM4La3!+*aXZ(-n^)87rUp))$0PV=g`y6R~02ii&jEjANj2(5Y83Cu_(RDcfsb zJ{>xDakoyl-|E207x+mZEi!GYSFD`*?@~YYtKR!7+#D2nF|@y%uRSwP4ZqPlugP(2 zTGXT01s$y?z4X91oxi%my3eb%`0sn~k4z3Q(2A&`wZ8sD+Pz@>NZz5H$MjHJpnr9k<)xiHztoj8}3m{HK{Vq8@zPSTzr+g zwgBW2+5_z!Qn!*`d_Ob$wAu&=R%EK7V?lhC6rR>+F*l-@Zgg(fR-T_NRLx3%&t?kO z`!A73&+PVviJMtQ{!}ukXtK0tIKQeZx2LPc?sb6?ldOrY-}KR8Z0L=p)j6f1!Fo4= zgNyJE-#0|bgB~(m;~aL;1{kU^<@0q$h59^~=OCwNzOPdbP1D^-ZIOzTpJd~uwH#OQ ztvB@gk40$Q#N|H-CIExr771Y_%7>F64bHVZawe7RcJ79Z#P)20!QoXz6#PDYtr^1v zSaO$@5*w8%bF@;ffuFjNXDqD6+HUIgkxv#qQ)Cp`Fav2vi82wfDDejD@*8T%X}wBm zg>>jx11G~jdEDJ?;v3!VgpbYT3lLfVq2&;U3YNsUc!FFy92m|4Bw;#J{#JQ?+i*u9 zQ6i_I%r0)!_O!t<3Jkqc7T&Xp6L-+!$B;%T0gV`A5yvY+$Rla&cgM&|mCph22>k`oiLH6|<7gn44bDB*7@m!!3F!Dm}I|`V(uJq5pPhM!Z z@Qgj0Hbm$6H95eLzy@K1-lZ`?oFl~w#FarbrJBzswuB`;Hov_Ea^gs%0mT1MVZnd$ zDUf;>)`Z9MghLG_0(1{j9`pYgxv zpPxS3K~oB)3rb*nLL{gUguqRi){J|L7s=BSMMjW;KQt+C5Ih9`gAwLjeUC9=jp;G0 zO~=VkqZTP9{Qqk86AI(I0-XBvc1k4AhCq^!p*x#$exM5pm$PWvONcrzgf9^|iu>Mo zn5^y9tEJxy|4XNL$>Y+apJEGBrH^TnL6uuDa@lQluV)1c8hlynxJ_pa57J7`y*y#| zqjO$lK$0+qNP~z1F13dhiSi(Drz^5>arP~G&iC-?+ZOKP*}w-`7zVv?D`p{Vox#AN z0&z~&y1@ck7xLGlIL8qOr%af&JP9CV?zOR!cm6fs3X+Y)YUZUR#=X zAjMEdETt>2nih#A@)|OMsvtnDM8HXkx^CWNlCYS1fp8>_uuf%F&7stZB+^wk$6vln zM;5ncOKQM@XWj4p@bPrBE}g0{Kt-3qMrB-rTa$<)KuHvtKs#ap@sIO;@yo`>nqFq& z90Cq{NmhI~SE;%xe~BRPay!2_Mc5SDHQOQSkE<3vhIAq|hf_JX<`}UcKdFVa0FyNH&v_Y9)I29I+%K4g7lK6?!3UY-;3TW^ErBysxpOFbT3m zO&XKQb=Li!cFH>B2@Dca7lxHePtL_MRB_2Zd8 z;qWTMf#E&K#*SEuaCBzPZFr21(JgqacX+fU$b?d|XbLq3F#fy9(g;b)kk+=Jj@%Bk zKyFtJT$A%WEB(8<7sdoeZGt1E`3+8DK^g2ww;)v;GDAvN3cuIZG}JEpTuqF)qHzsM zyJDnv`a@lgGHKk-K$S@B_y*HxHE67rQMkS4Mjiwh;&^(7_`QgGDH4$gsbK6_BPlH7uw;J#aAdj(Y&B@J&B^o&g(2yhM@&{tPXGJsV0uKFS>hI9iwV zyw-k~!i;4QF~6XA){q-`-+p5%ThnI{r2IowUbb5LgPbrDmOyb|RQ!%5h5PDnt6G`& z$NT`rbkSmpBmLiXOq4#SbU2Y=6#gPp>K+Z+nU<7j?d3P8!YZLL3ia{%_#rsawIQBI z?uoGCLOUL*UzoqUQWUVzNrB{!kb&Tc38ls;T`Qu26lL7ycF`;_rjX<2_N;*5I65## znA&3y{OjR_uLjV#r`5f%{xHYjpb)me?hUApspgJNtjX_wIqA(NsP?g=uaAQ!Z&_i1 zfth*y@+~!eViDCbUs7Nt92|2;Q1rVi6#Gvt{ESJI>n6ppAeR`NvZjd%2%M&gPKs3! zQJ(kS#dNlS*g+TvfmH42kyGgndwn1L6+z@gPGc=@)w{F2c)s|<7^n=OhejG1`Y3KB zRD((RX^Q=asDd3bk(c0!#Qday5%VTy4a)xg1&|B&Iw_s?_HYybx^&lV08Pjh(ufIw zsG-bI&J!DaL1jQhRYAnR&gm^OURw4T(uirv?4u~C&_zX%M6_gOhf5Kf_{(Pj+j(yF zU`oVaX%imTMGL@Y(-}We#&jK5avD0Fgmacl(`=#1gFFNYQp3xTJ>W8xT~$5p|1!B zGclr&qDw||U?`^ErCP*oqWleA7@~*Zjn9is+F`H35HBpChfJ=Ad_U9QnuX|Uv~B2m zQeW|-d09UW@RV%m-8O6W=okX17myTfuR~M>$rd>vUJFhn^ngT*>k1iQ{qVNohD31A z%OeUS+YvuiR4fulm+NXnsqlW#()3tW;p-4NzV%WdVV-Ww;2~OinFL2{3D{I|7_Qg% zr$BlMSJH>0s9UQ>d-{`gsc#``kDM&$E1`eHO(8Hxk5dg&iJh<-%{^Y#XU@iHK9ksM zc4`G&2~IZs=3~6BZq+gCYpPY>Sa}e+pW=u`76e8`{MtU%kNH3amF`c@n%`bm&`|%P z+~B^xhy^w+zrap4w(SY?Z^%;s4@N2qblSOYN=RMkMD&n8jWD4rOn5e3q#70s2N_ap zTGCloUDxalCt}O~6GJjVdMqv&SgK;$5;wq5A!frgIRT<>amRi4|oaRRWmwp3_Td!8I?;=SKvEJCphqKp~d#F7{~K50y}BzZE8 z7(G^%9hI95vLxxr;ux6Lbet7+gyqGH9=4!gNAicQl4*~yr=KM{IeveNneUvU#9lON>d&tH$N0ypQsN~LAwvJ(RwmBnfU>^6iZ ztuyZa2@5j_ex29xKn(U6-hzh{6?ArmOpKH{FvC#J37#CIwWEimHFQ+}G(Gm=)0rzc zq{5S2(h;D>7(U6YDwXV@?1H$7h16+zt6g=aZsv0P$P7G=`wj51A}L6YjK&^m65%~H z@MFST^m}%XUe(u@<8SROFbF{r+i^KH6jswxl#oYFg5m?KRd3)Kk5pMJ%si?B2+;6f zMmrLr7!Gl)C}{!=(lL4Zwts+Mz-?o6^A^{unl*65YrV<5pw?)mY2>P2P`r6PS`z00q1ak+a-0C~=C6=&g~m`1~n$73Qc9 zV@ig}d%+=ORBD^&WBu^^k>j820p%^URnQGr>;$qtdMqpQayCMcrg_cui1`QxvAvYeg$IC^1jH2=YXVO z6ADa{Nihw&j%!=_R&e;%XKqsHxH-j}QSNhZB6>zg5D3Pc%CJX`{ml8x{2-eNHx?IK z!bB^y5alS19O}Y;wxcI8@Z(T!>NQ9(=AFdSv^NxUE71-iyKMT4T!+A z?AkhP3Q0$aXT@%WJ){t=BJ%gZoEyu!!0R#SFsU9M647zpRH2Ty8IsYZU_4nQGAG!OP(< zJB!vy(*qb*szjA$js`P1|Fkd%tRO}LH-W~RE=Tycs2g8ww9h$~*63vwt)^zpQbdNJ zQV<0~Pen!K*E~Jm%@Z#jV;EKtX$mf&c@lqlr@g8j(1?lRIeytpda?-?@Xp0oIA@`2 z!h(UncHwyu3`bPt(I|p4oTmjQMn(+VEW0>?VX2z;SHML8jz2uoe^=PF!{My=bYCm(c zrdB$~*&MrxXGkXyA#tqPdXiAs4IQ_lh@G^J3Mup#I7`r>&_XMRJy)86un{lhHzi`S znELL4c~T*@+3U3Qt2)RrZZ321c?1^+cW9mJPyw{~A)x~ME6U0r+KN;SPXUo+*~7aM z`^jb_!jCWTRUUSRV45)mMRc`h>NwuXXVAP2_WkCz{GK*hx;2w#<*2__6iAuD{#i@n%~+ z)4)Z%Tb6gPCB#pvZ4ZO4XhSDJLr34epT*-}I|?g&tiIBJjVYitX>+^!OW0-D*wDz} zfqEX-&m0*re9XWRMKPOj0CO~*pxO`vwjdy4Gd^E$lY;1?x zt{ZzkAHB9VEN#+J+trQ~ss?&h^)aS1w|D4f$3|nuE=*T^76BOk(F!q$_uuy4OVx}U z&}~#>sfa~k?=P1qFu1-8 zv96ZAP2knzqXwZ<#{*=8pO?C=B2`^Be(VDrY@1-@1ONRM@jug{Ujt1X{Ua)-J>1LNC8IyQ*tW=tzng7E>aI<3*F7%a{<)bDZF^#O2fGk!|@k z>#;oYrE9$lVwGn#iDR}pp3i4VVpl@s>X*ybJ&!K|);Yu4BWDn91xw$eIik1PtMUA( z4l$;pBtLK%joZC6ph|r9FW<<>{cW~35v^h2Pk4}G`$-XjqV*m;20$Q#L5!jA$HKF` z7y@MW{)I>@FC){K4ywWlzM;oY7v1NW%!ep)i0>eCkyAf?u@zSbl~kLS*o&gl|4kz; z6`g?T5{8gO4Uy3s5UaMqEK>8x_}Kj^18vB+O1VQ&-w0i9fW3qYqQN+5H7UXq_13Bn zqq8hj1b{~uAPG1OWlqrK)poCiFZ{#j1ofPwcD=z~w;S*GVGq{NH6AzvL`(O3PkcE^ z-sW7y)@w{wC0W_zsLI1dm0GeaSu8l~{=DQuCmRvPiAE-ST%}muQyh600qXJtB2a{% zOWb}bJI3|77cVO8HP!4+=z?^Iia~ZrWYuVVEPkM`dQ<10e|h&tIjx850)XB-ZGpzE z?pxYRbjB9&4Zrk$Iq!^7#_s4W{R1o;Ebs`2&cn$)HEurcq;xUL?Pe}(!441a6soyj zCMW32V>qA_X#LOzAQo87gpS$+4(sjgE%F1D*88$S;P3|e9O%uDr(mMBtK$KPOocQH z+BLoRj18{k`qcE#4idk|ZuY~^I%{ItUy_?R27OB7)Kht3Bhu~7Nz zKncoebk@?i=oKrut1YLhEe-#2#htl`DQAZl*9CYaw?PSOZ^#h?#Yo~9DUjvn8ZyFQ z!7?pXFux8>l&LI_wN?*!70pe#!wJs&8I<7`a)}E5Q5npix67NP>gdoT~=$-B>qjId@(CLmP4u)00)eguoo{+s0RsG6>J z0SV>A&g`MWv{DC(e0(cIqMB|*M~{R1=qxECsn8(M71Y#&y~hN7c5*yNgE+GVeJ5e%zfk~D2-q2%W ztC5ig>o1$Uj{n6y1u>C|CO^o7sS`R+Mm}Xs-znuVmCQTznZlnwM8$}I4e(cob7ofz z`)YOBEg6oxg@+yCMzfW~C-MXOzjxP?7-V^>BTW`8UFQA|A(OOO4;*wH$%K3kvXhGk z8s}AGrKiUgUcNs%VD`axem#gUjWq;KA9^Fx?2p>ifA9|GyzDK8q=`GiYkl^8Z7Y4H z4LrcRHDai{`E|L)AK)@lFON|QBx1Nje+YC({byhCXixr{wJPSQ%F0!ek&(DfNIi8i z)2QM20!cqUMp7=V8Gx+eF)!W@l>KlUj&lR{%2!agj76S`sJgzlD>-C2`JM#AqfRF2 zwvi1(t2)aO=xn`uhQ0s0*Eec6ZXbIkF>)V!#JCmijgT>vlsyQU83DiWGXZDU(MVLD)~c2Rnga#)03cN#@v@ zRLi#f2?GNn&-6pDSr84xfVo76tfsVpL{BAcadZ8S&83&a#+GA+A!wucfCbq?hJk@* ze-y-7sl`eVPsPD%sZ6=SH8SV)Wdz5<0r0Wsg#4e8-yp*BFo2lr(3saE)E`7H$h!efjh1PZIRZ8@7n|1 z4S#@jvxHZKRLEZ_6Q9?a9wwxM#6-GK#UDq7VP2@0N2zBT#!!iY-d#PWIPxvIsXCY( zvPE9w$GQ5~eEi7I1P5a!ItR1A(qc-HW2ACuU&xvVCs{&~PiRb-qVEe&?Y}Bifx3q1 zdMKZ`35Nl1ONy6K2zMScZqNMIy?N6VzKlJHzA*~FJ$}9CE2uwOww~)v9E7!S z@_CJY{>6apGGfGt9)Gi4w|d>D-MV|R-P-y6dW5<60c^ic%T9}*4FiG1T-K4zK-hU1 zrP)evt?TBsJwA%velGhF_6QcoI$p<-;jH!AeG&$9D>m5Q27I*X-?DqX8|5!~TC@{~a?DSV4*r+4l!~HBQMv5 zUYyE=7 zSxc(7g5@O@bz_G>BTfU|OG$BC*VGf~$qp6l4!ftRW1+ryE0~p{ae7lv5HXk8&2oZU zb|hP??d&-}ntNVvlLy;{m+6Y7HI$AC=c72{dO1kbq**ms`2=IT$Kk_C*cEFlT~>0o z>rwMzee0S;%;-)upDXuEq2IatndIvyoag~1-_^GIOJY@|RZq`s`#tAUiU!CCGMO2?kUcqVz zMY0di4O%TQ;)fv+e`h7qQ9^aHNc3r4uVET#)0 zoaV%z@XVbGMyteAL2X}jbZ>5iqfB5*WV7PsF%0v&LMlehHe1FE@;?yOO9BiiI4sId zs)$Kn?rbzawhj9!I|$#LGz1{W7|iPO4|FDNNg*)fnw$oOpnI#cX;a>^Bp-&lnYKkc zt*(Rcgb}J;&N?DcAS1U#mX1)>&y0!#j73o(J!5V0)tGtNzDRj0yM^uqRG5kDCtO?1 zj52F2m5Se|CN|+nZ@PsT3}NnqE{iQUCHW)`&+IYUSUEhi^^LFjENdUYced!5Ff9j0 zUIIB=ueN-Yf?8lQzseBl?>p?f+PP;WlYapQ(-{B7LnQ&kKln{QJ&=}Mkv)!LM2`ZK zB9E06xjVUe+NpESBSBo6_o`%+B`8Cl__T<3lkfFNxW57o67;9Frd-c5V{gFleX}%# ze@6pUD02kykJQhXs}qrQZ^ox(Q6LU$K71qa+L93Hi$jE~Np{WSoe%eV|11A-6;KM& zKmh>C;Q#>e|Nrv;KVZYK+NIqlE5h$h??J_%NF4PPym}+DlvWap6@3ZKA-D}6DD(J+ zB*`Ml1v;4Tf49>_Ocw9lXbk|E@YcN+?>6Rizp-((G_iN5D_Fb~va6k^y^9@m^tr1w zTWOXnGpoN-EwNI{oF#)kKDbhSG%#`KQCF91Pgv9JV(c+x(!^-p0)pd_lx=5%+zR8| z@cbgdJjn7QigIx4fKsOI!HK8SQZuN(Pm(JRf%g$-WP8(rb_`-zZh{$*=&S+$(S4t* zG|+0KnM=cLDxmMiTdXm;B_k#%OnkV>kBh_YGv<|p2$^E_-lZ{CZ#E^M6V?!LLsTrGDMOif5VVlk}jFFNL0Q- z^czZD8n9?HlyTNM<7p0cSTSdw@gCPJ-idS#*6RcYEYIXSt3by|1n9}lve9`$Zv-NS zaL)HvWz4O4iEtubn89i%otVJ&vR~$}KG0o+bq-X=2z)def)Y0|W7GYVO90fKU}1wY zHToI3s(&cG5c3|Rc(5T#i50mtAMh&8B}2LZF;R&Ba=xH12yjv(9CZ7A?=-B{=KJ$#6dY*La%U$c$N7qB2b@eCZLn?}@^sK2@v zZ5?TSJ!%>VkgP_sLr~s(){uwOJr~v*vN)`eCrhuGB}&)JF_S;-V8BanJ`$OXyubb4 zYz4a{FL-_L1(-7)J7N_qZ&-kad6ziR?LAyn+SNFNVoC3BM?BU@yd(^692)3jxQ=cZPLwHmgaMTps&qm0 zvdkq7V-GQHTGeVRn+#HQt~)0UG38hQ{YngKFk1dkIOEI%A8}gIt6kLWqE^crME&i) ziZ?3K8WJ}=T7^D8MQgd%IwsJ-6^%67SU%X2RlnJ1)ks&SmO192%Zk5-1Ol4ZjbU4B zkD$bQM|SK2f+(`6hnZ}~BNL;eY-m{x%d{3$UG42Ss75kR*qO~7UKC*#i8E#D%$U(+ zCRIW0ORn!Uj;jX|XZVI^tIhs~-SHn2rEe!_{86Q2=5!!4_bUl%R-$8JqG5P>@0m z^L_T%O>#D}ZP4L8&}_cP)lRF+`C_7`8BhuB?ezE(ft_LFYh73&uw7AC`yNey&8Zn$ zL$uN8a<)AE%VQw+k=qFDZDf67V`sRU$ZeD!5^U0tefp>W#$DggV!G z{Y_ub@|>2gPMVY8jn?e_Ja#TvVi7^HJl}J-Oe0u+2MrhLpb`E$aC#Z{qTfRUHm7mu z|IV;ip8yU_9B2g7$(0`KpPye#AR`o*m$E!&oe1EMgIUaNN(YZTl|B4ljlE|7NHs_m z;oLkJ001-r007kgyz17bwt9Nb|Lf>nYuhMoiX;8VE`NuHuR+BP&^6Gk16_6MK(sCi zu!0u3*0!{i#g~{+QCW2@q@{Ll{QB}RB~S-VqYE{RtMur1OTRkveLrE>i3b?y+SQphxj3v=f?6yCpNi&VuU zBwE+bx3#yI?>1d>`-mS@`vKR_+|fdg8)yiEbObT;`GR7x5Z2l5=UqkQxJ#(mAe{+`=HhB4V&Td;>IW7 z62g|08#VcX4H3DJH|UbwKci!vL?O_8zAXim`EO5+sxaZ-eo(Fw!`QvtMf!H6Bl;2z z(HVkZlmq}c%#O7Y0c?`qLZ|0mOo?dL4##V9csSw6#^^Wv2@Pp{zo)SYDr|AxGQT)L}NB92H5fKp;TTHza_n1DbN z=z#Q3;-6s9AMD0=U8ohQR$jzUMJbW9aG;8-*7#Q6=S`HjgkmJEUn?d;l#_+^lK z^@NFfRZVkWD6HONmzsp;Ty`u0)*^#+yCy31uD{a_TJ(|R1beqm zyVHy84$0yu1#VAUD1X#6-M!54z9XCbFpuQpf2D~^(B!WoHDI{e6$Ia7B}B99!ZLUT z1S?R-O?Ve*4!v9REUxJCN3}mTCNvxGAPgijg07E@By@ zyLj$U5XCAhnwV5M+PP<<3`ES+xn&=(g)SHKeb7S%xDqk7KWRQIQEoj<9$k0lE;-K@ z{(F+WeqwyFYLCry02A%b_sjr2h7sjcbnB4AZjOi(x0>l%+2|*i02MF#BmLmz!iQR? zF1qf3s_1}vh<_@nKiyCw-5eU`o&-4{BzTy1WS5j7nfuTuvHWhJPDS@1HW{i2)k&F$ zBwl^PoA7Qf+hBXB&&b~2i2~kP5kgELH%=k8f+x0i+LP!Z|8krbyS6r#n>060T!|c* zy~l`;0+0zany3)vl6{YY;zz#0F|UFLlGU%zBpK*F;olWA%R(Tu8)Q%SSl5iAcqzb)dx3l0qo$@7UvqZ> zRhgmh6pbP1ox`|3uwMrSq|r=pRLjOS^RrNQ3OD8f_z_*#-l=2PdU>@m4aa%kD#9}B zK-`%ya}Gmc{Si+JQ#tw`Q_)4ng)NUyT{gGw;@Wv*yScK=GH39lCT3^vUpQ10W)8#N zF(9#3OCpE5qW0mDQ}iLK_{eresDKHqK&~~Gli(A|9YZ0SJ0W`fct_VqnJdam!(g=2 zHBaSOTW|z;Z+hEPef#D@BsPpmp11MYlWei*xn35kBEP=@O+(`M7bru1-4w{`P! zo!5q|W%|oMFcV8#GCOaHB3KY8R*4D5kQsY_+r_t%G?n+1;icc!NpJOsfAGC4ZZ>4k z=-5dY?%;T6O}pQma_6Eh{yKXY!q}gQw|(is8HN^0!HPCPB{ub78Yjpu4T~3q*-&L_`a&1ZsT38&chxpf%qw3=Xw%K6 z_t>Ln^O?eGp_x84(k~auu5muhjb0PguCXI^aPu#KCknQ?2MSZgdh<5za|htaT49=n z)xOU((F?^rD^@hJ6hh^JjcP0D&O76Z*_msEglh37#i`D+Z7JtFqZ>Od|LT3G%&yf! z$z}sj>$a1ZK`S_}(-*#WBsRO^AVrq6#KVbF!jN?r{2=)}GC8o&RL6?(Sb;9@6{pRG z05mtA6>OmDS*P#lGjQi-K0E7Yf&d#xn-(7FOn;Y5o>_yX7lOL-McYp}E6(obyC3c9 zi1jxR+hNJHOqFiz6P~)x7_&uJy0Z?QJe<~TTOcbA-Z}tob?C?0#i}%!*}d3T?`GHG zs;gsq_-xs^k|vBN0HX_M^UM&MT{tb5CQN?yW2u zUTgA|qGj_Y?L5^bbw)=X#Ss5^qB$;eM7bq@XWM64TiOo>cwaG-SuM3ysvS=pziaV2{AK!UY9GzVL-i|0JTr8*3HH3)gp0;f({V5K!@g~ zbD6rplfZdLonFo0w6s)`$kczLvEen_ApcUEMLQI4StW@{zc*jHk zn)HzC^&C%byfgM^#X&&HG7|Kr|b6_rB--zMO}C>+0&BJ$rm#&pF1J;)kZWu??+h>Y1ot6Y0(6yANh&D!ox57M=$` zp+V!>wOIi-?YzFiZh!uTa^=tm6bBU*I;4XBnI8!^-^8TY5L4_wL0G8r!C-i>&MQ@X z7eDv~bBcHFA`Z&y1?}#|e-&hryJWU8zxVGis zF3>fb&V8d(+!?#l+#C`+*I>nWO`?gWHqNyXsMO7=-MU*bSLzNA8@$|{d3iA?@Lc|d zEQ~7Buxv6DQ~)OFk;{o=fd|7r zdob%GYGD&Y8#bW+QhLL_Kc`*gVggo1yuSM}v-F!9-sypT6a@t!P;o{d&LaVIF?866i}Em%R@HQE96QUgYxSNw((vEI=IKvGJO!U?h2_+x*1Ot zvR{R_(bFHn(e^YhUM@NnRpLp)L)Q_?l%gL48T!I;phKqcW$31r`TvdFc zIBkI)i;Xvmz^)?BPyw)ac6!00>^`w|iEs`3Lp2qi)mOa#DpdVv2nq9Q1ilS006@;~ zLGXY0rP0+jw6(I*)irg{w=<))voXDZzI8k~O4v8h)7yP|w1fEd_~*}>=m#aX&3NGj zP_UBNzNUr#5wPpuK1#$uR}0|L#ulPH?#lM$)g;zFUj4k6=#Y$Q#AYs;df*r-p2#=W zEU$01)U0xHI=OW8_f6CMu47Z4R4SWo$228sf9zjxQ|~N=YIBl6Z{lPz=Bp_0p}#xI z+&P)9;_AJ5XqWYcvug19DLr319QO!JXHyr^0xG=)zUX?@K%tAjG^K5eS|PcOj6NZL z%FWc_b>L(@xUa`}`N5t-oXL8Mz42e@!44&Em7pB^RGlO($L4mqOcOdn2{q52t`G#w zrY4Y#Iva_0i@AH0*4LAR9FOVNZn{qF6NF1q%^E^mLY&G_$x`$%V)|em)XZg(d{0+o z&E3#YB~AHucRZS#r04yu3KR~LO`ukJraw5YY#e54{_57Ys=T!Z4-+tRA9Je4H}1t2 z4^&WWxizUX9iEQEfzvmiHl}z>nGL#38KhtLGAW%xdbk1T54P#UXEcJ#w* z;nrtBBV2LnCApn1@|G5I(^qoAXcLVXy5dc%S?c?xjQ!zHAkj$C7XrRq@+WVY;BvFU zz3g;1UE4(~1`A^Nvfz9gts`!^@fufbEcYJFJuQ6RbYrZ@cX;IwofdeTzkInbCx3@M z;%$0-d{?dY%s_!inMhH4_b=uSjQj~-XnrcOS47og6iKMJIuY+wD=-g zvwNJ17Ia@k$x+2lCqp&CO}bEW)82)e?gzFk2Ier-E6R$Wiu1zrewoy}`1Y5dqiD$_ z`gX~$tvvU=zGn6kgsSLro~|`s29zB}C?+&OZ&!ZAZh!l}H}@qG-Tjc>fh0fLKznLT z>%Y9Tp0!ux$jt!cmlk}WL!~59AHHTQ+0FUND@RuB$$ytGXsa1vleoUoyHK`Tsvt@$)Q1g+7gq@n51(> z_U0WLSZ;AWna;-2G%dHf3&tA1Rf#+Cc=gYbO;m<7E~(A@R`DG7x(Id|iPqr=@sLd2 zrk+&1hLbXlP~=g0J=s(GTKE`T>8aKD>0~>-&3y78$WG1?BNL9uiQv*`S-!a--CBEj zFoF?ae6hiypf*;Zo{LP(?R%K~m=2E^L$C#2;$cd9@ln|`s!v~Wf830(#LK0g>CU#3 z6Wx&fS!{PaIUW)drglptbUHYm3S6m?`RFi%*^wdwS0c!+Z)R!&OJ9^e2xymeP%Y4HTlMV?Eyx<(&LB0fztZXR6UWVYS-|G;{9YJ3+_BY(OV2<%oa)4*)zyYy zZ>`GRf|~H)b^q)0X7AuEk>xK#ijwGDbFa`a(4f;*5;UEpv1ppotWyhS=_;q9XnDW9 zZe|cOY?JD}B!B}>V&=eX!ESRLTr~od?alZXdjvEyAzr!m-ortjaamRb7m;3~(2 z-u=nolHFB2VM<@R6hGgfqKXqOH#L(cr*LXtz%HzAT)&%~YN@?L7CryMu*W^v_>ySP=xkDBbpkB0~4kFGkKD7RL(MG8AxX(Nl7ls zyt)NskqN-4YL>TJ{Sic_<5;;zPJ7g|#o#z8p=00h{d*9x;%e7hCNbU^A5I8aQyu7c z0fnpQx?k?2P!w$s6o(!dnqUU*VJXDL|=PH~TA9KNLHvN{r@Ku7w|K z`o)Vt5??H6@ZbOZKVM<8C3?0;maY zORgqq_MTEPS*pBaA-ouQY+wiw7hp!D-$bWY9OZ*~E1T#k`qf>;0sn7)k8&p zM9(>vB|}oy=xep;rasoFbkxYS7m+qZeQUUb$El7D4ER9s%pR+yS;y?K&tK1y45QV~$h1;s$ zkwz0E8ynr<%meY(K_=NFytOz6peShdLeBcTV{^DU%=!#r@AaOC>-5WQ)Ose-G*8?b zy5>wR&`R`B*|&&TgCd@Q3eMM}&4_5rtyUFXwc?d^yzr1NHb1(l2I{>9}pk)8`43jDN^8U1;s?cZhbBgMI($0gp z5>ZZqYU%ybVALT!U!)BU8YsJu4v1B?aU^uBld39xhmogMD>Yx^s`lcwZhHW5N$7fP z)t;tcasGM}lj-6gatg3cRJEI$-X;GLC^lF=q0`7x1pC%<5c51YXBIE*L^PNS3mJ2u z0thMYFD#KB?><;as;(Z7uptkC4I-0i4Qs<#Vgs3UCd$I{@OL^ZHJS1?G3i`BRy~Vnw!#Mgb+N8gyl`Bqir$emmU6id?w4pZb>UPlu zhtJMy#&w@Qijd5>=7yc{2>MS3{gWUhjoVF;d5r8)uu7TkfoS48I>F_)gDWeYTEt_5 z);@Zm8s;)##_=YL5XHX}H39(eFXpC&RTCF_r~SU@0CFgzu;ASLC{hY(NB7)Qxcx_X zEHB}~85bwiciKpOaQldH2j0nf{HK5;sPgROnH?(V03=f8|E@TvEh5iNn z7&p`i0LIJf%~r*kQVEqh^DkzS8>urfi}&^#==KvgZkJ7H6qo>NKm4%J8YFiHu-sDS z^ZD(K8aBKEKvRNpeanM+qIo7NLlcZ!M0ZQNg`6afF}dI z=GX-*_J7i0U4BA(hA?!y;msFNqF<&R8_t4k!<<7RW@7bpX^DSa({4J->8$t)!vBr^ zm}~IPujo!EdSY_+5g6?_KEl((U@PT&!#9_*GlM(np>v z3-{Uz=T9TpouOcW%Tpdmgpe-4o4xm=xRTFaS-Fv^LC{p-zA)$8fkkpVN?u;w>d7`= zm00-m=f5fr|7oI@YrJCz{n~v5C;m@nyq&&-lev?*t9*d(`Ln{3uV1V1* z)9wuggZG2=<@`Q6z4Yzv5=->L%%|(^`FOkoclHSE*PSZt-+jGA|GJ_xCCiQ5UYS*o zIG~;!Bp#mAyZv?qb0&4?oqz=moS2ySE?$$JkL+Jt=|>?ec~~DZrmI!HTF7!4o`DsK zR9zsS77h5D7d?KMi<(8#Iv&V5dd9hK6f=bYtMPjZ)<%==z#aLj4fVhmrrj0zDM}z&u7(m3D zFmR`)}dP+W6j`hZ>!FC+{ z$|Cu*_ChPo#zW4**(FT0*d=6uIA8Dh+}H@yqsOh4zalZuv9?37D7i`MX;YW)TDgvM zN10RI-xrbG&>FPb?O%qxJr2N7C&yLN&_l}ibmeyWI#AhzEM1^G_5SFD>gi8kxZ5l@ zpr~$-+uYOw#|0?+xY~<||NNTKbHT?i5&QxvpRcj$iTZsq^L^e21`@$qrPF? zxA91-Wmob_sV{jxQ~>hTR-7)JpLya~J|{o5`E}?I^o&mR(x|F>kKEYs%MsQ9*Qor- z;{}>m|M`$?uTK<3rv+~XWon9L9Q%|#Z>ZkXgpVXWTw=Dp{oKtd{6=TvkyN+kpRH2Mx<_FKHF)0KH zY0soLKOm>RBHreU5Fqw0cES*tY%2XIW;T7@Qe67)EprSBAh;41hAc&Qg(LyBY+4n4}a-{Pr=l2UTWk^ zv(b<@ANBx8VKSIPwJR&JOjZsH{eIL|b}J^R6TmrHAkq^uWAl9F0_~jT6;>0)^y>q&MFRs#KRBfy@^1}iK8@rbO4pw7Tdja zfXUnk0pH+8!SYyNH6^O-x(N4DgpC0Tql61`0~R|_TZMo69xM`W53xP8fv(9!)sG2f zjvEnc`;tfNE%(}QZ$$qcSMhA1w~!618SOEG)&43HLh{yuq@g9H7ucY)F{9eA-iv*i!zsU=sjp{I=kr|v1jn>!1(JS#f^QY zLXmaaQT{r7ejG`kNYFxcM7-H5Y68{1BvW5!J0m5=K=Ol5(vi^G3&a@*NP}z)BuchB znwi5wc>+_s@!5m&jIlT1KrB~Z>HYdOBVnanHK_ckek_^~Fq&lCRN&Cdyreu)7>kz= z7()x#70qWji-#|!5HMhz4^CF+9oH5e*Ka~r@GAwdk8(8&wD>$qCwV40?`ZT%iRW}* zKttL}+PykuKuI0xJnKS+t4?)7fKEaa_Am=3?{V!ylGrPc>uU#l^Q0^v%+fm}?wBoj zie($Cxg3*y&))kOF(;>!q{3{>Ter;UQvjUdTvpaGVCS_@3& zPOmiMsqdbiKqc=ZWV-C+Bc_Jy%3}`BN(G;WgOHeLHNZMfaStVK2Yi1WISmu?lzeDWR04ejGczh z-fMJQ1mewwnpXvavX(+~lmS%sft`z}oAp?YI6lmiNXFWL<>rH_zV?E(-fHAItFIC0 z9Dam3BxUbZXbLjRh39)PO>N2}tvl0n!aBaVq?NCEgZG&m&%t7=j%R0}N2c!htmlGJ zl})QPc^%JYwA6%8CgD>J_9KNRLB|>BqcK>7Wy(MUfE4eYzTh8ih*7MdhrR*!CB6DL zy>@iQ*8nQv_vRF|#rg*mknum4@Nj)ESt}E!0qECCrWH7?+*{`inyFj*IJw5$@T3=D z)17M*;NN&)^s`u7njtN?q~id`8L>|e_gt`}vPd7dvJC_lbz58)!)V9~m1C{uQc%zQ z3t#@Z`28+W&;&cKJ`CIX2 z^)|RFFx8_~NkS&BQS|p5RAaqhHNbAhvUMD!VW^|pqPt41QJE$~xpr=Tt1t8}p->aL zGsT1xzLaIq&U%H>dCKa9wBYsYBP_#}|1^}|z+tWuGE35;lLJ_{l{#9vW(*~y3iT9{ zlnwn$4cP!0hpFA3e{v?k87tD{E$7!%tJPoaLV3s`yH=~O%RiF{w$5qVKlGms)U?Xm zZrdt>za_V1s`3ncYNS;%NO9)ME0E{mP{-9f=Ol(yX_{>a6ca+YT;E=LgHH)dGmI*inkUt`>yDt7Dy+e zno$~sp^b>iCz@{g7TTeHfv=iPRpnYJl8-mBLKqmNCQ&C*Vd=nk>$ASVy<;P~c1B>^-9M*v=g5owvF zzeFXCFko&8YXjmO5$+>$jt6uKh{^a!orcvP9}LG<2E@kQK?r>e%wp^mQ7B2i=0T5t z^TH{LYd-+XlJGK(;X01w_{r^8?yz=#OqM32!9RA_1-(d{p~5jMnh^<1aJjNN%$bO z)wmXO`$%`|2rM;Qy?~XBKo_p5QHI`Jpmrc4AtFltveQf?Mqh{=vy?>MPaP8?aTe?c zco6p1s?ylHh^TjJieo?B;cvHTMShIT0|o%n1gT~A1O!L9r&{`p9VY&UOBwfX*_D&_ zBBVAe+s0z08yK%Z(pwH};W7V&eQD(!`i-@XqeIC=jzP!N@7IOW;1_LLDhrDL-aB~t zm~Fu9xJn})tO(UT51@H2e?&rL96-_`f2FXJJEY|B()1mP>De2FxhB74yLL@bQp2uI zoI>IbI7PkX?H!@{)vgre5-jg0duKBg(PEt8g1r~J-%lr%%u2pK*PigCL&6tVsk-A1QSM5&#h%j zB-2Dh+oKf(PUHu+|%nzId8z48OnpyE|2nW+QQuB-N>=5<~Bku?I55RQ=NV9J{1 zt8x=a*Wf>iHd!{d6OfMQeqQmLjDF7$c{HXqhx+&CDGz(6ta%DKmU01-zo*HSkL~=S z^vN1L5M5aJ35$FRD)254pPaL+MwO%B%ld@N?H`5zi!mQfJ8%76JkQ($_&Z`g!os|{ zV%G-XKW{cK`G9?$pxmh{d#^6vR$c%8+pZpj@cAT3i&|-Vb}X2B*PW;P2+iT>4r6Io zOWBUiR4H-iFzVAR!M73Uo`_qeE7oyo`rt6=^H_$&mBZwyCh;warYBMs;d-k#zt5W1 zO^k@xcTSMbr*VIWMmm#D@CbrkCcH_o;O4|~;_87M@91XkjsuR`V_v-(PzJUUb7VfUrg^qS{;W)-l6$BuWA{Or_n=o*@Z%Jz)9=umU;%pi@4}eK{v6gl zrJPPprsRB*aU=1uX1JviQjc%2ii3>(wD095<0RSb=i$~0EoXlLn|mrT$NRV+?A0=w zj{UyK7ky=XpO?KF>&ZgDK+>d%lms)~JZWwsl_;LRmQHd`H=DPPQ1Prei#z~@CW9-O zpq;nfbGzJ^=tAgIQ}V~UekR=C&(gu5?1uI%j>AUJ&(wd1+<35s?j1`3SVv=$OBpQ6 z{aYSJEN{^~4eSyX+PR-R(6!6XCxS&TIPW4z!8cj$Bfq`AN7Z~&Vjh$|?uRMna&cHzA z;yc~Icj)vxVTG|~;i_kmMQslwdmAI@2GlLdCyWz0|H_Ylqe)*ew&So{$<6<2|3?lN ziUyDBFV)dU+QbntRVgVSwFB{tC;zmxeb!_1zoWUT8#`3Q_CihM3pOWzJ7kj7svZHO zln^K%+Dj$u+6tJ*<9rv6Ee(N# z96$Ux!3V7r!M7P%3cGgj!9EdhUO)WXrW6=`JF@wFYNdh4cTFePhwHb>Y1gtvU-{)+ z%`15VCXE3D{I@jKPl~^uM-H$RqjI%iGjB*7v6#dVcV$9#Tg-|z@?)iAtuoACOFVjKvRh4Xp=%II(!oBq5D1ApzlzU2BghiVGn#Kw*+$mM|h*iXmhIU(9_^ zIU}7Pr4YhRYJ%?W!WfK+5sMx_YS}e{?ohg<{nE1BZCc%V-F@*f@?F!t^6vBNK>Kp? zu*P*A)R;YqT1*1~Fv`BVk%g>*2oPqKh>Ujavtzb|h-q&t#)YMK@G)LV)d2*6-w+tR zR6e_T=HJ+gj|(5JZu7hmC8-qaowf6TWPW!JVrD!OP=UmtZDEt_WBdGMcq2nc$Mr;U z-SE~ppkZa>v=hSt24=9v8a39*Jhc*|6k=pqlKKM}h5Zqjg7giWn=2@Yl_u7*vTNGb z9>U$v!u*XD&i56+VdFB?s-dCs_b)7O@+b<({c2*|L6wLy?6sRyuIG^NZEM!ktbDK zt1UHql7y{M(|ExGzq7)RFm$YEM7s;43AfmM44F%3N*&Odd3 zKgopD?sv&SnEZGt@3VIuyEW@nXJ@DL@j-VcPw-@)Acs!Rt9BEj3(?K;%c9|wX(cl& zg;d^Wd4+G>%^A9*xw6I8$44A&Ct1F~_RoN^y9BCbCfV&T&4s$KhG{*@ca>s?m!pY~ zjTg(POAn#!%2U;UvX$t=OG0|dWMX3#*=6nQdyvPJ;Sr?i%Xq^S6WD@g?hmyGy+CN`pf%Ro#)TN#|*_<()eHNj}PV zNPwW7sU7SeLA~Q4p1pXaXJ&E6J0WGCa93(HRSm<~kj*K8c`O#MRQ%p>M{Op*5+xZJ zlLWjqxhYwspK!s1in-u1d}14*$C3e^VLhOjL@CLd;c@`u|Gj2ZWRB;AAls-s!#-0| zmMxD^URt|vTeO-oLFsjYhlIYmj$x6io9|eFD?n+FkD}r!YOY}%opMklG(!#pEg8*h z{aw+VEw7p6>$rvYw%x9Wpnp89?0t>-Q5=l`*YN%M{_0<@;)xn#1S$}&gZtN`#BXjh z!TJ~tOBIfgWkw2_!smP)(+BFV5a)bHiv0(w_aV55c6oMomf4Lw!V+Mq?6S-2^JHP@ zwv(^fcS<&S^BRi9|&lC5OjHpzuq9CQ%mCeSl#tQ$(N|ZTS&G4zq$Ik_d{MI zy2a=rGRhcZl{e)@Q+=obXLLQEp)rmtCo)~#a}9TQ^x$I4!;M%SOezD>vH~Jk-)4+l zejPr0))}n$9qX24;_%fR_cMNCWsk?Tk4Gs{Y9CY1>7(|=YZU2enzJ_H$vBpz_Cn*K z>E=k=uve7?h41|`)kMu*p&y@hs3g^y$$ak{n-*V=4!raoG_&vFJU)VuF5yV=rBFER zF8iw;qXbrFwIXOlyb}oY$;jk)c1H*JJtm$xR(yQFz17AW`_hm>JRkPWm{QqXM(nR^ zjVhJ_omdkG%*vKu2}kdyCd50o3MzDO9BSRYgYBubiNmuxpvZz+FiB%4sR~m)pkd`m zv8mrvJw4AI2#-2~@_y@jIR}AXpB&fO{E9gK8lo{03r4ks(FD~<%OH%+YuH94z`niT z@t(B1xRqyx*7a5^5gILlEy5u0*kWDaCM{I`6ILv%bEAH@M>%G{1kO0+)LRV6#}y?a z+4As?4-boGy4O;t$Z5MuQA+WK&Ao$keqg!yX~GWD#`kx(8Vs1*E%9O&_#2ma)+32Q z1W!C&m5FaNME9E{@-deK!39*}ay8L6{(fYc#fkt8ahTI!tKlKGADg>qH{ILON;o_C z9NPRJQHIq-=7Qn^;VOyrw-nTboRg%f#%jtq)UJj*L*K z6egXh%WjqV+np$%?GbvWpYV$LTh&MgTqSO&`^PWNv1?gf}X zMmCIDYP?9AzeA(U<)JB193QIbV;b?IS6jJOOnKI-NJx`=(BN^C{Vp!X1Gr!PnJqLC z>s_bm@aNB>I4Vn6L3nmgJ^mmdq(Cf|xy+^LEkHuB^BzS!^Y?`|Ud57;SDj1 z1@q=O7yX0?fI>}5YGjl-IAGn9DsoRuPF5bG8N(kj|K@DnFNsad{A_wM_#+O zyi`-Pb$!#?FKT>=cjHmSw@2aLIv%{~N;p?L-1T9EPh-anOB*idzW8Z{K*sBm6my5Xkv`Y7IMWlkqNF6z%{U?glc?4v2J0 z2j!bUN2t0jP8)3L1@*ve%rA5E~)_br9^AN6vJ-+d5ZE%jGY>^S%AQM303meepUZ?SjMk)jg2-#je6XGPy2LY zJ-VvY)afKl=C&zBLCNem{PKjxH0b5}09X8W{aTe2uI-9EVC^y##Qw1yQ#cN93VWYl zKy3S)wC$tN4ZBQG{S5m?wX(Ih8h^ZQGvQ$+)fjzF1 zCcBsOXtRtLr@R_Q2~r_*xP9v@{;=&&^JSlbQ+w0Uy%fw1NHQSQ=U+eFZumG?t3xu4aM`q)hI!RA_U z-mxncZi&?QdRna8VrSA_wc-ex5G6rNrZ7@$*1|*mGT}?GWX{}<#UNox8f|631MeHQ z7FqHct_Jvd1xn6u6W-~$`Ju^58cDC-Jw?%BR8q`JIQ z?*rVQ=G|U~!I8&6C@}ECy{lv`>E;&hdJox0>##t+xSPRwLxnuk5YzAGeUMtw4wJ1+ z$Yr+}v*#Z87E6McZ>L%+G3DM2ChD=S_0H7Q$jIQG>Vh7==S~MDZr ziaaOOwvpZLI%yf@A_N&?ld)m#>hhi3Hin_*Fn6EwRZ8`+wpS4 zZ99avHJ!zng&GX0-rQA0-QytQwQcddH+VwULy%se34C8 z0uR5?4Fd$GTC?!j7p1)Aht12%1`^40RY?(uSTDC%*$zs`pP|2^WIf=Dexg`YlK z)r2-+A=8IiyO0AU5)6xb2HUmSZ1W{Hiu+qgl;x=1k|dk=0yAKFK00W$Ch}|)pq*am zE4BU|PS^SH;@e_%YnO`S(h_J<`4qj|*9i2v$d5BpR1B#0L@C6&$eQ1s=gwxbPNpqT z1?z#p%j)SrTl1FjayqratF>-ll$MQm*-XAWD0J$zDyq)D(5VyR*46Tiee@R(9s?=` z71(5%3J!R-X{>y^lv5COSnt?Jj|&fOCMB40ELevE0E0a8jB>``ay7l# zPU-mi(T7FMpWP>&S$^mUA_eo$(gY^Tzh9(S< zY4^8(W#@>)TcArs&#a3Tpx-U1oAM-r5G)k0_!$o_hq+*2Wf(-4iq{qcXEyU1!t$ znOlcv-3H+G9r57^k7hbX&D7P)9P#CT%CO2#-PfpoyJjwf zTN7PPOC;vQC@HkF9{xt|dvW7SO;2I1zuJM!D-2{auHNPb|5hx)3I~NLOnx*uxIj$o z0gu7z@7kk|U5uEPR$no@V_wP^DI0y6YZz*~&-+4ypP(V!NuIL)<~^6nnMTa3pXGBd zlGCXS^*zjn-dwV`TV zu2UkIN;jdin{Pgv6t-nR3yt%4ZhVzWGWDpOwLg*DO_$0YOrY6oO;OZSR2A^tsB^DC z^^n{B9XTXVB)Ry$Rh+SC;lr9kj8QypPsUq`EN#i~uFNhJZ-rdXuVcEU-9LG+uw}$f zc+>V~kOuX}mHmJe@)Q(|jpk$K;;Jgf;x)_xq`^AnHdMOClRR0prz)MZTT4Bd<%n`+ z(hZK;qRI;TS{WAGW3eU}?3hZ}_Uf@lk69c#E6^swRCQ+netkal!L^i=reEH(IKK0s z8$%qY(3_$8$HCd5ko3#I4YOCN(a(Ydk2w}chN=WY_s{}#AQ7yPct4Vv+^~vYD29~s zwU%Tci{)R)=@?D`9|KlfkS__}IOUR?bz_l$Py|s+<&7HYO-Ks@93~WSjqQP@dxIC& z*k?AM{hKjVL_mT6;WLu(tJx?GkSt76&YF|6^a@;5k-R+bH6bXJ2dUG#Nn(T&{}UEA zO2R@2jYpIxKIo+PUddA6oHEKN&ayBj0)~N+uS*jwA&7tp0WG9w#`!Q54V`nzYeXP5 zA2ReOr_Z@v6;5zOB3-ASN@htZz+%hRp#>U(nZ{Kb@xo9Nq+ap?s$ z5@t{m!++xD7>uOBQ5-PtuB={JXt((!Uc+I!p;93&*XExvX+ktJX<-7Hvv%pE^k~IP;mq zyNrRbdy{2+6~n$2LT=+6a5PGaW*HmJ(;zYBL9w&x@F9KJ?roN0Gebp;x3ijZp~t+T z9%#Xm(*Aff3w5L*O;;8)_v*j$0WOQK7Eqv&qK1nnQlq5HNDrtZHwKC7XOWzGJRI*; zsehue-w&BIVW2`(&np>5h^31=S2fX7N|&b~5*sUk7Isu@N~EIF^_+B(w&RRKCVihDF6TyZU3_hgy6(v6`@$8hNyp^D3Mvh9g~KV zZnRzkokoA-XCd|DwFTZtkH#nw#cprIGMh$WQ-wlM5)T?wd|}606_n$8UDNb zjpKj0-%S0g7!Fu}{ft3WDG*D;X!s0juU30DNHZ<%Bs#*n&EP_X_``{$IuptglJM9c zdw1fJtkz_f*R1VN(I$vZLmqtW9*^HkE7y8?yU6k-4es|2;9Of(|CM)M&ty}rbmwR% z>iT4D?Zm4TN|*$cFe)I(nqPL@;9>6vNg6wxc1#>K)L$~UrFAxnxfX{vGrQci)=-wg zl%z3nV5VcKN@R`K=Qm1~u%JUzw+Ipf+y{f0g8l+Rt?s=H=%Q>ax2GG zyjx}a3wd>7azUz$D|9>xQ4*KkjjYLZ-?YsjycK`nX@5nKVJOF=sh(~2;I(RK7A29= zyBx;_6T#%&{BDmKm3iKT(H5^cg&}<}z1~^C>TSFdri~8Q6ITctoGJTPV(?$; zsXit12H>V!wO)OC7mOA!T)T8y+0e6Qi93zX z&{fj-F)fNmzpkRZZg6SJ@RtpJcBvRiDX7Pqv{tgF;vN4=f;mphVsTn$=V+_ERa)ZU z57j!Z1J8eAeQ6i^psfE0WbZ5maI?4K2-t^=uezZj`#m+W&N!g)JT=W0t(2&^Al9_IAZ6 zj-m^P=J?JueEb7Zpq5YdFlqE}%dER~^Dn{h>f72bC#Mbgp80?yMB1N!s|a~=)tWmN zpGhhRrEZ#6R&WfeV0S)I=t{S|gP1q6a0OpT%PeYU#hjUa>aZeXl$5+lc*Eqz`Hm z3YCX+;N;iYJeBccP`YJ@Ll5`=RzMssrSbS?Ih6WKV_PW#m#&vV+nY9F!^;aOM~tfV zZ`ha2=hKmWF{6L&mnQQ1*FU{swt;#}$Ke3qJa&s-bq&1t6uqJW>msa{)He+j%cl;K zt<%XMP%Nu4G>{t)s9(;NC=lF7|AlT2lH=b@a;j#aaT1V?R6h?Lp^nITLXv|bwouAe zYA5=0MTc@W-!BZu8x91diD!z1vUwW&Jxx99m>!8%S*Lz-|Za>q`aMf;4y<>x-4a z);p^yn|sZz+2CCn!Yk~EzNph4m;{+=oM(yiRUD)`rqfu%iJkSr<2gXp_cS=~tiDDO zjT;mfU@Y3+nAWV_xzy(G-Fo2C<~x1iob5P;es5ws)kdzesk1@2fc;bTw`8R+33*CL zizcG@EajeD`HL(Vcg<2q1Jpn5(K=SS%xK zuU8KiX(=VsktpSGT@?-h=y$*?7tX%h9Fx9J6D~I>pmoUit!G{JBQSL_yF}6NEsL*{ zx@EY857BDdj1`AlDxfXl1=90q%Px5L6;N=feU?>NAWvW`uNm=6*-`XiO;)1+(}5%zGg1yFLAMsv}1l_FG#Uy_2}TdD6y zds|aNdzc^IqUM)E_Du}W1buvFmw|`6j4cvaz7&c?Vwu>_Vo}yieXQ@f&4%QgW6+)s zDlldT1jot!aU@cdV_r;VU;$(<5qtJlogP`HdhFu|;XdH$T}aTy`zHIY2ct+z!uZ;q z!*laPH`<5oGsV7%Z!GPlK5CDVnad*@Fm(LaQ`#G(tya4&a6k%Yt^t0I%?~E#$gQ{KPjoo(EfZ zo4!uZ&rXjgovB6^4M|;{KKAxLlD}NUn~l;QUsg^cJe^otI`PUmVxpm-ztV&tQrH7W)U$!IjYhchiWJb`2hl1Va)|BP;xN?FiB5GOI67jsm# zVqbI+Z@bz*$Jyi5rlc69${Z(jgDRF#h}3~`fBF3kL@OW<(zR-Cu?N)Vk`^@SW7Z9WfoGfGv6wsmHs7zwUNQ?~S4hiQ6$#K z-J|%pF_J-uk){{Mh~r;KsHGs!RukWRu2*#D&Qj&l~1cDtrl3!8{{%gPkiNxz7MMhLMe-nC3g)`DLLqmxlLA%P|J`O;KxO8 zCm1>AbR^M?{y&Vp1CwY$v!>g&ZQHiB+uH5!-L`Gpwr$(CZQC}dzd12+&zu`K;{JhE z6{~VpWv3?4~TBZE637^DU9@o@qr?}{xB;aTwAfHfa>HJ zysH+gvP~^MicK>Oi~?ahDUFz+Yw*V%LEh+>{17Jz?mWn%_+>WW#$~|)UGBUq3h=#F22kT^w&=PdHx>|)Qj}jL0^CsT$5JvXT`QzFA|lt z-!7dlLbVxZ>gFtEs_*E7Ff-3R7;)4iI>Cn(kF2DUX~Sjuu20c2x#N7DTUJX)Jwu?o z)b+3?WkXGhDge1@+L z5{P@PN&bNG`SL^t@u*xZVMRn<&B*{9Q0*qo9IauP$<*tP2I1LlO?5X7eza}& zwJbwhC`$VH5sDn!0^MH7Szy@|(xzo9N6aN`<%~UyG_TiH@PTz&@NCzN*!(v9_%G>O z#HYB<1yX6(}4>?aL0RGyO zTvu$ikM)=jrEVDfA-+xf+9$Dav0p#84!qh*REAke8)ZV++=hdS=~;dT?U1p=dyi`) zd63v?-NG1;PQjS$rB)}%l%v#1x`@>C#354y#PgRpzv{n?ETW-^Hwcg2g^?=j2aqin zKGh$sDsZWf6^c6AN*DqDF*29Ol)o;Jvk#D@*Z5#otT7DPvC_q_7>$}J&;ynnRl*pe z>;h}()wVz}nF(y}7lc#gc#Gd)|4)teA9375SYzeQuVqY&DB%C7v7Buzove)hw=(YX zpOwP~Tl05z+6TV8QHdMo1`z-f39{x(v2*>DWxTPzOG{Q3F1)rCTjFn(g?lso{o)~@ z$aKU$%2LIZ=3HDS0t60z(&u0c2jRD|bM@8eaeFbca@vYha(Xbs-|5j20hTea$A5Zl z+v-vq;{A5F`^6pD!s8hGAQ6`+!M1m1`}#fr02@7FuhEGCCnqP@B73Hij1LRX2iv2j zx4LZ2XPsPCu34@WFjsI@K16@usCcPlpFFh75q+@^oOnMrH!UE?=CfTxWnR5Iqn3iR z7M}6`qHbT$ygEfzl%1FXZt|B`p#Hm=nc^v>KKW4*@1b+{XnF?RhOMCQmWr^)^83@= zfgM}UEiLrdwfyP=H*$tr=2h(mCi+q2q;v9KrLXI90#ge-V@UH-KPW*YN4BBUGKpVC z$*r^CQG)2n_{j*E6uA~njvadJZ`WUTO){hMKOg6?^g0BuCpYR`*cOc$_xS=jjdN|; z;$6Iz6TIuP31cRXnHIooyZNi}qKpDKv%&%83Y11>!-qc_PS9)G1P2uO3il%0NgzV~^rFMiKwD90B_`9gON!0J+ zT}}t;omXCjmVotGzv8ZXYkybuugUEnQgR9fd5R1n>>Vp>qNF?t75`d0=X?dXOcV&H zK37Ua&qOm7)1X02^Ym{xE9>T?)wn)~DcUGq=|U`ttm2`>i9y9lY^9wNt+L~fQ^a*T z3#(mWZHctwH5&lE?5y<-TlFUT2NuqBCHC3;t>a{)-dw!ir7ObC8WI>Oqa*l<&hG_B zAGI=5ekD+9;L|XnWpS=Qf3s7ZelDYWmZd8@dPMr#C!<=U@nCZbex&?-8Mx+B@nsy} z_I-L1xf?w1g%Zc^phcA@4W|7$ARyQn4I;t0o{J(&OIkxqbpay|Zr)tq6=j?s(QgSf zk5Z7jd^~)!;qkL>ah8aWLoT7$1(ChNpHFsj;LuvYuub`T!La3;D|g)QFO4*NWGsMV zT{{H1mlM=S?yM`e%h$0c-%?79*~&gg7feq18A2;ZJmJInyzUJPCQaN2ZX0K@<*<@v zV@l-MvKPTxo<&aS<&??#{A9;Xel4z?nn~*7UDQ;)-!Dnu=@;K>kVD>l@gEH9Irqqy z4NnYSSkg)_QBX%PJ-L9M%?;xl1M@OvsAF0umtUHiKe#}zKMTsaYdZxgG9nw)^ZGy! zxdXIPbeA9Mnw}O4|JmVdc)VW<4gGqJycpy=R&1MifnCXEE`1lzWS=8jEcW@gI^7^A z0RN=8>p%nAs7%h+3&?4HOJT#UWdAdZlXH3-CRy3e*@<)Z-^9H1c^{2&?0EeyX+bXP zq0!M$$|i0h(eF7tg2`;6{h&KomVpzS3aP51HObQGD_`C}pnBpnym6z9VLg2!6rMV9 ztHSS;fiR3_29@;8gwzFeuNeUf zzR3vY$VJ4@yTLcu@8PLYALC)^Koq-8Gp6O#}oZ6aB4vv7ZuFRVGTgP%m- z5~3VeE~aS^T7jn49TelHXn)Eo0*=FiuL?yk($%Wp>E~O#g6<03UEQePl5nTMi?4OL zx~Heu;_3=vCDXUo|0+f_k@O^opyWG&`9K*-xLw^;3i1L5&=XasnXZ~oP?>Q7Rg{kL z4n~sUXB`p}OeQG;Mb&X>2cQaKE7uh@D7PRNnRKH4@@Aqpj`s4P&&g+=Cqh57|5ky4RBNb^?(&aB? z0^d7)@QA&hV8CAud(*7Dw~|J&vLi60x`jq%K2$~&AeGAUv~TZ=0TaDLqDjM{v0KG@fd%=80aLks3zvgM8L&H9?-e?aA|E>$loy$ojxMJCB{deN&H_cR zKRXn?c~_9eO(SL19$^efY(jy-tMj~P71N%fqEKXCXNuE73W%phHF16YWTN1>r3z zV|S=0eK=|Y-VzxRS$Jw#loF#+76F2K@-{P=b(c-QF7T9Ysz?Yal7xCIqFu`}K2f|d zcHJLgV~B$|bl}rT^!Wjnc@P)kAuI&D3))8orZT`b?do}|IOn3{+ElWT_!9@4*Wy>g zsl$`5@i!I4>;U3zfo6+X>g0|Ra&Bewp5Ep58(b})5)eAy?pU@y(HYpb4sKo{*~CI6 z1b@^yu5jPeLFlx=azBWqGmy3`R^yPDU6>T|xe@A8`f163o{MkRTmhwYH6y*uN^|p3 zfqy-H#1W==t^8MClJ07szonF{hh@Ocsp$?_(Kfv{g*D28*Qa-;34pkL@}cX+ZOUhcKHL! z4E;_Vjz1J;F+-bX`>Vc~;BeLUtn>dch*;*Y4x$JN9tmd%h=>7IM$LK?JpJnxm{|b` z`Rg-wRJYv(Ux0AJ3bZFhBN!H_)e~Pw43?di_yl*B+$clJ4bsO)5}iP-#QRSR5yFJ{3s5i(5otsZ0V36u2hFbqrik7R zLCimJYjZ{-xzq!!zp8~N7^um?hR5#CsY#h{WHX6!khgXRWf) zr$HyvcI$kC3wL$OI6)JP&wA~v58<3*nQ2(>5OegSb%aL{Bbg1JMZ_gWXazVx)2jox zKqL1w9=>(xB_wbJcA4=Q#Q?_*W2FB?M9dG0kUXs4n((xJ9b$9robpby| zsh-eiYM@;xYXTB7e8TELH~_cNp-ZrV3}(9K&vDzLBy!VVHJ@N|j$1o%uWBLV)Edq^ zLdHj6nLvGvkSv&C{+cxrjaZx{d9xSMHN^xk;1e)h2pq3TLu%@c@wx$pbTq2d0 z&2I!<94XxLS?HoZzuCAUx0a*;YdtEkd5en5fKBr z7-kU*X<}<9rUfd4pscU*lE3sOt^jN!uHXSM8z_Q(F$|CgwZ?mO1#4C65D29OwuJJV z5c{gS#+tUfGDW!=ZKbZ^fzS1*ctl+XMGTcLhhRQZO~Zk!^SWd)HfJV1DT$oQtz8aZ zx?6HnvOui2J_6KqCk=alaUEpFVnIxWgYe>^Ui1ukFTRA%71=2Kli>}@X-CN`Icr}8 zzOxz#co1X&D*)7x3u)*9Gh{8Yr| zDS=V>o320tCwee2kzcW?r+Gm8%N}r}%0loF4M3Y3>3Cuz4t|jW{U;-d`erQ0glr^e z>F(>N4B>vDf5r922i9Hqa*nY_0h_Q*UC7^oH9mG_y@Y`wh@$So&_z?_@%=rm*sXb2 zEf=a@zJR?fz&ety;nkGepv8fKq#+}-1nLQrk?xI5CHKH5bX&F^bZxA>TTbz&@ZE$Y zkumqN58N2CMWp-Xv56r?%HW^vYBX=|PAqa-*)t?cYyjfS>Cd22IW{ifk@t|xi)@5& zLkad_hJj<_M1u7Sh@N!|U|P0Q7}{EEmjN+dD!vGX#ia>+j3q~yB8AIL37QJwh!L@* znol`lyfcXK^g%>$Jn5x>kP$e#+!F<+gsp;#yL5a3QWD$+NGM|OKo2k=D28DW$#?W$ zi1J-Eo4Mj@&zHG)RsUHr5wL#y(nA>Owoz>aGWwiFPlv<}8a7yc(A6k}ckap7yqUn* z{Kky^PdGy~)&TBffYYeVm-xYOro;w6%sv=I;!`16cR5)3#JQ%ys+aSrM3;Nn<;(F` z2S#;leb)lUanyQn800W?*o;IlOghX%qZq1)@G4pU=Q}B$iid`1vZ;zp&s(Jb&0lv53&j!DJM*viXTC+7%mnlv~0vc z9_+kn+YAQr`#}HQ=ZCP4xNl!wpkjK&5Da9nD7!wA7k!$1abX;EC(UH_9a-j2Hd3chAr5eUv`sFwV#Mfc#g@Jd9J(ZqPHkZzmp_2{2-Q-Pt2*f6jG7_UW z<6&9;JYy}9*i#B2r;!4Z<>tPDDz7NPldYO-u=fC>P)hRHePjb7)Df23Fnuy2p&=3E z=iZm~)}|g1(U6^pcFi+*_)!)k3<2UqsysUZjwDIO7(^=8zgvpEPcq2XPcwjS12$m+ znyx+^B9qs)%z7vmlE7&19QW$F=z8K9x?5I3cCd_jGlu^2PNb@yQ^im&j`AUG}Cs(touyf4eUt=QLyI52=trD_m> zO$d<`qg-Lh3Q`{P}BZq22afX$K$hPr)l8fHB>|4ib+ zn-8&#{OjvgHy^?S$~4~0W(f&7{KVkgcp=5W8io}^uaSMIoV+|bDmYf8b99=_knxI#^mjgOgOS&?Lf=1h^C$9=ot@g0tWtQ(fgPB z6JD__%~1Uaba5_M5d{rWL)i$^K3-^L&-GqGSMkfEMR`V$@DOuTA5h!yRyofv-fxyn zxiob8dvsdxRXK6KsQubrm2TY}(%<=6ux|Kvnm?rsWcY2u^tK|Zx+PR7Rsh)VEoh`- z)*Yl_edRw_#dd3B4*n(dbqoqp$~WGAJzR4B;D(=UrGN|NW*s|jgxc^fE+HUMAk(Sb zqQdTc$8bCh&IzBE@j+nH*YQTs@;c2I>iNZ2x*l?Wn>jlS3cDVCTUc z7Z|}YJL3q{y}{@8e0O(Y10RmR%e%?tbs@y1$GVa3`_lJN|`O`J8<5nI|XDD=oD0Z#Bj$00Q7;fZd$18$x;WqGTKh=&z znDln$o*0NC$N5=pm%ZVXsl~;QAP=#+hA`gAGGc~S>BG2)*XVEPvveLF!Xq>mZ#+1EIJRTVw*&)?|$ z%Xj~YRpFI}Yaw0_QEy^{yR5ba=<&ZaR1~a(>dE{y<$OD$ab@>z8>$(tIVb#Hk*OaY zsw|oe9(+F)hE2UCMS=v@HX7AbOJ0<;W%ak_;l-D@=$%# z;W$RP*wuP}zd1GB1XEUDZ|4kZQs2={+b)>TEdtd+wPb?7&$Rt#EbHH~hO2Dc-7TE% zos8044qqv__DOU?^~c;bpBD|hovz(Z%`DEx1?5}oOoxb@aZY>o>8X%?VItWWP2cOu?rRWN zjG3Th=j_#-I8~T-iIe+1z8>2y1ye!e-*t;$qwJ3c7tuaog50WglAd_5$|n$CR8l;Fvd)nRH~w=`5h zEqi_4K?ktOr@>;O+=!n{;b_h!1=!!PL07v}DIZ<4&7`uAxKR;xKZaicXCGQyHy499 zNloYU=KeZh&C-#$F;8Z?!f_e2Pzzxn8`qhb5W$_;QQxc7_?`|vNbb?}Jh|7Ikn(Az zD7~SywiKy?y*^`LwEA|o{603T)?=%g(HLLR1BRN+Rt#W3pW?V!QRZ-9!wF$-d8Ny= zO1$CbDz%EV5!z@duu9e@)jFt(oTAoK4YD<6vz7~()fQ*Aser%Ebb_MZEnz>L_NXIP_^As_4Y#+yujH=GLO_*-vuS%+5N!we8H|?@!UKfP>prnXi z+ji}KIeUq*3GW!_s)pnKy`|*ZT(T{Ma|yp$+|z{W#H$v&2?gI^8`Z<|uFnV4P>@kl zb8sh*aM33o#6twSqOsJxiD<)$2L7Ei`stw-4%=|EXz{5aFK%%(o=gOM&f_O*ppJDa zEXRsAG#%wu(xjFq^?=kRUL&OL*oVNBdQWS&)vh@QoVoQ~mV84~KnyqU%(0ysonHmZgo!&ePn7>Y5C$&Is( z=Egv+;Z@$zdLvmgFX}}>aOO}4HS3`zhb(N{5WI@;pVT}PRdZ9WiI? zl!`qLqeHZvqDYjfm|f}n?`132YCWow7;L7tXIyZSDZ#?Bvg3b~#+3B+|FqIajJ$k< zC>WlkYh&7g5EIBy8KDRS2q6mbS;6Ceqs8|K?FXPX`VFU^w-eH6Cb~X*Bo?%Xwn^dk zZNDD=J`mET4+2cS=AA&RI7ze_FAk2jYGgHCmdfZeU3E_r?qihdEbI*X`DGnnp|nrRjG6YzW;lG7Z*1wYNyyQR{di$Afo* z>Uzz)I)+Ozw^gjV!wn0I&fHam)W?}UWrHXey0JrhTzYz-bw1t-?9^2Bu~odzMUT(h z(FOJmbd$)dRQmC@YS~dJ`$fxl)b0I;L^GLx`XtEOIEYlKdb`>ts?fu{nvs~+83x(I zxesc+Gh5C}yvi~*?-nGrW{kDpSY?w-K#RSL-B>uFuWKMfcwKlLQtAOfFybJ=BXQ8z zadOyiC>Zq9b}yukdaE0`j2OwT62dZ5JTJd{%lfQnjl_S3fC_6aG4a;@I?A!{v(!iV zj%25bAfl!UVlfUjI^h8JmC1SfoAnC!*m-8bj_6I&c0(I9gb<7O8*sO0UG1(q8$OOo zZPWor+Orm@u3a?fxj09EY38RyvHF}ND0C&-bIvsEGjt@q9%U>iJ2vANTU}UoEKQ{0 z{oMe-`cAa>I*MY6xy5npQ zz>X-SYkm?)LX%5+n9FDr+wjluW@`Ypu-ul7WB2{zQ|L2P6FkK^_hB_cq zT6Tq1vK0FES-%=x9}cZw;9g!2vo2J=uxdjdG?oG+k)RZk-M^F!9OsPGnz3a4y4YX4~gi|o))pKVUOe6HsWSK#*y%3 z%`Y_*OkC)GW+Bc6uigsL) z(GP|pZ=(;bM8sJ`8*?4;IEAXhn>06}bHSxVc!PXRPVsG}hPTiC+dfjR!p{&8_gl4Xr7^Fk);9>7z0Q0>iE)&8xz+t3Qn-nlb3Vb7h@i$(XShB_G zXdQB?n^4>~W#Y8%F>=_bz<6+-$2f~z^yTa~III~$K{ucKJMnnj+UztQ8N;n=&AlNP zcEG^WW zYOB8EQ%+i3liO301Nzlv3&o$y1q+$-hj)}u!EGY;Dxf0T zD!gVgBE*H8#T*ZGnscS1LG{?~CciC&=y+KXOuP4V3sg(Suo|>9DR+*n$fD~VDvI|c z)Dyj@H4Po^PN)Z?HD=da^Oc)q>iDC;n(!^pd;;(@M3V-W=V@uLG0$+OU&l%HYaQsLs%!lZtff&==gUAdruiRs2 z$YUh{0YS9aa8X%iF9sSxupNO&DG5L$=a@4q&YzjzqyEwJ!8Y)Uk!zBjJFFJ>*rK~S zt26m|dv)$Z^LVRx0)LohmD%2Xvw2%y(sV|~4uUHK)xAr8{>;PVB?}If>hak8mny zgklG&Ll^*|jm>#5cIP9$h(wUSg<~?izd6EL+mH)Y7t53nEmhwRuIpQTG}p_E7>D#u z64r$vDJv@6IuIN1RWXvb@^*J8dt+QiZ|}^oPZAa51#rLkt2c>PP$C2-Bq-^+x}lIF zf38wou}JpsL=f7CxCKldM)BFcn-}3V@HauaOhUGa#}BN06`*bO<|+(OrBS=e9Th;W zHaL7^0IOqh5b@;k#Bd}?+5+FnV*@GsTP>Z%Ghs&nSANfv)}cc0ytSBt;48Fs%V0LY zXLUh~l1;1AqZ2jaZ~^^NimN+{dxGluMiGWDGH(;jtC)&IO3=X45^5W zotnvjo&0a658Gt362@hF(Ez@ENkKl#%YDkkeIuGRQS`YZshQS~qr6>d>{g$;m1Z#D zL0)Cs425k?tc|kUaE#9kHJzSrCB`2M8&DR7*901E{_&_Ubob(y_k#_d1?Z(N>oH z-Y#2Tp#UGS2?yVx!_;eOdbO06sUxFc`Fyx4q_s6rT z5i-WILo^)~RHz~WPlKc(YeMs8;U;GW?)GtF`;gMO&MiV1|6kR>{T`d6l<~4N6(3h7 zv^Z{baD=}g$8o^uHSMBnWC{Tp(T zLS#2SE89NE_Rk3O)hQ=I;o@!9oHG%fB0<68_4&kXl|PcxM~W2|b0Cdnj%-pkup8Ji z@m*dmOzrx~o)inOp2+THnKMYug=AQVov*x__YPkVErD4!9T>IF-D-(C{4HCw+JicBav9-RB_;1S$Mi#OZIXW-ylWYLTJZnTS6HLtXJuL# z5f09mwm*Zr*O@xy<3GH(KTjgQGu?HY+GM!ShUA_6u^HI?6@aO?@V>16E0dtYb<8@6 zxV(CMySlnc6aVR4usNXlr=3OaK=?yLe)iAaq3O<3POk4G;T(ExrUH3Nh^WWg2T1zr z&cdwr_L~HN953t0Ns5`kp$jN;$V6ODff3@XL_gMeS&iy?Qtsgt-skOqKv;sJ^;VOA z&8o)!Uxrox)gkl$!?23-zYMDecJR`G3s>VixBg*#2kiQHO^`D))GoTUa|A0*x^b_t z|3pU&-u-+v1PCSJv=v{!)|U33nI(+&i#~v?rg%Pl6rt76{$8+sfxcj;uC=({4cTsU zdYRrVNPHnDQ(nQ&otGoPq<;;|8fP>f-W@*K*m$#SfBAeTYwFl6@^Zh848Lx0Q(FU) z!woeco5S&WJYO~|&MjY~FmBJT<7Tk?u!U{29d(CHv{xg4!qbZy9WrimP_zA+HQoDq zIk7VCD1X!Ddz2^=u!clVA=Io8Y4|%cz^STDjl%0eJXWi_v}qvvXClU2G{WJGo0aDP zwxfTq-7Z;OZR?x8hCOK*Pl<=tuD0l4Q0nN^tjTTu{XT>B{JCl@G|N)?f#GG4@`-^N zImawdlOBxc3~J}Tn3~Vgqi2c652brj3SJRbmDfD0FAHtmx*Eg%=%{MKhwa+pWZoDN zrrlok<-ufp9bkl&#%oNyE|5|ISYj3#<_wX@1bTVHYYwZYr-csMvO zP+k)*{*(@_edEs4TKt~K_g7DfIr;?&gRPchu0IIMcSWC z7@qu_iwm!lq)E6&ZI&O&jtAU0a5~t8hz$1?uj$9{{Xtvu$6b=*lf0k}osvzYb*{Yh zH~Im;MRZhp5qQ3T+&>q4-4p87s+sF>qf9tCZKrpG;AVULJ`{$Ol01*buGW?B9CI6w z%ZFu{RjkG6jiArcE9gE9FL(i-Z-Zl>5hCPfhi2ZZiMC4_j4?|;fwsD98#_BPv@a}0 z(1WI1cCWTP-QRN>ZVxDs5mhT%)?6!JCTTWl4gz6%Rtpp9i=s`a}+l3NTtl3r}k9}*juduxM9 zi5e*gG+TGG4^#*ccqVQN(5dzKf5i8WDJ!nGT3zI9yC0jJ zFVdYZ$~!lNTJgsTVBB7vG>4zQ7M8!^ykj{n);o5qoLcOi@V=Tp+ACEFGTv6|$dRkN zfB0N%uDc2<_Y;!40*jBHFy~hyn!75>V0aSVs5;&{@}EB=Z7@#`Z)CmC*L?J|nwQVF z7|&z<)5?nkNny&x3xK6B8LGv@#yuUX+ekt)5 zoS&Z;-2*beUN)&nB4WUn<(`)nWmB2-ukfhbOO@`AV zd-FB>wBGh3N_oUN>#hy%o}Hi6PgCYW{x{+If5=kv+_G%tzhtTVU$WHyZEW>_Hnsl` ztkeeH&lq=MET-gkQYWQ(YyuAwRZ>3&*~|f>qH&~ZXntTcNevkpD-(+$3{y5IhjcI& z%&>v{e5A?HB*Jy3!*%<`W>fn`rPIpWHGj8I@KHTgj$Xl<5 za}Y?EC*+sAyR#yI08wON`PI$c(&F}FJ%smZ+SP%tN6{h34;{|R1X|+Sz$wG!5M^Ye z$)uNk7&JyAbA~1#pDB>-)_$9rCA^h~h63xi8ZPuk6EqaXTY*gZa!bMKoxImw*h6;g zC;7u#GLB2K`A}NN4Ow&vWaa2GDlVj59B!CfDMZ&m8wV`-6opK$6V}*8?_cf)J&)oP z!;9l3iV2WMeH&8PSK$0on@)xhT6*jA!5^RTDtACleR^-idwx^U-=i{U5*sDgXETQr zpt&YA70GGQwf=6D_x^w#U7;8NYj9j@OuTb~O zep65BL&9=Ll_vP6B553R0(FlPO|Z$1nTY0T+n)$mO$r^S*IUlXu}IHHcc!y%!2*O6 zt5Z6zE$9VZ8!#ize6i5rhL;1|xlXWMCJD+Kp3XpF1L}A1llo`%9`R*2#pPl{X>g$a z>Sy>UCfz#me`Sk}{a=b3;T|0+FX#7?@oSR?ODj&+i;km`Gf;=uS*E&akeEfTUG=M@ z&?H!GHF_dL+0M5>i79D7Fq8y4=7SJXXRb_F|{ zeusRqP3_}0xZ9opMh{v4(`n+wLVq|82Ot0W<<}B4@+3Ey96&g>$d29^6@S>zjVIPw z7!fjD-*VGYT5v@dhIs7vY*j(>hX=iVb9$23z+uWnJ{Fe_b?blu+uUw*e<(;OUc+r!e1k=S?;-dzdv-Vf= zr$FE*z1q@w#w~HVzS?&l{^EpgjLixZs51jtiC|S zzHnnLvKuyVpMx5&$7^Vfk5@evoq_D(yJa2e$)<}`$r@Z(TU!*J=5p%B7p%aGlGp!Y zfwo2Z>}5(8j>@B%c6avu%k=vSE4CZ*ok=?wOrW=V)_K*^<^GZ2ThX~tt(y9faieu^ zerxJEn+uph3`V{(l6R2fAS<{>=BXN+L27Psw9@JM^qw>QxmsRt-nzUZId4+GSo`EE z1df5=#)y>>NIp{d3vt9)CaYhiYPO75;wcOwc(Vlo&Mlpl$^S&;Ca>J1@e5o^iQOj< z<6RV>4+I|fzsW!*QTu-9%6*Z@IF0U-s$Bp)0`YGFR5LX?A-7Np${dYR%n;{${>sX_ zKZM$f0B)cab3Qk#Ox87+^BvPpPdvX6>1bTWJ#WKF6~=1SM$JS4?FJUl z*lBGXKlmfAA8vE!kk4O-AHaQfX^k{jlcm8Qx+aFJ;EHkTx>*V->wFVF5yaBX$S?;kE-DN>-6D%`vbE)P zpAdfAO~P?~3L+1|y7H`H|IIs|7q||JyvNl%<0Bjv_b)F#^(18DMRGsJ2NTgWYn#)p zR|^kjP1uI}l2sgv_0T)v3&nY7!7Ytn1PTUyo-TPsBv z$yYN~1A;ju9N4oXZ&jLcnOn<05sLkG{M9R0Fp~53s|xfj$q{zSL79sbRr#_3Z3 ztYeXw>brXG2T=8j=Y7E3(Lho6`|fOibJGObVqg^>^-e3y?pn2>Sl6xv94ogeN`{C& z9I@nRsssfz2e(U!YC^Od1DBl3-GVogZMl$^4}#rPuTG7%^YXYugo`_?u-`n~;#o1! z(DQqO^c?&kn;n~}xsvJT5gE$q36s^2ah%xofHt4Sjs?gen&fW`x}kQ+MzotEm8!K} z*d{x4A(6`H?)SffwZfiWA-mbN`9yLk#V;-~ND( z>^nOaY?^|M*4*o(rI6<7$)^qbhk$wObvjgbkqfq?^RtlXHf5UK9TVb7B}V+e+$y$E zi5tsyb}XSn(>z7l!8#bJ3e=EPB(?s5Vg`X2#F3`^v4=r%qqmJQDmL<|)Ol2fV=!Qc z+FQn0fXf1m`Y3GR8WaI2nZ#6w(h1Dt5)^Jb{8DRmY?FK(NWU75(Q3mU8B!J7L$UR~ z^T1wgCD5i&DAKkj;PPooC5AgWX?L{+UZFMrXl>kFOm5sZ76hQKU7R?h^&S$QWwiz% zZ`Cji=fv;#{mqJKi(}?5X22~7NC+gv6|3I!!1Fl-2Noo_7X2bqntl^=%RqZ2yC3;K zHYJRg*)E3bGhgA(?Au^Z8IGp)uYq1C#mz)x$=m9hPva-kf1$C$z^4u6aisG@L*5gCNDbnnUXoYJh)87=43j@{6*llIoI{m zKDg{H`XE1@NC{&m&o#G#xv4Aj$@qMm2bL=NHgcgx7e}O@j8fiNB?n9>>Q`(4Nc1-s zFgMAyfsMjo9>@M50NenObw;0Ou#VrTh!;0^hhZ&CYHcQOEH%7Y@E4vrV8Tt3+v51S zfiisEO8BMG$09n2Uo?`45m8EZT`S}nOEsx2MBR7~JQy7bgN^9|xx;x`z~ z2=CIudk`F}B!Rh{mw1D;mIrjQ1`y5-%My&ql%-)b1N08sX1jU4Em+8{qhp}@_n1XS zfCv!ys9yl z?*YW^U2d*F7caA2N6x+da=O?1Y4_7;aBOUBc`y7-reHtq*kw=cNQ7+-5L_S+Y#P*8 zvd@5%HMQ`Uw;jJfyLs=y#pRmkz4@sjG%B`q4~rbkfZ@U1t`r*rRPf$+ujPH1 zP~g1KT1G_<({a{l+QFsg7J8gyn*zDQN~|-~{aPvLbsQo!*7$Wn;fay=33VrKnuUQ- z{v;kUG8zMiVcwrYFkD}gM-@qse9J=EObqn8SyGkzR;Mnpo>zF@h}T^_%_@IX?auXxJq1iQ3AACX^-4LmB}v zWtvX6gOOhP^{BNuY6BLZR4r^rz0w>VZjDY>bBh26;*c_hosx=*iG>cg6Zo=id2c)* zlJ=vXi4z}v0FMmjWe{rD{ht4p>;DI%P-VL);_{p4Uy1xr73P2C`u~>-^GeIYVM8qW z>sn`SPdbV;h2;4|FJgUd^iJ0NAd*_qxjskh3k5L%0Nhu*iS@_J1~^ef(mpfq5PYIc z5w+L)@nUz=V@4Es{pa{-2R`QKWy-~LeM<82_{7HN^&26|dE~&ScHr*y=uYZ!VkcVX z$9MF%=`gBlJ)in~Jo(_xg+F@MblvIU`OVeS+q>Ik`uY6W(DQTQmB>ZR{$l9Nx@FOk z-cir-*02ZvPG3dks_@3730prBQzJ&+tRi8ILZyQr{|UAL);4u$I)Bra{rjPjBO?;- zqC7&m#lw>`hWIcsnuEz9urK+>t#8*-w|X74C2kfgeSc-mmFu@= z+&r@61ci-%$#q%75Wp_JGeF6ng4gX&GK@FL7T!%J&J?(L&36fNH9tI2Q%Bo1SEsr@ zJd2;*!F%=Q1v4+*U0d#E-ByiJInf~l1+tz+C%W7n!&oXNFW<_6d&@uFZv~yccm7k= za4EJBLzq-RT1qo|kv7gQ3Z)9lF0*Tud=aG?Xte$jzJ$2`e|46vU`GGt56$l6ZfzZT zGcj8tTe0EnieSdY7_CiL(bp^NDg1a?3#)zdx%xkM=&{+(KXy%KysNeb$#`W~(u8x-xkOe{1-U0dmhxW-HZseB+~U9X6I_cT}hH!P8(^RHBGM zNXEx0Y9PYCXfxwfE=)=gM!iL3P3Z)hBhmMoTsooSx_^B!y0dxP8)LID9B;e>$;hM5 z%*`#`RLwapnS%dAv}}BEr1vN<*`QB8X~|&p#rxr%pVoJ3C);sY@TpiM_kEbrJZn7v z8eL|4=O<8jj;qnj*Obe-cAPTXlxVg*m|h4WSX!#&vm$QwHD)r`2d~|>wYa%ivL7JEu(J428CbXu zxcXKJY+bzm*BN+M0nhevwQ+s630nS$mrnNc*w7r7i~maNJFK?)klPkB75QJ(q1pyo#3lH16Fv z5?-n-4-;)@0D@IVHKkVeCt5D3ykTE>wjXh(^$Xzx;K7d2iPx4NQ)%_Mago#Pg`k4p zpr1;c^_(rl<^;eJArAunwb{O`L#0eCUPCI2jK+jvJbduj&Y%f+7MgO&j`Jw$zmK7U zCkV%TG+m}t%Cyo(ENtDl!)b$l$3l?P!+i;bC(|zT9$Jf^Yoi>4T$5kG0fFiY>FdGu z?Wg5@$czO@!(@8w9(#d2z=6MoztHCpa0eRfga60nBa{Xfk3qB|l4+zyK#*c(AvqFs zi4c$}eaC8d*p!~zx)8^W;IJ)7 z5NjlPAF-2*FIPHR*#=J|UXb$UA5782v2hCE2NgycTv#@)fF=WWUEC)|(+6F597T0e z;Dkwp@%;W+@==l06d(s`&Xs*OSsmt*N@j@+LyXgqUO?trVF}Q%F;O}m2zDDm4!q+K z0AP^}z-f1Bjj)(lGce&WU|d8HhH%}9R2P->RHV7xj8BxqZD9Gg`GNIvtzL53o{&r;Tn%K;s~&5o)zse`f_983RJ+N0$$vm{?e#w zL14nC4Q3h@z!YhzKp3~Nfh*fPVymvk^jA(2_8%F|h-mK=K!cLxL|RSjoZ}UUIQ0;r z=N1m(NezXU7bO+N0I3Hui^FtD^TDEE-_maE#_8`Z@dRS}iERqm2+$xU`qgekiK62% zA|0Ui(FX4q2VGssUtS9lyp)0&q*Dg~6&=qUp}?>uIP&5U^@ww0Z^RfY-@CV>VwzL# zMs<0iG;s*$q00&t#zs*RRU_>MQTNnHK&x9!dw8wr`GNl|vlTq4H4<49fzRI#f^Zxp zatvu8k8=dxr@l-IY$gWOrUm4m**mk^Sf?gPddyc(#MA%V-gM_k?lgYWlY^QhyYyvK z!DQeWK$Us-&fM++-XMM%I(UWv37{ae^sS|XDDX|WRrKBbb*TGA2ef3W+y}usqH*!`Ksi49v0)P>UBJj>UbGAe&ec$XGWnh*zU8nJsi%QV_7#@xq&_ zb9p$U1E}>S_Kgm|I~(V29? z*0CqHZB1<3wr$(a1QSeb+qP}nHlLU`?^@rt?z;bbb@$n|YoDs_Q&n9i@B6@B9Cguq zJQVK4q}8oa^P*MA$za9~uald>GsCV2OIo%XX$l6#f-#kw!dbuff(Z^Ep1a{=$=K3>Gz*CMD-|5E2<^IW90j zZe(fX$qr!S(T{-a04S^mcDRcn36T++W`(GXB9^#>G-@9NSwRHSib!X+T>Npq15);dw0#`-z~KWkCw-OnsN;e4uHL>Yk?$rM zTm#ax_>=)#WBYCgVDv&IwoHCz;!WThPt0nHoag!_#UgNgT21tJ&;(2a*MN$Qll~8W zn6b|?PEr{I?yt(5ckWyIPAmA-brMh}CM-R&ART~6f|d%P2vHBWLemjQSv69QW}0id z{VXGuF`60|i856*3QedQBr=-baol*{+`<2;y{|abHImM(>NuF1+$?`2?!yv+ zlUWv18HM9-A2!FQBh{O_`3lnTS?KxxXy>pWF4#ZO_w#suYQ?-n2=AFc*t=aSQ6Jjz`*`@$ z4Mb45vos@jT}xaVj1C)EA%Ga#?X)a@1nk`cPG%r;&IDPxas1vmI%S3(th!#>cW7C8 zZ~qeD@_Ma3d2r&(o)0Wf>oRLtZ#Chgk}z{}gnOa z$5cq7kWYP;R9Ir7R&Q|Ovh3BL(RMkUn5l&y-=@ghKP?%&#Kreqecyk6IkIM_7dIA| za@*?@82M~i7!B_^IG~donx$JcyX;q--@`nCn!gEb+B+zQ%`8|g(`J3QJxsmkAz&22 zzF!UNDar-VF|XHTVTBGLyGb` zhX?Qc3=?ap2;MpGo0~9nH)#s{vQmOf+05p1Q9 zL+b_vE!|?AfrP=1G$-{0A?WL&7KJC2Q$5^GefjNG7%8zD*y!knc!I7}i9JuI!+`zfZXRGf&lIw1f+kj~3eNw@{J)OSAAI6zt}0)v0eoz)P*ihKK#a zWL+g=zGP3hSNWC+KVa9>xe-0yAnBdkdgks(+4h|a*nYZ2jA=m+`z!wxK2`ayq4QN6 zn%dn+(F_(6!GJ7js3tR2c~;GU_mX0V>6YSe{^5G^kykAq8@7Y?%@Z^Sxvd#JwMNP^ z^X;{UJ8hnD(o8jz<9*&VC+0B4*{29g1c#8$SweX~Ol<{@q2+Hqynx~7gh@~2gUga4 zd-ru!vfr^+0Lx6n75kdkP75C;`J$7lW6zJbiHm)SwgS(#>g^O4w47khkbHMV0pGjt zCC3e)@EZ1&onF0kDW3~qkU#L5AC51XiTsA3klMTdi3;8h$Ml#p!n-WQTvxs8F^d)e zX9-;tczY2u`7aa7`fZ##+JH--u#ld1yNGN+V9I-lPgk9Hg6=oN`fP64QNQf z+MWSAcJAYH3%p-CEjv%(b~azfio>?a#;3+x?c(*b1Nf(W{nQt$4(~6Fh{e9C-mB{F zXlBfB_v&tDkh#k2*z|UfcGMmrmfD-O;Ao%AX?=zJrGpi5opeG3ND2afHgm(*hlE&r z3O=3fE!Tw?tu}6QIqZc=B8?K~9aZwsvA((eiM~F;W?9HuTUUTTcg?Xm7_F(_a|M?b@IeS8jDNS?C*82eq-@>i;;VmgKU0FJ#a$ySHg*(WrU79TMfRKa=DXmKj zI!V1iXa8mJ4P+uW_JX{*3|APig1J{ITK|a#YbnF)L)peN3hX#uSY`|H`(uBN>vfM-pTF?P$WaNaT`S+pSpp*|J0MZ zHh?!fUAYsc+#(&4@YBEwvzHF%%2HpCUktUqFKFk187x2WWLi2#Pw0!Y?I}|+pz~Mc zz;`PabX9Z7*4L234ck1>i+rk29xIf;?WG_?*WKNL6${g@C3$F?t#@1Sw3_?f^`-WA zH>@i-fxJ;E9vdYND+=RXgZsza)>&!9m9QrvZ+dN{&hm z6ilZY$R(dDzRdu%)93|TwH>-jdY#t@_Bh_)yxOi|(>&zJX-TMycq+Q`iUGm5ZEIXn zTsC|~#xMXVqgNNZL3oEp|lfu0#|kV=7EMt`zwmN~zD2mce&@E~V-mBBCv zlB0u+R9IQEn3E`*QIETO4?z+^O#sgMr&FTPT)AA%PdVe&ypnm7+F)L85LD2pM4~#8 zgB&JGhu}MJ&P;IkjHi}Rbp|cKbKvv$4W&`wc&|sHR8Xr9bqG|m;%^MN?LV(9-9$-i z^q-!G><`NI*+8BPpU?pu(1V6{28D`3a3vC2d1b1RPSR{q92lx+EmD5?P14pYHRcUg z%}%{z>zA>QyKuir2TL6hhaK=in<*8@;uZo-*fnPg>@>g8#t&-IAAcUMNWhCuuG9~T z91Uh>j2cZ$(^Zd7(}DD;E$?t&x^XnC3O$o?5$hmhz_%v`GhXW;hDaf(WltuIs-)4F z5ptqf!qmf)p$>Q}NXrb}SY(pr9dduNaRNy)X5FB%a~G;xzM7Oygq$r95fkYn6DPmL z6ebmfysk19;uccbl*q3NFW|9Km#yK_U5{wdn0wf@sKZ@v{-mESzk~5IoqH(3P|6g$ zz+xssEK3@Jn`gEPN};CiNYm3MQ1V=aKaV8G-GQq#y_#>p9CBAq$aZVRQn*;8)G<8A z8W9w;{FMUnJGRJ$Tny73yS--O+lp)^Dyt_Ee~4`kDOfi;OyP7)6C|`Glnz1LOPuDO z=RAB!uP)eIcrm4+u}=Lmzs4l(bVi*6Dc)-)6c)@ePqCaRUzu10DQSDpi8^+3%6z22 zb1USc(P_wv+P;ndt0^QTl5ol;q-Na;602&Yc0f8mdQJBWFdF!sQ*oWw`3N?eaV-yo ztT{WZgouq|7ayG}>=5=QT1LbazX9=p$2XZv^Oc4-0 z3R|40u*q!|-20EvJQMiw*Kh`OoEQ+gHa@WDp@7>v+^E-ePRjkyGba7vb?+9k{m zr3=Lqo5d54ca7!Gk%^jp&ysrkAK(uZzr{o1q0;;qq3->PbOMBQa8CJ42~zy3h7`Q`Qa~;y zP!+&Tk9|fL?hjYw2yPkL#N+_^ia|U~DIR}6TGuxhuD{)- zT@^X0FYHfDGsYsUQ=eFVK?oj-9SIFzUDQcpMH2s=NJ|{clhv6hR>?J3@Aht-gHsYM zAOn3~rvxWzW)R>^kyM}id0n3)jz6Kf^}$%ad2?}>)3QnM9dCr0eKu`f7+0b!ANr7O zm53fVNxyRIc}VxYh4<(GkwYrKp9QKK%S=ibKMyX1kDe&Y#Bm_p;4SC0M~8J1G`7Ig zx7!LlfqjMG1pfCv<|7;=hOr4SiA_=@>YJcc2;Sbu7c-{jVx68;b^FJYTx1d&(T=D; zu|q7XyAU83x*p_k827FhwLYeAuqPgBqvm&gDN)%9%!;WkDOiIJ~{%FTzQW+&;UREfw z(m-S~5ji##^Sjn-wZ}0~NZ;ffOD$IW@%5`%pL~v_WI@QmK2$Q?*bs{$o}ly4)v3{) zx6#o8h~pjg?r3%2*l3@X&xl~k;%wt0vinrUBTf$B=sp*QUc<&UWXBejc2&>&R>5q9 zW35EHBGOO9Lo*`xEV%ZS_iN3=&ob)*v3~5bG$$nG$S$EkWs|?K5Khm!s_e1edDWYo zo`Bi+gcOCmP;x=7@Ft}3fbT!2L{b*QEZdhz!~BBVJlCO}Rwsv3!Z-4IR|TqS$~TRq zQn1CO7{FG)tbzSEZ4}?-^Zl%@ojI5F9@) zl}meidVl_o0Z*V#J*_I_pd>0l6Y;8yAC76CO1^KN_P}@5-0@d)QT3nMxQ_Ler9vA; zHo+QX4Wg^l3n%=0tfSDd29Vb_=Z|f#)K9VwOY5BbvN(~#oWb1Z;TX_4k8+f3Y>u?x zs3mFSXQ?_4Xqjwju~CC(_bm9?vJ9To=W%RWm8bjR@@?RTB~UOYnYi1}s03v@M;)MVm?r3y=sBG+p&B82X1WN%cH)0{Ey2%FN;t{1}iH@NTfll zK^T_x@_d#Rx-w*H=OR?abL?RwoJiQ9Jq0ABCI8X$>{<{pj zwWi#RcN?JgexNIAk18aCjEWnam@ExvDCcd>3GLG0u56R_%yS;|?7B1b??=A@rM`8E z^NL&w7$c?77O(@lY*WQYh3e?zTg(U&V>KcSE_ZD zy)U(A)toy$zlm8FndjO4B1O}P{Da!GD;Q#gw}A2s#7q$#@psH+aiQm8m!ua!!b9p8 z13L-}LJPkj-f%Y3pT$4il7CI81vvL>OX9Km+#iaK@E^;A^i&F7JtXJ-ty{Pi_cZj4 zSrA(JC6h?wj?WG9l2wQ;XyU|2od&B!)-O+)-0&Z(3Vq?~ef&SE_LGvCcmoe3lH{m%cj)Rq@iu@;fzrwp{ZX7qop1x0%q3{StjNl_tYfR>QFL5(~ z|BV?GKX+}lbU=B?;T$yo(v&ONDe)JTYBqTmY@vOAVg|3 zG=WQgC@NUkRgkdHvLuLnmHZ?Jucu{T=@f>NYM2R?V$JZYWE}<*Z@!nG=oeY^BVhQM zx{_sxuyQn}b>6*eE8gX3pl+L_g4CI)Co`9mNQ~%!_gL=;EH9hW0AhyOjW3g1_Ia|6 zVWZvRZ2hOMj($Iaeq^_149}6!dNyWNqpayHZOxY7GIqLwSN6k(*VXag;~93iahEd} zg_f2DZKhSyCX|>=eDKdXkO;rZoeo0@WnP-Ci8~Lg<@)YHksM?8*UrDjnRdn;RJ*mi zR#2Eog<9#2jD8R%B&yL%z&(y~rtjnlla zC4U?h9mFHV{xO#6^hBKef?}0@4pZ3Z#B8BhWtkg*Rx_3%g%wZO#iNiVUu+?dEbb~ zVV8DsYll(?2t~oJ9Hv(3c+L+u1bnja?=^bN%OX(VLr-zca42sxRW==jIUCWfnu?}f zwA?#@?n^FoQQ`Avms8(laS@Y?I_l&j<}jED!ddL_P;k~q=k%nUj%G~`6Xdof zyn0!yzJN5&upgX{oWqg7oDZ6c-x9qaJ3ksXBQS+wQdLB{;nAPr+rX!cW=_rh!^b-d z3&X+VR9iHH<;rvj77V8$7Bsh*#nejQpZ03CY{xNlQRd#sZjwph&Xh20g-XIH`s);p z0y(2XEMG+rGhorP^nrtDnSMR`6m{Rdm2I#ff)JJ31;c@dxa6O(AoBZp%i~OD#2u2B_(_Za2dd^Tgcr(Gu$lO_b{|aREw-} zVh*&RB@;0?_o*=`5q@dN-1C?KCPaI%wsvuMbUH9cc@trRKesTvE-;y&6E|7wi)A0Jw%X21I1CqT^{b*#n z%3-3j{kM!KVqsn+zQ8XRWPx2bxy5Dly54M*Q+F=D1CE)>(hgA3D^S+6&W5ZD!S?c; zW1m@5)A7aa6L%MoPQ@1lav-6O>y!y73Ge+9jJGg~<+v=OP+b+z{Uv4e2Sxx-XqnBk z@T!nFJ0k(2QxI>R+5Yz+L#Z;sO)AphgUb8t4Wf4pp?~Mqh|QI58OEv`6O5934ornG zxc1>L8lD*2P;{6ma>p{zf1}S+Zq05+q!v_Cu3cEx)@@~1*l|ZpuS4#*XydiXTNgu1 zJX@)ijmdb=Q>5%XVsdh*3ZZM#{H~&_&LSZX`KHPsJ}I4~{~X{SrE(E<_77|Ls1Hod ztE5m=FyCo2@@Q^3z_IHPk|{{UqtAnDop6q4)rm>rAP;WKhW)HXp6^XQX+8bqM@9}f zPX;-U4XaOnp)it!a}o%QTWCoHitwW`^UTatq_XS*RKXmd_a9i^7g!NS{HUFxp;B#v zI8KHUBU4eS4-@*s68x0+_tttWl@nATw|lf$Nc_e=%Mey%ioxTm{WyUC^fONnG{$nx z2vl)SK|%PhdKE`;Gk>uU(En3`1n$)IV!Z%aC4ZJ_58M;UMLK8`K_9q`<(R-r*pwoQ zhXm8w{;8_EA(l|a6S*Bz^;J=5zu#NU>8>q?e78Rr5Ke!2rJg67dUCNHsLOJcucQhw z2}55E!_fxd9-|`%*C9Q`aB*9fpO~XG(Df`d{Ti_!ubf|YCWe~ZluXVDLOyJC;B0t_ z@d8+u51_>Wq_QTpcpJuP_TGXIZb9-4txk8ivVRH+j4J%0+zF%Em>NZ-IS2+E)L;x@H%&vCi$fh~Q zB!Svw8V4s?L}pZ&#cpn^rR^#3Q%*m3&DMV>RQnHs0D(odLkYxl=aMeQRF4}0&-~q= zASbpXFgJi@t7Nag89=jP@U?&}vBH-Nmgp!#b(AKm$1JBJh?oTNTg{{BJnV{$vG#gE&l9de=eX>F5(kYg9aLQ}KiuS?jDwecS`nw3#E9->~4iSf1?l{CJb-Z&WXJOQSrz zj!Soo(+KsoEpB`4;ep)xzL5+K2(Y|i{5@ik^(_WH1HezOQ70oWj7LKjDAO3wf{pBY zDAibX>r5feGkxk;?9o>BVLRq)E@uA*S4MbMn!Xn%v(mz9Hlz_&Sw49oFGZEX5ZWb` z{z)Gu(t5;H*3Vngk*?IATzRvTowD3X3*LM`jI`$pds_;YoZV2JiZT0wXH}_&x+Y-< zibZ0Zz9J?KnXaF>(jMA8txw5vrZ2TI2sryZ_Q!l_d=)zRt9kLT>gU$4?QNupb9%#n zQ*gi@*L7Z9Y(gDmqSEa8`zQ;WZK+%z<)75le3@u=Q*_#e&O`KQ;r?yQK+3cT(*0In)C z)fOy*moFDIEHP}Ale?gT$v*0EcKGlh|AgQ4`=7w+?4F))sIp!a@T#Nd#xRU4$xw&GmQFFl9hb${1Jt-V0@>2eI{-sn|AqLt*G%fUaE2JJx+ zToc-b3m;wHCRDK9sp52?*TypguuBR0&DGoLhtAbAjP#Sg%gvNLTgObfLA+mU<_`HY z_|(K9SifEnXE`}B+aK$`fct}roSn~=40F5|6XBS=j;5G4fjrsbq>8o&KWv|e zFn;ZhFiYpoL4TKBIq`$vFSZ4aRS1GHL{6V)E=+tAVtf@bI76K2=0w_tv}oo9*6sJ{ zk(@elb;bUB1?qy3?=O}tdWm*8rqTDfIKqWyqEP(+#xgn%hIwc1lyR~jDyWqYk$*S90qkbST>h` z7q?qJcJ>{-LGBR;n#E(pm3cG44)cE?J)Y5$n8|SKgN7|KIL$USR`qj}9jgxiy|E3> z1cnylpspa_Zx&prLm1+GC2E*Cj-d5|xcMR&kIu~Nh~mx3+8{CV-Rk5O*&)Q=)QS*s40hDg5hbn>Y@{DSU zgw<)JT2Ml)*D}AAz}*L|+TSK>t%l{2?8lw7w)IPg=}ysPHt??yiV*N~8V1w@|E6Kb zGGlmRsYzF}=}c2r)&lg7W2i*S+}p%rpu(a5L2+#qIY!b`9hhmUoXk)M!h$Vp(=q-a8qdK*j|FuE{{Eqk zL8e^!+{uv3@9$Fb90GXSm5wEZ+$%qw%=XWtb#12{ik$t@n0F_6wm+vqujTl|Qa!B= z!2?lT@%d&ee60~z4}1CgC2x*IYbi7x;dzfSS+B@RlH7>eXc`s8KN3`_QnIH4dyB!> zFTh(e{nVJksjH%HXVy&8f+X3+tv+2r);7M*R60F7cC@_Jkgi?T>xD9l<%S26ySj8$ z!`j2922!Io;oWx?sr(V+FnkU;rZ;(iY@nsZo>cpokz3Sclua1&;Hk(zKyUedB0H4V z?B(Tboh#%LR`Hwjp;+u(7U;U6CbZHnM({-oJXD&dD!`mRYcLq%MvN=2>M~DKbk8?Lxg<=5Vz+&}8|fxBBr*A&lsp<9s1 zg?@#ZwQ45mP}JJ!m2nEk6swQJ=aZuQJDD}L7kZ>Y*%YMt10bWcx4ooL`S%<24Su?m9u39XM}G=wH|w_`f54m|QshU@9Zmfxja6Hc4^> z3C@ENltHiWeQ;RN@Q=`)C1HI{9f8_*K;VMlWcIOUH zMhkS(I%N|q(bir)my7j$-hs1{^6+JMo&zR5F&^<=_Zot0$_E2HVRr2P62rFbb#V{>$ zZv0`|?D$KK=KQ7%lZ)-r%O=#^>GTPr)yt-c;(P7p)oII{iouk^8dQc*$mnVNySJY^ z{;x%05|!_c?LAq)UvMx%(P#x6fDa;Qny!y+vFtnla%q>*xniQsPG^{I$~ElbvyDNh zXqGe2KHui+?JSwEaXDZlSg}mEmyTwec~a<_SR6>A3ls03;)EI$rqW5R(Sk*)6{Syh z(M+_5KA!Kn+ZpA^eJ-Tea`Ft*IO<>t(Z?DIg^aSj{0s~1L0|l^Kwc@xC>?WKoHfRG`mJQ&n)ex0QbCROaJ?_~uPtJ)`P$ z^ItB@Iaxcq8^tw`Y6~v*vs7|wTVV9(KIz?w`9=g^%>@YK@|rfY6|QTntN9Q$3FjPI@3+&sv%>qp;eI%skK3_sn20DsxBe zEI-fFl?1ru8)T8R>vi!+-H|uG+DA zb*1fW$X)hjGpe%l_XO-s1Tt$HzcpND&5$o}HAxkiWnX5rwoaibteVXGrswQDScNsq zPW|yDf)(*Z>c=iRh*p?{5i^vduI$UtLMnl|KF0W=#3BQP9bcpFp=r)r+vtW3$~!zGLCmpG;uPc z9bG)-CSy4lBX|w1)S@?}DPVdyg zHu(G{@spdkKGaLJtNJn~Hs{(yO%JKL7;`tuZ)T$#(TkYho7P<;$yx309 zHjK+FWX&VL7P=LFcC{O=VX|F$CmsDn=s762I&Vq1T@hu$%F)1lJyIgzK_hq}3;yLW zSZVZ2aUe^;1k`RpR@O*pM;ybOho!-t&5BULTU_4<)ATWqfl>F(f_aeD4E3MW7E|&H z*4^2shJn?<(jDPX7{7mSE7aS~T?tu-w+tttq86DnmOrzXF(DWel8KF>k04Urtm0@_ zW3A_pSN7B6nmv0lMz@&!E|EFpbgK4XsDl@9&hJUUTLbfK{u} zrPwM4hmocXC)AjoZqA;`Y7;Cs<4M{SDg8G<1KfLTpv4gow>CGCQ zZaD?FWa#?QDgV!7*;jVW^CjA{BX!?{#ZTt zh?+FU>3!UZpUcb6+G{{jqABus!FlM#``?vK0rhYhQU zzyhMnKiEQ;Cz9{RSG2=#Ieg|L^>|ry34WGRge7}-S(=YV_v9V==?O%p9)!MdzlXu! z_!v37v1Jb2l=M<=b_`b;rxkUY&tI>k71v#~+ohKMTrOHoz(@9&6?{Im9?<42WpW=X z&j#f)$9Je^YpY>Ak%&tpLBm6b2VO{eY>8oS?c;cksRW3d0yv2%0n}q)$LoS2xqH3H zV2O)rM%z}x^#=U55*hLqpxm5}2Ekl53Xg(#Z>0mTLlXpk8pTM#JT`;~wx;lzug)Ui zXl;5N*a6tGXmUyZL|06>DVA0Oj4gepO54+7xZ=k=JAAobhY z$j>lyUy85*e4;Hkm05@mO@s_!xBJ~`n^BZk+AQ(lO6cTUi#Mi=Bx3& zU!MAQhcWHb<(>K_Z)8}iTS!$CxlyO-on|JkHFqkKxS|m+9v_x>-rgyjdF%6XrF{@na$L(H}WnbnaE)S1J&j=s4ZM-P7> zr^B8QoHPbnAd}G!w>CyGL;94FebFeOXwkMZOQp|GKq^BYqEPX*W#it&sYUSbSoeBLG_9o(2ttANh;V*Hi)ouKN#p`2pNp$|g+001r{aEnJb<%KI z7gcdXeS8P`vnz?W`~0_Tq$Zk#xiC{IZ*D0La?rAflNo8Eh;tPfi4G?XSpquqQd?N+ zkBlJx2rG&Z=9c(0IG*g^i`3Y#K|z%jTjihiQ`-8mM*3yyZI&n8D|A$0E4Xr$j_-r?cy-5Xtl=t!npU$6D_N9qj6`!o zLnY3pu?aZV8_1`UO)-S8`A0|BB`g4IEM)_0d50~lK4LGU(T?Det5A~%9L;uU4IgsO z#c-K3o@S;?pkIa;{@^9yn~_)mxsC#{Q)oM2-B>>?n7 z2LBoa^cM%Kgf@9%)8YlF(|FxEVOJSX-l_r8}2Vh4E}QH4cyMy19}oM+ANDCbIS5%H344gP-pILR~$RJew!Q<2`)rM2whash!S{W);1wEh7@h&FT?B5c<|53VvD! zLa#t2T?1!RuSNa{8No0Xve3KzzpoyFxG0=zAhsKvVxWvSoWp)ZSs;n62V2EntVh#X zt2I&Dha5)OMY%He}O~DO8?&Vd=CC8mxlC1o0v)S*AzHMXSO{S2?%ySLJ^A4oeY(-%Aa5k#K5EgIvV(*UU{-ch>NDh*)?MBEPNm_Sz`^=!Dg* z#`FHGt0Q+AwKvHCncc;XR@L1etohnZ5$m0*9L5Gajn8w&ta0rkkfIY86) z0JjAv7i*e_l9h@Q5*hBqCzzzdVB7CiEzsOR!?|e}ITkXQr-I?eSJOq0&kD{gw3pRX zzQgBP6k; zFROtm&iA$kV^2ga^gva2fT!=Ox2^;`mG?LKM11uFB|5h@*!$>!SQyKIEYG0Yin+Q| zvM>JM5yicupU)kBEg5DVsT-+Q>Ymw761=~o) zaSjZ>i#F@CEvL_K_l12fsc~Fb{RdJM%dU52uSIGW3U0MLTs{jAFwwm&+yU9zQ!! z98;qh7j}FMDg3Uc`=|MVF@28zw*KD!Y5Qe%YeEFHaANdkeVfLIcCb-00o_jXU2m6Q z?qgaoU^`XKGwF4>)TB_bcA{vRv!j_+ZtoH%TG?>fzh3$9t*`v*PZ9rI6^Dk%C=JyV zX;BbCL}=rNV?DUZUixx?@M!PvmE7cVTS6Ux_09NhoVyb2=8$k@YeJ)0n`2WnWlyF3 zN~j%G*+Y)%#np#Dy_E7?=@=}5K-`5BPv1^ex|Cw&{!G~D8Pn9hk>i(Fp|=eqH^DP` zV9Wsoc^djbVnS2;FK@FiD|3CEDs}r@GvU-UZ2|c+$*bCD$s`>56AK~08D|}*Qrr+Y%k)J04!j)Q?*|M|9M`;Z~9PbP< zQ27At{L6VJYlh=efp0|A>_L6zO1W}=xyp(Z$9<~>nVNf_%wyGcun^6)I#~h=AfOMB zg>Nz#*mEfnkwk4l(MG{)E>a)gb2SX&t4ul#NmFI%n!F7HajVY39CmEG?1 z4d_Tgcv7jf;rYkcL|{Lnw>LnLGZfp=XJ(DDwiN>!MvTUy|A>bbu8dy2#y=spZISh0 zyKRZzmEa&Y60!$$jP`!?@!3JJ{rUd9=J_;N;GuM57e2Vycbe$}a$YkKk-L_JQ4z4q z+TpCLM!)zS+NUUUK|JK*<&6Tl=Q_Gt_*rF7?=|YicuABgA zK*qep`-pY?+$@CIEo#+zb6Abz$^`we!NQrIUe3bo7P>mfCkJlVkTlPCZZ=Z{++ z5^r~@=*n--1@-Kur+kb22X|Tk$(>bQ@7M##ce}J#!$=Ut^mKFO$`?$q;jH0h@V zarPwv=_tuT4=hs+(6Vp_a5l;{D(d|N6LztN97K^R?NhIQyRNmxfK#pTm z>e@|~n$5X~wagg~Xe7}cQ5?Ndg!6RQoK(zYzqgH3n;hAl01M`Gn}_TA8-ub;S} z9xR&CRzaObqVR9`$?&mvs)#2)n%j-mexl!NQQc zS;f71#)VAczj=8f8WY-JKU=%7!}^C3nEcgiE0>L5C!t>Erh9rLUgSEU88|Itdbwg3 zTz??McYDI{ocql~dox*cwHXR<%eePA^L$|PWcvGd*t8*IK7^%od@vY9Pvr#Su(b=+ z@gxIwFVmjF^)z;_rxN-M?(pY7Fv~$MJ_ym@ejy(e{l{Hto@t?@>15D*#2OV6QaA-U zVlX@sOyr^3->XDy=B+9|pCzn++EXgQ03|_Xjg$6;j_o(NZc6|qm z`4n}NRFmFqRY@C6jxBaF@4|Aqh=m`rtFt!++Pd8fwZi-1lh&H$?r7~Et*c5PM{a-F zCyT0J9wMp=)oJO2a~iI(8MKlBA$6hcOe8t%Q$cy-D{I-glZ$V=3mP`N!t#OQvhs8* zgpxOllCozESP~}%n|UN5NG=!U#%padA@odawuZZ5DXh;J4!YIzIuQw|_5>45ho#tJb$4a*Cj59H~PZ zoQVre0%3-VX6dIM0#^=dgpK^klw62x`HEo0ug9wALlf?eV^uKd3*I?T`wPy6Ztqgg z``{Jouc%T1P5j2v_1JjZoC1Pr0=~XljoyFFM+rZ8FxuFV? ztzQ#$$d_hX4+5UILItF{fKkUgR2Y?=?+}~m80L`q4K4xt6I)f=Nz_G`dS~}+i{+L* z&m{(f_>q2J(dK7m$qFo^Ds?)!zwA)IA=F>;yIm(YC_@4(MmN%eY9H6fyaty=#fU2c zb)r&0<9pY=vt@(*xB0zo;%LfELyNuJ(*q3XD@u)s=R*jfhCBE)RG)wo< zMcDy-@~KdMW?EJVD8Y;&Pa0ntLisSy|FHLtOQLj9w`SS4ZQHJ0wr$(iF59+k+qP}n z+U2gV|C~6dyDy+4-W$k_j9e?%cxKKy2FWp(mD>Pxo=cL#Im~o&gEVu9w7OVg(8ddp z&F_0+mCd{@9(l_ffrk!!#BHjlfic{wJP5>qH{=PsSC!+pVLXuqxG0tbki|U!BCh`X z7eP>;Lg~7`VB@Jc4JP)X)BT3i3eu+wACI2KG~@!8mn3NlnmAH~jNa7g{Jkzw5?d}p zetq{Hjn~koE4vDpD`UhWj$5;5}Xk5l78UG3*Du4J3vIzZOK zM`||OE0nc;|9EG;wh(P{N(z(l*XPwqL@qyb9YSZTgKQg{b_i!%F=lIMio9-VDo^jbVeihBe=;g)jKXAM1E9UT$mU2+3?Gj&$B zt59px2kQ9iRz#V%!FaH>7IHVC_P{^w-0k6|cN;NztDv1_!bk@ODG*uqhVs7TgI=gv*KO!s{uBYpyiO0YDM{Qx0U>WMDoGg{m zRh8+R&2purh7Dy*gvOwPh*9oAf_tX5FW$!I!D$s;6#)cn*$^NVmVKwv-yt82 zVZ4*E{~^9jK(LaUQ;u-l5V#8BsNeeRaf29GvCvC(NJUsiTq%N3zQZQCYmQovX2gv;HX z35etlgqi4C37i>HoDd{x#9|uAUpLCXso86pXtPEwPn7dHd*bx&-=1$D+0qFqM?tr} zF+MGo;kwEt$Actn{Az2aU)GL7!o zzI26y6L(J?{AWI;dFn+W-4;|Yjh^RCn4(D&|1U8*f>RVAQnqUCBQkbc1=|f;f@Cbx zeoutQABT%Cd@nde21wTM2D)A~HI{|-irjAMD0MQE+n^b@)u~K}L2TNc*`ukIF5_Af zxm|$PFOo`(nOdW-ld4T#i#EW`k~~6RV!~EKXU-Ha9F(0Yco1JSFHN;ax4+ywpJ*uy0Ng%u|M`YVqCZ9O$Czn`^N(}&4>Jkft$ z&Wavsu0gMunZBNEarEd|Y9)Gn5>$1$lPCHDbO1ojPRjGtur81_#Xp@-Ykt_yT>*7|FS;vu|WXqi9@b2 z4%F%w$F9w+*N|bNkJ!NmiIshS8@k1EmAI3PY}S?{=4R;4TS31{BR6cu;<_1tDhkV2 zKW(lbmN0TGjCVCv^9qr10Y^xTe~qzs5y&Y74Z_r~f-p$g`UStP2A1k_&lnQ*=(tKO zMB!hl>UFAxr%jpb^8oFBoHt8ht2+%vhJ)onY{^nUSXA5W6+Q2mdctr+Amj+BQDGHO z$ob%LE}*PthZ$Q3xpW%J4fuP0uQrX2N`}V~=nUWOzE!unl99941fJ=uDqe~jm84Zp zGq=#yu05XTk4%!rF_xb*N@UAz+lO$lMjF&HR*AW^R7W0&HBN6LKgR)=N^3TSnKl)F zKjmH)KGOG^wliCdEH(z7!UP=^WfmSK7u^4TPc6 zF}LOUaW5IO7pZUjuNP-ph7F7P*egUn#EH{d8|9EC9i=&@Yb(XwSkAM10(blTIxZ5F z&!rwGDVm#mVb|yL+0KkU>x@K*P1JQS1Sfc@FiNat5Q5Y}T46u~cg?_Z4PJQqDAnl9 z%vWWPI6#3l7dfFuKr!r9vX>E%I%7D4M^o1@K|ytoWl{FBVP~^D0RH}z?W@B5@s;Mw z_ueW)rbmlE>bB~UvGw~I*uDp@JELTvD;HeNYK*CXLVSzj+^_!-hG+LQAneuLR z5NSmmPJJn$U$o9~a4{hwUdv{kfHI=iRAya1925W#qwIZ!2_QvE5fTG*T@G)+5a@uq zMN~VRldUSMHVz3!R>Ew<3Ubt^@0sEO1KI0TrrTim29C!RYr4W|%%w13bwbpFivON*z4b*lK;v@H16=RKya9~=v}xd4louQUI(Su0?Su%TlC$J%H1 z=o&U}iZHnr=1q9WJ7ad#(Pd{t(B*ZDr%%jaWD4~UA3HTb@qfT!z=JYLCCxu|%$3I@ z^A!&NpWPmA`cTPm{}5LTcFK6~xY*fmV_>L~Ft!xOb{F!9qer# z<{j9GZ>fai-g~VZf<(I47gv}FRq}!-KhkgG7)G$Ee)lz^dT6T}uJAt!r!xJM%6hr< zTD=YxqaC~jFTc3UByH-l%1$nOt+4ZXLoilqO(sKv+-{Hz|B87BqI03pcdsr?3=)pW z`eO+ZjO-)}gu`~dwG#Vf5S#g}*xhLkb;q)HE5{v_osOopRZUv1{Hc0;*o7ve3To9~ zZ!pX&=^q80#9k*$6z~ZLM&equ``>_f!sb zNvgJ$LjgxAOA*U+N(!vhx76yNwU+r-r-{ zHE#8cUtRn4sO6n_`{@7+vje$`{{=jF*p2ZCM(xKw@syYcjKebwAIkN#Z|>M;Mm9~R z;@TgG-5uvt7?q>jU!A}CSFX%aQ`r&d!B@i~e%5p@ZIQ*F2&V!etc-H3b=WS;6zS_v72c^YihiT3B6l@yZGn-{!xA)Y)5fA30ah zcfwBj3la@k(^2g5BCGCL%H|OcWX~#OVy&qum#eV~Hp{t<;AyXAM+b%00=dy`-&n;o z+VfebmfhS00cftI$P1g^K}BntbEdG?U6b%<+>WcE?(9OL-ARU}4<@;Sx<1D~`MW~j z#K5?ylA9b5t(fQTM3Imv?`r%TRZ8OF{W$wbS`P+rPvtw|WQ0`d%KAe8Ik$g+G=k!U z@|uBE8TcKct_vN~49=P(b*hx824mqBRtw* zi}U*}FwgZw`d2CY_ZesPkiDS=K;C03Dk@O&5clBCx$mkIaO!$GI_a5bXDET?CayV* z4bIjX2LywJ=<{^{81H~-lyfYeCqHG}V%jM#~DwZ(&S3MUcnjT9QkMKLEWmfl4lx~3^zaP0wM0V49 z-!(D3irfH&cmnMu##59Q?D@_nn}H+jJ*PpXGc_nn2uqmq7knP^UC?HgR~DL*oEmJ` z3CTVwn%2>0uoX&<{!j?|HEhjD3yv%lWchbHnb}MY26gr$cD8eL!bTUo`i(#(aMpp%;jO8UI~V zI2KpkoL)Da-Pg(^jCys|)hPRCNSY|b^~Cht;cem`O1j6T^ZeN&_a_1)M-rOhpGQ8i zJ^4YS@%S)OQ-!peDbAdhO0Cf*)tWa>MCTI)-_&Yh;@mR^*;r=?#!bwE&_(#PtIp=V z_Ys&Z4!N#0rZAlwf-DZ1Y+H)07tPqO;2_c`>n$hR!;L1YvpGCfW_8KF$B)3^gIqU4Zs<&{yI!az zN7N!7?_m9n&{WjuK(Ng#Z8j6i+RZ}MDe9@8o%m$`6|~RON9@V(-}B;MH)a;K(?76A z;E9Qa&FAKz;+7p6{EfY24+|!{I@J=*!4IT`IikXf*K>;(O`qie6|QD}7xv!ybiK|N z)TD9C+vsP=3{X}PPK?b_(TqdfbP%RN)8227AR)e)JqwxcBA`;bTP5Qd!hAi@&p+PM zbVIwnCF8?HD>ZHJaxB)&FZyMBO3nnL^dE|1H@T;$E}nglPWPPN3Fz+HVT3UP`)#3q zlX|eDCb<`CX6Qh(l(>Tv&3=SyLIgc$C%wy4!xLTDr7L#s)`XMII=c;lsXea?a7Pj2 zkP(gfj0Gsjg9UA~db--urHg>LK7I()oEXt|bPG`px1KTlrEcuZUs{I6zMRy(aekeg zjU|+{A-!3gE%YgofU7@_C!A(N4d^OTX$S&&%wgd9>O`!N_wgAdRhmo%@OSLaUl;g4 z;Qz~J?|(vo#zFDU2H^kz1mOQSWAOjmX7B%zYF4f0#(=YhW|jX{w0T~9i@-A=CE&6bzx zO}o>{(+9Uh$a}_A)K-+Tvhvi1rllxKM9CE%nCAo}5Ks|C(06)G3D)vkuF8^Xj;x4_ zhn$wo`VhaJ4bu=X8`@lJ^S(_=%KVkbu!Ni#t1MY*&P>21rjOqJ@T6KZsm*O=2g>sk zlJmdjTxSKwQ}5-Ix`p`#tThwF3R&V-SM3CdM)LRteOjS&HI>}r-ni9HH3i$MxF3t9 zy4lr1mCoTk9#C}?*C^NxjMtsD@$~>On1Z-qs`Ja&FyMdpo%-lHqIImu!2{Z!bI9J7xguRgh zR9w?$jA$*P{QCRnt3{j4Z0U0F*P`OiLr%d@?BlmeXsHJ zrRC+V8#4P$t803GaEAsZ!L-er29?hjykj%Llec7t8VwC8ji!4O7)m27{Wm1Lv)T?Z zK$&%*7}ykS(T(_;yvOlAqwMeqg+-)v8p8}9B6Z^W?@qkjYY}kUL1v3WRhWpzJIn(q zfY+jRrl)R0)QTyhqd?{e8M z`VAysNV)I+lyKve)yO!kHCGKUtYdE9v|3w6`D^4XkdB7Q-K+j3PE*on)oEvpKMANT z&1QA(=JnrDz236*_iU={vNAl-KF-%;buPAwOhMZUdWmIkj)YhRrpa#FDI4~6cNzv2 zGtviFe;$2N*Ql3_*z3>JsFN!}^6M7Vl)Eik>(fjTEH@Z16_0y;lLcqfONTRaf^c2<(1>|Q=nIB+{dEU(Y(QsI1unbI*N;D}F%tV7=_IH3V# zEPsyrH1%2sP)C~vi9})QmVfbOT1Z+BsNQva4@t*7QW=5?4eX+a=Qw}#{qPvc7bLP5 z$tawURdf^4Z(8O7%o2qye$e4Qq{Q}a^dvr>P{jOnGR6V8gfU6QbIH3X!)E;R*13J~ z*w!#zg^(C-9hOY8#lLo_O@d_nFds1;o#%HXD80JXs7BEbYxlCLim(?cK$5-o@s)4M`JRUx#q@={+WL{G*j4byo*9ACV|Z zl5|jM`Gx$-Kh6m>6#ZEa8%e@$o3dk!n|tP4Q3yucgu;f#YvHo45lu7QIR%kO{5Nd; z1K42tmh_3Xk_l=%bkpWg&;u@wo$9TP^t;{<^%B3-2m)CUH_)2JZW+q{w3}ft3LNm$w20s%xn5}TiHox z4QhRoAR^Qk6q_Z}o^9Uef`)mU(>F$wYAOwNv1ahm5?YyQPrQJRKa;a7p~C+#!RZl6mjUYYw|Y&AspoKl z)N~_#1s~J?K|6fs4D$sjnGqC~+gY2V2#g!^Z9kajz>9V*{KXcPmtN~#^Nb~lD$@Sr zMy`CL5CsF}C+l{?ecEyY&HgW*l8t&fA8#K~s>MAsMGJN=0>TiN$n2+DZb*dIPtNYd zykW*3JT|c6PTgQ0O7tONmJRt7{7L{Kdcc;!fqp{pRNi@UNiGI77ImpyAH-#79hCV4 zI?P%%k(P_JxL!k=->56h>CA&D1;;E1KuC)64LYkE46ycU4*&>giw7;&8PLZ^j6Ad! z(VVzlQ(#~x&kZ~>!;jQoyY=_iD5kYRV5^*!2R&D>XdrWuYyRvJcOuDPIPtyT0g4OG ze5v4-on1eaUX8w}A#4>#Z3VdVYdwI^DX@8CKSK3aD+Tf&bfb9i-PNUiTo)qQjTtgD ztFyS7J@A+D)B8Z|zNkCg0;U91U;5T;MYP23us~y)_Jj6rO=EQPEXrFjj~%!zJfR8} ziJBrL*$qp>wm$LftteWPNY-vY$P~`5!Q&~4_rlzIqZ1tp8elpoD;n0zVC3lBe-$uF zdUTHaq-M=t{jk1RlnPaw_~xY59YG-Z zd0OP|I^OgLzR|>*>w<`W1Gh$eMd=Ocf4Fn3K`JX}x*lNf9%Y+T!Sl8}^ZPYKgr2cR zy#>2DB*AB2<5)Hjk4M0gk$4pFjM7!z-VYi0#8LpewdusmBY97%Z|wR`;=a33S1I)# z_2m9E2++Zb2sf9vr7gQD#c%GzX!C}~PC>&53&Tm%X+zN8a(8?+#Z4yccW^!knhSAH zV{X`kowwIAyih*WU%v-^nc4gwEbvO;YgII{8W~ zW$sMz?2dzMA)yJRCctqGJyJw}F$fJSs0~DcY&ykPC#!HCtw)_v^=2r4oD{au0Ql&& zdvpLTR|@8tt!PmJ&K+?C`u!mFbbIl=d$q-9wcyDrLqk-z@^$uh_rtONtq*2Jq$u&*VeuN%t&LlxVfm^9)P zEK%6iwGzw1)50@*?=3%c4HZKEc~eBD)cc42lJ)ox=Z`#gUz5!^x|w~^aS9;by&Vft z@LsbhyY(jE@ve~S9C2uv+gpqnUh7NtpaLl0ah@20I05y;crt(4(I`YKMQw5NapBOm z1^FcJkXHca2==?3F;Q_Xe2^i^7cz7N4*5Zs9Rj$yJFakFu1kE*6$o(@hvjiR^$rLp zfBS}iY!XSdrz&YQzP$ig2SH@DN?njt z22$drFxo`VaJ?b%_T45F2BkmIkf-lO;H|k1o4>}ie*o;@c}W%Pwy(nB`(HmM^oEt7 zkRC zT?n(YL&(W8hS61?+Mf;$$ia+8;#{`{tDFH^C-oUrs)nWacY>c9TCh;c)yyk3-<9QI<4iSXlA z&&ddV-yVFPso)%Ye3U^5j5aO~Nex?}lbFh4O46Oe^E5~OnDz!AHTI7|S+;?(b!eq; z7aTS6L$Oayf~Bi$A(d9r0<0qDF0}BXnY{VxwdC~igeL#|d90fi#CZaWLF!XVR|Le@ zVF0j+4E4sRv^cFM`vntI?5*|sFk5|5U(>g&ttZ50)wzuSjAzI#0Oeoh*`OjJv`2GH z041wA3?t@KZjb_(a2!7onPDvP$S*Jkio5%>vW!7Ev(p9W?!O3maZIFGyZ(Yt9$GS!`BDW^ZQZH2btCHyxpQ1JGOGIKDt-W zU!7{aq6V(Cyu|O*Kc9#}wSD0@5%^;Zs$-JK4|6Ba+e*pX+0RIQT{{irS0Q?^S{|CVT z0q}nS{2u`S2f+UU@P7dO9{~UV41oV97rLga2$l*B0AMf#008s<0O0>E6Z%NU%4w@5 z;WrbyU)pxKVKU*)cP-_G%-34cikotB-I%`^OF-C=i8+f~cznTj`=7 z^SX1jma3<}!p$j-?xMxEgkfjP``%PJ`ennl#l5Tj?fdH^`qi;8{noa}tJ6cB>ah6f z!Mm`BIjOy#QACR&rn`XeJ}h&PSCZu|Xyd(wq{qpK_-ch&FH^Gky{ zT~I6Z-ja8>d+p$}X%2;~jdf#~awgyAgqoet4leeL$KZs0>J12-wI`SL(e?QI)y49) z1qp8nakY~^w!%}=yx-ji(I86e%V@I$_wYs56Y~1-f>jo1rc&*>z^7wful?0oTh6cY z$h5n!`r@2ziHyHSAHl|{j$2Qvc zYn5*%md#fuswLO5iYx9c#dm$vZoKp}w^=xo`#it9s z9RHnv^}E7Z-)a10u88CNqU9lLcJ8+3UHWATx~6MkLf> zi-tjEzf6}-W1`|P}zFPCs$B%@^$rH}O+jw`=7CJ-)^g2SsobwI`xSrk#?DoS z27Egj7l1=X1u%S#FVJK2wO0Gz?9R*kO)g`{cg`;E>a|xUe5GH^_)%E)GKg#G8sB&9 zpsST1pAXK4=dDA+cp!LT_ey}7T@+xn?(i9j6han^DE4h{!1$F!hV4G#TU7K*UA3;? zYmH}{$1T8#%50il#-L?o#=(c>>A#PSv!jJG1sCbM`N9wEVWn-qJL6`bOHkm7`$ci? z{_}6rH{A$d#d@p1kN8#|ej9J`&EU&Fh~W{j-ZHQ{oqj(G+`FSA^%f01Oy+8IiF_8TJo*jI_fk5k& zZo8|COI@{SUa+{=3D1Vfmkv_Owx-!)JXY1UA1gO|Y1XHuHCJV8GAgW#5{X6ERFByQofdWz}jpHTdro7 zXyW0gzGufCo3R6+h{*11^A)=lcjN!;Iiu4-ge5~yD$!puN;;^zI?rnOxO z4a;KYd&!w?-b!K=_68%x53OKmRgEZHEFW1e@ER!`o9glgA7aG?>Ej!BBKIEE2xhnP z*lsV%tkEq{#=K6RDKp?Lw(@4Jl8Vz*k{+3r*4Nc?FFO%AGV^POw7!iChp&Qw4|g6S zFScwwb594fSZS`-(F+<6)3}Yvdk~Jl0m3ijM@f_oAwe3LZ+hTLF0SG^8{99*5o6@h ziYHC*siKN}pWnBSV*o9;>Bvb8$d^0XXw<<^Rm!sz*QeTUrs^k|EWD%0EU;k#(uo$P z$7fLH_T>s1_U5$Qq_#l0bhg1M^DUgp;eU%r`I|Is*p0M@DZJ~W2(Y9ZDX&n`b%R!B z=lS9b@X|SVkwDJyC*sJsl{mjwI(!sq0^OBS)kzAr`8IFzwI|cm3y$n{Bgf|p2a2xI zXgh`#VI?t<7ryh}K${LbGP#$vBpBy2oB-IJHkT9MIfL* zlT!#d$3+YeQ_M``3G~}_EJsSVgD4%sL_%&$AeA4FNh%+l6`eq{b|kb%haxT>tc#7H z#`>fk_qe1Vt-SSzfk+eUA4-*B0tk5Vi%9Tt=SLDkSMWJqPS6G&84pZn(PbozCL{_x z<>9&94gr%eWM98=VYTUBF0&~h-V2lhCO)WrM?h28rTqE!$-}=Iyi<>+j<~qJO*SxO zuz@(BcWKNJ=SZ=Fad^;AwDat84KxWU=J)H6E?il%2t?;wR*`t^OoN)dMN>X@!G9v( z{qDKsyNKQyN=@J-CPJWiN#J@t!4^o1{m8~=W$8Q${GcLTOi<-wSPAM~CO zNa};2anq)?6Tjlb^I7E4c;(=ZM9P~2k2pP$EAp;CCtx+lj<`XgDCDfXHuD_ok@I;0f8*+xUJ|6=qFh1tM^oHC~uE z1Spqj*jS@!W}46Ek6e0ayVxmr`SJdSj9%0oA@EQ9?`<-HF$oPh z>ti^MlHTGRZUACJbtIVqJ&+PK?lJGhWWR6i3>eqXFdk2rGU4J?Is#2Es;88g{aX$~ zYIP}aUfNfKncN!zj^C4*K*UWqZ(iHxnDaY?QI=tq8DFWrBVi)B^Ga9FW4riK)(;Xc z9bRTkM2X~7Vx7W_mo=H7Z#Y9B*vtV--p#^^tjvemlSw?`5gMPiIPV^u)<_3Pfo!Y=k~Sd{%il7xaF%WR!9y z1TRr-rt)cFFRWDBQPQ%*DXo;Ygcv5?F?B&EM^x4uTq1kjpMum26OZe0o_W|_WsHgN zI9_JJDm6M&I!b>h6TBeMFbEPw*>^iTN`OF2f};Bo=q5r(_z^(Z&hc>R0_hlg*MPsB z#Sk#Xf8{va_DmvnpiZM5Rk29`k%SIN=C}b|b$i;2xACR_CPac>cTFS}5+$rbP=T68 zJ*i6dcYf#Uwco#qL6@>5%4$t4VwhUV1I(IaAfQrPU6f%)+P$EQrAn*u;f7aY`PnA9 zKyZRmb8;oD^+RN~ndOLK);m9KNuBie-+56M8~7_Ch|me%5ePkmp>?f@22hsq)ZRw1 zdUHwfP3<-_$0ZqR8iAlflSpdq``8aG29uI}Wt>Q54BJc`gerzH!P~O|g5&DI9Lea6 zK?p!*6UACV>y83{dpMrq5TGcx!|sju%7+R5_PUmLN$;g=XrURs{`KbHU59rYYYRaF z1!WiXhfturi$4k@PR;VSkYyxq514Fqk>u#64udI?bk(o`?)MCdN!%_X35r=i%0i(o zsM77yv~1x1J1QU2wkP>MLF80YrBlZjCr>;vhSP9eIRDz%i^v~m*cg!(a9>~L#1PS$ zFm5;@Z(R=XfJV4ooct~m>G!V+c}R##!C$VQxYi^nPVgg6{e6VynvRx^gszhGjD0seJi^f zXOMEi2GWUdQ+#QU(@SuOAaGp6Ya%R`&_e^?u!Fh`<`_~$o2)?gh|^keUE{nTbB2Rm zKgs|!sk3+i?C}rhiM2R}^c|I$LA*(2fpm`GO1Jkmr)CpJJ9QikDWqUQLJ3bCHMUC% zCMFazjL?a(*fx$tI%kKJf;)o@OyC|e<-7QK^kIfS3l&tNJZ5HGY|H2u%>;NP!{p9l zLyC3%u&msY(!$p@+Q*aj`=VecQ3eJ9oA@{dI-5{LUZZ%{Q--}F3H?4uyc2=8SgKtN zIbZ-BiZjUl5cavYWCRN2VK{oKP@J5vl+VmT&ihK=Z! z%)_hL_xs&xcR!&v9G1h#F-Ozw3$%}PoydG0L_L_+q)iS?7Inh*S(A;8I6Z|ikUtJ+ z>Bz)X;MDYvk%_!rCS$*6T4TUx^{9ZtI_6V<-H`g6H25S>5URN?D}pd3(RifzQVvV}3 z*C&y6A|*LDIbEOKKE8BnEX&Mp=p0Ul8S_epP~&*={VT!6xJ- zi`o+qNuwqP%=Y8z8dv1VmvoFUJghsG%=DvRUyBp9AG4tijB$EPw!k8aJU+ z3BhrSW5Y-nVv>$4*0+}eC<{i%9G&>}KD}*&qoFgLEC_CiQJX@`#FgNZVH-y1YRD3D zeZT-B9q706f?5$_;e=l4wAui7u&4`BlJcj7h9q*PmH{D2krBN$QWl>-#i+&_{els+ ze3^{x#_My(PwmXo%94}ay^>Fh&^joQ??ekdf~21s!5SM6Lzok_GNEFF+93D)uR*HO;tuDaw1UsycMg9T#VeagqSDv>wC%tNMKz4$siJi~)O$ik_D!j&fWS9Z-NH zE*FA1MiUr&G32sLoq5flh#+Qd-$yLMB``4;-(xk~AS+mI&O+1a+t1gs3D`H6KP!Ho z;KBxOh9VqK(Vw)y8cz(d`>Ga&Ln-O__oBwPp+A)(Q>lpJGr%{1v@Rb1@?XMk4pnA4E=&XqhQZ_p zGy@*-$45!dwvNiIfgi|9VLAUpkIci?=D20*IGv{vts5^g6*#7s@tPA75NymQZUQxI zSwQNR1&NsjA$eh3C!AZ`Hsn6vlY}i$oIy`KDIjJ55<|1XpH2k_th`YE zt5j%VMUMw3$&QG>B4A?o$d1opl&YNPVn%or528N&#UlB_q$IzCamwU*Gkl zdt9RX)~^J$HC!V-Gi2>=q&1dm( z3KCSPsx4JSEvu2&kop=w-~*V?@LuTY*(&5BqlG~QA88VSc&dT5WnvTo4kOUX+8`*+ z$pS<5e9}sK*Y{ylBU9)7(T9t%IH6}oH1JW2!88&Y#`dVwQlf8J+j(c2=HjKpkumGn zpoA_Cv|*WwX*?dyzvu8eaA%h60X^C8*IvU{1nv8R^|Tq&q?!pN3yQ`cb6gCv{8lqf zIJlPj<(`U()FX@2B;$2uMij=R5%J4~A~Zd~V^9p{Z&+WwaN)syBs1*m!pzA@2sn{J ztZXF9`rXmn4#dbJT}C(TDzk%{+)b0YXJJci+q$~a)BBN{#iEp!)hF`{PsV`+Q_STR zkK!xCD^N>!bGN3P3}<@G0i#gy8j8}8rCNsFGrJ$1DnW}GFUvc2EJa%9?VQs+i0C-Cp;3H64J3bp#&W=Q;id|$z~hZ zq!+Q%xpKs>u;nHyjB3zu4V#9sTEVJ{t=`R!#+U&SmlziE(s4`L7%%&nFu*6@mCq zNYHl0j)|gO4ozpx4e`(|<n3Od!18sMaH!f&L!tpN+G__@={t3-v)^=@Gu%efr{2P*Kz9O*hMu%2h z2iX@p^7GQOEyu6NFN6CdKlYS3c{kcExP5NH^J1&X-YWz+nH7+<9u+#w|FFBM<%X-) zsZ}WTp1?UfX;|+TX#7C9wHwR-rBLDx)pKOZX45l8KAl^HUK3BC0{kwyk9u}pb)6~A zkkR&b4{or>Y_JR1qeX|0u9lj5`TR~a`@O!Eaz1SB>(x#x?>+Eyd9?3(`Mz0?4)OC;AEm_`a5StXYOocJ@s2&-W>TY zFIRlQLpV{lD0xm{V{9&L55=(8G~=coTQ@W}7iWmY1_hD01J1SFtbE;W0?RWUuf|b? zDNsR504(~H{HldneE{C~lX3dk-Oty`+=fS2wrSn3_rpiC*v9ei{e8R7`~CgIU;f|q z^L;$<5QP_iDPemov7WTFEeQ?f@6Iw#d~DHSfro?N?e=oJi@{fZUf<7L4ZSU7z|yMi zxoNeMf%m>7A9cfX!P=cIc|0jgbkc!Y)_kodUtgM(W_JO;p0Bmbxj|1HoP~Vz`B}w(!B=Yx zwvgi1NqxL3C6?r8$;iaSk(tqlYqqHLydEH5{($C*VOs>hI0Unka&IlWaJ_zaE4G`B z<>{iuy>jD!X>g2LVOsneNvFhlw%lyU9=H$pv)lk*Upx_8>|1n%T0bne$hcw!DKog) zn>X;=&lX#B{5Esd6&4`I*u-foNjGMdjwO@vVhldP0dQzCuSrfm098;ryl|Ya$$cB_ zV*Q$zSXsI;e;DOYk=MidoR^Nl$9*wlvpSzS5}MOT4dx}W~`J*l+TZKkkR?GCQurO$++ z7Yemt{=6tr0p@E&UzdDlU;qB@$U4I;0Yg57@B!)`?RVawiJ~@&ikEoxGU(F#;_FG| zwe({7SA0`Mb8!J*R9CYzyy(7Gi_fJ_jOzy-#&JZE|!exJDuysceVr5+HQ9I+G6bZ zHvmX&Pn($2=)vE;tUFX1anl~{UI!d^j^n*v8-Ik!BPbt1fx6vZZ*;Zj4d~M>fW6$* z6goKcwzfMrv3WL_C%;{1)ojCktZwo3#s5WGA#r<@`W$+_;+y^qu>D9r*q`4qE6u!~ zp4hOggYWvN&Ge`csa~*y(IaL}k)co-|ti z`tJXIH&+ynH2vDs0`Hw##m>oV@p|RAY_m?h_NC*kYW_f`lmFpazvACN!0U<@&DI9B z-Th!%!uVPB+=cG9UZE+qN!-?&)I)&5>-^D(?7FGdOFxP{rJrr%5Wtg>)$L_6tMh#u zzch1#zpcgZu=F0^Vnrmcwn$B@I&7Y$MqWHRa(_PF+ap*n0bgtGc<+$tOkIXv>~Ip$ zrmwVq{%TlO<5SJW1>}hEW;m6U%9Z@!>2Yn-m@zHs2}@zD?7!L^UbrzLb<*_!xwo`n zgla%%XguqYQ}YiDn{s&BZcPdg#n*IYk`s2atT*Nqi3LwW-elEr75+$;$y6a^UbJZ8 zT7=ZZCgk(qf;ACe*a%#f%e@Y~m(WHSv2J>;O62$IQKE({qAYY3*z8G+s|my485O*kUfNUJj;A;u zb{l*?n;ci0UT!OVKCY`7x76BK#K?MTaQ6_s%LZ0+avI7hOfW073eV~V?>kI-5lCub z9~7H3!cB@-1y1fuv3NOdS5M6sNjW)%ZJN!P*h)SJVnG_4=97?>xbvtwgV+ zM_#Rd8Bny#kA9yJR+DeVa?*fSOj(~_v&oHa(%CPgYU6o7h}|E4 z4*J6@;)lg`sJWFB&FCBCFz~h;q~28us}Fxt&5isoD%6h;?uPGPIXk;fs%laqClLgc zb?Q4(PE~E4XrD#Q-Fnh~X4W0lW?qJ`uyBSnS{S_aop1b|@_C=N?XUlW7X-c%fupv~ zsQsw<=*>UUAZ(0Q&)=Mh7DT*nNX>ALeaqNA5J&B{+ z18U){mO|c;8)>0nlvvOS6=#^mjFNo<;5fl!z!5uaTmmEIZCACp*8yl@Oh;S&9oCBU zUwKWX=OH5jr900fc5#!EW(H893@U+nj3wz`&>MwEg2!897;)lT)0s>xURqn8!jHd! zT+b;^BDCls;KRZI)J@JbZiC*w;NIf-?-4#4J{5|@%hZz_gGW@Xq(jJ3jk zj0e7b$|^N7I#|l?%Mue3^dTrl!^srwOEqF7l1{)vS?2=FI-S?BOX;I`XfH<>O#+eo zXvJQNju1H!Hs*-XVStykh-eXP>wO6nkyS95(gL@W)Fht9`YS7X13O6}CFT#~_3Oi& z;;8Zea!Iw7pampgS&Ul7z-Jy_M+LFGyT6`rPR(vSUUP^`;l%A zb&Zm^NTxGn1!j{JvUuvPZ1Vk z&V1tRq{?ho#U49IiM@OcG@YIca?<+ophY2bmFhC@W0Edy2w7%$-J1LVOc7ii8SV0~giYkjV<;4Dy$5Eu0M{q-!RyjO+F4^wMl(54Eg0LA_@M3<7i&_@iP z+CLX8xVYkQDW5r=+SsjP?w*#?SU79JXQQd7n#zt9@tCX|1wL!vRtGg|(PxN?$`nWp zK^{ylD;=Zv{r>5poEg*Rj6Xt*)sz6zMeR5%z(nq7*EWrbJXNP3g4o?S&mYaF>#g|h zG|4*Bv~`bRzXvTFMdpu+2Br76S;(C(+9;&)*Z6&Au^ER%<&K?1v3g1 zPH{Z#{J}u9*CFu#V(XiNB`E!Gb;^pO7G&e-DGi~6BSS_#5LqhuHCEx~uT zIvlRZ6@IV16R350YM_;zTs2+uEfU46a^O=&jf}@kKL*VEy@NO{xDR(JY*;W_|8_ep zDpK&3os}{pbr|(Zv|7sK}l=T^w@&c?@)#W0sSK zv71=mphd0VWaZ8|v&*f5Z*o(~$ZNW|hfH8k2EH|cCyXMVIpt{P{F{S{9TdDNC6CR4 z{13AYsuKlQv8)!G(%Z;xVRz=GHu# znRwI_nMfwmm`CMot&>Ot&&G_0+`2#@2_vxx-3%$i_XiH!%dJU|pmo#}3(f`0k-|X% zdyzbU2m=$`=A=0Es%B+KU@!IS=0rCMVlhVEbmA>E@W zr}5&vzAai=4T~d_$HRv9HD^3hT08Dam|C5%M}@u9SW_alQL?}2^w;o%-^uecW1OfitK0;wlC0*LTgl(3 z1#Jh(AbP^=0nAArd=TIeL`G{Q2l5g*;#=w6>MT8LF@DW|ZeW;|4}IqTN+RUted*l9 zBTg4t@+oIpS&xfjlcqLke}y(ni(||@E#bhElUdE=#j^rX(=O$6nFf%lL#y|1hMp~s zy03l9ld%8svDT7u2(+;KZXqIi@r}e*UI_^ta_3<+|nW^g*W@WbBw7*hJib&bAF$xKdjW@-~PTl4*t=8ZiP_3TS%G2H!gou+zD=%p|UyCx?LP^k!Md zPs29Bp703jBXBeg*T`m zwihVTlMpiwyQqLzIN+qU_S7$c90kZmBRjHMOKr%XK8C?(ql+10MvEAwp$VMxlT@jW z1Wtd`&BZGNnLKE5o5>RQT9AEY3f^0MwRxKb+CW&09U?_?qRz(z6;QCF2j=UmKmY0v zI|}ZY-h^KmqYK|&__XLJ&e%Nx$1;(7O=gSbi;nTlJnJwu_1a} z6k|}B(0x8HXmG|4H>(ejM?IEOx~X+s;fggMbeUr zAHNGF@tCjz=%-QrW!cA1&y1*<_PPN%SWI6t76><((_pCQVPU+WJk(T@>h zZ>PeRPcC}A2U)1jzI$*ki2WAQ)l*$ExelTDQ~9y36j3??y~4b8FaDIE)HlT6PbJu1 zf*+RJ4|WYzY`xYg{jxV@pSE zaTK3Cdiz--rDfrNn2y)A>JPjqUN)`M58d|`qypi~~ zLK3t(;`C;t%vSK4>vNl%TVq!smq)?in zpa}_?rvE1j_y&$HhD()i-um7D?i&r7_6k-AXudx zN^+=>eJ;dczcsSerpTWT=zFVaPh1LT_DE4uLAk&UNTMscmTz8H{x-ePN1f*CjH874`Q~~5G$*yY94E=baWQX{ zI5kuoJN0l$1IjjlX@$S)JNxAKs;#V)yuG>gbN=d3b z_#((goTtCuQ9vmr;-DWpqO=;*j1BfK8~+L`V1JCF23weHAYn>c;l~mYp{;KFxR6KB z!*{hR2PS|p8|3!v9>YzcFRGQdEftxO;8B}>`{i(=?H zmYl=c`ezaA%qUjEQ(SZ24ZpxqL|E3Ji^y1h!V<}iklix0ZQo$6B>`{P9{VFA z?&;;|%cal^`^K#)p-)htoqs(<63tlvdWt)X>m*Wp>tdcMx|`|iRJY-7H9ixZ2fv+} z4%P)d&4u6Pk3xJ?PMqH|8$9h`N$St+PV>u1H1XTdsS+gb-iiO(z7jG77U(*+E65Rp zc$a5qD;Gd2uGvB=q$p z_mB@Ii?rqI@}+K3B0sc%Fr_#$`EZhbX~KSB=FI)4KPlq_QJtB}YC2>vN}D-jI_ol& zVbM8gW)UOLT&oO1(1@~zU-lySrd=5AQeaU&$VyC=Hoqe+bVFH?e8!)dCv@%9h_G!|KBLyL_SMpA|pAP~k8;;%&T9Z+c ze1@M?PJ2}B6z_5R^&zNlg=XEZ{W>1q!hc!9x+=$=3MKa1-8hHaPU5qzXW(hOC!| zlwun8a0*1u0FK>sWko`w%s5HV>KeZWc_536wCe&O*-HA^AZTm(`fF1OG~8dJs)rO* zy(kM3XSk>yZnHS)w<^LKdN9Xd%h#eynJI;|*JtHDjG8oY;R_#nnAV}*ND8id%;9vcd2C(ngcaLN!vigM>-3E+nNU;e^WM)@y!)G8qywSS!28$eNuT13*V z@Rjh4Oq(W2Qh*xL>_HLbkb?;vv-9XrYpDLJJT^Y=TuoVm!cP3vv*e}NvR6I22~vGg zxu5)=v|zw%nR>8LgV^$}1vKGk3UmvMw3g~}IR*g(A(g?3w?FN{<^>5R#ibSBgN7)l zJ$7WBc%vJs-xx$}CUQw^WfT^HEeK}@S;Wa-wkov3{FZs}o7@lL$W8s&STEeiu$F`C z>#z`yAORji%WUY;P9Q87h$vR!+?i_ZE{tBGzs0Dzct5zXR;jIH!!GIJp}iv+;T#rq zN+_AizGW0OgjED(2ukBKrVVn}n;RI>a^3%HBS#Ko0Hw`7h;o$DKv6I>@@ZSIU|+_z z+0sUw9pp}MR+O17qW*2rfiv+_PM2!NcQ;mj_~V%8Jl!baf@o6l<9LPX;~LSy=0zEK z{#M??VD4`JxxltSye@igY2MZ1yzdxMGLN z?CaT77dposlf%RFm#2|VZ{iUKBGmChRXdYdHs-#aK&~xS?6ss{HDW(R zw`dpcwNdjCuesOZ{Q^Jt@?k1w?6Z;}Ji17=UFN>`Cvq4nEnBql!t-JbUf2}0x}6Pe z*O`N|En4&ESMI^?=CjPtsq*^or@hyU#m9y+n3pw#igh|NZF9D;p2z|-+qrgviwQdf za`^t6zc;&RAn#KWF3+1->ED%_=9@2%r@0Wsqp@Fad_3R#8KF$~TA0nKT#fU(B3{8` zpN-%;jk9ng1?!u&=e|ZwRaYTY>ESmSr4XZymke4WZv=s<+5&E%VeZl8f*pTz2-re_ ze}5!Q{SG`;Y-P9nv3)N5C3xpL3J=*Ia_EOh#s>{)ju1qIsO|CGe?M1$0cmlbV^}*+8jb zOH|TosrZ{MSuFT9Hl>+`p2~3 z-9D@G{gv%SW3{7-2BX<~3EChmwdU(@wDII&Wk+*u1L5q$E?2x>;hX7D3${Ccdu@EZ zuHa^EM_ACa&cel+#;r!Qy9w9a#^3L4(l@p5?8id-gJRni$?QWzJbDLylbYVf@GjJ8>wcw;0#_}!csflp3mX010{(@+pKKfATYhPg&L;kI#`i*>tBOvM zT!Vw>j!}km(`1{SWO-2uE}Y_mhc{3N9>*qo9_2)}7(_He*ti2OV^jo89JUe4a9R3K ze=t4|I$;-6+5AP|*hXG%G%YPPD)@#!|lFW@Iv#~CB*$$7br{m+H_Gw?V+l$p{}-4OyO z3(E_xp~Ou?(vtu(Yx-1QC^Qk89IPY#K?iUSX`ga|Z&T09kkG|Z+l|d%c>0c%ZeO(~N&jU3EJUvT!grcf(y^e&@auZN+Yq>%{z#m?&G{MJf2*Rf zF?Y1&TH&#V+8AXjs3eRPv?*g@=2ofEtn$l(28$0_3KPEfG2mIV$9)($3LJ|ZzcI8+ z;c}z}GHM9jYaw(qWMBmeu{E58VGH>3(!>+_shk{;shpOoraQ=(LQn2gH6UTc#euqJ zrXxIISVdGS^6Lx(x&uoSC?c?AhYvS+n2e(!&q%$IFliFEusfA**vBHp#oxG8k_ z=kV_HH5f(dP}PHDyQ_5aFl{_dAxBeytAxd=Q1Q2&$W9I!;;;$FLa!a;7+7D ze{i+j>z}$#SOSmI3#Xt^;L!c5ty%jQhZS9MGH`0?iW`-#(@#@to`!8!|8-T}oKMj5 zhObjgN5k|h1|H=XZQ}cxBnM04aS;eqWFgijh$hVU%Rj*iHllP7KbH z!GjcpOZ@73ss%$e@5AS0$lwQ&`n`zp)QdG!)IS)B?}4ahCgh>i&qRW?mzCXH>gxh^$vv&{TW*eq?)u9wwi&b!IovQ z#v)}^m(f3J70xA#E)80C9St_D0sj4IIQ06N+n?XNv~or#;bf#H(ZRdJf~1$&r`IM3U^E#hGAMLhY&4bl zd+^_-h8JFwRy6a-N_E!BQG)vHbM-@hz>;;wHw_p-C@~DHReGc_EVvLg^l!y`87XvR zixX7(Okq4=p|&S=Q$)@y_0#qpl2ean+QgUWea6&VuG7|W5$xJ0nkFFyK@MqTVC($C zQ2fE*>S4mb6Z~0@bAc2~_9S5eM|ME-cGn(zwuR;fxBX0Swvcu*Wr!vwoMm}n~hHE zv-vu@rYYLjZ?5fE6({N)75aoBZKsr>dWH-uNo(bJL3m_-=O~IirYJz{9TZRdWQ;oF zYpAGk#UO%#S(XW99UMWQo!W-2(+OF5yAN-9I9G-4?sEClECpqr-AL1#tE@-%D2r~e z%8q?vxyW;yCc=ySj7diiZ>EHV?B2|rh)hB-2dhkQYeah zYU}Dq{9Goo*FPS*3Q(iq=6o9+?~hd|cBhovq`BU&?MQUvnU9$np)MOl9YyEapeyJo zUQ($dObsHHXAnjW0D_KJ1VSp@oXN2 z$DB-BH;$hA)re-jcf*BsI;uMMIB%hnx`ADJW~=H1y2-1HPz{|?XgD*c(V4%ku=v={ z66sg174W(Ay(ljM?vI>=__sMroWnJl7Kp?Gq29QnJ}TWud$^4Fd($_K z#8$iQ#%Fii8<02O{$1^???~@S$~A<%oTZ+n(N^Cm%aMYYgCyYM_Wo>cw!%qrUwdZ^KqvO=T^sjp!|rtn^tO+l^7OE@FsdQWc&x= zBUR`7WCYNPCjM=Y&?XbrdFW#7pvh#LN^JElb#hTp8w_E%G(PDmNN<^rEkMbQJP|ST zHQ|`~q7B!$Nv-|EcvdOZ6+-149xPk$v@4c>XAv zAwLs4PT-{jcZ_KXl9eU*&hYP0;a{tzWnin+&!%f|Q#5p@51d%tW#aPuv&T}#U5gxn z7cJ{#E|-sKdKyucW!*e_oTE1GCl{YOEx!&OrWemxQM-sX3ytzBWH%1?Th?A|0UOyw zBw1%O3!B_cK>v?ZC<-q2Cb4knT=0Y|^gM5Dcbt!}WHmBT=jN=xDx(bQ0;)s;MT|&* zwu6tc+buaD5I-gY?D2hE!^!jFrek9DhR0=lW6ETwwpg#%LF;3?w30mdvtqBJQ%YMN*_5MJLK00E)?oZqAcKFAcM#0g6E7iukBj~ z4+^R-XRifJQ~Mo#J|{*MZuDEIdEC}zvDIRz-`3`T6{7vD2&dnim!`%a6?eRi;UXay zDT|lEID=;_RrvSPjyb=vlt_EzPJwV~o;yBN}X z>W{7B>vE1=O_FIVW<&BcbTJU>b z=qa6hwOm6ZUd#yk11tJF>j=e^?Xku#K7}v&IFB84)ZVU+S`(jUTZM)7%2l@7y*Jvu z>9rKg@^bZG0}=Os^eOtA2I~M`ywHqoRLb5@!2%s-khR~xG}hMB8T z5iPDmv4U2P$pzsnK~jV&3H<%Y<@^)ONFMT))D1rFeeG=r~$F|d_K?f(xk3d!kQvo5e-i^dv6v@fM0;168;E^5uH>hP-cw%F%eyc8+tgo?3s%3Zytl-IAsOuzgjVEPsU3I4tVGKdr?4ki$A8GG9>E z9W*MY)YwIajN469d8}*oE4;$W*>C0;1*Y%kn0X`TC{&Or%6uatMHC^pU<1rbFj%UvF%q3${rr*W8=!2|Dec4&+Oe?Az-P(dX^) zxsB-YqPDXe(nlzWK<>?tmdEKfYmp!B*o>>Gx2{=(>aO_1#!HaB?Ru(b|sA3QefC z29_KeV-wbzTDBckr*}=io8!ybLl3ZhOdf*MFOl*|)tKQ1YSlv&OLZOZ|P9K0Wu@ed_Q#t5W+aDEaA zy5AG90>JCH0A4?ujZ+>A?RayFZ_~;q0cR_$^@~{E{*nrc3b{xrf=I?@%V4zhNEk@q zLka?L9}P&PzfGgODEMTCjUG=!@HUN3Wa&}fY~&r1n z8A3HNq&blyUK$ku@@O0Yv%se#oW{b^*9dvGZDDI~fYiX#%CYH4$urjHAjv_hk^w_I zMVNyWAqG*ED6Pq{0NlhLg{&8sjetc>b}bf~OQ-btb)CwmW3JbFxD#5`nh>cF6WTCH zx=JnxE(uIxSSbrz_=C9#uo@;*VlNgk!Nd5WrtKwX^XQl=Lqa-78ZLTtm=L``wo5;c=P`ZY+49J3t)_nH3 zT95FCf6-Gn_o?Lh`T;f|Bnz;CqqeSUvC|-z?2SUR%CmFR)JWB?N_}DAJS=0033F+C z8YDtk!}t+?OvFPUS14B8(0KYc6U=mFzE8~Q?)=x1Ns0dD{`=lNrH2n`tXMFTtOm-ijoY;w;>Y*Y;dZ3cXKF&n>7@N<;WV~N{_l!x48bfQs4*3Nobc^G&8 z$Lw|@V{;20>eHj~gI+ZSu=Akbi;3iF6!gZLB{gvU(` zsJuVAgq0MJhy)w7lKQG3!JmxrV}pgeLRCmY9Q4`B7!&P& zsoVfpv|v@Rru&p#DpyT#+#Ys*#`(9c`q{7`cJg?4tNkM;Jd|av7|W+#9krr9l(GP? z4`b7tk+Y+#GLovNl=DWwl5v-;TSBAa`>x0Ie*E?&7ZoBis%1UU{CvxZzn5oR3~fzv zxa&o|r7~HhJMXk4%ZCEtB4dp$7#mKygPc!uKv?g=`PEF7GvdF^oS5!KJ$;17yx0NU zp41e$|KaW6yy{?EI1@ktRZnk^1hqvWI2EbwU|c$IA{Ye`uXEgr1>rixLHy><{&I(5 zSM#p^%=A^okG8oW$12;mi*lk4 zRxb{%xs-*jVyEUQ?u3I`2j!5EysYH=2(4=EaeB0O^ADejcp#8_{j~>vA-t3M7^dXs znrZ&+h=fbM74DjhRL1!1a>BstZe2o_lobyQ4HP1a@oBSv7kHtI46b7DP|((}G( zoU)AG>?aux0u;4V_>?1;SQYz{E=)ZE5o)Lc<^e?kCf8Kq!D(M5^a(bED+)E!o4aB1 zxcu#}*8cAuyvD|r{yk5_GZXtg?QJE(-j$}OD?S^~OKTo0&uv6T1mM&+_2lAY?n+5( zEd%G7hT*=Qxv0vSenOF`n#q#|Pbt1f1PYX5$z>U9ZgUH=V+3qMG?Ui^=YL5jS8fAV z1&PRg?G4K<8p!q#OjGQxZP&t>!BC?$w+6_;-1`pY!cm}|lt@f(DUx6=O22RV9_Jr0pK?((c@|vg{|H)Iy3h^RoJ*JgdAh&uDf%31NOI+9OZn!IbI z5`oTphF>WiH(|M~gC9z1y*g!>wpH1Y`XsjHqY&E$4E=B-X7B%@LM+CeA<`mxAWgGh zZP?&N@jQkf$x|gi^VkiI}05ual7S@aM%-(Qxt1lG=kpwp!p!4beEHEY3^^o(V zAdfSEUq0QL1<;Qdrv7upMvC%Ftght!r2&bSW)B+L3CojY(S1TNn`)--!g6Uv0Y*Wq zdh>F(cE+?O#aO*W0d{@6jZPW&^IrVBL$^{a)6;9~md`5uPY)Hkk}YLBQ*4zo;xbFX zWN>8!dL*quYLqu`caMkfQ*7%>xeIxa0&z}N6s)k+70|x-nDU37e{`TB-$Wmbg})@5 z9V>1O!SS=ZAIMx#RH)LP?pj+NDC&@&i9J_Y|5sPMSVF2w1`EM4vu6rTQe}#S41C$e za$kqGYvW#T(ORX(NG4--O#-eHY3|_B3J8)fS^!W{w^wwUG}=na~rbVg@3LH zB`-N?JBT~`1-72i)X?=Kmno>EpH1Kcu72vI|ni{p$TGDNL{N{0VyeKKP zC!cK2lK;_MZOVB5MwX>BP!8B0rfGhMcJ@^y_&y!0fPXv)jKTkCAHV8sXXTC41rAhe zItfZj(iNL%V~z-xk$2nf;3y9d^Ay5@%7)3NI*XeKb^~HT;PK;mU+Pb)0OES6Xx^wiFgnFtXa*$&r8Q6YL4UxbvWuSj4WPm zaLrWUcT6s>J4uO3CG=vSt;dwKPdq-CX8}%(e|EVQnAY`DwCJv(RF5=&g>dn*{As7H zjHtyFl2ARpaYCFhg<eM5AQV{GboYL<$bI;Hk zUTEe6D(

      rEm;184CO0Hbsgc#vjdzEkNv`b@RV`4RQ=s@xBFYE<8THOCsvKr}OvH zvHl~dkK3oo0K(~mEuLABZF$-i7~_|q<|8f0!8q-j89Xu1o#||ZuPC$zeRR=?H>;Y-yqD27xq` zgn~LyoH{-30BILHG%Vqjr*VB$8<^DiJi5p+SJ|#+g*?Jm}Y#~gW*HVN63?9f>LjU`PLI{VT8D#H5(Y8qWGu$ z)jUZ!@+x`>&9jcQCGDyVC}8G0{ZpF*t6{MR8hS%VA^jnC*>qV}v0@Acv0ueTJ=wJB zMb)}}XirY^c4VEsb&nHUTA3becyO2(i-*nW$TpJt?RTg|bbS1Upi45CeQ$(H=BsHT z72hCzNC5UekS7~>!8 z!ydudQNDTz!ur8koJ3*#o?k8W=J4IJmkN{l5C-f2%k z$6JOdA`KpNB^>Z23o z{vv|Y@S}XRNBqtAoQ}7~f-?oMlA!c)x}dtrq^I)%#fY04a_lJ~Hjbx1d7_Q=dp0VF z3HM7lv8jQmohlp{d3SXVBU-FcZn%sKQIA4e7)NF{y_#521juB>Fe<^QSjMx(g#9<- z5Svb1rN`2Ae6PaHk5sl|fk&FqvW4~n#Pv{Qz%4i$h+MJ8VHWY|ifp|Qx#`+@tdtBpx z`8=37SIbdCZ;NC4hrRVofAzTv5n$606F8K1j5EVul~_$5ah+>A&o#?5u&kXLMyrB< z1y)=Sy$USjD_<*aoaR}+h%S5h?2Xg}CWO6Wjs_`Yurt7T#SXJdR`A{fkgRfbx)-_1 zrK@uDv|eO=tT*g0sGrK$`_S(*41NW5+Dp|>{V#jA1R_$$<`)f>L2I>TEYG}hgo*3C zt(838mHe$1tzj?&eb4+s?E`mSgaDG~wn-aw2wYAC)ouhpI4H+tau19+Z^ZG>|M+{Y zG*uOe%&z_FWhT6g!P~4_hBGofy>-hh0E5a&#waa$$V~ECc6<3gGt7gy6+MnvIu1;| z1+|WQKjy&WPq=muiZA9GEs9H%50pXKu|kWvRVL@1rSrB9;CjS8-W3gsS8l$ zHYj!42XIzLAj%%FNQ+c_V4a;#K3bKT_b-G!4*1V|v1(tk$ubj1*2uCgD}t^B@?rXmnPEuiO7FRxIX$uh52o4aJwz zmG8=RJn~DrxRIe^0D&}gq{}=L9~hls6rB8x9Y2IZqkyZ#hnUL%V<>Ec;0aur9L@xH zMb>2cKpTvX7u15RX<|MWb4ZN?KAvXx3BsSQTj?m+b-1ztB2? zTx$%qqs%1p;w@mDP{=$Uj`VN24_xk^tC|iN&?qAu0-}dA-3j61en=EO1t<07O#~L( zb)|?kP0P{0m_@J8kltd1!%#}I?mZacH`1t%jslJR?{UVF!~re$HhJ8$i4c^;M5abr z7xx2R`rnLx~0A2=dxQ#7^fvGgm~0}Q{Cj@_X%)p)sA z8`bOGrzPb=g$T8W7~rGdo8$$5hJ)(;YaCsb|D9PWt54LU#KE#&86i>8ujW%!iG?a6hLU& z)vP7Dz^r_@i;l>Hl(W6FdKmGT9dZhxXrI;Udi8X_KJv-lKF@Blb!Sl2Kt5S<^+MpA zWkE39x8X7I@#~5U5;+Th&K}yLX&M76sFmp>t;u(MT<{fW6f5hCB`m9!jo&^Rd7eZ{ z?!hTyxe*~^q`g!gqBb?8GE1X+bj+sEuih|Lpj=I*#mHp?iFQoQS$sc^eIL;WJTE$J zwypzlA_BNVI#jEzIw?ajvACnP%ahEoS0Mm3;KzG>b}x=iTd8~9n^L&_FFzh{54<=! zwRTIcq}W8-$^o4o=r44jOyfh&ad*5axr;11;3FIm60VUPJci7=HGkHk9y4;tO$CxX ze|p7V_<$4%O2YKE;@6Z5Zm!0!*>BZAur0q5+y~+N?8DDd-K@n?tJz`!Nnoz8rv>}5 zV*wxJHsp5n#%ym*hu%W$gcr-fP>lNFuY{%zu=)~?siRY?m{RAt2DnXD^Iz_zYfI4d z`L3D*f!p|*schED6PQWB8Ew*mg*4isWw4p;7B2z=8it)Q1cbPEL(S>ep@yFIgboVw zE(CyZ*>X93gmL?heE)3wp{DK=7s%0}Q6M~j6{vL%Y5QvVHHR(ubT zhkEy?&Qpfqg%^;!YoDF45Jq zM@h+EexZqKc``n8h~f|A5QxE&^Y*jrXL&#!10VQIm;RTW;{nN;XkoprIJ&7hkHmE8 zSE}ZK;)wf#GBS>bbp<3daYa*m)_-OERGzD1@ z2{2j(x^C;9c)G`?0#o4{ga^zPy6gycNF{|V7BDx{*568n*oL%Gc63#Cm-Ogu%zZz^ zS@QZ@E(1i>>Sbxr&iotzu3qX~GYQ?3Ug|WzMAF8%P|-PZ8Sh+$3bZDSiT_mJV1Nd; zviirve+P@;Qw5(!xIO*Ii8_IaXoDh2tUxdYpyc8o{&R~RwSw;5IluVII*IKBfXZ`# z$^gmZV!K7`4C-MEmy@VZWUnrgoxCmlIbCk@QSh)pp{ zpt~Acr`RcPgzu1sK+B@?aq&WdRLPZ-1{Y5q@3hOipaQ&-8PKUASWh5#R4t{2TEBsf zWGp@ID~-L;jCue=eKz|YeJc{Y&_w~&<^+3Pp&QQlEQ%e)MRM%j;359F8%L>Yz)txe zKET17*I|BnUl&T%%oo#OW^AQR`vbx{Kg7}v;Ug;FE!E}Ay4&9uX->>oRz2iy(ig#H z6Ht#ZBE6L!;8m$}e2QeSCGWbt${}Iwvm}#xq+b6Oa*wYcKTh2CCdG`2k$@>>cU+v9 z@v^d~oT9=~X0y>_m#(LK&6PdBTa_7bv^KDr5TA-!r{PL(w$X9IsA0NNGcyb}wv~Do zBnavg`i%9ZR<#gUZ;s9$_U`Vq@0%;tjAlBY9v{9-&xdqdzR+eX84$qG6Y_+rB53!J9hj6p~myZXc?4svaqd;@px;EaGH-&qe(h z53#Qb2fYe0!6%IahL)qzGqc)VEEO(ouxg++2;cj@joxAC$~xrIL4IaA^-q4!5x>z2%W$9DPi`rZwivO*eB-`WHLmcorzGc?a- z3)xci+6JQy=)c+sElOx$+fWhRF0n6YlLM&9VT-ynZQ{%pi%D8L4Q~wGMx$LZ5-6cf zm}{U>Zg?T#G`x1tNf5`1=C5x2o$#LT3 zIVC^2R!x}3?oD`COd;0?4olc$ZQBv2uEp5}3W14;dmVWKzvOYs1>mWowf-U(f9Mw(fN6~SfkzS0ouQY z{cQ=(ysJ#z?7u&~Q(Ml=A839%tttT)6n~`D6e(tlW%CEh5L39*fv@i2h?j}qcP$yqddi>4t+AfP-b zARw~;NeS`4q<5NA+?i1~2>QfYq8I@E4@RhmJjKT3Nm!dm4Y0xSun&VI*y|%1Ca@wW zYLLm0=}~OYRkS0<)jLJ~%qioxRnaW5Z13GKqqqNFK6adLPqS{@U$#7ZH@ht`u4#t- zp!tD-2u*E*?T_LIE|&rYyYBCVEGY4Vx@>5W{JOuMi<+Y#fx-x@kxsLTq0!a7uc zgHlSV2`EdTUvUM>!gN^%31p>Csd`JmiReK-3EBgPG$sUBK`iKWCE8zP8n`NF(&Q9t z+eXd@Jbe$oj8w6$JB!{|L+>)7UWI!vpR2L6KILYj?gUF46b4@oDD}38Oo(rAbY`;$ z#H9jWy$veS!`~rt#y#VudnO!oan2`K14-f|bFJ=|Si>&IjnDjXd+@xgifnSq$odLN z1r=on4+$%js%L9Y0wu2lNupmLlqlP~&AnDN@SA>jV`ZxkCjPQvVbL2@Cv$od4R$R+ z)C9tyYRZ;=HWNU}1~=po@z%2=c`o4#jt?JcyIUWRn3W1qSuOPTWHpriHvBWb6TkY- z%QAf1$D_s48J&TTc}GF|q5wI8mlpq*YuUiO1*&9S<|Rc)(de)5kIp;$@7|u%$4{-v zPexR`!U*O4Is?QX!0;F>__VvumMyz3&-OOGe1yiWX?m<=D2}wW*kZZa6vN9Ude?Dw zmJXA)K{rkM^UBHuy2krqJ|U5@m6Vgyo-&OmnaTzPNH2Zy`hMXn%7ZH>dTJ`EqLNai z$0t%rCOKKap<4^(EK0GmTY$pd;HI7SW_agiN?}VxH?e+Fw35gYWfdmb%g3I)YcW1X zb(aMV6E+%PB6Z_m*uV@P4SE|1ETVOyrAJ=)2+j{tA5a!b9fEFJa5_ViHa}{br&}5! zQMM@`-n&RP=CqQrXCbnp#WROjn-H2=u-ZZXrBSwFOBl}BYev_fvAH{~H5&~)J46xo zKM{1J?!{px&{-2b1}rlOrzB~5ZmI^WsJNE`uclaH z)F_;2^hCEZot;wrAStqFNA5fzZ6(U@w|CBpM&g(9ZW)9us9~M&-PWCl$+vjF*iVH{ z=hK)P*k?KESSC=uqOsz_b5@THGlGy-OhhF0!;egn=n};P5XSCGVFiEjWkP_fwQJ*AKj7ph$r(ko1AvBpfgd|&ZI>yZVa+- zd!*uw(r5Wb!*0|5i>K(?jED7mxW)(6&Q4kM!Y@t@pUz9O&2{+3rs{q3p2R@UsJ;50 zh2t?}#l-bvg&1@(@jB8}h*m)KWQwpO`Z0sA!Isf1rM#HwXh7ZShMa+i;OC7al)?c{ z7iYhG`$o@IPx{uNw(l6IA1tRO#YT+0Q3^FU1PG@Cm-n z%kk4F*fe}U8E%b8?oMwdJghNDQ_AX5H;Bwc86WCEtEp3bw^mgj2^0e# z0N?CqGNVC9bUVs0^g__KNqzk$Ts)BR!hIRfhE?&>a9Kxn>(pAVY z|5D1lmqd!;`R6tTv3XIJ)@2B z8TY(IGq}u5sE2mya!jlg<&Dc+ygV1oj>r`z;kVO?g9p+6t(P%o6y=pBTkZ$tPjN@J zGJ0MRM#d*eau?ioIDGi9Q@*j3)rmOFOcy zN#=*r`8o+Ay%)1o+nE`e-OmJzXRxW>E@}YpJ*+ulRa>E_jYhl_u)J%KO0_t!>R^(T`r zp8tm9u$bT88ywVTM2;ah;)Ifa;DKC3@X_1)IBdP3SM0v@vor_=8`OIrmt`^k*Tk(g z@19p$mc2+z5;-DP8#1MhLIA9`?jT3Z*vYL&CEAGQK!_ik{#Q&dB?VG+qP|c?%1|%+qQkjwz2cYdlCCK z;zjJQ{?%P|qN}>=hrOUF4ya;Eb|Nx-2an(D`D@Cs zTxljp<=a=GMy1ZY=&DJl@9O?~^dP~)VY6xSaJIky_V(7_&RwSVYo@G=(?c0@m*C~p zv3qUIBW{y{v+J?8{A$Xp#Vn@7p%%5j^TGR4l+k~1XdW2#b))NwiHL-Iye6o^c>Par zb+NHT>TVRXs758hKuam%8a5^9TDpQusowr8qM)t{UX*my% zq&w^1wq2b|l||5e(8e#a0hri#%S{We!GEb|kWIO&v-WuQDm>Y&SA&D!GudH{X9uO{ z&LQbLSb|OnnWl=>_O8qp8&R07rQymBQm@wfl<-LfnQa-go7-G`1DKEHi4_{dh2yb) zI{(fO_C`$|KX2=LA2u0FqC|q~y+4jUud|<7Au8QH*YLq?UXv4$n{EMb?3-Qqe$dK) z9($|5R6GI(VKarYX;0%y%$Awwg`N`5Uyc2GC0&}!wEkG@<{B*L$Yw_35rsCPW{+rW z>sJhjG?%|8TKf65W(~lo6QcAJ%1+fqvS+eLg)b5*TQBI)5f)EB-DRH}Y_^8Vs_IZq zs(caq45;|%+A2A2$b_yx8qaT+wLIC{qRz;9PPn$hpZTf{7-UMmgQk~=T zRpDvxegdQV>%TyE&bF-3-1l&PboA6c{=8yb+d;Bsd~+=@uk3c?*Rt936$qI8`XSCW zI{Xg&rrYpcW6cI|qIZ4tRIo_=a;@e^j)aQ)7LDb3bG_Z|+C0(?(+Ku*ZCm8*(b3iE z)(YOWr=jB4o_gL^;`XbH6(?R4MMdg*)P2pg`zu5B1V8Z*tM>($8k{@mT;J>82(+$s zog;@{&Rd(Ym@y+O?pZ&vs3E0XlbS8s^{0CFeWhmzbA0ASXGbDFv!Vk1!E>9S+<$rA zIE1GEJw*$Am)e!7r)cAPyEnyQ``faowgl4c{wo+=`R72b@rzA&Yp@aM+?cBEYg6ta z^6+P3^CcvX)oP`&rTqHplx~XO;$=5#Eb99WmW0pi=Uz5TKuC9Z5`A|7@|ySiet0!1 z*sg}mhDp!2ol2z3I$tNTfp(U+I=^gu{O^cpx0)dTvZBt7v2Mmei`vb92=wXjl2TPA9JO__h!;BAHRxw+^p(p;yOmUYCo zxjIK(b}#O!Q(C?0sC;+6&kxuRS+d;wK;q9C@x+w3tb_)$h9?(CXp4@Fki~cRM|S>a zsbv@3FU%)S+ke1l!yCj8iZ6$LxG7)bXqQ;uy4G2?MEUiQ2XJ~?g}&p2pRhCoVXO-& z6ERXsl~+|7wbE@{NpF+M0Kg1kL!fCNqZNfwJZc_6KLyM=n25H6AZSLPjf(d&MR_NJ zj{Uj5j~U39VYEV`x|a~i3kt^xK^u30V-3_C6r(^qXom3aZsB-XWCfI}5753u#9$y~ zs;@y-jVzUQ>!T2(SEKrLu3C;yKO**zg&m3JpS*(T&xb~+Q-kqZhdnqXXePEOUhmp5P(@>Yc|rT7ak1oAm zM@e$DuDT-q77(S$WALEolX;6R#Up0=J8mGErpMmQ9|58iphduR7~{0G=P7o5T<+Z! zANaGeTg+g-0BSd3D@9Q};KUs8DN!#&#B_TJy*y`Q?%`nxFHT19(7o6LQ4D*mBnD2< zd<>xlM!^Sjm_wjh=Vg%=Vqi0bd-Z!WiYms?OY}U|B3~SE({w>%=EX!KZy^Jd#=_7^ ze*PzY$g4BhKYQ?^77$PZ$~*UmA(DYic!7&Kn@L1&kCo#)C&<>RF0qQXr&a3CoLh{n z9Pa`-1t-*?)ky~9AmEDFqHUD(z|Dk8Vud9-$-bd2npG!W*p{SOGAClQypOwCi_4ghx8!D2}=l|;`z{= zl_gi*C-H#HAYO_90dV1*3h|t!;mmE9q#@)4f%G9fhdenu&LGeIX)uCVjE|I(xXvKZ z42j9eL{dwl=qAR)PpxfkKjw>3zD^K6!m=1-DkQ1&1t>5fOgl{1+#X>w5_n5owSL5V|dy z#yl16e^3@dM3lH1Da~sA0 z6WokP$2i`(MXfVN=ME~*a9VN2ww%osNWy$d=gIPm!$tu15QG;Gg$yM(i2j6AlUaG( zvXUKhSNP-l#;S^Ad`<4NK>)%AOOr8-qbSY<6d0gmK$FxaST(f(+n0iWsCp=b2Z{_E z3rjQ7TOj3`$ab7Eg?P6EpJ-&4ydC_kKj}V^rM*z*<-f9HFE|Bc$xG~XvrdGR`tq=0!o$OM*jL0jWvmJL9UZf+vX*#{|ud zV@4Yjg2D@vfKqCi{kE-J4l4*Jj9NSlceG>3s561sDc^@);yn-muM5(!JN1K!u+CFO z#z9lWwiwB^#P?+0vSnL$DNhlM8o6?lmYjzQMVD-a$D9=xFfHt(p!ofi;F(;^n z2AuwMIDZ#74IS((by6CCz%X!|=NO(6ENzOH91cmrIw_bb<=&$)Wm~*{APy(z_(ud4 z2N{9Tap;nIorzAkG*hfRIg9`v6j3o4p}7b-E|g+O`b+{ykSsign{);%-x^jB&n()2 zx8X7?u_&SexyY#jNm|NGGWW1*-PI{6V$g(MA4R7{sE(W=^jDRti&Zj%BJExq%uIc3 zO1xRb48|X306m&e5{bB0Bz+&#ae~3i78evvmdF-Sqb8hQhkUI%ea@WUJh_29{eHwa zvs+~aF+f@rn6(!^v!~NuIgkY+R=bWr4gyLj8@VitL^T=H8mQ4BS|;X%ulVoq2Bv`* zzlGOwr%`f#joI=&q=37!YU4IRG=97sD<*N0nIfe$jz>c{k@@VL@iVZIAGfs7El4}*O^I~J zi!kC@0q6`;MjQ=W{Zz-hM^ekfY^e#@VJ>o^Kv`1y0#0I-bcsGEdR#y~M*5!agg0o> zPr2Czhk&!{tSxf9BW86yN*S~OZ!Aqz36i{bK2kQei5vZUV!-_H0V=kG|VxUgTN#Pkp>(fT7n3m6z*!2Id_oXKgj83i=!0&_O0iyocC7gZR6 zBpPP1vhJzfYMOBYij0&{+%D4TgDy@;zct0hdU@h60p)<2@H{2iIW5BR1&~+c6XW$7-M`bA{QHFG=wOD z&CTEPL5tFAdrPX7&VaC!qbWrQtaM}+@y#ef0+Md zbKj&-b2P-%3z(BOE+f#ikBUl+Ap+?;_!Oj0yq~g~cbi=wkIi8PYUVf*FqO`$L!C&l z5K>Z5jY0COqAA<-c`^=b++de_>bUB21g&GSS(RyOPw%?YButGEGk|@98Dx@SHZ2&4 z252@`!JaYejQ9qlwO@+c!}f7k=6|L3*+G0$+7#W8F$%-(5f4)bcrk0{n-x&wwu9-d zGu`7pj`*(-STn8An{Z5&CC!Y0)HW2A4QFbh6d<=T$C7tP!~i<6M@we*#H<28 zz-d>yJL=hOJ_@jmaOqHfS(x5H91Ve4UH}vDkY)oF7^WV#5mU2GK!Kl#D{3;eE`OPu zPS>cF{1@e-SRA}T<9vc^ccmMzA!V2#dHP_YV0}S^fF%)wdo|EWhhNhgz5dd_sqeu~ zEO3#)+7J)LX^hBI7i_i3PypcKc|8ha9W~F_!P!-K47Q(MAO^v-)R{4hl5SGeLOVWP zjxvC?3qb9;r`uxrp+65sklaRaq>tn+6i6B_fpBqUjggEbL?X3JTPvR)$USsVT6sky zCGjDEjzU~@VaQz4f=D0|3LeyAi$u8hzzT;$w^j9;;>TcA3o&ZPk z)M=far-CFt;IT;4P?^)Snu9VGuZWJVSXvv}kuFR}0`mj1U?`f%E1?v+7{?#Q%0E#-#n5B~m~!P4xUrLf#yy z6gDyYxIVzO2`;DLb5^4mr_b*h`-eB97CpN^4xQ_Jw!-tY*~Fuzjr{!}M3Df6OrT}5kr8ml6c6G+`@NTbmmJW7eV zXt+mLHLOc1Z;%h)0=E(oJ~k%#7Qe@snXG}i5&n_kii}zP?ePkZu6k9}7m1i|nv2AF zLRtdbD|2Jm`0fs1$YTNt=);PTH3d1!qC@_4j8SAvZ9mi==mfzslDqtQa((867~ubf z86u^A^@v6KFhE4v@B;(U5(Ej;aCBqrj+jJcL8_)LwTW1lU)o=VuG?2`gS@zHeVS%65g69KrlzSD6{-xW!zN4s~YLzH$G~&|utT`IFwnhm)0^HUGO(j$4V+{hV-Bh$MEjVso!e|Tu*T8BX(%7t*H2F_CmUzC-fP|L z7dzs{DZ#XKn+0GS`GHtL*+R_+)9llcJp+x=BT$3#Lf90;>veW@RbPwkK*nhUxeUk{ z5`C;6J{j6ie~EJ-QzD*+tp{L)A9Z#SE=A3y!Ht6-0wccV(Cs#P3Ok|3>8^5n?C|gI zK%z(_FWhB!9%-xqllB=du!U0UaiDWn$?zUBF}cChLvVjs`&0&M$hpy*-&P?}3wce{ zAPsC>76m2176vRj3D`}1x~s&6C%{e~Y0y4SZSFXa4j1bKIRT|Tq9KLEC~2XbM+{RM zqw5B1z&1Ff6EBgmj;O%`_R3D<3h3o$7J3xIH6|hvjrbD*=97^Ukq;|C#}gyUV!emd z)cIKC;}d)C?p`P-&9Y-d7}zh*UVABo5LTbUoj7coEc$5ACIqz{nQ|7E&jE5tC;0<5R$F_4H#1n47S#PZuq zDC*Kj7GVBK{RV5^bm3lLw4bSaq^yfbA{p);G6O9n`^4!{`W<{M3oR;3NIe5h>`BM@|M% z7mY_jnw$qY5quyA|1RHFZ0tRZ^_=PU#JzOx75WkHukGWU$AD)dd;akyeqZF?j1^|w zD20P{2=}3T(O$5$(T89lzjA=tWeLMv6S>0|Q z;8;L=$k@%}omgYxti5*o`xZAZm>hsvt%i#^q-m2{3XM?K;(P27ILxXbbv` zIrMgA%RQ}(v%W3#14^8*|9}Fq?ekPYdQWLJ%ub_zp>kH7IDe>ek&M=sL@u~{ttea4 zm$`P~FEzK0BpPy~2z+ymo5u%m94pGB48}Jiu`+X;jIuu9TALVsZ>1c~t_|Dog&CQM za=?CojEb1r{iLkqHKTZ&or_vU_ytCo^Y^Vu9|7pTC!Pt=P-ji`WV8y-9j@}~dK)M! zQnU>pX~NPzcMWD`7OVez*tGLf5^6b(tLB(D!s+&h^qK`J+;o^36?CI|m=4Xzy`@!= z$jsB1GNJk3GDJLNgI!jxPoI!#uCK3af`V(~r#YOqg)QW8d!Hdxzvhh3Xgy5gNM6^e zGv{CW41Q3S-Yt-89=_qgXpFh1oWlE#z>X8SH#JIthB3jcqd%NU=j^&(+R~#&S+hmP z_UTi)(j^Mmt}Mi|0pakA5M2P-4Gtj3A1%%}c@Xe(ljtc|c+>=_Gm~v?(TC4RiZ`CL ziI%{?;-m?JA)E-NiV#Ca!HX!##86f=I$QaAM=W#dHhJDn`#F$|`lt}Rf>k1dWY7=GC!fW2L5V@+l8yEV3z+cJCS zl?eWEWjO(egzL}=MXKJsx^|hOa9NL;q&Gu-U&VVNc9S4<3DE^glT(vFaH@%OnB6#$ zL4!3JwS5yiz7QBesJpxZ|b81c@n zR|x{7+LV{Hb%Ah^$Ef$FC=NK1`!QVQ5%fmgf#8B}1Ql+z5Pv>bpM zCkzdpiWse}xwSYsNd&@Y)X5%kh~7ewT+ur6a<2KXPp}z_@LjHvIMF zEQ6WS#0lttKh3GN#Q_UssfX>bk-} zeDp$U-!~zqOVC>hdmKxU{M|3xnQ5F*I@XY^Q z>vL*>#k3)KTXVCE_OAJ7D`uO!*)Vl! zx>f61k2suW5a##HdQ0LJhlM{pKAh*LXBWBi(3lqgc{eR&%wXWnX6*8RCv2q2bmv)o zmN^JTB(3W~Hx%{xNT)1J$JL0-7AiY#R~~WU zGuj7u(WcO+Y}A=#n9jlGBpk^Z#3A=K-LNz@%da*Bc4?N6{|xJwQME2;KR(KpbwUd| z#R~a-w>*=COD;xik@aWkCFt#!4&$Xr6DP~MOj4R+V%`}M(}j9W8>NeqhrtI$5-ZTUvLl2p07xf$z}d7AT^SJS8q(NAY6hMWp?WU2`N)?h477uL*V z58GUEMDgwd%}U}-U2F2?4PTCl%V?qNA)MqTYzvx>lXGP)7>K8!X|Sh;uGekNy-exC zF%JiFko7mcOeL*MOG}zuEY50HTBK#CmAT~u9vWlMQR>gz%ZRLZ{1viOSwJ`IGlnQQ zO*;f&Nz*F&Qm_ab+-gB!$G-716gm)#w9KtAxO8Z#<{j2YM_J%p>Nm6*RBVz*B0B1- z<3Tp6-eaEr_zv7Nq=flTv`y}uft~90KAuYOcr*Y1Gcc;A(Ca3=d0{ssx(b9)VL;G z9cx1cYGR_cN_QkG&k+BJqY+zYT+N9%&R%0mi6*B^tN~OY7@zaJ(X|Z}Xun)XSS_>4 zG{6DF5KDWFk&=!bfg@F*h;=~r1p!!4<~mB4Bu6NQW?dOihGv!Z&Vptw)H@06V7mS6 zmM1%F)-6l_EWmMKoW}H&)Z@ZpxIeod2ae=-%)SR9t_GM~)sEw(2Sq9eh)r6(-;?d* z!5s^-Od5g$1QNwiEL~xQR-|Oiu$1HVD8u*a!JJPE_B~x&g26EqE3r%GRkrBC1n;K# zY^x7ad~^6WH2UVi^zP!@Wv=AC-_xc4Xz)$Fdrl8V^^Q8t;Qx2hcfbIhR;zWTw)4y9 z@=tW`+7w1rL2pD7=$oZlFU?mILgcH8y$noMk(&?qry|flObna>6Ac$~q(5(HoIt*D ztI}mkUyKmfTdvWT-!UmFylvG~8T_cXRtaCKkPabaR8-W(pE2;rK)!|elZ##9glFWq z(|3Z`7wCsd4!e;Pwi8FZ_A2<}E{9RHd&L#(0oc@YE(s-dtOgODVX=fyx+{#hQXQ#+ z3*&o)Zz9K)h81!Q`-&zQPxPVp2-N#$4KfJ&$0LZ1+Z2r36!s363Z<)sHAlfo4Kxih zMyst8tbdX5Q*AQl*~~Hz=n`!sYu}Fd-;QTVblJLFinT>EY9kykggJ6bhyoC_$O;dl zWYS*fD5^`fFTa#s9^JJg4h=4RWaeNYHw>4WujX8QE)BR$c_s^Klfp}I*J>J7v`X&) z>Llm>GfH0Oe67@6v(xNJZr+I)_C7I$nUgfUM67jtpf787M(h3Mu$9eJ{b4ly;-_0GQz<;*h)>&ypfi6ecn+p2+(Lw|p zPYkITdF-=jKD+Oh11EN|$$4jXe<%9zvhntXetpX#i+_BlCk*IwVG>>4J~qB;>D&qM z-q_T6fXQlGJP46uqkzR)MQJ0prH3i#pqU)_qUi9713d_EUW%aQD~I>^BHbyLW;e)J zRv>Q8wV8#?+JmG*nllm+E5$v1$|laO=XudGbH2Ltu(tGI)^OV#^nvMg%w)UI>vF!8 z7xl3u^?lUXe8Rv*#*;ZrNbH~w&I-3Z_K=^$h)dDNI=)ia#nl#vRME>_Ii{kQtN>kT zrJc9`Irzt6X7s%hm0RXX4d;Nw}F&rE2`LTEc&?C?Sk;_ z!b;kLwz-`fAONfdyKd?rk%^$a)gw^WA;xoz)doF%r|04_Gbf=82_VwcB(3_H;z`az zWfv*|e?an3jZ!jY`DP(?m5#4S83;v92>9$q0`ney)_lk~=@L6e<(r^AtK3&M2K+sf zoq%W>gnL0+vRq|%J6;Oj^&9-Zv%LRsBPCsJ@l=1gk#xV@NT&Zi%lrQkC96}s*pWT) z`%2?BCEGHL zGA>|ZuXJucx^5o2X1#WPW?nu%eREGfK3+b&dwT5(h;g8j6yt#a0QlETtjGx`gG+S< zwcSTwD6OFhW150AfkF5Z))X@U0mP>Us^~hlCQam|Nlq4)pJ|)|VKv6I#5Xk$CAA~f z9iwO^Grez0N^La)|DhhD78XQ9R%Gkf>eHz&^_D2GwlT2?-ccS{Ejx(-_k`PQH#svb zm~mSe6WLh-mxpTk^p5mOL6`9On;!~$%(w7%#pY#S)mi}Q)S-=B-ei}wBXIxB2xyZ( zM$flRiW)Q^vA^FAnI9<7$OsC`ExzbZUkPCFyC6`I7nmZp$C%EWCxI51!Ez&pE{z$8o`pCM(7XFz6VC z{|8M$a|<7|mcFg{o`|UIgjb8$-_hL>kL4cO#^}xsk=DHL#(hH}7A9>QqgxF5VYDzZ1U-F9oqqsMzBYOR0!3@t*+Le?U>#+jMoo1TKbg$0oPF->9ikh zhQVl!ql2HOw7kpaggu6n>_#0!ezig@sIp$uYUvsJXXh@_x4p8@0FwR<8j-l}HH^X_R&zt!mqJjcvB{%jg&px!Ne zPf4G?jsIC<2o0Kx>#z`CXrg!jYWvydfvAT5C-Nr5P4r;)8$Br=sQO@=8~De{6gKcL zZa*t#5g~bC9&!a}0=Rb0efx!&2<>gV-b*u>iB8}vVw#Xlvh52Kn>daWRZwz<7s=Ar zEDfS*HXwjcYF)WF`6Nqh<-|))bdg{DRcg(OMJ~!&T-L@bizvc zS+E2Q;^TZx?QVXvH0V4*v-LB#;$$^ovLt~^iM*KJ4sYo-V4?_Eh-Us?4d{G zQj1n{rX@qCV!Qz;!1jWOFkf=o3m|5C%>d=;rDO-B)FttD;N5YVrfhL}>#WyyWH&~> z#yB@8XNL$9$C|eLU-z469v^x2W8!*e(?0NW&T6gJa%@U3Q(E*JCgu*@^pk|vgi#MricCp)3}VaN~Z{BXk3__o)sy>0~IR|@hWpm1S$*b#o=nS*|c533J-?yAyF`Gk9(H8VX8YC%v|K`twH z)dHiWY^57b@m5#+8$`{yX_&m8X2eG~9}zYx3A=x3%hr*6Pq_+?ih7)D>+x-pOc<|N z+QIuN89OD^*>7{(TJscg*)�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�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,vKDe^6hz9tQ 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

        jn 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�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%0AvtvKm(!0iSCiPjeEfd2oi}&9g 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 z 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∨l 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�p8hgdQc+UXOiLa1b9At3 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%0A8KTv0}rNp_=+Hy*hc>#LwaZGWT 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

        *R#7*WBpu54Td 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⛄kmy*HRZZu@i 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

          ?xny~Bqmx{}fz-ht*q5V-kp`)j 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

          <3V5N*(8&*l*RUO*D_C?JA_#H|f# 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

          4dfs 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 #include +#include #include + #include "../SdFatConfig.h" #ifndef F #if defined(__AVR__) #include class __FlashStringHelper; -#define F(string_literal) (reinterpret_cast(PSTR(string_literal))) +#define F(string_literal) \ + (reinterpret_cast(PSTR(string_literal))) #else // defined(__AVR__) #define F(str) (str) #endif // defined(__AVR__) @@ -55,63 +57,44 @@ class PrintBasic { public: PrintBasic() : m_error(0) {} - void clearWriteError() { - setWriteError(0); - } - int getWriteError() { - return m_error; - } - size_t print(char c) { - return write(c); - } - size_t print(const char* str) { - return write(str); - } + void clearWriteError() { setWriteError(0); } + int getWriteError() { return m_error; } + size_t print(char c) { return write(c); } + size_t print(const char *str) { return write(str); } size_t print(const __FlashStringHelper *str) { #ifdef __AVR__ - PGM_P p = reinterpret_cast(str); - size_t n = 0; - for (uint8_t c; (c = pgm_read_byte(p + n)) && write(c); n++) {} - return n; -#else // __AVR__ - return print(reinterpret_cast(str)); + PGM_P p = reinterpret_cast(str); + size_t n = 0; + for (uint8_t c; (c = pgm_read_byte(p + n)) && write(c); n++) { + } + return n; +#else // __AVR__ + return print(reinterpret_cast(str)); #endif // __AVR__ } size_t println(const __FlashStringHelper *str) { #ifdef __AVR__ return print(str) + println(); -#else // __AVR__ +#else // __AVR__ return println(reinterpret_cast(str)); #endif // __AVR__ } - size_t print(double n, uint8_t prec = 2) { - return printDouble(n, prec); - } + size_t print(double n, uint8_t prec = 2) { return printDouble(n, prec); } size_t print(signed char n, uint8_t base = 10) { return print((long)n, base); } size_t print(unsigned char n, uint8_t base = 10) { return print((unsigned long)n, base); } - size_t print(int n, uint8_t base = 10) { - return print((long)n, base); - } + size_t print(int n, uint8_t base = 10) { return print((long)n, base); } size_t print(unsigned int n, uint8_t base = 10) { return print((unsigned long)n, base); } size_t print(long n, uint8_t base = 10); - size_t print(unsigned long n, uint8_t base = 10) { - return printNum(n, base); - } - size_t println() { - return write("\r\n"); - } - size_t println(char c) { - return write(c) + println(); - } - size_t println(const char* str) { - return print(str) + println(); - } + size_t print(unsigned long n, uint8_t base = 10) { return printNum(n, base); } + size_t println() { return write("\r\n"); } + size_t println(char c) { return write(c) + println(); } + size_t println(const char *str) { return print(str) + println(); } size_t println(double n, uint8_t prec = 2) { return print(n, prec) + println(); } @@ -133,12 +116,10 @@ class PrintBasic { size_t println(unsigned long n, uint8_t base = 10) { return print(n, base) + println(); } - size_t write(const char *str) { - return write(str, strlen(str)); - } + size_t write(const char *str) { return write(str, strlen(str)); } virtual size_t write(uint8_t b) = 0; - virtual size_t write(const uint8_t* buffer, size_t size) { + virtual size_t write(const uint8_t *buffer, size_t size) { size_t i; for (i = 0; i < size; i++) { if (!write(buffer[i])) break; @@ -146,13 +127,11 @@ class PrintBasic { return i; } size_t write(const char *buffer, size_t size) { - return write((const uint8_t*)buffer, size); + return write(reinterpret_cast(buffer), size); } protected: - void setWriteError(int err = 1) { - m_error = err; - } + void setWriteError(int err = 1) { m_error = err; } private: size_t printDouble(double n, uint8_t prec); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintTemplates.h b/extra-libraries/ESP32/SdFat-2.2.3/extras/attic/PrintTemplates.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintTemplates.h rename to extra-libraries/ESP32/SdFat-2.2.3/extras/attic/PrintTemplates.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/SysCallBareUno.cpp b/extra-libraries/ESP32/SdFat-2.2.3/extras/attic/SysCallBareUno.cpp similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/extras/attic/SysCallBareUno.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/extras/attic/SysCallBareUno.cpp diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.bat b/extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.bat similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.bat rename to extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.bat diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.py b/extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.py similarity index 99% rename from extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.py rename to extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.py index 4a82bde4..704618f5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.py +++ b/extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.py @@ -67,7 +67,7 @@ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] [file] ... The style guidelines this tries to follow are those in - https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml + https://google.github.io/styleguide/cppguide.html Every problem is given a confidence score from 1-5, with 5 meaning we are certain of the problem, and 1 meaning it could be a legitimate construct. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.sh b/extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.sh similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/extras/cpplint.sh rename to extra-libraries/ESP32/SdFat-2.2.3/extras/cpplint.sh diff --git a/extra-libraries/ESP32/SdFat-2.2.3/extras/fmt_src.bat b/extra-libraries/ESP32/SdFat-2.2.3/extras/fmt_src.bat new file mode 100644 index 00000000..7ddecdfe --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/extras/fmt_src.bat @@ -0,0 +1,11 @@ +clang-format --style=Google -i *.cpp *.h +rem clang-format --style=Google -i DigitalIO/*.h +rem clang-format --style=Google -i DigitalIO/boards/*.h +clang-format --style=Google -i common/*.cpp common/*.h +clang-format --style=Google -i ExFatLib/*.cpp ExFatLib/*.h +clang-format --style=Google -i FatLib/*.cpp FatLib/*.h +clang-format --style=Google -i FsLib/*.cpp FsLib/*.h +clang-format --style=Google -i iostream/*.cpp iostream/*.h +clang-format --style=Google -i SdCard/*.cpp SdCard/*.h +clang-format --style=Google -i SpiDriver/*.cpp SpiDriver/*.h +pause diff --git a/extra-libraries/ESP32/SdFat-2.1.2/library.properties b/extra-libraries/ESP32/SdFat-2.2.3/library.properties similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/library.properties rename to extra-libraries/ESP32/SdFat-2.2.3/library.properties index f13b4437..12abc4f5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/library.properties +++ b/extra-libraries/ESP32/SdFat-2.2.3/library.properties @@ -1,5 +1,5 @@ name=SdFat -version=2.1.2 +version=2.2.3 license=MIT author=Bill Greiman maintainer=Bill Greiman diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/BufferedPrint.h b/extra-libraries/ESP32/SdFat-2.2.3/src/BufferedPrint.h similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/BufferedPrint.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/BufferedPrint.h index b248d1c6..5145babb 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/BufferedPrint.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/BufferedPrint.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,12 +28,15 @@ * \file * \brief Fast buffered print. */ +#ifdef __AVR__ +#include +#endif // __AVR__ #include "common/FmtNumber.h" /** * \class BufferedPrint * \brief Fast buffered print template. */ -template +template class BufferedPrint { public: BufferedPrint() : m_wr(nullptr), m_in(0) {} @@ -49,7 +52,7 @@ class BufferedPrint { m_in = 0; } /** Flush the buffer - same as sync() with no status return. */ - void flush() {sync();} + void flush() { sync(); } /** Print a character followed by a field terminator. * \param[in] c character to print. * \param[in] term The field terminator. Use '\\n' for CR LF. @@ -72,7 +75,7 @@ class BufferedPrint { * \param[in] term The field terminator. Use '\\n' for CR LF. * \return true for success or false if an error occurs. */ - size_t printField(const __FlashStringHelper *fsh, char term) { + size_t printField(const __FlashStringHelper* fsh, char term) { #ifdef __AVR__ size_t rtn = 0; PGM_P p = reinterpret_cast(fsh); @@ -93,8 +96,8 @@ class BufferedPrint { rtn += write(str, buf + sizeof(buf) - str); } return rtn; -#else // __AVR__ - return printField(reinterpret_cast(fsh), term); +#else // __AVR__ + return printField(reinterpret_cast(fsh), term); #endif // __AVR__ } /** Print a string followed by a field terminator. @@ -139,7 +142,7 @@ class BufferedPrint { * \param[in] prec Number of digits after decimal point. * \return true for success or false if an error occurs. */ - size_t printField(float f, char term, uint8_t prec = 2) { + size_t printField(float f, char term, uint8_t prec = 2) { return printField(static_cast(f), term, prec); } /** Print an integer value for 8, 16, and 32 bit signed and unsigned types. @@ -147,7 +150,7 @@ class BufferedPrint { * \param[in] term The field terminator. Use '\\n' for CR LF. * \return true for success or false if an error occurs. */ - template + template size_t printField(Type n, char term) { const uint8_t DIM = sizeof(Type) <= 2 ? 8 : 13; char buf[DIM]; @@ -184,9 +187,7 @@ class BufferedPrint { * \param[in] prec Number of digits after decimal point. * \return true for success or false if an error occurs. */ - size_t print(double d, uint8_t prec = 2) { - return printField(d, 0, prec); - } + size_t print(double d, uint8_t prec = 2) { return printField(d, 0, prec); } /** Print a double followed by CR LF. * \param[in] d The number to be printed. * \param[in] prec Number of digits after decimal point. @@ -215,7 +216,7 @@ class BufferedPrint { * \param[in] v item to print. * \return true for success or false if an error occurs. */ - template + template size_t print(Type v) { return printField(v, 0); } @@ -223,7 +224,7 @@ class BufferedPrint { * \param[in] v item to print. * \return true for success or false if an error occurs. */ - template + template size_t println(Type v) { return printField(v, '\n'); } @@ -238,7 +239,7 @@ class BufferedPrint { m_in = 0; return true; } - /** Write data to an open file. + /** Write data to an open file. * \param[in] src Pointer to the location of the data to be written. * * \param[in] n Number of bytes to write. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/DigitalPin.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/DigitalPin.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/DigitalPin.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/DigitalPin.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/SoftSPI.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/SoftSPI.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/SoftSPI.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/SoftSPI.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/BobuinoGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/BobuinoGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/BobuinoGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/BobuinoGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/GpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/GpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/GpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/GpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/LeonardoGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/LeonardoGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/LeonardoGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/LeonardoGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/MegaGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/MegaGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/MegaGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/MegaGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/Standard1284GpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/Standard1284GpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/Standard1284GpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/Standard1284GpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/Teensy2GpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/Teensy2GpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/Teensy2GpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/Teensy2GpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/Teensy2ppGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/Teensy2ppGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/Teensy2ppGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/Teensy2ppGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/UnoGpioPinMap.h b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/UnoGpioPinMap.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/boards/UnoGpioPinMap.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/boards/UnoGpioPinMap.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/readme.txt b/extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/readme.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/DigitalIO/readme.txt rename to extra-libraries/ESP32/SdFat-2.2.3/src/DigitalIO/readme.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatConfig.h b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatConfig.h similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatConfig.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatConfig.h index f04ff756..a512314c 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatConfig.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatConfig.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatDbg.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatDbg.cpp similarity index 91% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatDbg.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatDbg.cpp index dcb3148b..02cc1bf7 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatDbg.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatDbg.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,9 +22,9 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "ExFatVolume.h" #include "../common/upcase.h" #include "ExFatLib.h" +#include "ExFatVolume.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS //------------------------------------------------------------------------------ static void printHex(print_t* pr, uint8_t h); @@ -59,15 +59,15 @@ static uint16_t hashDir(DirName_t* dir, uint16_t hash) { if (!u) { break; } - uint16_t c = toUpcase(u); - hash = ((hash << 15) | (hash >> 1)) + (c & 0XFF); - hash = ((hash << 15) | (hash >> 1)) + (c >> 8); + uint16_t c = toUpcase(u); + hash = ((hash << 15) | (hash >> 1)) + (c & 0XFF); + hash = ((hash << 15) | (hash >> 1)) + (c >> 8); } return hash; } //------------------------------------------------------------------------------ -static void printDateTime(print_t* pr, - uint32_t timeDate, uint8_t ms, int8_t tz) { +static void printDateTime(print_t* pr, uint32_t timeDate, uint8_t ms, + int8_t tz) { fsPrintDateTime(pr, timeDate, ms, tz); pr->println(); } @@ -93,11 +93,11 @@ static void printDirFile(print_t* pr, DirFile_t* dir) { pr->print(F("attributes: 0x")); pr->println(getLe16(dir->attributes), HEX); pr->print(F("createTime: ")); - printDateTime(pr, getLe32(dir->createTime), - dir->createTimeMs, dir->createTimezone); + printDateTime(pr, getLe32(dir->createTime), dir->createTimeMs, + dir->createTimezone); pr->print(F("modifyTime: ")); - printDateTime(pr, getLe32(dir->modifyTime), - dir->modifyTimeMs, dir->modifyTimezone); + printDateTime(pr, getLe32(dir->modifyTime), dir->modifyTimeMs, + dir->modifyTimezone); pr->print(F("accessTime: ")); printDateTime(pr, getLe32(dir->accessTime), 0, dir->accessTimezone); } @@ -109,7 +109,7 @@ static void printDirLabel(print_t* pr, DirLabel_t* dir) { pr->println(dir->labelLength); pr->print(F("unicode: ")); for (size_t i = 0; i < dir->labelLength; i++) { - pr->write(dir->unicode[2*i]); + pr->write(dir->unicode[2 * i]); } pr->println(); } @@ -152,7 +152,7 @@ static void printDirStream(print_t* pr, DirStream_t* dir) { static void printDirUpcase(print_t* pr, DirUpcase_t* dir) { pr->print(F("dirUpcase: 0x")); pr->println(dir->type, HEX); - pr->print(F("checksum: 0x")); + pr->print(F("checksum: 0x")); pr->println(getLe32(dir->checksum), HEX); pr->print(F("firstCluster: ")); pr->println(getLe32(dir->firstCluster)); @@ -192,7 +192,7 @@ static void printExFatBoot(print_t* pr, pbs_t* pbs) { pr->print(F("FileSystemRevision: 0x")); pr->println(getLe32(ebs->fileSystemRevision), HEX); pr->print(F("VolumeFlags: 0x")); - pr->println(getLe16(ebs->volumeFlags) , HEX); + pr->println(getLe16(ebs->volumeFlags), HEX); pr->print(F("BytesPerSectorShift: ")); pr->println(ebs->bytesPerSectorShift); pr->print(F("SectorsPerClusterShift: ")); @@ -215,7 +215,7 @@ static void printHex(print_t* pr, uint8_t h) { static void printHex(print_t* pr, uint16_t val) { bool space = true; for (uint8_t i = 0; i < 4; i++) { - uint8_t h = (val >> (12 - 4*i)) & 15; + uint8_t h = (val >> (12 - 4 * i)) & 15; if (h || i == 3) { space = false; } @@ -230,7 +230,7 @@ static void printHex(print_t* pr, uint16_t val) { static void printHex(print_t* pr, uint32_t val) { bool space = true; for (uint8_t i = 0; i < 8; i++) { - uint8_t h = (val >> (28 - 4*i)) & 15; + uint8_t h = (val >> (28 - 4 * i)) & 15; if (h || i == 7) { space = false; } @@ -244,7 +244,7 @@ static void printHex(print_t* pr, uint32_t val) { //------------------------------------------------------------------------------ static void printHex64(print_t* pr, uint64_t n) { char buf[17]; - char *str = &buf[sizeof(buf) - 1]; + char* str = &buf[sizeof(buf) - 1]; *str = '\0'; do { uint8_t h = n & 15; @@ -256,12 +256,12 @@ static void printHex64(print_t* pr, uint64_t n) { //------------------------------------------------------------------------------ static void println64(print_t* pr, uint64_t n) { char buf[21]; - char *str = &buf[sizeof(buf) - 1]; + char* str = &buf[sizeof(buf) - 1]; *str = '\0'; do { uint64_t m = n; n /= 10; - *--str = m - 10*n + '0'; + *--str = m - 10 * n + '0'; } while (n); pr->println(str); } @@ -313,15 +313,15 @@ void ExFatPartition::checkUpcase(print_t* pr) { pr->println(F("upcase not found")); return; } - for (size_t i = 0; i < size/2; i++) { - if ((i%256) == 0) { + for (size_t i = 0; i < size / 2; i++) { + if ((i % 256) == 0) { upcase = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!upcase) { pr->println(F("read upcase failed")); return; } } - uint16_t v = getLe16(&upcase[2*(i & 0XFF)]); + uint16_t v = getLe16(&upcase[2 * (i & 0XFF)]); if (skip) { pr->print("skip "); pr->print(u); @@ -334,7 +334,7 @@ void ExFatPartition::checkUpcase(print_t* pr) { for (uint16_t k = 0; k < v; k++) { uint16_t x = toUpcase(u + k); if (x != (u + k)) { - printHex(pr, (uint16_t)(u+k)); + printHex(pr, (uint16_t)(u + k)); pr->write(','); printHex(pr, x); pr->println("<<<<<<<<<<<<<<<<<<<<"); @@ -363,8 +363,8 @@ void ExFatPartition::dmpBitmap(print_t* pr) { dmpSector(pr, m_clusterHeapStartSector); } //------------------------------------------------------------------------------ -void ExFatPartition::dmpCluster(print_t* pr, uint32_t cluster, - uint32_t offset, uint32_t count) { +void ExFatPartition::dmpCluster(print_t* pr, uint32_t cluster, uint32_t offset, + uint32_t count) { uint32_t sector = clusterStartSector(cluster) + offset; for (uint32_t i = 0; i < count; i++) { pr->print(F("\nSector: ")); @@ -375,7 +375,7 @@ void ExFatPartition::dmpCluster(print_t* pr, uint32_t cluster, //------------------------------------------------------------------------------ void ExFatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { uint32_t sector = m_fatStartSector + start; - uint32_t cluster = 128*start; + uint32_t cluster = 128 * start; pr->println(F("FAT:")); for (uint32_t i = 0; i < count; i++) { uint8_t* cache = dataCachePrepare(sector + i, FsCache::CACHE_FOR_READ); @@ -385,7 +385,7 @@ void ExFatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { } uint32_t* fat = reinterpret_cast(cache); for (size_t k = 0; k < 128; k++) { - if (0 == cluster%8) { + if (0 == cluster % 8) { if (k) { pr->println(); } @@ -406,7 +406,7 @@ void ExFatPartition::dmpSector(print_t* pr, uint32_t sector) { return; } for (uint16_t i = 0; i < m_bytesPerSector; i++) { - if (i%32 == 0) { + if (i % 32 == 0) { if (i) { pr->println(); } @@ -427,9 +427,9 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { uint16_t nameHash = 0; uint16_t setChecksum = 0; uint16_t calcChecksum = 0; - uint8_t nameLength = 0; - uint8_t setCount = 0; - uint8_t nUnicode; + uint8_t nameLength = 0; + uint8_t setCount = 0; + uint8_t nUnicode; #define RAW_ROOT #ifndef RAW_ROOT @@ -439,12 +439,12 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { break; } dir = reinterpret_cast(buf); -#else // RAW_ROOT +#else // RAW_ROOT (void)file; uint32_t nDir = 1UL << (m_sectorsPerClusterShift + 4); uint32_t sector = clusterStartSector(m_rootDirectoryCluster); for (uint32_t iDir = 0; iDir < nDir; iDir++) { - size_t i = iDir%16; + size_t i = iDir % 16; if (i == 0) { uint8_t* cache = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!cache) { @@ -455,7 +455,7 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { dir++; } #endif // RAW_ROOT - if (dir->type == 0) { + if (dir->type == EXFAT_TYPE_END_DIR) { break; } pr->println(); @@ -491,7 +491,7 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { calcHash = 0; break; - case EXFAT_TYPE_NAME: + case EXFAT_TYPE_NAME: dirName = reinterpret_cast(dir); printDirName(pr, dirName); calcChecksum = exFatDirChecksum(dir, calcChecksum); @@ -499,7 +499,7 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { calcHash = hashDir(dirName, calcHash); nameLength -= nUnicode; setCount--; - if (nameLength == 0 || setCount == 0) { + if (nameLength == 0 || setCount == 0) { pr->print(F("setChecksum: 0x")); pr->print(setChecksum, HEX); if (setChecksum != calcChecksum) { @@ -520,7 +520,7 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { break; default: - if (dir->type & 0x80) { + if (dir->type & EXFAT_TYPE_USED) { pr->print(F("Unknown dirType: 0x")); } else { pr->print(F("Unused dirType: 0x")); @@ -536,10 +536,9 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { //------------------------------------------------------------------------------ void ExFatPartition::printFat(print_t* pr) { uint32_t next; - int8_t status; pr->println(F("FAT:")); for (uint32_t cluster = 0; cluster < 16; cluster++) { - status = fatGet(cluster, &next); + int8_t status = fatGet(cluster, &next); pr->print(cluster, HEX); pr->write(' '); if (status == 0) { @@ -573,20 +572,20 @@ void ExFatPartition::printUpcase(print_t* pr) { pr->println(F("upcase not found")); return; } - for (uint16_t i = 0; i < size/2; i++) { - if ((i%256) == 0) { + for (uint16_t i = 0; i < size / 2; i++) { + if ((i % 256) == 0) { upcase = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!upcase) { pr->println(F("read upcase failed")); return; } } - if (i%16 == 0) { + if (i % 16 == 0) { pr->println(); printHex(pr, i); } pr->write(' '); - uint16_t uc = getLe16(&upcase[2*(i & 0XFF)]); + uint16_t uc = getLe16(&upcase[2 * (i & 0XFF)]); printHex(pr, uc); checksum = upcaseChecksum(uc, checksum); } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFile.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFile.cpp similarity index 82% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFile.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFile.cpp index 821ac15e..1301d4c0 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFile.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFile.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -36,14 +36,37 @@ inline bool lfnLegalChar(uint8_t c) { #if USE_UTF8_LONG_NAMES return !lfnReservedChar(c); -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES return !(lfnReservedChar(c) || c & 0X80); #endif // USE_UTF8_LONG_NAMES } //------------------------------------------------------------------------------ +bool ExFatFile::attrib(uint8_t bits) { + if (!isFileOrSubDir() || (bits & FS_ATTRIB_USER_SETTABLE) != bits) { + DBG_FAIL_MACRO; + goto fail; + } + // Don't allow read-only to be set if the file is open for write. + if ((bits & FS_ATTRIB_READ_ONLY) && isWritable()) { + DBG_FAIL_MACRO; + goto fail; + } + m_attributes = (m_attributes & ~FS_ATTRIB_USER_SETTABLE) | bits; + // insure sync() will update dir entry + m_flags |= FILE_FLAG_DIR_DIRTY; + if (!sync()) { + DBG_FAIL_MACRO; + goto fail; + } + return true; + +fail: + return false; +} +//------------------------------------------------------------------------------ uint8_t* ExFatFile::dirCache(uint8_t set, uint8_t options) { DirPos_t pos = m_dirPos; - if (m_vol->dirSeek(&pos, FS_DIR_SIZE*set) != 1) { + if (m_vol->dirSeek(&pos, FS_DIR_SIZE * set) != 1) { return nullptr; } return m_vol->dirCache(&pos, options); @@ -64,8 +87,8 @@ bool ExFatFile::contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { *bgnSector = firstSector(); } if (endSector) { - *endSector = firstSector() + - ((m_validLength - 1) >> m_vol->bytesPerSectorShift()); + *endSector = + firstSector() + ((m_validLength - 1) >> m_vol->bytesPerSectorShift()); } return true; } @@ -113,8 +136,8 @@ void ExFatFile::fsetpos(const fspos_t* pos) { } //------------------------------------------------------------------------------ bool ExFatFile::getAccessDateTime(uint16_t* pdate, uint16_t* ptime) { - DirFile_t* df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); + DirFile_t* df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -123,13 +146,13 @@ bool ExFatFile::getAccessDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(df->accessTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { - DirFile_t* df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); + DirFile_t* df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -138,13 +161,13 @@ bool ExFatFile::getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(df->createTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { - DirFile_t* df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); + DirFile_t* df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -153,13 +176,11 @@ bool ExFatFile::getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(df->modifyTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool ExFatFile::isBusy() { - return m_vol->isBusy(); -} +bool ExFatFile::isBusy() { return m_vol->isBusy(); } //------------------------------------------------------------------------------ bool ExFatFile::open(const char* path, oflag_t oflag) { return open(ExFatVolume::cwv(), path, oflag); @@ -202,18 +223,24 @@ bool ExFatFile::open(ExFatFile* dirFile, const char* path, oflag_t oflag) { DBG_WARN_MACRO; goto fail; } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); dirFile = &tmpDir; close(); } return openPrivate(dirFile, &fname, oflag); - fail: +fail: return false; } //------------------------------------------------------------------------------ +bool ExFatFile::open(uint32_t index, oflag_t oflag) { + ExFatVolume* vol = ExFatVolume::cwv(); + return vol ? open(vol->vwd(), index, oflag) : false; +} +//------------------------------------------------------------------------------ bool ExFatFile::open(ExFatFile* dirFile, uint32_t index, oflag_t oflag) { - if (dirFile->seekSet(FS_DIR_SIZE*index) && openNext(dirFile, oflag)) { + if (dirFile->seekSet(FS_DIR_SIZE * index) && openNext(dirFile, oflag)) { if (dirIndex() == index) { return true; } @@ -223,6 +250,20 @@ bool ExFatFile::open(ExFatFile* dirFile, uint32_t index, oflag_t oflag) { return false; } //------------------------------------------------------------------------------ +bool ExFatFile::openCwd() { + if (isOpen() || !ExFatVolume::cwv()) { + DBG_FAIL_MACRO; + goto fail; + } + // *this = *ExFatVolume::cwv()->vwd(); + this->copy(ExFatVolume::cwv()->vwd()); + rewind(); + return true; + +fail: + return false; +} +//------------------------------------------------------------------------------ bool ExFatFile::openNext(ExFatFile* dir, oflag_t oflag) { if (isOpen() || !dir->isDir() || (dir->curPosition() & 0X1F)) { DBG_FAIL_MACRO; @@ -230,20 +271,18 @@ bool ExFatFile::openNext(ExFatFile* dir, oflag_t oflag) { } return openPrivate(dir, nullptr, oflag); - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { int n; uint8_t modeFlags; - uint32_t curCluster __attribute__((unused)); uint8_t* cache __attribute__((unused)); DirPos_t freePos __attribute__((unused)); - - DirFile_t* dirFile; + DirFile_t* dirFile; DirStream_t* dirStream; - DirName_t* dirName; + DirName_t* dirName; uint8_t buf[FS_DIR_SIZE]; uint8_t freeCount = 0; uint8_t freeNeed = 3; @@ -272,7 +311,7 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { modeFlags |= oflag & O_APPEND ? FILE_FLAG_APPEND : 0; if (fname) { - freeNeed = 2 + (fname->nameLength + 14)/15; + freeNeed = 2 + (fname->nameLength + 14) / 15; dir->rewind(); } @@ -285,7 +324,7 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { DBG_FAIL_MACRO; goto fail; } - if (!(buf[0] & 0x80)) { + if (!(buf[0] & EXFAT_TYPE_USED)) { // Unused entry. if (freeCount == 0) { freePos.position = dir->curPosition() - FS_DIR_SIZE; @@ -294,7 +333,7 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { if (freeCount < freeNeed) { freeCount++; } - if (!buf[0]) { + if (buf[0] == EXFAT_TYPE_END_DIR) { if (fname) { goto create; } @@ -314,8 +353,8 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { memset(this, 0, sizeof(ExFatFile)); dirFile = reinterpret_cast(buf); m_setCount = dirFile->setCount; - m_attributes = getLe16(dirFile->attributes) & FILE_ATTR_COPY; - if (!(m_attributes & EXFAT_ATTRIB_DIRECTORY)) { + m_attributes = getLe16(dirFile->attributes) & FS_ATTRIB_COPY; + if (!(m_attributes & FS_ATTRIB_DIRECTORY)) { m_attributes |= FILE_ATTR_FILE; } m_vol = dir->volume(); @@ -353,7 +392,7 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { } } - found: +found: // Don't open if create only. if (oflag & O_EXCL) { DBG_FAIL_MACRO; @@ -381,14 +420,17 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { DBG_FAIL_MACRO; goto fail; } + if (isWritable()) { + m_attributes |= FS_ATTRIB_ARCHIVE; + } #endif // !EXFAT_READ_ONLY return true; - create: +create: #if EXFAT_READ_ONLY DBG_FAIL_MACRO; goto fail; -#else // EXFAT_READ_ONLY +#else // EXFAT_READ_ONLY // don't create unless O_CREAT and write if (!(oflag & O_CREAT) || !(modeFlags & FILE_FLAG_WRITE) || !fname) { DBG_WARN_MACRO; @@ -397,12 +439,12 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { while (freeCount < freeNeed) { n = dir->read(buf, FS_DIR_SIZE); if (n == 0) { - curCluster = dir->m_curCluster; + uint32_t saveCurCluster = dir->m_curCluster; if (!dir->addDirCluster()) { DBG_FAIL_MACRO; goto fail; } - dir->m_curCluster = curCluster; + dir->m_curCluster = saveCurCluster; continue; } if (n != FS_DIR_SIZE) { @@ -418,7 +460,7 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { freePos.isContiguous = dir->isContiguous(); memset(this, 0, sizeof(ExFatFile)); m_vol = dir->volume(); - m_attributes = FILE_ATTR_FILE; + m_attributes = FILE_ATTR_FILE | FS_ATTRIB_ARCHIVE; m_dirPos = freePos; fname->reset(); for (uint8_t i = 0; i < freeNeed; i++) { @@ -427,7 +469,7 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { DBG_FAIL_MACRO; goto fail; } - memset(cache, 0 , FS_DIR_SIZE); + memset(cache, 0, FS_DIR_SIZE); if (i == 0) { dirFile = reinterpret_cast(cache); dirFile->type = EXFAT_TYPE_FILE; @@ -445,11 +487,11 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { setLe16(dirFile->createDate, FS_DEFAULT_DATE); setLe16(dirFile->modifyDate, FS_DEFAULT_DATE); setLe16(dirFile->accessDate, FS_DEFAULT_DATE); - if (FS_DEFAULT_TIME) { - setLe16(dirFile->createTime, FS_DEFAULT_TIME); - setLe16(dirFile->modifyTime, FS_DEFAULT_TIME); - setLe16(dirFile->accessTime, FS_DEFAULT_TIME); - } + if (FS_DEFAULT_TIME) { + setLe16(dirFile->createTime, FS_DEFAULT_TIME); + setLe16(dirFile->modifyTime, FS_DEFAULT_TIME); + setLe16(dirFile->accessTime, FS_DEFAULT_TIME); + } } } else if (i == 1) { dirStream = reinterpret_cast(cache); @@ -466,14 +508,14 @@ bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { break; } uint16_t u = fname->get16(); - setLe16(dirName->unicode + 2*k, u); + setLe16(dirName->unicode + 2 * k, u); } } } return sync(); #endif // EXFAT_READ_ONLY - fail: +fail: // close file m_attributes = FILE_ATTR_CLOSED; m_flags = 0; @@ -491,12 +533,12 @@ bool ExFatFile::openRoot(ExFatVolume* vol) { m_flags = FILE_FLAG_READ; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool ExFatFile::parsePathName(const char* path, - ExName_t* fname, const char** ptr) { +bool ExFatFile::parsePathName(const char* path, ExName_t* fname, + const char** ptr) { // Skip leading spaces. while (*path == ' ') { path++; @@ -515,20 +557,21 @@ bool ExFatFile::parsePathName(const char* path, } } // Advance to next path component. - for (; *path == ' ' || isDirSeparator(*path); path++) {} + for (; *path == ' ' || isDirSeparator(*path); path++) { + } *ptr = path; return hashName(fname); - fail: +fail: return false; } //------------------------------------------------------------------------------ int ExFatFile::peek() { - uint64_t curPosition = m_curPosition; - uint32_t curCluster = m_curCluster; + uint64_t saveCurPosition = m_curPosition; + uint32_t saveCurCluster = m_curCluster; int c = read(); - m_curPosition = curPosition; - m_curCluster = curCluster; + m_curPosition = saveCurPosition; + m_curCluster = saveCurCluster; return c; } //------------------------------------------------------------------------------ @@ -556,8 +599,8 @@ int ExFatFile::read(void* buf, size_t count) { sectorOffset = clusterOffset & m_vol->sectorMask(); if (clusterOffset == 0) { if (m_curPosition == 0) { - m_curCluster = isRoot() - ? m_vol->rootDirectoryCluster() : m_firstCluster; + m_curCluster = + isRoot() ? m_vol->rootDirectoryCluster() : m_firstCluster; } else if (isContiguous()) { m_curCluster++; } else { @@ -578,8 +621,8 @@ int ExFatFile::read(void* buf, size_t count) { } sector = m_vol->clusterStartSector(m_curCluster) + (clusterOffset >> m_vol->bytesPerSectorShift()); - if (sectorOffset != 0 || toRead < m_vol->bytesPerSector() - || sector == m_vol->dataCacheSector()) { + if (sectorOffset != 0 || toRead < m_vol->bytesPerSector() || + sector == m_vol->dataCacheSector()) { n = m_vol->bytesPerSector() - sectorOffset; if (n > toRead) { n = toRead; @@ -593,16 +636,16 @@ int ExFatFile::read(void* buf, size_t count) { uint8_t* src = cache + sectorOffset; memcpy(dst, src, n); #if USE_MULTI_SECTOR_IO - } else if (toRead >= 2*m_vol->bytesPerSector()) { + } else if (toRead >= 2 * m_vol->bytesPerSector()) { uint32_t ns = toRead >> m_vol->bytesPerSectorShift(); // Limit reads to current cluster. - uint32_t maxNs = m_vol->sectorsPerCluster() - - (clusterOffset >> m_vol->bytesPerSectorShift()); + uint32_t maxNs = m_vol->sectorsPerCluster() - + (clusterOffset >> m_vol->bytesPerSectorShift()); if (ns > maxNs) { ns = maxNs; } n = ns << m_vol->bytesPerSectorShift(); - if (!m_vol->cacheSafeRead(sector, dst, ns)) { + if (!m_vol->cacheSafeRead(sector, dst, ns)) { DBG_FAIL_MACRO; goto fail; } @@ -621,7 +664,7 @@ int ExFatFile::read(void* buf, size_t count) { } return count - toRead; - fail: +fail: m_error |= READ_ERROR; return -1; } @@ -634,7 +677,7 @@ bool ExFatFile::remove(const char* path) { } return file.remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -684,11 +727,11 @@ bool ExFatFile::seekSet(uint64_t pos) { } } - done: +done: m_curPosition = pos; return true; - fail: +fail: m_curCluster = tmp; return false; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFile.h b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFile.h similarity index 78% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFile.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFile.h index 34154a71..93c52510 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFile.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFile.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,9 +30,10 @@ */ #include #include -#include "../common/FsDateTime.h" -#include "../common/FsApiConstants.h" + #include "../common/FmtNumber.h" +#include "../common/FsApiConstants.h" +#include "../common/FsDateTime.h" #include "../common/FsName.h" #include "ExFatPartition.h" @@ -68,25 +69,100 @@ class ExFatFile { * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive * OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t). */ - ExFatFile(const char* path, oflag_t oflag) { - open(path, oflag); + ExFatFile(const char* path, oflag_t oflag) { open(path, oflag); } + + /** Copy from to this. + * \param[in] from Source file. + */ + void copy(const ExFatFile* from) { + if (from != this) { +#if FILE_COPY_CONSTRUCTOR_SELECT + *this = *from; +#else // FILE_COPY_CONSTRUCTOR_SELECT + memcpy(this, from, sizeof(ExFatFile)); +#endif // FILE_COPY_CONSTRUCTOR_SELECT + } + } + /** move from to this. + * \param[in] from Source file. + */ + void move(ExFatFile* from) { + if (from != this) { + copy(from); + from->m_attributes = FILE_ATTR_CLOSED; + } } +#if FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PUBLIC + /** Copy constructor. + * \param[in] from Move from file. + * + */ + ExFatFile(const ExFatFile& from) = default; + /** Copy assignment operator. + * \param[in] from Move from file. + * \return Copied file. + */ + ExFatFile& operator=(const ExFatFile& from) = default; +#elif FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PRIVATE + + private: + ExFatFile(const ExFatFile& from) = default; + ExFatFile& operator=(const ExFatFile& from) = default; + + public: +#else // FILE_COPY_CONSTRUCTOR_SELECT + ExFatFile(const ExFatFile& from) = delete; + ExFatFile& operator=(const ExFatFile& from) = delete; +#endif // FILE_COPY_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT + /** Move constructor. + * \param[in] from Move from file. + */ + ExFatFile(ExFatFile&& from) { move(&from); } + /** Move assignment operator. + * \param[in] from Move from file. + * \return Moved file. + */ + ExFatFile& operator=(ExFatFile&& from) { + move(&from); + return *this; + } +#else // FILE_MOVE_CONSTRUCTOR_SELECT + ExFatFile(ExFatFile&& from) = delete; + ExFatFile& operator=(ExFatFile&& from) = delete; +#endif + + /** Destructor */ #if DESTRUCTOR_CLOSES_FILE ~ExFatFile() { if (isOpen()) { close(); } } +#else // DESTRUCTOR_CLOSES_FILE + ~ExFatFile() = default; #endif // DESTRUCTOR_CLOSES_FILE /** The parenthesis operator. - * - * \return true if a file is open. - */ - operator bool() { - return isOpen(); - } + * + * \return true if a file is open. + */ + operator bool() { return isOpen(); } + /** + * \return user settable file attributes for success else -1. + */ + int attrib() { return isFileOrSubDir() ? m_attributes & FS_ATTRIB_COPY : -1; } + /** Set file attributes + * + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \note attrib() will fail for set read-only if the file is open for write. + * \return true for success or false for failure. + */ + bool attrib(uint8_t bits); /** \return The number of bytes available from the current position * to EOF for normal files. INT_MAX is returned for very large files. * @@ -102,17 +178,11 @@ class ExFatFile { /** \return The number of bytes available from the current position * to EOF for normal files. Zero is returned for directory files. */ - uint64_t available64() { - return isFile() ? fileSize() - curPosition() : 0; - } + uint64_t available64() { return isFile() ? fileSize() - curPosition() : 0; } /** Clear all error bits. */ - void clearError() { - m_error = 0; - } + void clearError() { m_error = 0; } /** Clear writeError. */ - void clearWriteError() { - m_error &= ~WRITE_ERROR; - } + void clearWriteError() { m_error &= ~WRITE_ERROR; } /** Close a file and force cached data and directory information * to be written to the storage device. * @@ -129,13 +199,14 @@ class ExFatFile { * \return true for success or false for failure. */ bool contiguousRange(uint32_t* bgnSector, uint32_t* endSector); + /** \return The current cluster number for a file or directory. */ + uint32_t curCluster() const { return m_curCluster; } /** \return The current position for a file or directory. */ - uint64_t curPosition() const {return m_curPosition;} - + uint64_t curPosition() const { return m_curPosition; } /** \return Total data length for file. */ - uint64_t dataLength() const {return m_dataLength;} + uint64_t dataLength() const { return m_dataLength; } /** \return Directory entry index. */ - uint32_t dirIndex() const {return m_dirPos.position/FS_DIR_SIZE;} + uint32_t dirIndex() const { return m_dirPos.position / FS_DIR_SIZE; } /** Test for the existence of a file in a directory * * \param[in] path Path of the file to be tested for. @@ -147,15 +218,15 @@ class ExFatFile { * * \return true if the file exists else false. */ - bool exists(const char* path) { - ExFatFile file; - return file.open(this, path, O_RDONLY); - } + bool exists(const char* path) { + ExFatFile file; + return file.open(this, path, O_RDONLY); + } /** get position for streams * \param[out] pos struct to receive position */ void fgetpos(fspos_t* pos) const; - /** + /** * Get a string from a file. * * fgets() reads bytes from a file into the array pointed to by \a str, until @@ -178,7 +249,7 @@ class ExFatFile { */ int fgets(char* str, int num, char* delim = nullptr); /** \return The total number of bytes in a file. */ - uint64_t fileSize() const {return m_validLength;} + uint64_t fileSize() const { return m_validLength; } /** \return Address of first sector or zero for empty file. */ uint32_t firstSector() const; /** Set position for streams @@ -186,7 +257,7 @@ class ExFatFile { */ void fsetpos(const fspos_t* pos); /** Arduino name for sync() */ - void flush() {sync();} + void flush() { sync(); } /** Get a file's access date and time. * * \param[out] pdate Packed date for directory entry. @@ -204,9 +275,7 @@ class ExFatFile { */ bool getCreateDateTime(uint16_t* pdate, uint16_t* ptime); /** \return All error bits. */ - uint8_t getError() const { - return isOpen() ? m_error : 0XFF; - } + uint8_t getError() const { return isOpen() ? m_error : 0XFF; } /** Get a file's modify date and time. * * \param[out] pdate Packed date for directory entry. @@ -220,12 +289,12 @@ class ExFatFile { * * \param[out] name An array of characters for the file's name. * \param[in] size The size of the array in characters. - * \return the name length. + * \return length for success or zero for failure. */ size_t getName(char* name, size_t size) { #if USE_UTF8_LONG_NAMES return getName8(name, size); -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES return getName7(name, size); #endif // USE_UTF8_LONG_NAMES } @@ -246,9 +315,7 @@ class ExFatFile { */ size_t getName8(char* name, size_t size); /** \return value of writeError */ - bool getWriteError() const { - return isOpen() ? m_error & WRITE_ERROR : true; - } + bool getWriteError() const { return isOpen() ? m_error & WRITE_ERROR : true; } /** * Check for FsBlockDevice busy. * @@ -256,25 +323,29 @@ class ExFatFile { */ bool isBusy(); /** \return True if the file is contiguous. */ - bool isContiguous() const {return m_flags & FILE_FLAG_CONTIGUOUS;} + bool isContiguous() const { return m_flags & FILE_FLAG_CONTIGUOUS; } /** \return True if this is a directory. */ - bool isDir() const {return m_attributes & FILE_ATTR_DIR;} + bool isDir() const { return m_attributes & FILE_ATTR_DIR; } /** \return True if this is a normal file. */ - bool isFile() const {return m_attributes & FILE_ATTR_FILE;} + bool isFile() const { return m_attributes & FILE_ATTR_FILE; } + /** \return True if this is a normal file or sub-directory. */ + bool isFileOrSubDir() const { return isFile() || isSubDir(); } /** \return True if this is a hidden. */ - bool isHidden() const {return m_attributes & FILE_ATTR_HIDDEN;} + bool isHidden() const { return m_attributes & FS_ATTRIB_HIDDEN; } /** \return true if the file is open. */ - bool isOpen() const {return m_attributes;} + bool isOpen() const { return m_attributes; } /** \return True if file is read-only */ - bool isReadOnly() const {return m_attributes & FILE_ATTR_READ_ONLY;} + bool isReadOnly() const { return m_attributes & FS_ATTRIB_READ_ONLY; } /** \return True if this is the root directory. */ - bool isRoot() const {return m_attributes & FILE_ATTR_ROOT;} + bool isRoot() const { return m_attributes & FILE_ATTR_ROOT; } /** \return True file is readable. */ - bool isReadable() const {return m_flags & FILE_FLAG_READ;} - /** \return True if this is a subdirectory. */ - bool isSubDir() const {return m_attributes & FILE_ATTR_SUBDIR;} + bool isReadable() const { return m_flags & FILE_FLAG_READ; } + /** \return True if this is a sub-directory. */ + bool isSubDir() const { return m_attributes & FILE_ATTR_SUBDIR; } + /** \return True if this is a system file. */ + bool isSystem() const { return m_attributes & FS_ATTRIB_SYSTEM; } /** \return True file is writable. */ - bool isWritable() const {return m_flags & FILE_FLAG_WRITE;} + bool isWritable() const { return m_flags & FILE_FLAG_WRITE; } /** List directory contents. * * \param[in] pr Print stream for list. @@ -291,10 +362,10 @@ class ExFatFile { * * LS_SIZE - %Print file size. * - * LS_R - Recursive list of subdirectories. + * LS_R - Recursive list of sub-directories. * * \param[in] indent Amount of space before file name. Used for recursive - * list to indicate subdirectory level. + * list to indicate sub-directory level. * * \return true for success or false for failure. */ @@ -355,7 +426,7 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool open(ExFatFile* dirFile, const char* path, oflag_t oflag); + bool open(ExFatFile* dirFile, const char* path, oflag_t oflag = O_RDONLY); /** Open a file in the volume working directory. * * \param[in] vol Volume where the file is located. @@ -367,7 +438,7 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool open(ExFatVolume* vol, const char* path, oflag_t oflag); + bool open(ExFatVolume* vol, const char* path, oflag_t oflag = O_RDONLY); /** Open a file by index. * * \param[in] dirFile An open ExFatFile instance for the directory. @@ -381,7 +452,19 @@ class ExFatFile { * See open() by path for definition of flags. * \return true for success or false for failure. */ - bool open(ExFatFile* dirFile, uint32_t index, oflag_t oflag); + bool open(ExFatFile* dirFile, uint32_t index, oflag_t oflag = O_RDONLY); + /** Open a file by index in the current working directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag bitwise-inclusive OR of open flags. + * See see FatFile::open(FatFile*, const char*, uint8_t). + * + * See open() by path for definition of flags. + * \return true for success or false for failure. + */ + bool open(uint32_t index, oflag_t oflag = O_RDONLY); /** Open a file in the current working directory. * * \param[in] path A path with a valid name for a file to be opened. @@ -392,6 +475,11 @@ class ExFatFile { * \return true for success or false for failure. */ bool open(const char* path, oflag_t oflag = O_RDONLY); + /** Open the current working directory. + * + * \return true for success or false for failure. + */ + bool openCwd(); /** Open the next file or subdirectory in a directory. * * \param[in] dirFile An open instance for the directory @@ -426,14 +514,14 @@ class ExFatFile { * \return true for success or false for failure. */ bool preAllocate(uint64_t length); - /** Print a file's access date and time + /** Print a file's access date and time * * \param[in] pr Print stream for output. * * \return true for success or false for failure. */ size_t printAccessDateTime(print_t* pr); - /** Print a file's creation date and time + /** Print a file's creation date and time * * \param[in] pr Print stream for output. * @@ -475,7 +563,7 @@ class ExFatFile { template size_t printField(Type value, char term) { char sign = 0; - char buf[3*sizeof(Type) + 3]; + char buf[3 * sizeof(Type) + 3]; char* str = buf + sizeof(buf); if (term) { @@ -519,7 +607,7 @@ class ExFatFile { size_t printName(print_t* pr) { #if USE_UTF8_LONG_NAMES return printName8(pr); -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES return printName7(pr); #endif // USE_UTF8_LONG_NAMES } @@ -584,14 +672,14 @@ class ExFatFile { * \return true for success or false for failure. */ bool remove(const char* path); - /** Rename a file or subdirectory. + /** Rename a file or subdirectory. * * \param[in] newPath New path name for the file/directory. * * \return true for success or false for failure. */ bool rename(const char* newPath); - /** Rename a file or subdirectory. + /** Rename a file or subdirectory. * * \param[in] dirFile Directory for the new path. * \param[in] newPath New path name for the file/directory. @@ -600,9 +688,7 @@ class ExFatFile { */ bool rename(ExFatFile* dirFile, const char* newPath); /** Set the file's current position to zero. */ - void rewind() { - seekSet(0); - } + void rewind() { seekSet(0); } /** Remove a directory file. * * The directory file will be removed only if it is empty and is not the @@ -620,9 +706,7 @@ class ExFatFile { * \param[in] offset The new position in bytes from the current position. * \return true for success or false for failure. */ - bool seekCur(int64_t offset) { - return seekSet(m_curPosition + offset); - } + bool seekCur(int64_t offset) { return seekSet(m_curPosition + offset); } /** Set the files position to end-of-file + \a offset. See seekSet(). * Can't be used for directory files since file size is not defined. * \param[in] offset The new position in bytes from end-of-file. @@ -639,7 +723,7 @@ class ExFatFile { */ bool seekSet(uint64_t pos); /** \return directory set count */ - uint8_t setCount() const {return m_setCount;} + uint8_t setCount() const { return m_setCount; } /** The sync() call causes all modified data and directory fields * to be written to the storage device. * @@ -691,32 +775,28 @@ class ExFatFile { * \return true for success or false for failure. */ bool truncate(); - /** Truncate a file to a specified length. The current file position + /** Truncate a file to a specified length. The current file position * will be set to end of file. * * \param[in] length The desired length for the file. * * \return true for success or false for failure. */ - bool truncate(uint64_t length) { - return seekSet(length) && truncate(); - } + bool truncate(uint64_t length) { return seekSet(length) && truncate(); } /** \return The valid number of bytes in a file. */ - uint64_t validLength() const {return m_validLength;} + uint64_t validLength() const { return m_validLength; } /** Write a string to a file. Used by the Arduino Print class. * \param[in] str Pointer to the string. * Use getWriteError to check for errors. * \return count of characters written for success or -1 for failure. */ - size_t write(const char* str) { - return write(str, strlen(str)); - } + size_t write(const char* str) { return write(str, strlen(str)); } /** Write a single byte. * \param[in] b The byte to be written. * \return +1 for success or zero for failure. */ - size_t write(uint8_t b) {return write(&b, 1);} + size_t write(uint8_t b) { return write(&b, 1); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -744,16 +824,12 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags = 0) { return ls(&Serial, flags); } /** Print a file's name. * * \return length for success or zero for failure. */ - size_t printName() { - return ExFatFile::printName(&Serial); - } + size_t printName() { return ExFatFile::printName(&Serial); } #endif // ENABLE_ARDUINO_SERIAL private: @@ -767,55 +843,41 @@ class ExFatFile { bool mkdir(ExFatFile* parent, ExName_t* fname); bool openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag); - bool parsePathName(const char* path, - ExName_t* fname, const char** ptr); - uint32_t curCluster() const {return m_curCluster;} - ExFatVolume* volume() const {return m_vol;} + bool parsePathName(const char* path, ExName_t* fname, const char** ptr); + ExFatVolume* volume() const { return m_vol; } bool syncDir(); //---------------------------------------------------------------------------- static const uint8_t WRITE_ERROR = 0X1; - static const uint8_t READ_ERROR = 0X2; + static const uint8_t READ_ERROR = 0X2; /** This file has not been opened. */ static const uint8_t FILE_ATTR_CLOSED = 0; - /** File is read-only. */ - static const uint8_t FILE_ATTR_READ_ONLY = EXFAT_ATTRIB_READ_ONLY; - /** File should be hidden in directory listings. */ - static const uint8_t FILE_ATTR_HIDDEN = EXFAT_ATTRIB_HIDDEN; - /** Entry is for a system file. */ - static const uint8_t FILE_ATTR_SYSTEM = EXFAT_ATTRIB_SYSTEM; /** Entry for normal data file */ static const uint8_t FILE_ATTR_FILE = 0X08; /** Entry is for a subdirectory */ - static const uint8_t FILE_ATTR_SUBDIR = EXFAT_ATTRIB_DIRECTORY; - static const uint8_t FILE_ATTR_ARCHIVE = EXFAT_ATTRIB_ARCHIVE; + static const uint8_t FILE_ATTR_SUBDIR = FS_ATTRIB_DIRECTORY; /** Root directory */ static const uint8_t FILE_ATTR_ROOT = 0X40; /** Directory type bits */ static const uint8_t FILE_ATTR_DIR = FILE_ATTR_SUBDIR | FILE_ATTR_ROOT; - /** Attributes to copy from directory entry */ - static const uint8_t FILE_ATTR_COPY = EXFAT_ATTRIB_READ_ONLY | - EXFAT_ATTRIB_HIDDEN | EXFAT_ATTRIB_SYSTEM | - EXFAT_ATTRIB_DIRECTORY | EXFAT_ATTRIB_ARCHIVE; static const uint8_t FILE_FLAG_READ = 0X01; static const uint8_t FILE_FLAG_WRITE = 0X02; static const uint8_t FILE_FLAG_APPEND = 0X08; - static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; + static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; static const uint8_t FILE_FLAG_DIR_DIRTY = 0X80; - - uint64_t m_curPosition; - uint64_t m_dataLength; - uint64_t m_validLength; - uint32_t m_curCluster; - uint32_t m_firstCluster; - ExFatVolume* m_vol; - DirPos_t m_dirPos; - uint8_t m_setCount; - uint8_t m_attributes = FILE_ATTR_CLOSED; - uint8_t m_error = 0; - uint8_t m_flags = 0; + uint64_t m_curPosition; + uint64_t m_dataLength; + uint64_t m_validLength; + uint32_t m_curCluster; + uint32_t m_firstCluster; + ExFatVolume* m_vol; + DirPos_t m_dirPos; + uint8_t m_setCount; + uint8_t m_attributes = FILE_ATTR_CLOSED; + uint8_t m_error = 0; + uint8_t m_flags = 0; }; #include "../common/ArduinoFiles.h" @@ -825,7 +887,7 @@ class ExFatFile { */ class ExFile : public StreamFile { public: - /** Opens the next file or folder in a directory. + /** Opens the next file or folder in a directory. * * \param[in] oflag open flags. * \return a FatStream object. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFilePrint.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFilePrint.cpp similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFilePrint.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFilePrint.cpp index 69a9330a..38dd0f9e 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFilePrint.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFilePrint.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,8 +24,8 @@ */ #define DBG_FILE "ExFatFilePrint.cpp" #include "../common/DebugMacros.h" -#include "ExFatLib.h" #include "../common/FsUtf.h" +#include "ExFatLib.h" //------------------------------------------------------------------------------ bool ExFatFile::ls(print_t* pr) { ExFatFile file; @@ -51,7 +51,7 @@ bool ExFatFile::ls(print_t* pr) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -94,7 +94,7 @@ bool ExFatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -119,13 +119,13 @@ size_t ExFatFile::printCreateDateTime(print_t* pr) { size_t ExFatFile::printFileSize(print_t* pr) { uint64_t n = m_validLength; char buf[21]; - char *str = &buf[sizeof(buf) - 1]; - char *bgn = str - 12; + char* str = &buf[sizeof(buf) - 1]; + char* bgn = str - 12; *str = '\0'; do { uint64_t m = n; n /= 10; - *--str = m - 10*n + '0'; + *--str = m - 10 * n + '0'; } while (n); while (str > bgn) { *--str = ' '; @@ -148,18 +148,17 @@ size_t ExFatFile::printName7(print_t* pr) { uint8_t in; uint8_t buf[15]; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } for (uint8_t is = 2; is <= m_setCount; is++) { - dn = reinterpret_cast - (dirCache(is, FsCache::CACHE_FOR_READ)); + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); if (!dn || dn->type != EXFAT_TYPE_NAME) { DBG_FAIL_MACRO; goto fail; } for (in = 0; in < 15; in++) { - uint16_t c = getLe16(dn->unicode + 2*in); + uint16_t c = getLe16(dn->unicode + 2 * in); if (!c) { break; } @@ -170,11 +169,11 @@ size_t ExFatFile::printName7(print_t* pr) { } return n; - fail: +fail: return 0; } //------------------------------------------------------------------------------ -size_t ExFatFile::printName8(print_t *pr) { +size_t ExFatFile::printName8(print_t* pr) { DirName_t* dn; uint16_t hs = 0; uint32_t cp; @@ -182,18 +181,17 @@ size_t ExFatFile::printName8(print_t *pr) { uint8_t in; char buf[5]; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } for (uint8_t is = 2; is <= m_setCount; is++) { - dn = reinterpret_cast - (dirCache(is, FsCache::CACHE_FOR_READ)); + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); if (!dn || dn->type != EXFAT_TYPE_NAME) { DBG_FAIL_MACRO; goto fail; } for (in = 0; in < 15; in++) { - uint16_t c = getLe16(dn->unicode + 2*in); + uint16_t c = getLe16(dn->unicode + 2 * in); if (hs) { if (!FsUtf::isLowSurrogate(c)) { DBG_FAIL_MACRO; @@ -218,11 +216,11 @@ size_t ExFatFile::printName8(print_t *pr) { DBG_FAIL_MACRO; goto fail; } - n += pr->write(buf, str - buf); + n += pr->write(reinterpret_cast(buf), str - buf); } } return n; - fail: +fail: return 0; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFileWrite.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFileWrite.cpp similarity index 92% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFileWrite.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFileWrite.cpp index 8356f42a..91977e0d 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFileWrite.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFileWrite.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,7 +28,7 @@ //============================================================================== #if EXFAT_READ_ONLY bool ExFatFile::mkdir(ExFatFile* parent, const char* path, bool pFlag) { - (void) parent; + (void)parent; (void)path; (void)pFlag; return false; @@ -46,12 +46,8 @@ bool ExFatFile::rename(ExFatFile* dirFile, const char* newPath) { (void)newPath; return false; } -bool ExFatFile::sync() { - return false; -} -bool ExFatFile::truncate() { - return false; -} +bool ExFatFile::sync() { return false; } +bool ExFatFile::truncate() { return false; } size_t ExFatFile::write(const void* buf, size_t nbyte) { (void)buf; (void)nbyte; @@ -69,7 +65,7 @@ static uint16_t exFatDirChecksum(const uint8_t* data, uint16_t checksum) { } //------------------------------------------------------------------------------ bool ExFatFile::addCluster() { - uint32_t find = m_vol->bitmapFind(m_curCluster ? m_curCluster + 1 : 0, 1); + uint32_t find = m_vol->bitmapFind(m_curCluster ? m_curCluster + 1 : 0, 1); if (find < 2) { DBG_FAIL_MACRO; goto fail; @@ -109,11 +105,11 @@ bool ExFatFile::addCluster() { } } - done: +done: m_curCluster = find; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -131,9 +127,9 @@ bool ExFatFile::addDirCluster() { goto fail; } sector = m_vol->clusterStartSector(m_curCluster); - for (uint32_t i = 0; i < m_vol->sectorsPerCluster(); i++) { - cache = m_vol->dataCachePrepare(sector + i, - FsCache::CACHE_RESERVE_FOR_WRITE); + for (uint32_t i = 0; i < m_vol->sectorsPerCluster(); i++) { + cache = + m_vol->dataCachePrepare(sector + i, FsCache::CACHE_RESERVE_FOR_WRITE); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -142,12 +138,12 @@ bool ExFatFile::addDirCluster() { } if (!isRoot()) { m_flags |= FILE_FLAG_DIR_DIRTY; - m_dataLength += m_vol->bytesPerCluster(); + m_dataLength += m_vol->bytesPerCluster(); m_validLength += m_vol->bytesPerCluster(); } return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -183,13 +179,14 @@ bool ExFatFile::mkdir(ExFatFile* parent, const char* path, bool pFlag) { goto fail; } } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); parent = &tmpDir; close(); } return mkdir(parent, &fname); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -204,7 +201,7 @@ bool ExFatFile::mkdir(ExFatFile* parent, ExName_t* fname) { goto fail; } // convert file to directory - m_attributes = FILE_ATTR_SUBDIR; + m_attributes = FILE_ATTR_SUBDIR | FS_ATTRIB_ARCHIVE; // allocate and zero first cluster if (!addDirCluster()) { @@ -218,7 +215,7 @@ bool ExFatFile::mkdir(ExFatFile* parent, ExName_t* fname) { m_flags = FILE_FLAG_READ | FILE_FLAG_CONTIGUOUS | FILE_FLAG_DIR_DIRTY; return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -248,7 +245,7 @@ bool ExFatFile::preAllocate(uint64_t length) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -290,7 +287,7 @@ bool ExFatFile::remove() { // Write entry to device. return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -316,7 +313,8 @@ bool ExFatFile::rename(ExFatFile* dirFile, const char* newPath) { DBG_FAIL_MACRO; goto fail; } - oldFile = *this; + // oldFile = *this; + oldFile.copy(this); m_dirPos = file.m_dirPos; m_setCount = file.m_setCount; m_flags |= FILE_FLAG_DIR_DIRTY; @@ -330,7 +328,7 @@ bool ExFatFile::rename(ExFatFile* dirFile, const char* newPath) { oldFile.m_attributes = FILE_ATTR_FILE; return oldFile.remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -363,7 +361,7 @@ bool ExFatFile::rmdir() { m_flags |= FILE_FLAG_WRITE; return remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -382,7 +380,7 @@ bool ExFatFile::sync() { } return true; - fail: +fail: m_error |= WRITE_ERROR; return false; } @@ -393,7 +391,7 @@ bool ExFatFile::syncDir() { uint8_t* cache; uint16_t checksum = 0; - for (uint8_t is = 0; is <= m_setCount ; is++) { + for (uint8_t is = 0; is <= m_setCount; is++) { cache = dirCache(is, FsCache::CACHE_FOR_READ); if (!cache) { DBG_FAIL_MACRO; @@ -402,7 +400,7 @@ bool ExFatFile::syncDir() { switch (cache[0]) { case EXFAT_TYPE_FILE: df = reinterpret_cast(cache); - setLe16(df->attributes, m_attributes & FILE_ATTR_COPY); + setLe16(df->attributes, m_attributes & FS_ATTRIB_COPY); if (FsDateTime::callback) { uint16_t date, time; uint8_t ms10; @@ -439,8 +437,8 @@ bool ExFatFile::syncDir() { } checksum = exFatDirChecksum(cache, checksum); } - df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); + df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -452,13 +450,14 @@ bool ExFatFile::syncDir() { } return true; - fail: +fail: m_error |= WRITE_ERROR; return false; } //------------------------------------------------------------------------------ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { + uint8_t day, uint8_t hour, uint8_t minute, + uint8_t second) { DirFile_t* df; uint8_t* cache; uint16_t checksum = 0; @@ -466,16 +465,9 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, uint16_t time; uint8_t ms10; - if (!isFile() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { + if (!isFileOrSubDir() || year < 1980 || year > 2107 || month < 1 || + month > 12 || day < 1 || day > 31 || hour > 23 || minute > 59 || + second > 59) { DBG_FAIL_MACRO; goto fail; } @@ -498,7 +490,7 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, switch (cache[0]) { case EXFAT_TYPE_FILE: df = reinterpret_cast(cache); - setLe16(df->attributes, m_attributes & FILE_ATTR_COPY); + setLe16(df->attributes, m_attributes & FS_ATTRIB_COPY); m_vol->dataCacheDirty(); if (flags & T_ACCESS) { setLe16(df->accessTime, time); @@ -529,8 +521,8 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, } checksum = exFatDirChecksum(cache, checksum); } - df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); + df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -542,7 +534,7 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -554,7 +546,7 @@ bool ExFatFile::truncate() { goto fail; } if (m_firstCluster == 0) { - return true; + return true; } if (isContiguous()) { uint32_t nc = 1 + ((m_dataLength - 1) >> m_vol->bytesPerClusterShift()); @@ -601,7 +593,7 @@ bool ExFatFile::truncate() { m_flags |= FILE_FLAG_DIR_DIRTY; return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -708,18 +700,18 @@ size_t ExFatFile::write(const void* buf, size_t nbyte) { } } #if USE_MULTI_SECTOR_IO - } else if (toWrite >= 2*m_vol->bytesPerSector()) { + } else if (toWrite >= 2 * m_vol->bytesPerSector()) { // use multiple sector write command uint32_t ns = toWrite >> m_vol->bytesPerSectorShift(); // Limit writes to current cluster. - uint32_t maxNs = m_vol->sectorsPerCluster() - - (clusterOffset >> m_vol->bytesPerSectorShift()); + uint32_t maxNs = m_vol->sectorsPerCluster() - + (clusterOffset >> m_vol->bytesPerSectorShift()); if (ns > maxNs) { ns = maxNs; } n = ns << m_vol->bytesPerSectorShift(); if (!m_vol->cacheSafeWrite(sector, src, ns)) { - DBG_FAIL_MACRO; + DBG_FAIL_MACRO; goto fail; } #endif // USE_MULTI_SECTOR_IO @@ -748,7 +740,7 @@ size_t ExFatFile::write(const void* buf, size_t nbyte) { } return nbyte; - fail: +fail: // return for write error m_error |= WRITE_ERROR; return 0; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFormatter.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFormatter.cpp similarity index 88% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFormatter.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFormatter.cpp index f424b1f3..2710dddb 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFormatter.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFormatter.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -31,7 +31,7 @@ const uint32_t BOOT_BACKUP_OFFSET = 12; const uint16_t BYTES_PER_SECTOR = 512; const uint16_t SECTOR_MASK = BYTES_PER_SECTOR - 1; -const uint8_t BYTES_PER_SECTOR_SHIFT = 9; +const uint8_t BYTES_PER_SECTOR_SHIFT = 9; const uint16_t MINIMUM_UPCASE_SKIP = 512; const uint32_t BITMAP_CLUSTER = 2; const uint32_t UPCASE_CLUSTER = 3; @@ -41,14 +41,16 @@ const uint32_t ROOT_CLUSTER = 4; #if !PRINT_FORMAT_PROGRESS #define writeMsg(pr, str) #elif defined(__AVR__) -#define writeMsg(pr, str) if (pr) pr->print(F(str)) +#define writeMsg(pr, str) \ + if (pr) pr->print(F(str)) #else // PRINT_FORMAT_PROGRESS -#define writeMsg(pr, str) if (pr) pr->write(str) +#define writeMsg(pr, str) \ + if (pr) pr->write(str) #endif // PRINT_FORMAT_PROGRESS //------------------------------------------------------------------------------ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { #if !PRINT_FORMAT_PROGRESS -(void)pr; + (void)pr; #endif // !PRINT_FORMAT_PROGRESS MbrSector_t* mbr; ExFatPbs_t* pbs; @@ -81,14 +83,15 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { goto fail; } // Determine partition layout. - for (m = 1, vs = 0; m && sectorCount > m; m <<= 1, vs++) {} - sectorsPerClusterShift = vs < 29 ? 8 : (vs - 11)/2; + for (m = 1, vs = 0; m && sectorCount > m; m <<= 1, vs++) { + } + sectorsPerClusterShift = vs < 29 ? 8 : (vs - 11) / 2; sectorsPerCluster = 1UL << sectorsPerClusterShift; - fatLength = 1UL << (vs < 27 ? 13 : (vs + 1)/2); + fatLength = 1UL << (vs < 27 ? 13 : (vs + 1) / 2); fatOffset = fatLength; - partitionOffset = 2*fatLength; - clusterHeapOffset = 2*fatLength; - clusterCount = (sectorCount - 4*fatLength) >> sectorsPerClusterShift; + partitionOffset = 2 * fatLength; + clusterHeapOffset = 2 * fatLength; + clusterCount = (sectorCount - 4 * fatLength) >> sectorsPerClusterShift; volumeLength = clusterHeapOffset + (clusterCount << sectorsPerClusterShift); // make Master Boot Record. Use fake CHS. @@ -152,8 +155,8 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { checksum = exFatChecksum(checksum, secBuf[i]); } sector = partitionOffset; - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } @@ -165,8 +168,8 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { for (size_t i = 0; i < BYTES_PER_SECTOR; i++) { checksum = exFatChecksum(checksum, secBuf[i]); } - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } @@ -178,8 +181,8 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { for (size_t i = 0; i < BYTES_PER_SECTOR; i++) { checksum = exFatChecksum(checksum, secBuf[i]); } - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } @@ -189,15 +192,15 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { for (size_t i = 0; i < BYTES_PER_SECTOR; i += 4) { setLe32(secBuf + i, checksum); } - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } // Initialize FAT. writeMsg(pr, "Writing FAT "); sector = partitionOffset + fatOffset; - ns = ((clusterCount + 2)*4 + BYTES_PER_SECTOR - 1)/BYTES_PER_SECTOR; + ns = ((clusterCount + 2) * 4 + BYTES_PER_SECTOR - 1) / BYTES_PER_SECTOR; memset(secBuf, 0, BYTES_PER_SECTOR); // Allocate two reserved clusters, bitmap, upcase, and root clusters. @@ -206,7 +209,7 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { secBuf[i] = 0XFF; } for (uint32_t i = 0; i < ns; i++) { - if (i%(ns/32) == 0) { + if (i % (ns / 32) == 0) { writeMsg(pr, "."); } if (!dev->writeSector(sector + i, secBuf)) { @@ -220,8 +223,8 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { writeMsg(pr, "\r\n"); // Write cluster two, bitmap. sector = partitionOffset + clusterHeapOffset; - bitmapSize = (clusterCount + 7)/8; - ns = (bitmapSize + BYTES_PER_SECTOR - 1)/BYTES_PER_SECTOR; + bitmapSize = (clusterCount + 7) / 8; + ns = (bitmapSize + BYTES_PER_SECTOR - 1) / BYTES_PER_SECTOR; if (ns > sectorsPerCluster) { DBG_FAIL_MACRO; goto fail; @@ -244,14 +247,14 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { DBG_FAIL_MACRO; goto fail; } - if (m_upcaseSize > BYTES_PER_SECTOR*sectorsPerCluster) { + if (m_upcaseSize > BYTES_PER_SECTOR * sectorsPerCluster) { DBG_FAIL_MACRO; goto fail; } // Initialize first sector of root. writeMsg(pr, "Writing root\r\n"); ns = sectorsPerCluster; - sector = partitionOffset + clusterHeapOffset + 2*sectorsPerCluster; + sector = partitionOffset + clusterHeapOffset + 2 * sectorsPerCluster; memset(secBuf, 0, BYTES_PER_SECTOR); // Unused Label entry. @@ -284,7 +287,7 @@ bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { writeMsg(pr, "Format done\r\n"); return true; - fail: +fail: writeMsg(pr, "Format failed\r\n"); return false; } @@ -334,7 +337,8 @@ bool ExFatFormatter::writeUpcase(uint32_t sector) { } ch++; } else { - for (n = ch + 1; n < 0X10000 && n == toUpcase(n); n++) {} + for (n = ch + 1; n < 0X10000 && n == toUpcase(n); n++) { + } ns = n - ch; if (ns >= MINIMUM_UPCASE_SKIP) { if (!writeUpcaseUnicode(0XFFFF) || !writeUpcaseUnicode(ns)) { @@ -358,6 +362,6 @@ bool ExFatFormatter::writeUpcase(uint32_t sector) { } return true; - fail: +fail: return false; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFormatter.h b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFormatter.h similarity index 95% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFormatter.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFormatter.h index 89e81e48..16ec8908 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatFormatter.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatFormatter.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -31,6 +31,8 @@ */ class ExFatFormatter { public: + /** Constructor. */ + ExFatFormatter() = default; /** * Format an exFAT volume. * @@ -41,6 +43,7 @@ class ExFatFormatter { * \return true for success or false for failure. */ bool format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr = nullptr); + private: bool syncUpcase(); bool writeUpcase(uint32_t sector); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatLib.h b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatLib.h similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatLib.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatLib.h index 9a396158..26f7e708 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatLib.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatLib.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,6 +24,6 @@ */ #ifndef ExFatLib_h #define ExFatLib_h -#include "ExFatVolume.h" #include "ExFatFormatter.h" +#include "ExFatVolume.h" #endif // ExFatLib_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatName.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatName.cpp similarity index 88% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatName.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatName.cpp index 32c96aff..70df62d8 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatName.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatName.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,13 +24,11 @@ */ #define DBG_FILE "ExFatName.cpp" #include "../common/DebugMacros.h" -#include "../common/upcase.h" #include "../common/FsUtf.h" +#include "../common/upcase.h" #include "ExFatLib.h" //------------------------------------------------------------------------------ -static char toUpper(char c) { - return 'a' <= c && c <= 'z' ? c - 'a' + 'A' : c; -} +static char toUpper(char c) { return 'a' <= c && c <= 'z' ? c - 'a' + 'A' : c; } //------------------------------------------------------------------------------ inline uint16_t exFatHash(char c, uint16_t hash) { uint8_t u = toUpper(c); @@ -48,16 +46,16 @@ inline uint16_t exFatHash(uint16_t u, uint16_t hash) { //------------------------------------------------------------------------------ bool ExFatFile::cmpName(const DirName_t* dirName, ExName_t* fname) { for (uint8_t i = 0; i < 15; i++) { - uint16_t u = getLe16(dirName->unicode + 2*i); + uint16_t u = getLe16(dirName->unicode + 2 * i); if (fname->atEnd()) { return u == 0; } #if USE_UTF8_LONG_NAMES uint16_t cp = fname->get16(); if (toUpcase(cp) != toUpcase(u)) { - return false; + return false; } -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES char c = fname->getch(); if (u >= 0x7F || toUpper(c) != toUpper(u)) { return false; @@ -71,18 +69,17 @@ size_t ExFatFile::getName7(char* name, size_t count) { DirName_t* dn; size_t n = 0; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } for (uint8_t is = 2; is <= m_setCount; is++) { - dn = reinterpret_cast - (dirCache(is, FsCache::CACHE_FOR_READ)); + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); if (!dn || dn->type != EXFAT_TYPE_NAME) { DBG_FAIL_MACRO; goto fail; } for (uint8_t in = 0; in < 15; in++) { - uint16_t c = getLe16(dn->unicode + 2*in); + uint16_t c = getLe16(dn->unicode + 2 * in); if (c == 0) { goto done; } @@ -93,11 +90,11 @@ size_t ExFatFile::getName7(char* name, size_t count) { name[n++] = c < 0X7F ? c : '?'; } } - done: +done: name[n] = 0; return n; - fail: +fail: *name = 0; return 0; } @@ -110,18 +107,17 @@ size_t ExFatFile::getName8(char* name, size_t count) { uint16_t hs = 0; uint32_t cp; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } for (uint8_t is = 2; is <= m_setCount; is++) { - dn = reinterpret_cast - (dirCache(is, FsCache::CACHE_FOR_READ)); + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); if (!dn || dn->type != EXFAT_TYPE_NAME) { DBG_FAIL_MACRO; goto fail; } for (uint8_t in = 0; in < 15; in++) { - uint16_t c = getLe16(dn->unicode + 2*in); + uint16_t c = getLe16(dn->unicode + 2 * in); if (hs) { if (!FsUtf::isLowSurrogate(c)) { DBG_FAIL_MACRO; @@ -150,11 +146,11 @@ size_t ExFatFile::getName8(char* name, size_t count) { str = ptr; } } - done: +done: *str = '\0'; return str - name; - fail: +fail: *name = 0; return 0; } @@ -167,13 +163,13 @@ bool ExFatFile::hashName(ExName_t* fname) { while (!fname->atEnd()) { uint16_t u = fname->get16(); if (u == 0XFFFF) { - DBG_FAIL_MACRO; + DBG_FAIL_MACRO; goto fail; } hash = exFatHash(u, hash); fname->nameLength++; } -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES while (!fname->atEnd()) { // Convert to byte for smaller exFatHash. char c = fname->getch(); @@ -188,7 +184,6 @@ bool ExFatFile::hashName(ExName_t* fname) { } return true; - fail: +fail: return false; } - diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatPartition.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatPartition.cpp similarity index 87% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatPartition.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatPartition.cpp index dbb00327..2d22b11f 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatPartition.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatPartition.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -39,8 +39,8 @@ uint32_t ExFatPartition::bitmapFind(uint32_t cluster, uint32_t count) { uint8_t* cache; uint8_t mask = 1 << (start & 7); while (true) { - uint32_t sector = m_clusterHeapStartSector + - (endAlloc >> (m_bytesPerSectorShift + 3)); + uint32_t sector = + m_clusterHeapStartSector + (endAlloc >> (m_bytesPerSectorShift + 3)); cache = bitmapCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!cache) { return 0; @@ -75,8 +75,8 @@ uint32_t ExFatPartition::bitmapFind(uint32_t cluster, uint32_t count) { return 0; } //------------------------------------------------------------------------------ -bool ExFatPartition::bitmapModify(uint32_t cluster, - uint32_t count, bool value) { +bool ExFatPartition::bitmapModify(uint32_t cluster, uint32_t count, + bool value) { uint32_t sector; uint32_t start = cluster - 2; size_t i; @@ -88,7 +88,7 @@ bool ExFatPartition::bitmapModify(uint32_t cluster, goto fail; } if (value) { - if (start <= m_bitmapStart && m_bitmapStart < (start + count)) { + if (start <= m_bitmapStart && m_bitmapStart < (start + count)) { m_bitmapStart = (start + count) < m_clusterCount ? start + count : 0; } } else { @@ -97,8 +97,7 @@ bool ExFatPartition::bitmapModify(uint32_t cluster, } } mask = 1 << (start & 7); - sector = m_clusterHeapStartSector + - (start >> (m_bytesPerSectorShift + 3)); + sector = m_clusterHeapStartSector + (start >> (m_bytesPerSectorShift + 3)); i = (start >> 3) & m_sectorMask; while (true) { cache = bitmapCachePrepare(sector++, FsCache::CACHE_FOR_WRITE); @@ -122,7 +121,7 @@ bool ExFatPartition::bitmapModify(uint32_t cluster, i = 0; } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -130,7 +129,7 @@ uint32_t ExFatPartition::chainSize(uint32_t cluster) { uint32_t n = 0; int8_t status; do { - status = fatGet(cluster, & cluster); + status = fatGet(cluster, &cluster); if (status < 0) return 0; n++; } while (status); @@ -203,7 +202,7 @@ bool ExFatPartition::fatPut(uint32_t cluster, uint32_t value) { setLe32(cache + ((cluster << 2) & m_sectorMask), value); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -233,11 +232,11 @@ bool ExFatPartition::freeChain(uint32_t cluster) { return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -uint32_t ExFatPartition::freeClusterCount() { +int32_t ExFatPartition::freeClusterCount() { uint32_t nc = 0; uint32_t sector = m_clusterHeapStartSector; uint32_t usedCount = 0; @@ -246,13 +245,13 @@ uint32_t ExFatPartition::freeClusterCount() { while (true) { cache = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!cache) { - return 0; + return -1; } for (size_t i = 0; i < m_bytesPerSector; i++) { if (cache[i] == 0XFF) { - usedCount+= 8; + usedCount += 8; } else if (cache[i]) { - for (uint8_t mask = 1; mask ; mask <<=1) { + for (uint8_t mask = 1; mask; mask <<= 1) { if ((mask & cache[i])) { usedCount++; } @@ -266,37 +265,39 @@ uint32_t ExFatPartition::freeClusterCount() { } } //------------------------------------------------------------------------------ -bool ExFatPartition::init(FsBlockDevice* dev, uint8_t part) { - uint32_t volStart = 0; - uint8_t* cache; +bool ExFatPartition::init(FsBlockDevice* dev, uint8_t part, uint32_t volStart) { pbs_t* pbs; BpbExFat_t* bpb; MbrSector_t* mbr; - MbrPart_t* mp; - m_fatType = 0; m_blockDev = dev; cacheInit(m_blockDev); - cache = dataCachePrepare(0, FsCache::CACHE_FOR_READ); - if (part > 4 || !cache) { - DBG_FAIL_MACRO; - goto fail; - } - if (part >= 1) { - mbr = reinterpret_cast(cache); - mp = &mbr->part[part - 1]; - if ((mp->boot != 0 && mp->boot != 0X80) || mp->type == 0) { + // if part == 0 assume super floppy with FAT boot sector in sector zero + // if part > 0 assume mbr volume with partition table + if (part) { + if (part > 4) { + DBG_FAIL_MACRO; + goto fail; + } + mbr = reinterpret_cast( + dataCachePrepare(0, FsCache::CACHE_FOR_READ)); + if (!mbr) { + DBG_FAIL_MACRO; + goto fail; + } + MbrPart_t* mp = mbr->part + part - 1; + if (mp->type == 0 || (mp->boot != 0 && mp->boot != 0X80)) { DBG_FAIL_MACRO; goto fail; } volStart = getLe32(mp->relativeSectors); - cache = dataCachePrepare(volStart, FsCache::CACHE_FOR_READ); - if (!cache) { - DBG_FAIL_MACRO; - goto fail; - } } - pbs = reinterpret_cast(cache); + pbs = reinterpret_cast( + dataCachePrepare(volStart, FsCache::CACHE_FOR_READ)); + if (!pbs) { + DBG_FAIL_MACRO; + goto fail; + } if (strncmp(pbs->oemName, "EXFAT", 5)) { DBG_FAIL_MACRO; goto fail; @@ -320,7 +321,7 @@ bool ExFatPartition::init(FsBlockDevice* dev, uint8_t part) { m_fatType = FAT_TYPE_EXFAT; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatPartition.h b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatPartition.h similarity index 78% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatPartition.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatPartition.h index 464251ef..b7ecf757 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatPartition.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatPartition.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,10 +28,10 @@ * \file * \brief ExFatPartition include file. */ -#include "../common/SysCall.h" #include "../common/FsBlockDevice.h" #include "../common/FsCache.h" #include "../common/FsStructs.h" +#include "../common/SysCall.h" /** Set EXFAT_READ_ONLY non-zero for read only */ #ifndef EXFAT_READ_ONLY #define EXFAT_READ_ONLY 0 @@ -51,7 +51,7 @@ struct DirPos_t { /** offset */ uint32_t position; /** directory is contiguous */ - bool isContiguous; + bool isContiguous; }; //============================================================================== /** @@ -60,28 +60,26 @@ struct DirPos_t { */ class ExFatPartition { public: - ExFatPartition() {} + ExFatPartition() = default; /** \return the number of bytes in a cluster. */ - uint32_t bytesPerCluster() const {return m_bytesPerCluster;} + uint32_t bytesPerCluster() const { return m_bytesPerCluster; } /** \return the power of two for bytesPerCluster. */ uint8_t bytesPerClusterShift() const { return m_bytesPerSectorShift + m_sectorsPerClusterShift; } /** \return the number of bytes in a sector. */ - uint16_t bytesPerSector() const {return m_bytesPerSector;} + uint16_t bytesPerSector() const { return m_bytesPerSector; } /** \return the power of two for bytesPerSector. */ - uint8_t bytesPerSectorShift() const {return m_bytesPerSectorShift;} + uint8_t bytesPerSectorShift() const { return m_bytesPerSectorShift; } /** Clear the cache and returns a pointer to the cache. Not for normal apps. * \return A pointer to the cache buffer or zero if an error occurs. */ - uint8_t* cacheClear() { - return m_dataCache.clear(); - } + uint8_t* cacheClear() { return m_dataCache.clear(); } /** \return the cluster count for the partition. */ - uint32_t clusterCount() const {return m_clusterCount;} + uint32_t clusterCount() const { return m_clusterCount; } /** \return the cluster heap start sector. */ - uint32_t clusterHeapStartSector() const {return m_clusterHeapStartSector;} + uint32_t clusterHeapStartSector() const { return m_clusterHeapStartSector; } /** End access to volume * \return pointer to sector size buffer for format. */ @@ -90,47 +88,48 @@ class ExFatPartition { return cacheClear(); } /** \return the FAT length in sectors */ - uint32_t fatLength() const {return m_fatLength;} + uint32_t fatLength() const { return m_fatLength; } /** \return the FAT start sector number. */ - uint32_t fatStartSector() const {return m_fatStartSector;} + uint32_t fatStartSector() const { return m_fatStartSector; } /** \return Type FAT_TYPE_EXFAT for exFAT partition or zero for error. */ - uint8_t fatType() const {return m_fatType;} - /** \return the free cluster count. */ - uint32_t freeClusterCount(); + uint8_t fatType() const { return m_fatType; } + /** \return free cluster count or -1 if an error occurs. */ + int32_t freeClusterCount(); /** Initialize a exFAT partition. * \param[in] dev The blockDevice for the partition. * \param[in] part The partition to be used. Legal values for \a part are * 1-4 to use the corresponding partition on a device formatted with * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in sector zero. + * a super floppy with the FAT boot sector in sector volStart. + * \param[in] volStart location of volume if part is zero. * * \return true for success or false for failure. */ - bool init(FsBlockDevice* dev, uint8_t part); + bool init(FsBlockDevice* dev, uint8_t part, uint32_t volStart = 0); /** * Check for device busy. * * \return true if busy else false. */ - bool isBusy() {return m_blockDev->isBusy();} + bool isBusy() { return m_blockDev->isBusy(); } /** \return the root directory start cluster number. */ - uint32_t rootDirectoryCluster() const {return m_rootDirectoryCluster;} + uint32_t rootDirectoryCluster() const { return m_rootDirectoryCluster; } /** \return the root directory length. */ uint32_t rootLength(); /** \return the number of sectors in a cluster. */ - uint32_t sectorsPerCluster() const {return 1UL << m_sectorsPerClusterShift;} + uint32_t sectorsPerCluster() const { return 1UL << m_sectorsPerClusterShift; } #ifndef DOXYGEN_SHOULD_SKIP_THIS uint32_t __attribute__((error("use sectorsPerCluster()"))) blocksPerCluster(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** \return the power of two for sectors per cluster. */ - uint8_t sectorsPerClusterShift() const {return m_sectorsPerClusterShift;} + uint8_t sectorsPerClusterShift() const { return m_sectorsPerClusterShift; } //---------------------------------------------------------------------------- #ifndef DOXYGEN_SHOULD_SKIP_THIS void checkUpcase(print_t* pr); bool printDir(print_t* pr, ExFatFile* file); void dmpBitmap(print_t* pr); - void dmpCluster(print_t* pr, uint32_t cluster, - uint32_t offset, uint32_t count); + void dmpCluster(print_t* pr, uint32_t cluster, uint32_t offset, + uint32_t count); void dmpFat(print_t* pr, uint32_t start, uint32_t count); void dmpSector(print_t* pr, uint32_t sector); bool printVolInfo(print_t* pr); @@ -148,7 +147,7 @@ class ExFatPartition { uint8_t* bitmapCachePrepare(uint32_t sector, uint8_t option) { #if USE_EXFAT_BITMAP_CACHE return m_bitmapCache.prepare(sector, option); -#else // USE_EXFAT_BITMAP_CACHE +#else // USE_EXFAT_BITMAP_CACHE return m_dataCache.prepare(sector, option); #endif // USE_EXFAT_BITMAP_CACHE } @@ -161,19 +160,19 @@ class ExFatPartition { bool cacheSync() { #if USE_EXFAT_BITMAP_CACHE return m_bitmapCache.sync() && m_dataCache.sync() && syncDevice(); -#else // USE_EXFAT_BITMAP_CACHE +#else // USE_EXFAT_BITMAP_CACHE return m_dataCache.sync() && syncDevice(); #endif // USE_EXFAT_BITMAP_CACHE } - void dataCacheDirty() {m_dataCache.dirty();} - void dataCacheInvalidate() {m_dataCache.invalidate();} + void dataCacheDirty() { m_dataCache.dirty(); } + void dataCacheInvalidate() { m_dataCache.invalidate(); } uint8_t* dataCachePrepare(uint32_t sector, uint8_t option) { return m_dataCache.prepare(sector, option); } - uint32_t dataCacheSector() {return m_dataCache.sector();} - bool dataCacheSync() {return m_dataCache.sync();} + uint32_t dataCacheSector() { return m_dataCache.sector(); } + bool dataCacheSync() { return m_dataCache.sync(); } //---------------------------------------------------------------------------- - uint32_t clusterMask() const {return m_clusterMask;} + uint32_t clusterMask() const { return m_clusterMask; } uint32_t clusterStartSector(uint32_t cluster) { return m_clusterHeapStartSector + ((cluster - 2) << m_sectorsPerClusterShift); @@ -184,10 +183,8 @@ class ExFatPartition { bool fatPut(uint32_t cluster, uint32_t value); uint32_t chainSize(uint32_t cluster); bool freeChain(uint32_t cluster); - uint16_t sectorMask() const {return m_sectorMask;} - bool syncDevice() { - return m_blockDev->syncDevice(); - } + uint16_t sectorMask() const { return m_sectorMask; } + bool syncDevice() { return m_blockDev->syncDevice(); } bool cacheSafeRead(uint32_t sector, uint8_t* dst) { return m_dataCache.cacheSafeRead(sector, dst); } @@ -198,7 +195,7 @@ class ExFatPartition { return m_dataCache.cacheSafeRead(sector, dst, count); } bool cacheSafeWrite(uint32_t sector, const uint8_t* src, size_t count) { - return m_dataCache.cacheSafeWrite(sector, src, count); + return m_dataCache.cacheSafeWrite(sector, src, count); } bool readSector(uint32_t sector, uint8_t* dst) { return m_blockDev->readSector(sector, dst); @@ -207,14 +204,14 @@ class ExFatPartition { return m_blockDev->writeSector(sector, src); } //---------------------------------------------------------------------------- - static const uint8_t m_bytesPerSectorShift = 9; + static const uint8_t m_bytesPerSectorShift = 9; static const uint16_t m_bytesPerSector = 1 << m_bytesPerSectorShift; static const uint16_t m_sectorMask = m_bytesPerSector - 1; //---------------------------------------------------------------------------- #if USE_EXFAT_BITMAP_CACHE - FsCache m_bitmapCache; + FsCache m_bitmapCache; #endif // USE_EXFAT_BITMAP_CACHE - FsCache m_dataCache; + FsCache m_dataCache; uint32_t m_bitmapStart; uint32_t m_fatStartSector; uint32_t m_fatLength; @@ -224,7 +221,7 @@ class ExFatPartition { uint32_t m_clusterMask; uint32_t m_bytesPerCluster; FsBlockDevice* m_blockDev; - uint8_t m_fatType = 0; - uint8_t m_sectorsPerClusterShift; + uint8_t m_fatType = 0; + uint8_t m_sectorsPerClusterShift; }; #endif // ExFatPartition_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatVolume.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatVolume.cpp similarity index 95% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatVolume.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatVolume.cpp index 3b32be5f..10e7f9a3 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatVolume.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatVolume.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -37,9 +37,10 @@ bool ExFatVolume::chdir(const char* path) { DBG_FAIL_MACRO; goto fail; } - m_vwd = dir; + // m_vwd = dir; + m_vwd.copy(&dir); return true; - fail: +fail: return false; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatVolume.h b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatVolume.h similarity index 84% rename from extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatVolume.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatVolume.h index 3c06dab7..335cba6e 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/ExFatLib/ExFatVolume.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/ExFatLib/ExFatVolume.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -33,15 +33,36 @@ class ExFatVolume : public ExFatPartition { public: ExFatVolume() {} + /** Get file's user settable attributes. + * \param[in] path path to file. + * \return user settable file attributes for success else -1. + */ + int attrib(const char* path) { + ExFatFile tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib() : -1; + } + /** Set file's user settable attributes. + * \param[in] path path to file. + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \return true for success or false for failure. + */ + bool attrib(const char* path, uint8_t bits) { + ExFatFile tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib(bits) : false; + } /** * Initialize an FatVolume object. * \param[in] dev Device block driver. * \param[in] setCwv Set current working volume if true. - * \param[in] part partition to initialize. + * \param[in] part Partition to initialize. + * \param[in] volStart Start sector of volume if part is zero. * \return true for success or false for failure. */ - bool begin(FsBlockDevice* dev, bool setCwv = true, uint8_t part = 1) { - if (!init(dev, part)) { + bool begin(FsBlockDevice* dev, bool setCwv = true, uint8_t part = 1, + uint32_t volStart = 0) { + if (!init(dev, part, volStart)) { return false; } if (!chdir()) { @@ -68,7 +89,7 @@ class ExFatVolume : public ExFatPartition { bool chdir(const char* path); /** Change global working volume to this volume. */ - void chvol() {m_cwv = this;} + void chvol() { m_cwv = this; } /** * Test for the existence of a file. @@ -96,9 +117,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls(print_t* pr, uint8_t flags = 0) { - return m_vwd.ls(pr, flags); - } + bool ls(print_t* pr, uint8_t flags = 0) { return m_vwd.ls(pr, flags); } /** List the contents of a directory. * * \param[in] pr Print stream for list. @@ -202,10 +221,8 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls() { - return ls(&Serial); - } - /** List the directory contents of the volume root to Serial. + bool ls() { return ls(&Serial); } + /** List the directory contents of the volume root to Serial. * * \param[in] flags The inclusive OR of * @@ -217,9 +234,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls(uint8_t flags) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags) { return ls(&Serial, flags); } /** List the directory contents of a directory to Serial. * * \param[in] path directory to list. @@ -244,18 +259,14 @@ class ExFatVolume : public ExFatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const String& path) { - return chdir(path.c_str()); - } + bool chdir(const String& path) { return chdir(path.c_str()); } /** Test for the existence of a file in a directory * * \param[in] path Path of the file to be tested for. * * \return true if the file exists else false. */ - bool exists(const String &path) { - return exists(path.c_str()); - } + bool exists(const String& path) { return exists(path.c_str()); } /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. @@ -264,7 +275,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool mkdir(const String &path, bool pFlag = true) { + bool mkdir(const String& path, bool pFlag = true) { return mkdir(path.c_str(), pFlag); } /** open a file @@ -273,7 +284,7 @@ class ExFatVolume : public ExFatPartition { * \param[in] oflag open oflag flags. * \return a ExFile object. */ - ExFile open(const String &path, oflag_t oflag = O_RDONLY) { + ExFile open(const String& path, oflag_t oflag = O_RDONLY) { return open(path.c_str(), oflag); } /** Remove a file from the volume root directory. @@ -282,9 +293,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool remove(const String& path) { - return remove(path.c_str()); - } + bool remove(const String& path) { return remove(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -310,9 +319,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool rmdir(const String& path) { - return rmdir(path.c_str()); - } + bool rmdir(const String& path) { return rmdir(path.c_str()); } /** Truncate a file to a specified length. The current file position * will be at the new EOF. * @@ -328,8 +335,8 @@ class ExFatVolume : public ExFatPartition { private: friend ExFatFile; - static ExFatVolume* cwv() {return m_cwv;} - ExFatFile* vwd() {return &m_vwd;} + static ExFatVolume* cwv() { return m_cwv; } + ExFatFile* vwd() { return &m_vwd; } static ExFatVolume* m_cwv; ExFatFile m_vwd; }; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatDbg.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatDbg.cpp similarity index 91% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatDbg.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatDbg.cpp index 01686021..47d46f92 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatDbg.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatDbg.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -27,11 +27,11 @@ //------------------------------------------------------------------------------ static uint16_t getLfnChar(DirLfn_t* ldir, uint8_t i) { if (i < 5) { - return getLe16(ldir->unicode1 + 2*i); + return getLe16(ldir->unicode1 + 2 * i); } else if (i < 11) { - return getLe16(ldir->unicode2 + 2*i - 10); + return getLe16(ldir->unicode2 + 2 * (i - 5)); } else if (i < 13) { - return getLe16(ldir->unicode3 + 2*i - 22); + return getLe16(ldir->unicode3 + 2 * (i - 11)); } return 0; } @@ -58,7 +58,7 @@ static void printHex(print_t* pr, uint8_t w, uint16_t h) { static void printHex(print_t* pr, uint16_t val) { bool space = true; for (uint8_t i = 0; i < 4; i++) { - uint8_t h = (val >> (12 - 4*i)) & 15; + uint8_t h = (val >> (12 - 4 * i)) & 15; if (h || i == 3) { space = false; } @@ -73,7 +73,7 @@ static void printHex(print_t* pr, uint16_t val) { static void printHex(print_t* pr, uint32_t val) { bool space = true; for (uint8_t i = 0; i < 8; i++) { - uint8_t h = (val >> (28 - 4*i)) & 15; + uint8_t h = (val >> (28 - 4 * i)) & 15; if (h || i == 7) { space = false; } @@ -85,7 +85,7 @@ static void printHex(print_t* pr, uint32_t val) { } } //------------------------------------------------------------------------------ -template +template static void printHexLn(print_t* pr, Uint val) { printHex(pr, val); pr->println(); @@ -98,7 +98,7 @@ static bool printFatDir(print_t* pr, DirFat_t* dir) { return false; } else if (dir->name[0] == FAT_NAME_DELETED) { pr->println(F("Deleted")); - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { pr->print(F("SFN: ")); for (uint8_t i = 0; i < 11; i++) { printHex(pr, dir->name[i]); @@ -111,13 +111,13 @@ static bool printFatDir(print_t* pr, DirFat_t* dir) { printHexLn(pr, dir->attributes); pr->print(F("caseFlags: 0X")); printHexLn(pr, dir->caseFlags); - uint32_t fc = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) - | getLe16(dir->firstClusterLow); + uint32_t fc = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) | + getLe16(dir->firstClusterLow); pr->print(F("firstCluster: ")); pr->println(fc, HEX); pr->print(F("fileSize: ")); pr->println(getLe32(dir->fileSize)); - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { pr->print(F("LFN: ")); for (uint8_t i = 0; i < 13; i++) { uint16_t c = getLfnChar(ldir, i); @@ -175,7 +175,7 @@ void FatFile::dmpFile(print_t* pr, uint32_t pos, size_t n) { } pr->write(' '); printHex(pr, 2, h); - text[i&15] = ' ' <= h && h < 0X7F ? h : '.'; + text[i & 15] = ' ' <= h && h < 0X7F ? h : '.'; } pr->write('\r'); pr->write('\n'); @@ -215,7 +215,7 @@ void FatPartition::dmpSector(print_t* pr, uint32_t sector, uint8_t bits) { return; } for (uint16_t i = 0; i < m_bytesPerSector;) { - if (i%32 == 0) { + if (i % 32 == 0) { if (i) { pr->println(); } @@ -243,7 +243,7 @@ void FatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { } pr->println(F("FAT:")); uint32_t sector = m_fatStartSector + start; - uint32_t cluster = nf*start; + uint32_t cluster = nf * start; for (uint32_t i = 0; i < count; i++) { uint8_t* pc = fatCachePrepare(sector + i, FsCache::CACHE_FOR_READ); if (!pc) { @@ -251,7 +251,7 @@ void FatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { return; } for (size_t k = 0; k < nf; k++) { - if (0 == cluster%8) { + if (0 == cluster % 8) { if (k) { pr->println(); } @@ -259,7 +259,7 @@ void FatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { } cluster++; pr->write(' '); - uint32_t v = fatType() == 32 ? getLe32(pc + 4*k) : getLe16(pc + 2*k); + uint32_t v = fatType() == 32 ? getLe32(pc + 4 * k) : getLe16(pc + 2 * k); printHex(pr, v); } pr->println(); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFile.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFile.cpp similarity index 89% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFile.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFile.cpp index c04e121c..d23efeed 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFile.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFile.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -42,9 +42,9 @@ bool FatFile::addCluster() { m_flags |= FILE_FLAG_DIR_DIRTY; return true; - fail: +fail: return false; -#else // USE_FAT_FILE_FLAG_CONTIGUOUS +#else // USE_FAT_FILE_FLAG_CONTIGUOUS m_flags |= FILE_FLAG_DIR_DIRTY; return m_vol->allocateCluster(m_curCluster, &m_curCluster); #endif // USE_FAT_FILE_FLAG_CONTIGUOUS @@ -61,7 +61,7 @@ bool FatFile::addDirCluster() { goto fail; } // max folder size - if (m_curPosition >= 512UL*4095) { + if (m_curPosition >= 512UL * 4095) { DBG_FAIL_MACRO; goto fail; } @@ -82,7 +82,30 @@ bool FatFile::addDirCluster() { m_curPosition += m_vol->bytesPerCluster(); return true; - fail: +fail: + return false; +} +//------------------------------------------------------------------------------ +bool FatFile::attrib(uint8_t bits) { + if (!isFileOrSubDir() || (bits & FS_ATTRIB_USER_SETTABLE) != bits) { + DBG_FAIL_MACRO; + goto fail; + } + // Don't allow read-only to be set if the file is open for write. + if ((bits & FS_ATTRIB_READ_ONLY) && isWritable()) { + DBG_FAIL_MACRO; + goto fail; + } + m_attributes = (m_attributes & ~FS_ATTRIB_USER_SETTABLE) | bits; + // insure sync() will update dir entry + m_flags |= FILE_FLAG_DIR_DIRTY; + if (!sync()) { + DBG_FAIL_MACRO; + goto fail; + } + return true; + +fail: return false; } //------------------------------------------------------------------------------ @@ -97,7 +120,7 @@ DirFat_t* FatFile::cacheDirEntry(uint8_t action) { } return dir + (m_dirIndex & 0XF); - fail: +fail: return nullptr; } //------------------------------------------------------------------------------ @@ -114,7 +137,7 @@ bool FatFile::contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { DBG_FAIL_MACRO; goto fail; } - for (uint32_t c = m_firstCluster; ; c++) { + for (uint32_t c = m_firstCluster;; c++) { uint32_t next; int8_t fg = m_vol->fatGet(c, &next); if (fg < 0) { @@ -135,14 +158,14 @@ bool FatFile::contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { *bgnSector = m_vol->clusterStartSector(m_firstCluster); } if (endSector) { - *endSector = m_vol->clusterStartSector(c) - + m_vol->sectorsPerCluster() - 1; + *endSector = + m_vol->clusterStartSector(c) + m_vol->sectorsPerCluster() - 1; } return true; } } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -155,12 +178,12 @@ bool FatFile::createContiguous(const char* path, uint32_t size) { return true; } close(); - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::createContiguous(FatFile* dirFile, - const char* path, uint32_t size) { +bool FatFile::createContiguous(FatFile* dirFile, const char* path, + uint32_t size) { if (!open(dirFile, path, O_CREAT | O_EXCL | O_RDWR)) { DBG_FAIL_MACRO; goto fail; @@ -169,7 +192,7 @@ bool FatFile::createContiguous(FatFile* dirFile, return true; } close(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -190,7 +213,7 @@ bool FatFile::dirEntry(DirFat_t* dst) { memcpy(dst, dir, sizeof(DirFat_t)); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -200,7 +223,7 @@ uint32_t FatFile::dirSize() { return 0; } if (isRootFixed()) { - return FS_DIR_SIZE*m_vol->rootDirEntryCount(); + return FS_DIR_SIZE * m_vol->rootDirEntryCount(); } uint16_t n = 0; uint32_t c = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; @@ -211,7 +234,7 @@ uint32_t FatFile::dirSize() { } n += m_vol->sectorsPerCluster(); } while (fg); - return 512UL*n; + return 512UL * n; } //------------------------------------------------------------------------------ int FatFile::fgets(char* str, int num, char* delim) { @@ -265,7 +288,7 @@ bool FatFile::getAccessDate(uint16_t* pdate) { *pdate = getLe16(dir.accessDate); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -279,7 +302,7 @@ bool FatFile::getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(dir.createTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -293,13 +316,11 @@ bool FatFile::getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(dir.modifyTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::isBusy() { - return m_vol->isBusy(); -} +bool FatFile::isBusy() { return m_vol->isBusy(); } //------------------------------------------------------------------------------ bool FatFile::mkdir(FatFile* parent, const char* path, bool pFlag) { FatName_t fname; @@ -333,13 +354,14 @@ bool FatFile::mkdir(FatFile* parent, const char* path, bool pFlag) { goto fail; } } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); parent = &tmpDir; close(); } return mkdir(parent, &fname); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -382,7 +404,7 @@ bool FatFile::mkdir(FatFile* parent, FatName_t* fname) { goto fail; } // change directory entry attribute - dir->attributes = FAT_ATTRIB_DIRECTORY; + dir->attributes = FS_ATTRIB_DIRECTORY; // make entry for '.' memcpy(&dot, dir, sizeof(dot)); @@ -410,7 +432,7 @@ bool FatFile::mkdir(FatFile* parent, FatName_t* fname) { // write first sector return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -456,16 +478,22 @@ bool FatFile::open(FatFile* dirFile, const char* path, oflag_t oflag) { DBG_WARN_MACRO; goto fail; } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); dirFile = &tmpDir; close(); } return open(dirFile, &fname, oflag); - fail: +fail: return false; } //------------------------------------------------------------------------------ +bool FatFile::open(uint16_t index, oflag_t oflag) { + FatVolume* vol = FatVolume::cwv(); + return vol ? open(vol->vwd(), index, oflag) : false; +} +//------------------------------------------------------------------------------ bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { if (index) { // Find start of LFN. @@ -481,7 +509,7 @@ bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { break; } if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { - if (!dirFile->seekSet(32UL*(index - i))) { + if (!dirFile->seekSet(32UL * (index - i))) { DBG_FAIL_MACRO; goto fail; } @@ -502,7 +530,7 @@ bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -519,12 +547,12 @@ bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, dir += 0XF & dirIndex; // Must be file or subdirectory. - if (!isFileOrSubdir(dir)) { + if (!isFatFileOrSubdir(dir)) { DBG_FAIL_MACRO; goto fail; } - m_attributes = dir->attributes & FILE_ATTR_COPY; - if (isFileDir(dir)) { + m_attributes = dir->attributes & FS_ATTRIB_COPY; + if (isFatFile(dir)) { m_attributes |= FILE_ATTR_FILE; } m_lfnOrd = lfnOrd; @@ -556,21 +584,21 @@ bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, DBG_FAIL_MACRO; goto fail; } + m_attributes |= FS_ATTRIB_ARCHIVE; } m_flags |= (oflag & O_APPEND ? FILE_FLAG_APPEND : 0); m_dirSector = m_vol->cacheSectorNumber(); // copy first cluster number for directory fields - firstCluster = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) - | getLe16(dir->firstClusterLow); + firstCluster = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) | + getLe16(dir->firstClusterLow); if (oflag & O_TRUNC) { if (firstCluster && !m_vol->freeChain(firstCluster)) { DBG_FAIL_MACRO; goto fail; } - // need to update directory entry m_flags |= FILE_FLAG_DIR_DIRTY; } else { @@ -583,7 +611,7 @@ bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, } return true; - fail: +fail: m_attributes = FILE_ATTR_CLOSED; m_flags = 0; return false; @@ -601,6 +629,20 @@ bool FatFile::openCluster(FatFile* file) { return true; } //------------------------------------------------------------------------------ +bool FatFile::openCwd() { + if (isOpen() || !FatVolume::cwv()) { + DBG_FAIL_MACRO; + goto fail; + } + // *this = *FatVolume::cwv()->vwd(); + this->copy(FatVolume::cwv()->vwd()); + rewind(); + return true; + +fail: + return false; +} +//------------------------------------------------------------------------------ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { uint8_t checksum = 0; DirLfn_t* ldir; @@ -614,7 +656,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { } while (1) { // read entry into cache - index = dirFile->curPosition()/FS_DIR_SIZE; + index = dirFile->curPosition() / FS_DIR_SIZE; DirFat_t* dir = dirFile->readDirCache(); if (!dir) { if (dirFile->getError()) { @@ -629,7 +671,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { // skip empty slot or '.' or '..' if (dir->name[0] == '.' || dir->name[0] == FAT_NAME_DELETED) { lfnOrd = 0; - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { if (lfnOrd && checksum != lfnChecksum(dir->name)) { DBG_FAIL_MACRO; goto fail; @@ -639,7 +681,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { goto fail; } return true; - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { ldir = reinterpret_cast(dir); if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { lfnOrd = ldir->order & 0X1F; @@ -650,7 +692,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { } } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -665,34 +707,34 @@ bool FatFile::openRoot(FatVolume* vol) { m_vol = vol; switch (vol->fatType()) { #if FAT12_SUPPORT - case 12: + case 12: #endif // FAT12_SUPPORT - case 16: - m_attributes = FILE_ATTR_ROOT_FIXED; - break; + case 16: + m_attributes = FILE_ATTR_ROOT_FIXED; + break; - case 32: - m_attributes = FILE_ATTR_ROOT32; - break; + case 32: + m_attributes = FILE_ATTR_ROOT32; + break; - default: - DBG_FAIL_MACRO; - goto fail; + default: + DBG_FAIL_MACRO; + goto fail; } // read only m_flags = FILE_FLAG_READ; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ int FatFile::peek() { - uint32_t curPosition = m_curPosition; - uint32_t curCluster = m_curCluster; + uint32_t saveCurPosition = m_curPosition; + uint32_t saveCurCluster = m_curCluster; int c = read(); - m_curPosition = curPosition; - m_curCluster = curCluster; + m_curPosition = saveCurPosition; + m_curCluster = saveCurCluster; return c; } //------------------------------------------------------------------------------ @@ -713,13 +755,13 @@ bool FatFile::preAllocate(uint32_t length) { #if USE_FAT_FILE_FLAG_CONTIGUOUS // Mark contiguous and insure sync() will update dir entry m_flags |= FILE_FLAG_PREALLOCATE | FILE_FLAG_CONTIGUOUS | FILE_FLAG_DIR_DIRTY; -#else // USE_FAT_FILE_FLAG_CONTIGUOUS +#else // USE_FAT_FILE_FLAG_CONTIGUOUS // insure sync() will update dir entry m_flags |= FILE_FLAG_DIR_DIRTY; #endif // USE_FAT_FILE_FLAG_CONTIGUOUS return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -744,7 +786,7 @@ int FatFile::read(void* buf, size_t nbyte) { } } else if (isRootFixed()) { uint16_t tmp16 = - FS_DIR_SIZE*m_vol->m_rootDirEntryCount - (uint16_t)m_curPosition; + FS_DIR_SIZE * m_vol->m_rootDirEntryCount - (uint16_t)m_curPosition; if (nbyte > tmp16) { nbyte = tmp16; } @@ -754,8 +796,8 @@ int FatFile::read(void* buf, size_t nbyte) { size_t n; offset = m_curPosition & m_vol->sectorMask(); // offset in sector if (isRootFixed()) { - sector = m_vol->rootDirStart() - + (m_curPosition >> m_vol->bytesPerSectorShift()); + sector = m_vol->rootDirStart() + + (m_curPosition >> m_vol->bytesPerSectorShift()); } else { sectorOfCluster = m_vol->sectorOfCluster(m_curPosition); if (offset == 0 && sectorOfCluster == 0) { @@ -785,8 +827,8 @@ int FatFile::read(void* buf, size_t nbyte) { } sector = m_vol->clusterStartSector(m_curCluster) + sectorOfCluster; } - if (offset != 0 || toRead < m_vol->bytesPerSector() - || sector == m_vol->cacheSectorNumber()) { + if (offset != 0 || toRead < m_vol->bytesPerSector() || + sector == m_vol->cacheSectorNumber()) { // amount to be read from current sector n = m_vol->bytesPerSector() - offset; if (n > toRead) { @@ -801,7 +843,7 @@ int FatFile::read(void* buf, size_t nbyte) { uint8_t* src = pc + offset; memcpy(dst, src, n); #if USE_MULTI_SECTOR_IO - } else if (toRead >= 2*m_vol->bytesPerSector()) { + } else if (toRead >= 2 * m_vol->bytesPerSector()) { uint32_t ns = toRead >> m_vol->bytesPerSectorShift(); if (!isRootFixed()) { uint32_t mb = m_vol->sectorsPerCluster() - sectorOfCluster; @@ -829,20 +871,19 @@ int FatFile::read(void* buf, size_t nbyte) { } return nbyte - toRead; - fail: +fail: m_error |= READ_ERROR; return -1; } //------------------------------------------------------------------------------ int8_t FatFile::readDir(DirFat_t* dir) { - int16_t n; // if not a directory file or miss-positioned return an error if (!isDir() || (0X1F & m_curPosition)) { return -1; } while (1) { - n = read(dir, sizeof(DirFat_t)); + int16_t n = read(dir, sizeof(DirFat_t)); if (n != sizeof(DirFat_t)) { return n == 0 ? 0 : -1; } @@ -855,7 +896,7 @@ int8_t FatFile::readDir(DirFat_t* dir) { continue; } // return if normal file or subdirectory - if (isFileOrSubdir(dir)) { + if (isFatFileOrSubdir(dir)) { return n; } } @@ -869,7 +910,7 @@ DirFat_t* FatFile::readDirCache(bool skipReadOk) { if (i == 0 || !skipReadOk) { int8_t n = read(&n, 1); - if (n != 1) { + if (n != 1) { if (n != 0) { DBG_FAIL_MACRO; } @@ -882,7 +923,7 @@ DirFat_t* FatFile::readDirCache(bool skipReadOk) { // return pointer to entry return reinterpret_cast(m_vol->cacheAddress()) + i; - fail: +fail: return nullptr; } //------------------------------------------------------------------------------ @@ -894,7 +935,7 @@ bool FatFile::remove(const char* path) { } return file.remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -927,7 +968,8 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { } // sync() and cache directory entry sync(); - oldFile = *this; + // oldFile = *this; + oldFile.copy(this); dir = cacheDirEntry(FsCache::CACHE_FOR_READ); if (!dir) { DBG_FAIL_MACRO; @@ -990,7 +1032,7 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { } // store new dot dot sector = m_vol->clusterStartSector(m_firstCluster); - uint8_t* pc = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_WRITE); + pc = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_WRITE); dir = reinterpret_cast(pc); if (!dir) { DBG_FAIL_MACRO; @@ -1008,7 +1050,7 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { } return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1040,7 +1082,7 @@ bool FatFile::rmdir() { continue; } // error not empty - if (isFileOrSubdir(dir)) { + if (isFatFileOrSubdir(dir)) { DBG_FAIL_MACRO; goto fail; } @@ -1050,7 +1092,7 @@ bool FatFile::rmdir() { m_flags |= FILE_FLAG_WRITE; return remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1064,7 +1106,7 @@ bool FatFile::rmRfStar() { rewind(); while (1) { // remember position - index = m_curPosition/FS_DIR_SIZE; + index = m_curPosition / FS_DIR_SIZE; DirFat_t* dir = readDirCache(); if (!dir) { @@ -1086,7 +1128,7 @@ bool FatFile::rmRfStar() { } // skip if part of long file name or volume label in root - if (!isFileOrSubdir(dir)) { + if (!isFatFileOrSubdir(dir)) { continue; } @@ -1109,8 +1151,8 @@ bool FatFile::rmRfStar() { } } // position to next entry if required - if (m_curPosition != (32UL*(index + 1))) { - if (!seekSet(32UL*(index + 1))) { + if (m_curPosition != (32UL * (index + 1))) { + if (!seekSet(32UL * (index + 1))) { DBG_FAIL_MACRO; goto fail; } @@ -1125,7 +1167,7 @@ bool FatFile::rmRfStar() { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1153,7 +1195,7 @@ bool FatFile::seekSet(uint32_t pos) { goto fail; } } else if (isRootFixed()) { - if (pos <= FS_DIR_SIZE*m_vol->rootDirEntryCount()) { + if (pos <= FS_DIR_SIZE * m_vol->rootDirEntryCount()) { goto done; } DBG_FAIL_MACRO; @@ -1184,12 +1226,12 @@ bool FatFile::seekSet(uint32_t pos) { } } - done: +done: m_curPosition = pos; m_flags &= ~FILE_FLAG_PREALLOCATE; return true; - fail: +fail: m_curCluster = tmp; return false; } @@ -1207,6 +1249,7 @@ bool FatFile::sync() { DBG_FAIL_MACRO; goto fail; } + dir->attributes = m_attributes & FS_ATTRIB_COPY; // do not set filesize for dir files if (isFile()) { setLe32(dir->fileSize, m_fileSize); @@ -1230,27 +1273,21 @@ bool FatFile::sync() { } DBG_FAIL_MACRO; - fail: +fail: m_error |= WRITE_ERROR; return false; } //------------------------------------------------------------------------------ bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { + uint8_t day, uint8_t hour, uint8_t minute, + uint8_t second) { uint16_t dirDate; uint16_t dirTime; DirFat_t* dir; - if (!isFile() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { + if (!isFileOrSubDir() || year < 1980 || year > 2107 || month < 1 || + month > 12 || day < 1 || day > 31 || hour > 23 || minute > 59 || + second > 59) { DBG_FAIL_MACRO; goto fail; } @@ -1281,7 +1318,7 @@ bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, } return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1293,7 +1330,7 @@ bool FatFile::truncate() { goto fail; } if (m_firstCluster == 0) { - return true; + return true; } if (m_curCluster) { toFree = 0; @@ -1325,7 +1362,7 @@ bool FatFile::truncate() { m_flags |= FILE_FLAG_DIR_DIRTY; return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1372,7 +1409,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { goto fail; } } -#else // USE_FAT_FILE_FLAG_CONTIGUOUS +#else // USE_FAT_FILE_FLAG_CONTIGUOUS int8_t fg = m_vol->fatGet(m_curCluster, &m_curCluster); if (fg < 0) { DBG_FAIL_MACRO; @@ -1400,8 +1437,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } } // sector for data write - uint32_t sector = m_vol->clusterStartSector(m_curCluster) - + sectorOfCluster; + uint32_t sector = m_vol->clusterStartSector(m_curCluster) + sectorOfCluster; if (sectorOffset != 0 || nToWrite < m_vol->bytesPerSector()) { // partial sector - must use cache @@ -1413,7 +1449,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } if (sectorOffset == 0 && - (m_curPosition >= m_fileSize || m_flags & FILE_FLAG_PREALLOCATE)) { + (m_curPosition >= m_fileSize || m_flags & FILE_FLAG_PREALLOCATE)) { // start of new sector don't need to read into cache cacheOption = FsCache::CACHE_RESERVE_FOR_WRITE; } else { @@ -1435,7 +1471,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } } #if USE_MULTI_SECTOR_IO - } else if (nToWrite >= 2*m_vol->bytesPerSector()) { + } else if (nToWrite >= 2 * m_vol->bytesPerSector()) { // use multiple sector write command uint32_t maxSectors = m_vol->sectorsPerCluster() - sectorOfCluster; uint32_t nSector = nToWrite >> m_vol->bytesPerSectorShift(); @@ -1470,7 +1506,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } return nbyte; - fail: +fail: // return for write error m_error |= WRITE_ERROR; return 0; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFile.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFile.h similarity index 82% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFile.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFile.h index 0415bc7b..62977559 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFile.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFile.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,9 +28,10 @@ * \file * \brief FatFile class */ -#include -#include #include +#include +#include + #include "../common/FmtNumber.h" #include "../common/FsApiConstants.h" #include "../common/FsDateTime.h" @@ -38,28 +39,6 @@ #include "FatPartition.h" class FatVolume; //------------------------------------------------------------------------------ -// Stuff to store strings in AVR flash. -#ifdef __AVR__ -#include -#else // __AVR__ -#ifndef PSTR -/** store literal string in flash for ARM */ -#define PSTR(x) (x) -#endif // PSTR -#ifndef pgm_read_byte -/** read 8-bits from flash for ARM */ -#define pgm_read_byte(addr) (*(const unsigned char*)(addr)) -#endif // pgm_read_byte -#ifndef pgm_read_word -/** read 16-bits from flash for ARM */ -#define pgm_read_word(addr) (*(const uint16_t*)(addr)) -#endif // pgm_read_word -#ifndef PROGMEM -/** store in flash for ARM */ -#define PROGMEM -#endif // PROGMEM -#endif // __AVR__ -//------------------------------------------------------------------------------ /** * \struct FatPos_t * \brief Internal type for file position - do not use in user apps. @@ -105,7 +84,7 @@ class FatSfn_t { #if USE_LONG_FILE_NAMES /** Internal class for file names */ typedef FatLfn_t FatName_t; -#else // USE_LONG_FILE_NAMES +#else // USE_LONG_FILE_NAMES /** Internal class for file names */ typedef FatSfn_t FatName_t; #endif // USE_LONG_FILE_NAMES @@ -116,14 +95,11 @@ const uint8_t FNAME_FLAG_LOST_CHARS = 0X01; const uint8_t FNAME_FLAG_MIXED_CASE = 0X02; /** LFN entries are required for file name. */ const uint8_t FNAME_FLAG_NEED_LFN = - FNAME_FLAG_LOST_CHARS | FNAME_FLAG_MIXED_CASE; + FNAME_FLAG_LOST_CHARS | FNAME_FLAG_MIXED_CASE; /** Filename base-name is all lower case */ const uint8_t FNAME_FLAG_LC_BASE = FAT_CASE_LC_BASE; /** Filename extension is all lower case. */ const uint8_t FNAME_FLAG_LC_EXT = FAT_CASE_LC_EXT; -#if FNAME_FLAG_NEED_LFN & (FAT_CASE_LC_BASE || FAT_CASE_LC_EXT) -#error FNAME_FLAG_NEED_LFN & (FAT_CASE_LC_BASE || FAT_CASE_LC_EXT) -#endif // FNAME_FLAG_NEED_LFN & (FAT_CASE_LC_BASE || FAT_CASE_LC_EXT) //============================================================================== /** * \class FatFile @@ -140,22 +116,101 @@ class FatFile { * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive * OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t). */ - FatFile(const char* path, oflag_t oflag) { - open(path, oflag); + FatFile(const char* path, oflag_t oflag) { open(path, oflag); } + + /** Copy from to this. + * \param[in] from Source file. + */ + void copy(const FatFile* from) { + if (from != this) { +#if FILE_COPY_CONSTRUCTOR_SELECT + *this = *from; +#else // FILE_COPY_CONSTRUCTOR_SELECT + memcpy(this, from, sizeof(FatFile)); +#endif // FILE_COPY_CONSTRUCTOR_SELECT + } } -#if DESTRUCTOR_CLOSES_FILE + /** move from to this. + * \param[in] from Source file. + */ + void move(FatFile* from) { + if (from != this) { + copy(from); + from->m_attributes = FILE_ATTR_CLOSED; + } + } + +#if FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PUBLIC + /** Copy constructor. + * \param[in] from Move from file. + * + */ + FatFile(const FatFile& from) = default; + /** Copy assignment operator. + * \param[in] from Move from file. + * \return Copied file. + */ + FatFile& operator=(const FatFile& from) = default; +#elif FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PRIVATE + + private: + FatFile(const FatFile& from) = default; + FatFile& operator=(const FatFile& from) = default; + + public: +#else // FILE_COPY_CONSTRUCTOR_SELECT + FatFile(const FatFile& from) = delete; + FatFile& operator=(const FatFile& from) = delete; +#endif // FILE_COPY_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT + /** Move constructor. + * \param[in] from Move from file. + */ + FatFile(FatFile&& from) { move(&from); } + /** Move assignment operator. + * \param[in] from Move from file. + * \return Moved file. + */ + FatFile& operator=(FatFile&& from) { + move(&from); + return *this; + } +#else // FILE_MOVE_CONSTRUCTOR_SELECT + FatFile(FatFile&& from) = delete; + FatFile& operator=(FatFile&& from) = delete; +#endif /** Destructor */ +#if DESTRUCTOR_CLOSES_FILE ~FatFile() { if (isOpen()) { close(); } } +#else // DESTRUCTOR_CLOSES_FILE + ~FatFile() = default; #endif // DESTRUCTOR_CLOSES_FILE + /** The parenthesis operator. * * \return true if a file is open. */ - operator bool() const {return isOpen();} + operator bool() const { return isOpen(); } + /** + * \return user settable file attributes for success else -1. + */ + int attrib() { + return isFileOrSubDir() ? m_attributes & FS_ATTRIB_USER_SETTABLE : -1; + } + /** Set file attributes + * + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \note attrib() will fail for set read-only if the file is open for write. + * \return true for success or false for failure. + */ + bool attrib(uint8_t bits); /** \return The number of bytes available from the current position * to EOF for normal files. INT_MAX is returned for very large files. * @@ -175,13 +230,9 @@ class FatFile { return isFile() ? fileSize() - curPosition() : 0; } /** Clear all error bits. */ - void clearError() { - m_error = 0; - } + void clearError() { m_error = 0; } /** Set writeError to zero */ - void clearWriteError() { - m_error &= ~WRITE_ERROR; - } + void clearWriteError() { m_error &= ~WRITE_ERROR; } /** Close a file and force cached data and directory information * to be written to the storage device. * @@ -206,8 +257,7 @@ class FatFile { * * \return true for success or false for failure. */ - bool createContiguous(FatFile* dirFile, - const char* path, uint32_t size); + bool createContiguous(FatFile* dirFile, const char* path, uint32_t size); /** Create and open a new contiguous file of a specified size. * * \param[in] path A path with a valid file name. @@ -217,10 +267,10 @@ class FatFile { */ bool createContiguous(const char* path, uint32_t size); /** \return The current cluster number for a file or directory. */ - uint32_t curCluster() const {return m_curCluster;} + uint32_t curCluster() const { return m_curCluster; } /** \return The current position for a file or directory. */ - uint32_t curPosition() const {return m_curPosition;} + uint32_t curPosition() const { return m_curPosition; } /** Return a file's directory entry. * * \param[out] dir Location for return of the file's directory entry. @@ -229,7 +279,7 @@ class FatFile { */ bool dirEntry(DirFat_t* dir); /** \return Directory entry index. */ - uint16_t dirIndex() const {return m_dirIndex;} + uint16_t dirIndex() const { return m_dirIndex; } /** \return The number of bytes allocated to a directory or zero * if an error occurs. */ @@ -282,13 +332,13 @@ class FatFile { */ int fgets(char* str, int num, char* delim = nullptr); /** \return The total number of bytes in a file. */ - uint32_t fileSize() const {return m_fileSize;} + uint32_t fileSize() const { return m_fileSize; } /** \return first sector of file or zero for empty file. */ - uint32_t firstBlock() const {return firstSector();} + uint32_t firstBlock() const { return firstSector(); } /** \return Address of first sector or zero for empty file. */ uint32_t firstSector() const; /** Arduino name for sync() */ - void flush() {sync();} + void flush() { sync(); } /** set position for streams * \param[in] pos struct with value for new position */ @@ -325,7 +375,7 @@ class FatFile { */ bool getCreateDateTime(uint16_t* pdate, uint16_t* ptime); /** \return All error bits. */ - uint8_t getError() const {return m_error;} + uint8_t getError() const { return m_error; } /** Get a file's modify date and time. * * \param[out] pdate Packed date for directory entry. @@ -339,8 +389,7 @@ class FatFile { * * \param[out] name An array of characters for the file's name. * \param[in] size The size of the array in bytes. The array - * must be at least 13 bytes long. The file's name will be - * truncated if the file's name is too long. + * must be at least 13 bytes long. * \return length for success or zero for failure. */ size_t getName(char* name, size_t size); @@ -349,7 +398,7 @@ class FatFile { * * \param[out] name An array of characters for the file's name. * \param[in] size The size of the array in characters. - * \return the name length. + * \return length for success or zero for failure. */ size_t getName7(char* name, size_t size); /** @@ -357,7 +406,7 @@ class FatFile { * * \param[out] name An array of characters for the file's name. * \param[in] size The size of the array in characters. - * \return the name length. + * \return length for success or zero for failure. */ size_t getName8(char* name, size_t size); #ifndef DOXYGEN_SHOULD_SKIP_THIS @@ -373,9 +422,7 @@ class FatFile { */ size_t getSFN(char* name, size_t size); /** \return value of writeError */ - bool getWriteError() const { - return isOpen() ? m_error & WRITE_ERROR : true; - } + bool getWriteError() const { return isOpen() ? m_error & WRITE_ERROR : true; } /** * Check for device busy. * @@ -383,35 +430,37 @@ class FatFile { */ bool isBusy(); #if USE_FAT_FILE_FLAG_CONTIGUOUS - /** \return True if the file is contiguous. */ - bool isContiguous() const {return m_flags & FILE_FLAG_CONTIGUOUS;} + /** \return True if the file is contiguous. */ + bool isContiguous() const { return m_flags & FILE_FLAG_CONTIGUOUS; } #endif // USE_FAT_FILE_FLAG_CONTIGUOUS /** \return True if this is a directory. */ - bool isDir() const {return m_attributes & FILE_ATTR_DIR;} + bool isDir() const { return m_attributes & FILE_ATTR_DIR; } /** \return True if this is a normal file. */ - bool isFile() const {return m_attributes & FILE_ATTR_FILE;} + bool isFile() const { return m_attributes & FILE_ATTR_FILE; } + /** \return True if this is a normal file or sub-directory. */ + bool isFileOrSubDir() const { return isFile() || isSubDir(); } /** \return True if this is a hidden file. */ - bool isHidden() const {return m_attributes & FILE_ATTR_HIDDEN;} + bool isHidden() const { return m_attributes & FS_ATTRIB_HIDDEN; } /** \return true if this file has a Long File Name. */ - bool isLFN() const {return m_lfnOrd;} + bool isLFN() const { return m_lfnOrd; } /** \return True if this is an open file/directory. */ - bool isOpen() const {return m_attributes;} + bool isOpen() const { return m_attributes; } /** \return True file is readable. */ - bool isReadable() const {return m_flags & FILE_FLAG_READ;} + bool isReadable() const { return m_flags & FILE_FLAG_READ; } /** \return True if file is read-only */ - bool isReadOnly() const {return m_attributes & FILE_ATTR_READ_ONLY;} + bool isReadOnly() const { return m_attributes & FS_ATTRIB_READ_ONLY; } /** \return True if this is the root directory. */ - bool isRoot() const {return m_attributes & FILE_ATTR_ROOT;} + bool isRoot() const { return m_attributes & FILE_ATTR_ROOT; } /** \return True if this is the FAT32 root directory. */ - bool isRoot32() const {return m_attributes & FILE_ATTR_ROOT32;} + bool isRoot32() const { return m_attributes & FILE_ATTR_ROOT32; } /** \return True if this is the FAT12 of FAT16 root directory. */ - bool isRootFixed() const {return m_attributes & FILE_ATTR_ROOT_FIXED;} - /** \return True if this is a subdirectory. */ - bool isSubDir() const {return m_attributes & FILE_ATTR_SUBDIR;} + bool isRootFixed() const { return m_attributes & FILE_ATTR_ROOT_FIXED; } + /** \return True if this is a sub-directory. */ + bool isSubDir() const { return m_attributes & FILE_ATTR_SUBDIR; } /** \return True if this is a system file. */ - bool isSystem() const {return m_attributes & FILE_ATTR_SYSTEM;} + bool isSystem() const { return m_attributes & FS_ATTRIB_SYSTEM; } /** \return True file is writable. */ - bool isWritable() const {return m_flags & FILE_FLAG_WRITE;} + bool isWritable() const { return m_flags & FILE_FLAG_WRITE; } /** List directory contents. * * \param[in] pr Print stream for list. @@ -453,7 +502,7 @@ class FatFile { * * \return true for success or false for failure. */ - bool open(FatVolume* vol, const char* path, oflag_t oflag); + bool open(FatVolume* vol, const char* path, oflag_t oflag = O_RDONLY); /** Open a file by index. * * \param[in] dirFile An open FatFile instance for the directory. @@ -467,7 +516,19 @@ class FatFile { * See open() by path for definition of flags. * \return true for success or false for failure. */ - bool open(FatFile* dirFile, uint16_t index, oflag_t oflag); + bool open(FatFile* dirFile, uint16_t index, oflag_t oflag = O_RDONLY); + /** Open a file by index in the current working directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag bitwise-inclusive OR of open flags. + * See see FatFile::open(FatFile*, const char*, uint8_t). + * + * See open() by path for definition of flags. + * \return true for success or false for failure. + */ + bool open(uint16_t index, oflag_t oflag = O_RDONLY); /** Open a file or directory by name. * * \param[in] dirFile An open FatFile instance for the directory containing @@ -513,7 +574,7 @@ class FatFile { * * \return true for success or false for failure. */ - bool open(FatFile* dirFile, const char* path, oflag_t oflag); + bool open(FatFile* dirFile, const char* path, oflag_t oflag = O_RDONLY); /** Open a file in the current working volume. * * \param[in] path A path with a valid name for a file to be opened. @@ -524,6 +585,11 @@ class FatFile { * \return true for success or false for failure. */ bool open(const char* path, oflag_t oflag = O_RDONLY); + /** Open the current working directory. + * + * \return true for success or false for failure. + */ + bool openCwd(); /** Open existing file wih Short 8.3 names. * \param[in] path with short 8.3 names. * @@ -581,9 +647,7 @@ class FatFile { * * \return The number of characters printed. */ - size_t printAccessDateTime(print_t* pr) { - return printAccessDate(pr); - } + size_t printAccessDateTime(print_t* pr) { return printAccessDate(pr); } /** Print a file's creation date and time * * \param[in] pr Print stream for output. @@ -642,7 +706,7 @@ class FatFile { template size_t printField(Type value, char term) { char sign = 0; - char buf[3*sizeof(Type) + 3]; + char buf[3 * sizeof(Type) + 3]; char* str = buf + sizeof(buf); if (term) { @@ -785,9 +849,7 @@ class FatFile { */ bool rename(FatFile* dirFile, const char* newPath); /** Set the file's current position to zero. */ - void rewind() { - seekSet(0); - } + void rewind() { seekSet(0UL); } /** Remove a directory file. * * The directory file will be removed only if it is empty and is not the @@ -820,9 +882,7 @@ class FatFile { * \param[in] offset The new position in bytes from the current position. * \return true for success or false for failure. */ - bool seekCur(int32_t offset) { - return seekSet(m_curPosition + offset); - } + bool seekCur(int32_t offset) { return seekSet(m_curPosition + offset); } /** Set the files position to end-of-file + \a offset. See seekSet(). * Can't be used for directory files since file size is not defined. * \param[in] offset The new position in bytes from end-of-file. @@ -893,24 +953,18 @@ class FatFile { * * \return true for success or false for failure. */ - bool truncate(uint32_t length) { - return seekSet(length) && truncate(); - } + bool truncate(uint32_t length) { return seekSet(length) && truncate(); } /** Write a string to a file. Used by the Arduino Print class. * \param[in] str Pointer to the string. * Use getWriteError to check for errors. * \return count of characters written for success or -1 for failure. */ - size_t write(const char* str) { - return write(str, strlen(str)); - } + size_t write(const char* str) { return write(str, strlen(str)); } /** Write a single byte. * \param[in] b The byte to be written. * \return +1 for success or -1 for failure. */ - size_t write(uint8_t b) { - return write(&b, 1); - } + size_t write(uint8_t b) { return write(&b, 1); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -939,16 +993,12 @@ class FatFile { * * \return true for success or false for failure. */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags = 0) { return ls(&Serial, flags); } /** Print a file's name. * * \return length for success or zero for failure. */ - size_t printName() { - return FatFile::printName(&Serial); - } + size_t printName() { return FatFile::printName(&Serial); } #endif // ENABLE_ARDUINO_SERIAL private: @@ -957,45 +1007,34 @@ class FatFile { /** This file has not been opened. */ static const uint8_t FILE_ATTR_CLOSED = 0; - /** File is read-only. */ - static const uint8_t FILE_ATTR_READ_ONLY = FAT_ATTRIB_READ_ONLY; - /** File should be hidden in directory listings. */ - static const uint8_t FILE_ATTR_HIDDEN = FAT_ATTRIB_HIDDEN; - /** Entry is for a system file. */ - static const uint8_t FILE_ATTR_SYSTEM = FAT_ATTRIB_SYSTEM; /** Entry for normal data file */ static const uint8_t FILE_ATTR_FILE = 0X08; /** Entry is for a subdirectory */ - static const uint8_t FILE_ATTR_SUBDIR = FAT_ATTRIB_DIRECTORY; + static const uint8_t FILE_ATTR_SUBDIR = FS_ATTRIB_DIRECTORY; /** A FAT12 or FAT16 root directory */ - static const uint8_t FILE_ATTR_ROOT_FIXED = 0X20; + static const uint8_t FILE_ATTR_ROOT_FIXED = 0X40; /** A FAT32 root directory */ - static const uint8_t FILE_ATTR_ROOT32 = 0X40; + static const uint8_t FILE_ATTR_ROOT32 = 0X80; /** Entry is for root. */ - static const uint8_t FILE_ATTR_ROOT = - FILE_ATTR_ROOT_FIXED | FILE_ATTR_ROOT32; + static const uint8_t FILE_ATTR_ROOT = FILE_ATTR_ROOT_FIXED | FILE_ATTR_ROOT32; /** Directory type bits */ static const uint8_t FILE_ATTR_DIR = FILE_ATTR_SUBDIR | FILE_ATTR_ROOT; - /** Attributes to copy from directory entry */ - static const uint8_t FILE_ATTR_COPY = - FAT_ATTRIB_READ_ONLY | FAT_ATTRIB_HIDDEN | - FAT_ATTRIB_SYSTEM | FAT_ATTRIB_DIRECTORY; // private functions bool addCluster(); bool addDirCluster(); DirFat_t* cacheDir(uint16_t index) { - return seekSet(32UL*index) ? readDirCache() : nullptr; + return seekSet(32UL * index) ? readDirCache() : nullptr; } DirFat_t* cacheDirEntry(uint8_t action); bool cmpName(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd); bool createLFN(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd); uint16_t getLfnChar(DirLfn_t* ldir, uint8_t i); - uint8_t lfnChecksum(uint8_t* name) { + uint8_t lfnChecksum(const uint8_t* name) { uint8_t sum = 0; for (uint8_t i = 0; i < 11; i++) { - sum = (((sum & 1) << 7) | (sum >> 1)) + name[i]; + sum = (((sum & 1) << 7) | (sum >> 1)) + name[i]; } return sum; } @@ -1019,26 +1058,26 @@ class FatFile { // treat curPosition as valid length. static const uint8_t FILE_FLAG_PREALLOCATE = 0X20; // file is contiguous - static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; + static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; // sync of directory entry required static const uint8_t FILE_FLAG_DIR_DIRTY = 0X80; // private data static const uint8_t WRITE_ERROR = 0X1; - static const uint8_t READ_ERROR = 0X2; + static const uint8_t READ_ERROR = 0X2; - uint8_t m_attributes = FILE_ATTR_CLOSED; - uint8_t m_error = 0; // Error bits. - uint8_t m_flags = 0; // See above for definition of m_flags bits - uint8_t m_lfnOrd; - uint16_t m_dirIndex; // index of directory entry in dir file - FatVolume* m_vol; // volume where file is located - uint32_t m_dirCluster; - uint32_t m_curCluster; // cluster for current file position - uint32_t m_curPosition; // current file position - uint32_t m_dirSector; // sector for this files directory entry - uint32_t m_fileSize; // file size in bytes - uint32_t m_firstCluster; // first cluster of file + uint8_t m_attributes = FILE_ATTR_CLOSED; + uint8_t m_error = 0; // Error bits. + uint8_t m_flags = 0; // See above for definition of m_flags bits + uint8_t m_lfnOrd; + uint16_t m_dirIndex; // index of directory entry in dir file + FatVolume* m_vol; // volume where file is located + uint32_t m_dirCluster; + uint32_t m_curCluster; // cluster for current file position + uint32_t m_curPosition; // current file position + uint32_t m_dirSector; // sector for this files directory entry + uint32_t m_fileSize; // file size in bytes + uint32_t m_firstCluster; // first cluster of file }; #include "../common/ArduinoFiles.h" @@ -1048,7 +1087,7 @@ class FatFile { */ class File32 : public StreamFile { public: - /** Opens the next file or folder in a directory. + /** Opens the next file or folder in a directory. * * \param[in] oflag open flags. * \return a FatStream object. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFileLFN.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFileLFN.cpp similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFileLFN.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFileLFN.cpp index b74b7a73..6844a573 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFileLFN.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFileLFN.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,23 +24,17 @@ */ #define DBG_FILE "FatFileLFN.cpp" #include "../common/DebugMacros.h" -#include "../common/upcase.h" #include "../common/FsUtf.h" +#include "../common/upcase.h" #include "FatLib.h" #if USE_LONG_FILE_NAMES //------------------------------------------------------------------------------ -static bool isLower(char c) { - return 'a' <= c && c <= 'z'; -} +static bool isLower(char c) { return 'a' <= c && c <= 'z'; } //------------------------------------------------------------------------------ -static bool isUpper(char c) { - return 'A' <= c && c <= 'Z'; -} +static bool isUpper(char c) { return 'A' <= c && c <= 'Z'; } //------------------------------------------------------------------------------ // A bit smaller than toupper in AVR 328. -inline char toUpper(char c) { - return isLower(c) ? c - 'a' + 'A' : c; -} +inline char toUpper(char c) { return isLower(c) ? c - 'a' + 'A' : c; } //------------------------------------------------------------------------------ /** * Store a 16-bit long file name character. @@ -51,27 +45,18 @@ inline char toUpper(char c) { */ static void putLfnChar(DirLfn_t* ldir, uint8_t i, uint16_t c) { if (i < 5) { - setLe16(ldir->unicode1 + 2*i, c); + setLe16(ldir->unicode1 + 2 * i, c); } else if (i < 11) { - setLe16(ldir->unicode2 + 2*i -10, c); + setLe16(ldir->unicode2 + 2 * (i - 5), c); } else if (i < 13) { - setLe16(ldir->unicode3 + 2*i - 22, c); + setLe16(ldir->unicode3 + 2 * (i - 11), c); } } -//------------------------------------------------------------------------------ -// Daniel Bernstein University of Illinois at Chicago. -// Original had + instead of ^ -__attribute__((unused)) -static uint16_t Bernstein(const char* bgn, const char* end, uint16_t hash) { - while (bgn < end) { - // hash = hash * 33 ^ str[i]; - hash = ((hash << 5) + hash) ^ (*bgn++); - } - return hash; -} //============================================================================== bool FatFile::cmpName(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { - FatFile dir = *this; + // FatFile dir = *this; + FatFile dir; + dir.copy(this); DirLfn_t* ldir; fname->reset(); for (uint8_t order = 1; order <= lfnOrd; order++) { @@ -95,7 +80,7 @@ bool FatFile::cmpName(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { if (toUpcase(u) != toUpcase(cp)) { return false; } -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES if (u > 0X7F || toUpper(u) != toUpper(fname->getch())) { return false; } @@ -104,12 +89,14 @@ bool FatFile::cmpName(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool FatFile::createLFN(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { - FatFile dir = *this; + // FatFile dir = *this; + FatFile dir; + dir.copy(this); DirLfn_t* ldir; uint8_t checksum = lfnChecksum(fname->sfn); uint8_t fc = 0; @@ -141,13 +128,13 @@ bool FatFile::createLFN(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool FatFile::makeSFN(FatLfn_t* fname) { bool is83; -// char c; + // char c; uint8_t c; uint8_t bit = FAT_CASE_LC_BASE; uint8_t lc = 0; @@ -170,15 +157,17 @@ bool FatFile::makeSFN(FatLfn_t* fname) { // Not 8.3 if starts with dot. is83 = *ptr == '.' ? false : true; // Skip leading dots. - for (; *ptr == '.'; ptr++) {} + for (; *ptr == '.'; ptr++) { + } // Find last dot. - for (dot = end - 1; dot > ptr && *dot != '.'; dot--) {} + for (dot = end - 1; dot > ptr && *dot != '.'; dot--) { + } for (; ptr < end; ptr++) { c = *ptr; if (c == '.' && ptr == dot) { - in = 10; // Max index for full 8.3 name. - i = 8; // Place for extension. + in = 10; // Max index for full 8.3 name. + i = 8; // Place for extension. bit = FAT_CASE_LC_EXT; // bit for extension. } else { if (sfnReservedChar(c)) { @@ -192,7 +181,7 @@ bool FatFile::makeSFN(FatLfn_t* fname) { if (i > in) { is83 = false; if (in == 10 || ptr > dot) { - // Done - extension longer than three characters or no extension. + // Done - extension longer than three characters or no extension. break; } // Skip to dot. @@ -216,7 +205,7 @@ bool FatFile::makeSFN(FatLfn_t* fname) { goto fail; } if (is83) { - fname->flags = lc & uc ? FNAME_FLAG_MIXED_CASE : lc; + fname->flags = (lc & uc) ? FNAME_FLAG_MIXED_CASE : lc; } else { fname->flags = FNAME_FLAG_LOST_CHARS; fname->sfn[fname->seqPos] = '~'; @@ -224,7 +213,7 @@ bool FatFile::makeSFN(FatLfn_t* fname) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -238,17 +227,13 @@ bool FatFile::makeUniqueSfn(FatLfn_t* fname) { DBG_HALT_IF(fname->sfn[pos] != '~' && fname->sfn[pos + 1] != '1'); for (uint8_t seq = FIRST_HASH_SEQ; seq < 100; seq++) { - DBG_WARN_IF(seq > FIRST_HASH_SEQ); -#ifdef USE_LFN_HASH - hex = Bernstein(fname->begin, fname->end, seq); -#else + DBG_WARN_IF(seq > FIRST_HASH_SEQ); hex += millis(); -#endif if (pos > 3) { // Make space in name for ~HHHH. pos = 3; } - for (uint8_t i = pos + 4 ; i > pos; i--) { + for (uint8_t i = pos + 4; i > pos; i--) { uint8_t h = hex & 0XF; fname->sfn[i] = h < 10 ? h + '0' : h + 'A' - 10; hex >>= 4; @@ -268,7 +253,7 @@ bool FatFile::makeUniqueSfn(FatLfn_t* fname) { if (dir->name[0] == FAT_NAME_FREE) { goto done; } - if (isFileOrSubdir(dir) && !memcmp(fname->sfn, dir->name, 11)) { + if (isFatFileOrSubdir(dir) && !memcmp(fname->sfn, dir->name, 11)) { // Name found - try another. break; } @@ -277,25 +262,26 @@ bool FatFile::makeUniqueSfn(FatLfn_t* fname) { // fall inti fail - too many tries. DBG_FAIL_MACRO; - fail: +fail: return false; - done: +done: return true; } //------------------------------------------------------------------------------ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { bool fnameFound = false; uint8_t lfnOrd = 0; - uint8_t freeNeed; uint8_t freeFound = 0; + uint8_t freeNeed; uint8_t order = 0; uint8_t checksum = 0; uint8_t ms10; uint8_t nameOrd; - uint16_t freeIndex = 0; uint16_t curIndex; uint16_t date; + uint16_t freeIndex = 0; + uint16_t freeTotal; uint16_t time; DirFat_t* dir; DirLfn_t* ldir; @@ -306,11 +292,11 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { goto fail; } // Number of directory entries needed. - nameOrd = (fname->len + 12)/13; - freeNeed = fname->flags & FNAME_FLAG_NEED_LFN ? 1 + nameOrd : 1; + nameOrd = (fname->len + 12) / 13; + freeNeed = (fname->flags & FNAME_FLAG_NEED_LFN) ? 1 + nameOrd : 1; dirFile->rewind(); while (1) { - curIndex = dirFile->m_curPosition/FS_DIR_SIZE; + curIndex = dirFile->m_curPosition / FS_DIR_SIZE; dir = dirFile->readDirCache(); if (!dir) { if (dirFile->getError()) { @@ -338,12 +324,12 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { // skip empty slot or '.' or '..' if (dir->name[0] == FAT_NAME_DELETED || dir->name[0] == '.') { lfnOrd = 0; - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { ldir = reinterpret_cast(dir); if (!lfnOrd) { order = ldir->order & 0X1F; if (order != nameOrd || - (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) == 0) { + (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) == 0) { continue; } lfnOrd = nameOrd; @@ -357,7 +343,7 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { lfnOrd = 0; } } - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { if (lfnOrd) { if (1 == order && lfnChecksum(dir->name) == checksum) { goto found; @@ -376,7 +362,7 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { } } - found: +found: // Don't open if create only. if (oflag & O_EXCL) { DBG_FAIL_MACRO; @@ -384,7 +370,7 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { } goto open; - create: +create: // don't create unless O_CREAT and write mode if (!(oflag & O_CREAT) || !isWriteMode(oflag)) { DBG_WARN_MACRO; @@ -394,7 +380,6 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { if (freeFound == 0) { freeIndex = curIndex; } - while (freeFound < freeNeed) { dir = dirFile->readDirCache(); if (!dir) { @@ -407,13 +392,16 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { } freeFound++; } - while (freeFound < freeNeed) { + // Loop handles the case of huge filename and cluster size one. + freeTotal = freeFound; + while (freeTotal < freeNeed) { // Will fail if FAT16 root. if (!dirFile->addDirCluster()) { DBG_FAIL_MACRO; goto fail; } - freeFound += vol->dirEntriesPerCluster(); + // 16-bit freeTotal needed for large cluster size. + freeTotal += vol->dirEntriesPerCluster(); } if (fnameFound) { if (!dirFile->makeUniqueSfn(fname)) { @@ -456,7 +444,7 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { // Force write of entry to device. vol->cacheDirty(); - open: +open: // open entry in cache. if (!openCachedEntry(dirFile, curIndex, oflag, lfnOrd)) { DBG_FAIL_MACRO; @@ -464,18 +452,19 @@ bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::parsePathName(const char* path, - FatLfn_t* fname, const char** ptr) { +bool FatFile::parsePathName(const char* path, FatLfn_t* fname, + const char** ptr) { size_t len = 0; // Skip leading spaces. while (*path == ' ') { path++; } fname->begin = path; + fname->len = 0; while (*path && !isDirSeparator(*path)) { #if USE_UTF8_LONG_NAMES uint32_t cp; @@ -490,7 +479,7 @@ bool FatFile::parsePathName(const char* path, DBG_FAIL_MACRO; goto fail; } -#else // USE_UTF8_LONG_NAMES +#else // USE_UTF8_LONG_NAMES uint8_t cp = *path++; if (cp >= 0X80 || lfnReservedChar(cp)) { DBG_FAIL_MACRO; @@ -509,11 +498,12 @@ bool FatFile::parsePathName(const char* path, goto fail; } // Advance to next path component. - for (; *path == ' ' || isDirSeparator(*path); path++) {} + for (; *path == ' ' || isDirSeparator(*path); path++) { + } *ptr = path; return makeSFN(fname); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -569,8 +559,7 @@ bool FatFile::remove() { goto fail; } if (ldir->attributes != FAT_ATTRIB_LONG_NAME || - order != (ldir->order & 0X1F) || - checksum != ldir->checksum) { + order != (ldir->order & 0X1F) || checksum != ldir->checksum) { DBG_FAIL_MACRO; goto fail; } @@ -588,7 +577,7 @@ bool FatFile::remove() { // Fall into fail. DBG_FAIL_MACRO; - fail: +fail: return false; } #endif // #if USE_LONG_FILE_NAMES diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFilePrint.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFilePrint.cpp similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFilePrint.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFilePrint.cpp index df57610d..34f65946 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFilePrint.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFilePrint.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -67,7 +67,7 @@ bool FatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -99,7 +99,7 @@ size_t FatFile::printModifyDateTime(print_t* pr) { //------------------------------------------------------------------------------ size_t FatFile::printFileSize(print_t* pr) { char buf[11]; - char *ptr = buf + sizeof(buf); + char* ptr = buf + sizeof(buf); *--ptr = 0; ptr = fmtBase10(ptr, fileSize()); while (ptr > buf) { diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFileSFN.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFileSFN.cpp similarity index 89% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFileSFN.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFileSFN.cpp index b9f1efd6..3a5f6934 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFileSFN.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFileSFN.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -46,7 +46,7 @@ bool FatFile::open(FatFile* dirFile, FatSfn_t* fname, oflag_t oflag) { while (true) { dir = dirFile->readDirCache(true); if (!dir) { - if (dirFile->getError()) { + if (dirFile->getError()) { DBG_FAIL_MACRO; goto fail; } @@ -62,7 +62,7 @@ bool FatFile::open(FatFile* dirFile, FatSfn_t* fname, oflag_t oflag) { break; } lfnOrd = 0; - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { if (!memcmp(fname->sfn, dir->name, 11)) { // don't open existing file if O_EXCL if (oflag & O_EXCL) { @@ -83,7 +83,7 @@ bool FatFile::open(FatFile* dirFile, FatSfn_t* fname, oflag_t oflag) { } else { lfnOrd = 0; } - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { ldir = reinterpret_cast(dir); if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { lfnOrd = ldir->order & 0X1F; @@ -143,7 +143,7 @@ bool FatFile::open(FatFile* dirFile, FatSfn_t* fname, oflag_t oflag) { // open entry in cache. return openCachedEntry(dirFile, index, oflag, 0); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -156,7 +156,8 @@ bool FatFile::openExistingSFN(const char* path) { if (*path == 0) { return openRoot(vol); } - *this = *vol->vwd(); + // *this = *vol->vwd(); + this->copy(vol->vwd()); do { if (!parsePathName(path, &fname, &path)) { DBG_FAIL_MACRO; @@ -169,7 +170,7 @@ bool FatFile::openExistingSFN(const char* path) { } while (*path); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -183,7 +184,7 @@ bool FatFile::openSFN(FatSfn_t* fname) { goto fail; } while (true) { - if (read(&dir, 32) != 32) { + if (read(&dir, sizeof(dir)) != sizeof(dir)) { DBG_FAIL_MACRO; goto fail; } @@ -191,25 +192,29 @@ bool FatFile::openSFN(FatSfn_t* fname) { DBG_FAIL_MACRO; goto fail; } - if (isFileOrSubdir(&dir) && memcmp(fname->sfn, dir.name, 11) == 0) { - uint16_t dirIndex = (m_curPosition - 32) >> 5; - uint32_t dirCluster = m_firstCluster; - memset(this, 0 , sizeof(FatFile)); - m_attributes = dir.attributes & FILE_ATTR_COPY; - if (isFileDir(&dir)) { + if (isFatFileOrSubdir(&dir) && memcmp(fname->sfn, dir.name, 11) == 0) { + uint16_t saveDirIndex = (m_curPosition - sizeof(dir)) >> 5; + uint32_t saveDirCluster = m_firstCluster; + memset(this, 0, sizeof(FatFile)); + m_attributes = dir.attributes & FS_ATTRIB_COPY; + m_flags = FILE_FLAG_READ; + if (isFatFile(&dir)) { m_attributes |= FILE_ATTR_FILE; + if (!isReadOnly()) { + m_attributes |= FS_ATTRIB_ARCHIVE; + m_flags |= FILE_FLAG_WRITE; + } } m_lfnOrd = lfnOrd; m_firstCluster = (uint32_t)getLe16(dir.firstClusterHigh) << 16; m_firstCluster |= getLe16(dir.firstClusterLow); m_fileSize = getLe32(dir.fileSize); - m_flags = isFile() ? FILE_FLAG_READ | FILE_FLAG_WRITE : FILE_FLAG_READ; m_vol = vol; - m_dirCluster = dirCluster; + m_dirCluster = saveDirCluster; m_dirSector = m_vol->cacheSectorNumber(); - m_dirIndex = dirIndex; + m_dirIndex = saveDirIndex; return true; - } else if (isLongName(&dir)) { + } else if (isFatLongName(&dir)) { ldir = reinterpret_cast(&dir); if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { lfnOrd = ldir->order & 0X1F; @@ -219,7 +224,7 @@ bool FatFile::openSFN(FatSfn_t* fname) { } } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -265,14 +270,14 @@ bool FatFile::parsePathName(const char* path, FatSfn_t* fname, goto fail; } // Set base-name and extension bits. - fname->flags = lc & uc ? 0 : lc; + fname->flags = (lc & uc) ? 0 : lc; while (isDirSeparator(*path)) { path++; } *ptr = path; return true; - fail: +fail: return false; } #if !USE_LONG_FILE_NAMES @@ -305,7 +310,7 @@ bool FatFile::remove() { // Write entry to device. return m_vol->cacheSync(); - fail: +fail: return false; } #endif // !USE_LONG_FILE_NAMES diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFormatter.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFormatter.cpp similarity index 84% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFormatter.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFormatter.cpp index 343f4348..5ea5b4be 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFormatter.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFormatter.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -31,18 +31,20 @@ uint16_t const BU16 = 128; uint16_t const BU32 = 8192; // Assume 512 byte sectors. const uint16_t BYTES_PER_SECTOR = 512; -const uint16_t SECTORS_PER_MB = 0X100000/BYTES_PER_SECTOR; +const uint16_t SECTORS_PER_MB = 0X100000 / BYTES_PER_SECTOR; const uint16_t FAT16_ROOT_ENTRY_COUNT = 512; const uint16_t FAT16_ROOT_SECTOR_COUNT = - 32*FAT16_ROOT_ENTRY_COUNT/BYTES_PER_SECTOR; + 32 * FAT16_ROOT_ENTRY_COUNT / BYTES_PER_SECTOR; //------------------------------------------------------------------------------ #define PRINT_FORMAT_PROGRESS 1 #if !PRINT_FORMAT_PROGRESS #define writeMsg(str) #elif defined(__AVR__) -#define writeMsg(str) if (m_pr) m_pr->print(F(str)) +#define writeMsg(str) \ + if (m_pr) m_pr->print(F(str)) #else // PRINT_FORMAT_PROGRESS -#define writeMsg(str) if (m_pr) m_pr->write(str) +#define writeMsg(str) \ + if (m_pr) m_pr->write(str) #endif // PRINT_FORMAT_PROGRESS //------------------------------------------------------------------------------ bool FatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { @@ -51,7 +53,7 @@ bool FatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { m_secBuf = secBuf; m_pr = pr; m_sectorCount = m_dev->sectorCount(); - m_capacityMB = (m_sectorCount + SECTORS_PER_MB - 1)/SECTORS_PER_MB; + m_capacityMB = (m_sectorCount + SECTORS_PER_MB - 1) / SECTORS_PER_MB; if (m_capacityMB <= 6) { writeMsg("Card is too small.\r\n"); @@ -87,9 +89,9 @@ bool FatFormatter::initFatDir(uint8_t fatType, uint32_t sectorCount) { writeMsg("Writing FAT "); for (uint32_t i = 1; i < sectorCount; i++) { if (!m_dev->writeSector(m_fatStart + i, m_secBuf)) { - return false; + return false; } - if ((i%(sectorCount/32)) == 0) { + if ((i % (sectorCount / 32)) == 0) { writeMsg("."); } } @@ -131,13 +133,12 @@ void FatFormatter::initPbs() { //------------------------------------------------------------------------------ bool FatFormatter::makeFat16() { uint32_t nc; - uint32_t r; PbsFat_t* pbs = reinterpret_cast(m_secBuf); - for (m_dataStart = 2*BU16; ; m_dataStart += BU16) { - nc = (m_sectorCount - m_dataStart)/m_sectorsPerCluster; - m_fatSize = (nc + 2 + (BYTES_PER_SECTOR/2) - 1)/(BYTES_PER_SECTOR/2); - r = BU16 + 1 + 2*m_fatSize + FAT16_ROOT_SECTOR_COUNT; + for (m_dataStart = 2 * BU16;; m_dataStart += BU16) { + nc = (m_sectorCount - m_dataStart) / m_sectorsPerCluster; + m_fatSize = (nc + 2 + (BYTES_PER_SECTOR / 2) - 1) / (BYTES_PER_SECTOR / 2); + uint32_t r = BU16 + 1 + 2 * m_fatSize + FAT16_ROOT_SECTOR_COUNT; if (m_dataStart >= r) { m_relativeSectors = m_dataStart - r + BU16; break; @@ -150,8 +151,8 @@ bool FatFormatter::makeFat16() { } m_reservedSectorCount = 1; m_fatStart = m_relativeSectors + m_reservedSectorCount; - m_totalSectors = nc*m_sectorsPerCluster - + 2*m_fatSize + m_reservedSectorCount + 32; + m_totalSectors = + nc * m_sectorsPerCluster + 2 * m_fatSize + m_reservedSectorCount + 32; if (m_totalSectors < 65536) { m_partType = 0X04; } else { @@ -183,15 +184,14 @@ bool FatFormatter::makeFat16() { //------------------------------------------------------------------------------ bool FatFormatter::makeFat32() { uint32_t nc; - uint32_t r; PbsFat_t* pbs = reinterpret_cast(m_secBuf); FsInfo_t* fsi = reinterpret_cast(m_secBuf); m_relativeSectors = BU32; - for (m_dataStart = 2*BU32; ; m_dataStart += BU32) { - nc = (m_sectorCount - m_dataStart)/m_sectorsPerCluster; - m_fatSize = (nc + 2 + (BYTES_PER_SECTOR/4) - 1)/(BYTES_PER_SECTOR/4); - r = m_relativeSectors + 9 + 2*m_fatSize; + for (m_dataStart = 2 * BU32;; m_dataStart += BU32) { + nc = (m_sectorCount - m_dataStart) / m_sectorsPerCluster; + m_fatSize = (nc + 2 + (BYTES_PER_SECTOR / 4) - 1) / (BYTES_PER_SECTOR / 4); + uint32_t r = m_relativeSectors + 9 + 2 * m_fatSize; if (m_dataStart >= r) { break; } @@ -201,9 +201,9 @@ bool FatFormatter::makeFat32() { writeMsg("Bad cluster count\r\n"); return false; } - m_reservedSectorCount = m_dataStart - m_relativeSectors - 2*m_fatSize; + m_reservedSectorCount = m_dataStart - m_relativeSectors - 2 * m_fatSize; m_fatStart = m_relativeSectors + m_reservedSectorCount; - m_totalSectors = nc*m_sectorsPerCluster + m_dataStart - m_relativeSectors; + m_totalSectors = nc * m_sectorsPerCluster + m_dataStart - m_relativeSectors; // type depends on address of end sector // max CHS has lba = 16450560 = 1024*255*63 if ((m_relativeSectors + m_totalSectors) <= 16450560) { @@ -232,14 +232,14 @@ bool FatFormatter::makeFat32() { pbs->bpb.bpb32.volumeType[2] = 'T'; pbs->bpb.bpb32.volumeType[3] = '3'; pbs->bpb.bpb32.volumeType[4] = '2'; - if (!m_dev->writeSector(m_relativeSectors, m_secBuf) || + if (!m_dev->writeSector(m_relativeSectors, m_secBuf) || !m_dev->writeSector(m_relativeSectors + 6, m_secBuf)) { return false; } // write extra boot area and backup - memset(m_secBuf, 0 , BYTES_PER_SECTOR); + memset(m_secBuf, 0, BYTES_PER_SECTOR); setLe32(fsi->trailSignature, FSINFO_TRAIL_SIGNATURE); - if (!m_dev->writeSector(m_relativeSectors + 2, m_secBuf) || + if (!m_dev->writeSector(m_relativeSectors + 2, m_secBuf) || !m_dev->writeSector(m_relativeSectors + 8, m_secBuf)) { return false; } @@ -248,11 +248,11 @@ bool FatFormatter::makeFat32() { setLe32(fsi->structSignature, FSINFO_STRUCT_SIGNATURE); setLe32(fsi->freeCount, 0XFFFFFFFF); setLe32(fsi->nextFree, 0XFFFFFFFF); - if (!m_dev->writeSector(m_relativeSectors + 1, m_secBuf) || + if (!m_dev->writeSector(m_relativeSectors + 1, m_secBuf) || !m_dev->writeSector(m_relativeSectors + 7, m_secBuf)) { return false; } - return initFatDir(32, 2*m_fatSize + m_sectorsPerCluster); + return initFatDir(32, 2 * m_fatSize + m_sectorsPerCluster); } //------------------------------------------------------------------------------ bool FatFormatter::writeMbr() { @@ -262,8 +262,8 @@ bool FatFormatter::writeMbr() { #if USE_LBA_TO_CHS lbaToMbrChs(mbr->part->beginCHS, m_capacityMB, m_relativeSectors); lbaToMbrChs(mbr->part->endCHS, m_capacityMB, - m_relativeSectors + m_totalSectors -1); -#else // USE_LBA_TO_CHS + m_relativeSectors + m_totalSectors - 1); +#else // USE_LBA_TO_CHS mbr->part->beginCHS[0] = 1; mbr->part->beginCHS[1] = 1; mbr->part->beginCHS[2] = 0; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFormatter.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFormatter.h similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFormatter.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFormatter.h index 2e7d55d9..d48a1fab 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatFormatter.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatFormatter.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,14 +24,16 @@ */ #ifndef FatFormatter_h #define FatFormatter_h -#include "../common/SysCall.h" #include "../common/FsBlockDevice.h" +#include "../common/SysCall.h" /** * \class FatFormatter * \brief Format a FAT volume. */ class FatFormatter { public: + /** Constructor. */ + FatFormatter() = default; /** * Format a FAT volume. * diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatLib.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatLib.h similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatLib.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatLib.h index 7b51c87d..057d4041 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatLib.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatLib.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,6 +24,6 @@ */ #ifndef FatLib_h #define FatLib_h -#include "FatVolume.h" #include "FatFormatter.h" +#include "FatVolume.h" #endif // FatLib_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatName.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatName.cpp similarity index 94% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatName.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatName.cpp index 8a1205cd..4a4dbff2 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatName.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatName.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,11 +29,11 @@ //------------------------------------------------------------------------------ uint16_t FatFile::getLfnChar(DirLfn_t* ldir, uint8_t i) { if (i < 5) { - return getLe16(ldir->unicode1 + 2*i); + return getLe16(ldir->unicode1 + 2 * i); } else if (i < 11) { - return getLe16(ldir->unicode2 + 2*i - 10); + return getLe16(ldir->unicode2 + 2 * (i - 5)); } else if (i < 13) { - return getLe16(ldir->unicode3 + 2*i - 22); + return getLe16(ldir->unicode3 + 2 * (i - 11)); } DBG_HALT_IF(i >= 13); return 0; @@ -87,11 +87,11 @@ size_t FatFile::getName7(char* name, size_t size) { name[n++] = c >= 0X7F ? '?' : c; } } - done: +done: name[n] = 0; return n; - fail: +fail: name[0] = '\0'; return 0; } @@ -105,8 +105,8 @@ size_t FatFile::getName8(char* name, size_t size) { uint16_t hs = 0; uint32_t cp; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } if (!isLFN()) { return getSFN(name, size); @@ -156,11 +156,11 @@ size_t FatFile::getName8(char* name, size_t size) { str = ptr; } } - done: +done: *str = '\0'; return str - name; - fail: +fail: *name = 0; return 0; } @@ -217,7 +217,7 @@ size_t FatFile::getSFN(char* name, size_t size) { name[j] = '\0'; return j; - fail: +fail: name[0] = '\0'; return 0; } @@ -227,10 +227,10 @@ size_t FatFile::printName(print_t* pr) { return printSFN(pr); #elif USE_UTF8_LONG_NAMES return printName8(pr); -# else // USE_LONG_FILE_NAMES +#else // USE_LONG_FILE_NAMES return printName7(pr); #endif // !USE_LONG_FILE_NAMES - } +} //------------------------------------------------------------------------------ size_t FatFile::printName7(print_t* pr) { FatFile dir; @@ -240,8 +240,8 @@ size_t FatFile::printName7(print_t* pr) { uint8_t i; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } if (!isLFN()) { return printSFN(pr); @@ -274,11 +274,11 @@ size_t FatFile::printName7(print_t* pr) { } return n; - fail: +fail: return 0; } //------------------------------------------------------------------------------ -size_t FatFile::printName8(print_t *pr) { +size_t FatFile::printName8(print_t* pr) { FatFile dir; DirLfn_t* ldir; uint16_t hs = 0; @@ -287,8 +287,8 @@ size_t FatFile::printName8(print_t *pr) { char buf[5]; char* end = buf + sizeof(buf); if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } if (!isLFN()) { return printSFN(pr); @@ -309,7 +309,7 @@ size_t FatFile::printName8(print_t *pr) { goto fail; } for (uint8_t i = 0; i < 13; i++) { - uint16_t c = getLfnChar(ldir, i);; + uint16_t c = getLfnChar(ldir, i); if (hs) { if (!FsUtf::isLowSurrogate(c)) { DBG_FAIL_MACRO; @@ -334,12 +334,12 @@ size_t FatFile::printName8(print_t *pr) { DBG_FAIL_MACRO; goto fail; } - n += pr->write(buf, str - buf); + n += pr->write(reinterpret_cast(buf), str - buf); } } return n; - fail: +fail: return 0; } //------------------------------------------------------------------------------ @@ -351,6 +351,6 @@ size_t FatFile::printSFN(print_t* pr) { } return pr->write(name); - fail: +fail: return 0; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatPartition.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatPartition.cpp similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatPartition.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatPartition.cpp index feb2f38d..f6d20437 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatPartition.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatPartition.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -84,7 +84,7 @@ bool FatPartition::allocateCluster(uint32_t current, uint32_t* next) { *next = find; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -149,7 +149,7 @@ bool FatPartition::allocContiguous(uint32_t count, uint32_t* firstCluster) { *firstCluster = bgnCluster; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -176,7 +176,7 @@ int8_t FatPartition::fatGet(uint32_t cluster, uint32_t* value) { next = getLe32(pc + offset); } else if (fatType() == 16) { cluster &= 0XFFFF; - sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1) ); + sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1)); pc = fatCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; @@ -216,7 +216,7 @@ int8_t FatPartition::fatGet(uint32_t cluster, uint32_t* value) { *value = next; return 1; - fail: +fail: return -1; } //------------------------------------------------------------------------------ @@ -245,7 +245,7 @@ bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { if (fatType() == 16) { cluster &= 0XFFFF; - sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1) ); + sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1)); pc = fatCachePrepare(sector, FsCache::CACHE_FOR_WRITE); if (!pc) { DBG_FAIL_MACRO; @@ -293,7 +293,7 @@ bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { goto fail; } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -322,7 +322,7 @@ bool FatPartition::freeChain(uint32_t cluster) { return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -357,7 +357,7 @@ int32_t FatPartition::freeClusterCount() { DBG_FAIL_MACRO; goto fail; } - n = fatType() == 16 ? m_bytesPerSector/2 : m_bytesPerSector/4; + n = fatType() == 16 ? m_bytesPerSector / 2 : m_bytesPerSector / 4; if (todo < n) { n = todo; } @@ -386,14 +386,13 @@ int32_t FatPartition::freeClusterCount() { setFreeClusterCount(free); return free; - fail: +fail: return -1; } //------------------------------------------------------------------------------ -bool FatPartition::init(FsBlockDevice* dev, uint8_t part) { - uint32_t clusterCount; +bool FatPartition::init(FsBlockDevice* dev, uint8_t part, uint32_t volStart) { + uint32_t countOfClusters; uint32_t totalSectors; - uint32_t volumeStartSector = 0; m_blockDev = dev; pbs_t* pbs; BpbFat32_t* bpb; @@ -412,21 +411,27 @@ bool FatPartition::init(FsBlockDevice* dev, uint8_t part) { DBG_FAIL_MACRO; goto fail; } - mbr = reinterpret_cast - (dataCachePrepare(0, FsCache::CACHE_FOR_READ)); - MbrPart_t* mp = mbr->part + part - 1; - - if (!mbr || mp->type == 0 || (mp->boot != 0 && mp->boot != 0X80)) { + mbr = reinterpret_cast( + dataCachePrepare(0, FsCache::CACHE_FOR_READ)); + if (!mbr) { DBG_FAIL_MACRO; goto fail; } - volumeStartSector = getLe32(mp->relativeSectors); + MbrPart_t* mp = mbr->part + part - 1; + if (mp->type == 0 || (mp->boot != 0 && mp->boot != 0X80)) { + DBG_FAIL_MACRO; + goto fail; + } + volStart = getLe32(mp->relativeSectors); + } + pbs = reinterpret_cast( + dataCachePrepare(volStart, FsCache::CACHE_FOR_READ)); + if (!pbs) { + DBG_FAIL_MACRO; + goto fail; } - pbs = reinterpret_cast - (dataCachePrepare(volumeStartSector, FsCache::CACHE_FOR_READ)); bpb = reinterpret_cast(pbs->bpb); - if (!pbs || bpb->fatCount != 2 || - getLe16(bpb->bytesPerSector) != m_bytesPerSector) { + if (bpb->fatCount != 2 || getLe16(bpb->bytesPerSector) != m_bytesPerSector) { DBG_FAIL_MACRO; goto fail; } @@ -445,7 +450,7 @@ bool FatPartition::init(FsBlockDevice* dev, uint8_t part) { if (m_sectorsPerFat == 0) { m_sectorsPerFat = getLe32(bpb->sectorsPerFat32); } - m_fatStartSector = volumeStartSector + getLe16(bpb->reservedSectorCount); + m_fatStartSector = volStart + getLe16(bpb->reservedSectorCount); // count for FAT16 zero for FAT32 m_rootDirEntryCount = getLe16(bpb->rootDirEntryCount); @@ -453,8 +458,10 @@ bool FatPartition::init(FsBlockDevice* dev, uint8_t part) { // directory start for FAT16 dataStart for FAT32 m_rootDirStart = m_fatStartSector + 2 * m_sectorsPerFat; // data start for FAT16 and FAT32 - m_dataStartSector = m_rootDirStart + - ((FS_DIR_SIZE*m_rootDirEntryCount + m_bytesPerSector - 1)/m_bytesPerSector); + m_dataStartSector = + m_rootDirStart + + ((FS_DIR_SIZE * m_rootDirEntryCount + m_bytesPerSector - 1) / + m_bytesPerSector); // total sectors for FAT16 or FAT32 totalSectors = getLe16(bpb->totalSectors16); @@ -462,22 +469,22 @@ bool FatPartition::init(FsBlockDevice* dev, uint8_t part) { totalSectors = getLe32(bpb->totalSectors32); } // total data sectors - clusterCount = totalSectors - (m_dataStartSector - volumeStartSector); + countOfClusters = totalSectors - (m_dataStartSector - volStart); // divide by cluster size to get cluster count - clusterCount >>= m_sectorsPerClusterShift; - m_lastCluster = clusterCount + 1; + countOfClusters >>= m_sectorsPerClusterShift; + m_lastCluster = countOfClusters + 1; // Indicate unknown number of free clusters. setFreeClusterCount(-1); // FAT type is determined by cluster count - if (clusterCount < 4085) { + if (countOfClusters < 4085) { m_fatType = 12; if (!FAT12_SUPPORT) { DBG_FAIL_MACRO; goto fail; } - } else if (clusterCount < 65525) { + } else if (countOfClusters < 65525) { m_fatType = 16; } else { m_rootDirStart = getLe32(bpb->fat32RootCluster); @@ -489,6 +496,6 @@ bool FatPartition::init(FsBlockDevice* dev, uint8_t part) { #endif // USE_SEPARATE_FAT_CACHE return true; - fail: +fail: return false; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatPartition.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatPartition.h similarity index 67% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatPartition.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatPartition.h index a9d45d98..076573d0 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatPartition.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatPartition.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,10 +29,11 @@ * \brief FatPartition class */ #include -#include "../common/SysCall.h" + #include "../common/FsBlockDevice.h" #include "../common/FsCache.h" #include "../common/FsStructs.h" +#include "../common/SysCall.h" /** Type for FAT12 partition */ const uint8_t FAT_TYPE_FAT12 = 12; @@ -52,7 +53,7 @@ class FatPartition { public: /** Create an instance of FatPartition */ - FatPartition() {} + FatPartition() = default; /** \return The shift count required to multiply by bytesPerCluster. */ uint8_t bytesPerClusterShift() const { @@ -63,50 +64,32 @@ class FatPartition { return m_bytesPerSector << m_sectorsPerClusterShift; } /** \return Number of bytes per sector. */ - uint16_t bytesPerSector() const { - return m_bytesPerSector; - } + uint16_t bytesPerSector() const { return m_bytesPerSector; } /** \return The shift count required to multiply by bytesPerCluster. */ - uint8_t bytesPerSectorShift() const { - return m_bytesPerSectorShift; - } - /** \return Number of directory entries per sector. */ + uint8_t bytesPerSectorShift() const { return m_bytesPerSectorShift; } + /** \return Number of directory entries per cluster. */ uint16_t dirEntriesPerCluster() const { - return m_sectorsPerCluster*(m_bytesPerSector/FS_DIR_SIZE); + return m_sectorsPerCluster * (m_bytesPerSector / FS_DIR_SIZE); } /** \return Mask for sector offset. */ - uint16_t sectorMask() const { - return m_sectorMask; - } + uint16_t sectorMask() const { return m_sectorMask; } /** \return The volume's cluster size in sectors. */ - uint8_t sectorsPerCluster() const { - return m_sectorsPerCluster; - } + uint8_t sectorsPerCluster() const { return m_sectorsPerCluster; } #ifndef DOXYGEN_SHOULD_SKIP_THIS uint8_t __attribute__((error("use sectorsPerCluster()"))) blocksPerCluster(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** \return The number of sectors in one FAT. */ - uint32_t sectorsPerFat() const { - return m_sectorsPerFat; - } + uint32_t sectorsPerFat() const { return m_sectorsPerFat; } /** Clear the cache and returns a pointer to the cache. Not for normal apps. * \return A pointer to the cache buffer or zero if an error occurs. */ - uint8_t* cacheClear() { - return m_cache.clear(); - } + uint8_t* cacheClear() { return m_cache.clear(); } /** \return The total number of clusters in the volume. */ - uint32_t clusterCount() const { - return m_lastCluster - 1; - } + uint32_t clusterCount() const { return m_lastCluster - 1; } /** \return The shift count required to multiply by sectorsPerCluster. */ - uint8_t sectorsPerClusterShift() const { - return m_sectorsPerClusterShift; - } + uint8_t sectorsPerClusterShift() const { return m_sectorsPerClusterShift; } /** \return The logical sector number for the start of file data. */ - uint32_t dataStartSector() const { - return m_dataStartSector; - } + uint32_t dataStartSector() const { return m_dataStartSector; } /** End access to volume * \return pointer to sector size buffer for format. */ @@ -115,21 +98,12 @@ class FatPartition { return cacheClear(); } /** \return The number of File Allocation Tables. */ - uint8_t fatCount() const { - return 2; - } + uint8_t fatCount() const { return 2; } /** \return The logical sector number for the start of the first FAT. */ - uint32_t fatStartSector() const { - return m_fatStartSector; - } + uint32_t fatStartSector() const { return m_fatStartSector; } /** \return The FAT type of the volume. Values are 12, 16 or 32. */ - uint8_t fatType() const { - return m_fatType; - } - /** Volume free space in clusters. - * - * \return Count of free clusters for success or -1 if an error occurs. - */ + uint8_t fatType() const { return m_fatType; } + /** \return free cluster count or -1 if an error occurs. */ int32_t freeClusterCount(); /** Initialize a FAT partition. * @@ -137,23 +111,20 @@ class FatPartition { * \param[in] part The partition to be used. Legal values for \a part are * 1-4 to use the corresponding partition on a device formatted with * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in sector zero. + * a super floppy with the FAT boot sector in sector volStart. + * \param[in] volStart location of volume if part is zero. * * \return true for success or false for failure. */ - bool init(FsBlockDevice* dev, uint8_t part = 1); + bool init(FsBlockDevice* dev, uint8_t part = 1, uint32_t volStart = 0); /** \return The number of entries in the root directory for FAT16 volumes. */ - uint16_t rootDirEntryCount() const { - return m_rootDirEntryCount; - } + uint16_t rootDirEntryCount() const { return m_rootDirEntryCount; } /** \return The logical sector number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes. */ - uint32_t rootDirStart() const { - return m_rootDirStart; - } + uint32_t rootDirStart() const { return m_rootDirStart; } /** \return The number of sectors in the volume */ uint32_t volumeSectorCount() const { - return sectorsPerCluster()*clusterCount(); + return sectorsPerCluster() * clusterCount(); } /** Debug access to FAT table * @@ -161,15 +132,13 @@ class FatPartition { * \param[out] v value of entry * \return -1 error, 0 EOC, else 1. */ - int8_t dbgFat(uint32_t n, uint32_t* v) { - return fatGet(n, v); - } + int8_t dbgFat(uint32_t n, uint32_t* v) { return fatGet(n, v); } /** * Check for FsBlockDevice busy. * * \return true if busy else false. */ - bool isBusy() {return m_blockDev->isBusy();} + bool isBusy() { return m_blockDev->isBusy(); } //---------------------------------------------------------------------------- #ifndef DOXYGEN_SHOULD_SKIP_THIS bool dmpDirSector(print_t* pr, uint32_t sector); @@ -182,22 +151,22 @@ class FatPartition { /** FatFile allowed access to private members. */ friend class FatFile; //---------------------------------------------------------------------------- - static const uint8_t m_bytesPerSectorShift = 9; + static const uint8_t m_bytesPerSectorShift = 9; static const uint16_t m_bytesPerSector = 1 << m_bytesPerSectorShift; static const uint16_t m_sectorMask = m_bytesPerSector - 1; //---------------------------------------------------------------------------- - FsBlockDevice* m_blockDev; // sector device - uint8_t m_sectorsPerCluster; // Cluster size in sectors. - uint8_t m_clusterSectorMask; // Mask to extract sector of cluster. - uint8_t m_sectorsPerClusterShift; // Cluster count to sector count shift. - uint8_t m_fatType = 0; // Volume type (12, 16, OR 32). - uint16_t m_rootDirEntryCount; // Number of entries in FAT16 root dir. - uint32_t m_allocSearchStart; // Start cluster for alloc search. - uint32_t m_sectorsPerFat; // FAT size in sectors - uint32_t m_dataStartSector; // First data sector number. - uint32_t m_fatStartSector; // Start sector for first FAT. - uint32_t m_lastCluster; // Last cluster number in FAT. - uint32_t m_rootDirStart; // Start sector FAT16, cluster FAT32. + FsBlockDevice* m_blockDev; // sector device + uint8_t m_sectorsPerCluster; // Cluster size in sectors. + uint8_t m_clusterSectorMask; // Mask to extract sector of cluster. + uint8_t m_sectorsPerClusterShift; // Cluster count to sector count shift. + uint8_t m_fatType = 0; // Volume type (12, 16, OR 32). + uint16_t m_rootDirEntryCount; // Number of entries in FAT16 root dir. + uint32_t m_allocSearchStart; // Start cluster for alloc search. + uint32_t m_sectorsPerFat; // FAT size in sectors + uint32_t m_dataStartSector; // First data sector number. + uint32_t m_fatStartSector; // Start sector for first FAT. + uint32_t m_lastCluster; // Last cluster number in FAT. + uint32_t m_rootDirStart; // Start sector FAT16, cluster FAT32. //---------------------------------------------------------------------------- // sector I/O functions. bool cacheSafeRead(uint32_t sector, uint8_t* dst) { @@ -212,33 +181,22 @@ class FatPartition { bool cacheSafeWrite(uint32_t sector, const uint8_t* dst, size_t count) { return m_cache.cacheSafeWrite(sector, dst, count); } - bool syncDevice() { - return m_blockDev->syncDevice(); - } + bool syncDevice() { return m_blockDev->syncDevice(); } #if MAINTAIN_FREE_CLUSTER_COUNT - int32_t m_freeClusterCount; // Count of free clusters in volume. - void setFreeClusterCount(int32_t value) { - m_freeClusterCount = value; - } + int32_t m_freeClusterCount; // Count of free clusters in volume. + void setFreeClusterCount(int32_t value) { m_freeClusterCount = value; } void updateFreeClusterCount(int32_t change) { if (m_freeClusterCount >= 0) { m_freeClusterCount += change; } } -#else // MAINTAIN_FREE_CLUSTER_COUNT - void setFreeClusterCount(int32_t value) { - (void)value; - } - void updateFreeClusterCount(int32_t change) { - (void)change; - } +#else // MAINTAIN_FREE_CLUSTER_COUNT + void setFreeClusterCount(int32_t value) { (void)value; } + void updateFreeClusterCount(int32_t change) { (void)change; } #endif // MAINTAIN_FREE_CLUSTER_COUNT -// sector caches + // sector caches FsCache m_cache; - bool cachePrepare(uint32_t sector, uint8_t option) { - return m_cache.prepare(sector, option); - } - FsCache* dataCache() {return &m_cache;} + FsCache* dataCache() { return &m_cache; } #if USE_SEPARATE_FAT_CACHE FsCache m_fatCache; uint8_t* fatCachePrepare(uint32_t sector, uint8_t options) { @@ -248,33 +206,20 @@ class FatPartition { bool cacheSync() { return m_cache.sync() && m_fatCache.sync() && syncDevice(); } -#else // USE_SEPARATE_FAT_CACHE +#else // USE_SEPARATE_FAT_CACHE uint8_t* fatCachePrepare(uint32_t sector, uint8_t options) { options |= FsCache::CACHE_STATUS_MIRROR_FAT; return dataCachePrepare(sector, options); } - bool cacheSync() { - return m_cache.sync() && syncDevice(); - } + bool cacheSync() { return m_cache.sync() && syncDevice(); } #endif // USE_SEPARATE_FAT_CACHE uint8_t* dataCachePrepare(uint32_t sector, uint8_t options) { return m_cache.prepare(sector, options); } - void cacheInvalidate() { - m_cache.invalidate(); - } - bool cacheSyncData() { - return m_cache.sync(); - } - uint8_t* cacheAddress() { - return m_cache.cacheBuffer(); - } - uint32_t cacheSectorNumber() { - return m_cache.sector(); - } - void cacheDirty() { - m_cache.dirty(); - } + bool cacheSyncData() { return m_cache.sync(); } + uint8_t* cacheAddress() { return m_cache.cacheBuffer(); } + uint32_t cacheSectorNumber() { return m_cache.sector(); } + void cacheDirty() { m_cache.dirty(); } //---------------------------------------------------------------------------- bool allocateCluster(uint32_t current, uint32_t* next); bool allocContiguous(uint32_t count, uint32_t* firstCluster); @@ -286,12 +231,8 @@ class FatPartition { } int8_t fatGet(uint32_t cluster, uint32_t* value); bool fatPut(uint32_t cluster, uint32_t value); - bool fatPutEOC(uint32_t cluster) { - return fatPut(cluster, 0x0FFFFFFF); - } + bool fatPutEOC(uint32_t cluster) { return fatPut(cluster, 0x0FFFFFFF); } bool freeChain(uint32_t cluster); - bool isEOC(uint32_t cluster) const { - return cluster > m_lastCluster; - } + bool isEOC(uint32_t cluster) const { return cluster > m_lastCluster; } }; #endif // FatPartition diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatVolume.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatVolume.cpp similarity index 92% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatVolume.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatVolume.cpp index 29c1bc62..3003546a 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatVolume.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatVolume.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -27,7 +27,7 @@ #include "FatLib.h" FatVolume* FatVolume::m_cwv = nullptr; //------------------------------------------------------------------------------ -bool FatVolume::chdir(const char *path) { +bool FatVolume::chdir(const char* path) { FatFile dir; if (!dir.open(vwd(), path, O_RDONLY)) { DBG_FAIL_MACRO; @@ -37,9 +37,10 @@ bool FatVolume::chdir(const char *path) { DBG_FAIL_MACRO; goto fail; } - m_vwd = dir; + // m_vwd = dir; + m_vwd.copy(&dir); return true; - fail: +fail: return false; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatVolume.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatVolume.h similarity index 85% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatVolume.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatVolume.h index fe79a42a..daf64c39 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FatLib/FatVolume.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FatLib/FatVolume.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -34,17 +34,38 @@ * \class FatVolume * \brief Integration class for the FatLib library. */ -class FatVolume : public FatPartition { +class FatVolume : public FatPartition { public: + /** Get file's user settable attributes. + * \param[in] path path to file. + * \return user settable file attributes for success else -1. + */ + int attrib(const char* path) { + File32 tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib() : -1; + } + /** Set file's user settable attributes. + * \param[in] path path to file. + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \return true for success or false for failure. + */ + bool attrib(const char* path, uint8_t bits) { + File32 tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib(bits) : false; + } /** * Initialize an FatVolume object. * \param[in] dev Device block driver. * \param[in] setCwv Set current working volume if true. * \param[in] part partition to initialize. + * \param[in] volStart Start sector of volume if part is zero. * \return true for success or false for failure. */ - bool begin(FsBlockDevice* dev, bool setCwv = true, uint8_t part = 1) { - if (!init(dev, part)) { + bool begin(FsBlockDevice* dev, bool setCwv = true, uint8_t part = 1, + uint32_t volStart = 0) { + if (!init(dev, part, volStart)) { return false; } if (!chdir()) { @@ -56,7 +77,7 @@ class FatVolume : public FatPartition { return true; } /** Change global current working volume to this volume. */ - void chvol() {m_cwv = this;} + void chvol() { m_cwv = this; } /** * Set volume working directory to root. @@ -71,7 +92,7 @@ class FatVolume : public FatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const char *path); + bool chdir(const char* path); //---------------------------------------------------------------------------- /** * Test for the existence of a file. @@ -99,9 +120,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool ls(print_t* pr, uint8_t flags = 0) { - return m_vwd.ls(pr, flags); - } + bool ls(print_t* pr, uint8_t flags = 0) { return m_vwd.ls(pr, flags); } //---------------------------------------------------------------------------- /** List the contents of a directory. * @@ -143,7 +162,7 @@ class FatVolume : public FatPartition { * \param[in] oflag open flags. * \return a File32 object. */ - File32 open(const char *path, oflag_t oflag = O_RDONLY) { + File32 open(const char* path, oflag_t oflag = O_RDONLY) { File32 tmpFile; tmpFile.open(this, path, oflag); return tmpFile; @@ -174,7 +193,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool rename(const char *oldPath, const char *newPath) { + bool rename(const char* oldPath, const char* newPath) { FatFile file; return file.open(vwd(), oldPath, O_RDONLY) && file.rename(vwd(), newPath); } @@ -205,7 +224,7 @@ class FatVolume : public FatPartition { return file.open(this, path, O_WRONLY) && file.truncate(length); } #if ENABLE_ARDUINO_SERIAL - /** List the directory contents of the root directory to Serial. + /** List the directory contents of the root directory to Serial. * * \param[in] flags The inclusive OR of * @@ -217,9 +236,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags = 0) { return ls(&Serial, flags); } /** List the directory contents of a directory to Serial. * * \param[in] path directory to list. @@ -245,19 +262,15 @@ class FatVolume : public FatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const String& path) { - return chdir(path.c_str()); - } - /** + bool chdir(const String& path) { return chdir(path.c_str()); } + /** * Test for the existence of a file. * * \param[in] path Path of the file to be tested for. * * \return true if the file exists else false. */ - bool exists(const String& path) { - return exists(path.c_str()); - } + bool exists(const String& path) { return exists(path.c_str()); } /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid name for the subdirectory. @@ -276,7 +289,7 @@ class FatVolume : public FatPartition { * \return a File32 object. */ File32 open(const String& path, oflag_t oflag = O_RDONLY) { - return open(path.c_str(), oflag ); + return open(path.c_str(), oflag); } /** Remove a file from the volume root directory. * @@ -284,9 +297,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool remove(const String& path) { - return remove(path.c_str()); - } + bool remove(const String& path) { return remove(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -312,9 +323,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool rmdir(const String& path) { - return rmdir(path.c_str()); - } + bool rmdir(const String& path) { return rmdir(path.c_str()); } /** Truncate a file to a specified length. The current file position * will be at the new EOF. * @@ -330,8 +339,8 @@ class FatVolume : public FatPartition { private: friend FatFile; - static FatVolume* cwv() {return m_cwv;} - FatFile* vwd() {return &m_vwd;} + static FatVolume* cwv() { return m_cwv; } + FatFile* vwd() { return &m_vwd; } static FatVolume* m_cwv; FatFile m_vwd; }; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FreeStack.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FreeStack.cpp similarity index 98% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FreeStack.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FreeStack.cpp index af3ead45..d90959e9 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FreeStack.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FreeStack.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FreeStack.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FreeStack.h similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FreeStack.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FreeStack.h index d0e77257..60729fac 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FreeStack.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FreeStack.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -34,7 +34,7 @@ /** Indicate FillStack() and UnusedStack() are available. */ #define HAS_UNUSED_STACK 1 /** boundary between stack and heap. */ -extern char *__brkval; +extern char* __brkval; /** End of bss section.*/ extern char __bss_end; /** Amount of free stack space. @@ -48,9 +48,7 @@ inline int FreeStack() { #define HAS_UNUSED_STACK 0 #elif defined(PLATFORM_ID) // Particle board #include "Arduino.h" -inline int FreeStack() { - return System.freeMemory(); -} +inline int FreeStack() { return System.freeMemory(); } #elif defined(__IMXRT1062__) #define HAS_UNUSED_STACK 1 extern uint8_t _ebss; @@ -69,9 +67,7 @@ inline int FreeStack() { #ifndef FREE_STACK_CPP #warning FreeStack is not defined for this system. #endif // FREE_STACK_CPP -inline int FreeStack() { - return 0; -} +inline int FreeStack() { return 0; } #endif // defined(__AVR__) || defined(DOXYGEN) #if defined(HAS_UNUSED_STACK) || defined(DOXYGEN) /** Fill stack with 0x55 pattern */ @@ -89,6 +85,6 @@ int UnusedStack(); #else // HAS_UNUSED_STACK #define HAS_UNUSED_STACK 0 inline void FillStack() {} -inline int UnusedStack() {return 0;} +inline int UnusedStack() { return 0; } #endif // defined(HAS_UNUSED_STACK) #endif // FreeStack_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFile.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFile.cpp similarity index 81% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFile.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFile.cpp index a6bf54b4..4ac76131 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFile.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFile.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,42 +23,43 @@ * DEALINGS IN THE SOFTWARE. */ #include "FsLib.h" +#if FILE_COPY_CONSTRUCTOR_SELECT //------------------------------------------------------------------------------ -FsBaseFile::FsBaseFile(const FsBaseFile& from) { - m_fFile = nullptr; - m_xFile = nullptr; - if (from.m_fFile) { - m_fFile = new (m_fileMem) FatFile; - *m_fFile = *from.m_fFile; - } else if (from.m_xFile) { - m_xFile = new (m_fileMem) ExFatFile; - *m_xFile = *from.m_xFile; +FsBaseFile::FsBaseFile(const FsBaseFile& from) { copy(&from); } +//------------------------------------------------------------------------------ +FsBaseFile& FsBaseFile::operator=(const FsBaseFile& from) { + copy(&from); + return *this; +} +#endif // FILE_COPY_CONSTRUCTOR_SELECT +//------------------------------------------------------------------------------ +void FsBaseFile::copy(const FsBaseFile* from) { + if (from != this) { + m_fFile = nullptr; + m_xFile = nullptr; + if (from->m_fFile) { + m_fFile = new (m_fileMem) FatFile; + m_fFile->copy(from->m_fFile); + } else if (from->m_xFile) { + m_xFile = new (m_fileMem) ExFatFile; + m_xFile->copy(from->m_xFile); + } } } //------------------------------------------------------------------------------ -FsBaseFile& FsBaseFile::operator=(const FsBaseFile& from) { - if (this == &from) return *this; - close(); - if (from.m_fFile) { - m_fFile = new (m_fileMem) FatFile; - *m_fFile = *from.m_fFile; - } else if (from.m_xFile) { - m_xFile = new (m_fileMem) ExFatFile; - *m_xFile = *from.m_xFile; +void FsBaseFile::move(FsBaseFile* from) { + if (from != this) { + copy(from); + from->m_fFile = nullptr; + from->m_xFile = nullptr; } - return *this; } //------------------------------------------------------------------------------ bool FsBaseFile::close() { - if (m_fFile && m_fFile->close()) { - m_fFile = nullptr; - return true; - } - if (m_xFile && m_xFile->close()) { - m_xFile = nullptr; - return true; - } - return false; + bool rtn = m_fFile ? m_fFile->close() : m_xFile ? m_xFile->close() : true; + m_fFile = nullptr; + m_xFile = nullptr; + return rtn; } //------------------------------------------------------------------------------ bool FsBaseFile::mkdir(FsBaseFile* dir, const char* path, bool pFlag) { @@ -136,6 +137,24 @@ bool FsBaseFile::open(FsBaseFile* dir, uint32_t index, oflag_t oflag) { return false; } //------------------------------------------------------------------------------ +bool FsBaseFile::openCwd() { + close(); + if (FsVolume::m_cwv && FsVolume::m_cwv->m_fVol) { + m_fFile = new (m_fileMem) FatFile; + if (m_fFile->openCwd()) { + return true; + } + m_fFile = nullptr; + } else if (FsVolume::m_cwv && FsVolume::m_cwv->m_xVol) { + m_xFile = new (m_fileMem) ExFatFile; + if (m_xFile->openCwd()) { + return true; + } + m_xFile = nullptr; + } + return false; +} +//------------------------------------------------------------------------------ bool FsBaseFile::openNext(FsBaseFile* dir, oflag_t oflag) { close(); if (dir->m_fFile) { diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFile.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFile.h similarity index 67% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFile.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFile.h index 313abb3e..c8df331e 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFile.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFile.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,9 +28,10 @@ * \file * \brief FsBaseFile include file. */ -#include "FsNew.h" -#include "FatLib/FatLib.h" #include "ExFatLib/ExFatLib.h" +#include "FatLib/FatLib.h" +#include "FsNew.h" +#include "FsVolume.h" /** * \class FsBaseFile * \brief FsBaseFile class. @@ -38,7 +39,7 @@ class FsBaseFile { public: /** Create an instance. */ - FsBaseFile() {} + FsBaseFile() = default; /** Create a file object and open it in the current working directory. * * \param[in] path A path for a file to be opened. @@ -46,13 +47,20 @@ class FsBaseFile { * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive * OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t). */ - FsBaseFile(const char* path, oflag_t oflag) { - open(path, oflag); - } + FsBaseFile(const char* path, oflag_t oflag) { open(path, oflag); } - ~FsBaseFile() {close();} + /** Copy from to this. + * \param[in] from Source file. + */ + void copy(const FsBaseFile* from); + + /** move from to this. + * \param[in] from Source file. + */ + void move(FsBaseFile* from); + +#if FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PUBLIC /** Copy constructor. - * * \param[in] from Object used to initialize this instance. */ FsBaseFile(const FsBaseFile& from); @@ -61,24 +69,83 @@ class FsBaseFile { * \return assigned object. */ FsBaseFile& operator=(const FsBaseFile& from); +#elif FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PRIVATE + + private: + FsBaseFile(const FsBaseFile& from); + FsBaseFile& operator=(const FsBaseFile& from); + + public: +#else // FILE_COPY_CONSTRUCTOR_SELECT + FsBaseFile(const FsBaseFile& from) = delete; + FsBaseFile& operator=(const FsBaseFile& from) = delete; +#endif // FILE_COPY_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT + /** Move constructor. + * \param[in] from File to move. + */ + FsBaseFile(FsBaseFile&& from) { move(&from); } + /** Move assignment operator. + * \param[in] from File to move. + * \return Assigned file. + */ + FsBaseFile& operator=(FsBaseFile&& from) { + move(&from); + return *this; + } +#else // FILE_MOVE_CONSTRUCTOR_SELECT + FsBaseFile(FsBaseFile&& from) = delete; + FsBaseFile& operator=(FsBaseFile&& from) = delete; +#endif // FILE_MOVE_CONSTRUCTOR_SELECT + +#if DESTRUCTOR_CLOSES_FILE + ~FsBaseFile() { + if (isOpen()) { + close(); + } + } +#else // DESTRUCTOR_CLOSES_FILE + ~FsBaseFile() = default; +#endif // DESTRUCTOR_CLOSES_FILE + /** The parenthesis operator. - * - * \return true if a file is open. - */ - operator bool() const {return isOpen();} + * + * \return true if a file is open. + */ + operator bool() const { return isOpen(); } + /** + * \return user settable file attributes for success else -1. + */ + int attrib() { + return m_fFile ? m_fFile->attrib() : m_xFile ? m_xFile->attrib() : -1; + } + /** Set file attributes + * + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \note attrib() will fail for set read-only if the file is open for write. + * \return true for success or false for failure. + */ + bool attrib(uint8_t bits) { + return m_fFile ? m_fFile->attrib(bits) + : m_xFile ? m_xFile->attrib(bits) + : false; + } /** \return number of bytes available from the current position to EOF * or INT_MAX if more than INT_MAX bytes are available. */ int available() const { - return m_fFile ? m_fFile->available() : - m_xFile ? m_xFile->available() : 0; + return m_fFile ? m_fFile->available() : m_xFile ? m_xFile->available() : 0; } /** \return The number of bytes available from the current position * to EOF for normal files. Zero is returned for directory files. */ uint64_t available64() const { - return m_fFile ? m_fFile->available32() : - m_xFile ? m_xFile->available64() : 0; + return m_fFile ? m_fFile->available32() + : m_xFile ? m_xFile->available64() + : 0; } /** Clear writeError. */ void clearWriteError() { @@ -102,18 +169,29 @@ class FsBaseFile { * \return true for success or false for failure. */ bool contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { - return m_fFile ? m_fFile->contiguousRange(bgnSector, endSector) : - m_xFile ? m_xFile->contiguousRange(bgnSector, endSector) : false; + return m_fFile ? m_fFile->contiguousRange(bgnSector, endSector) + : m_xFile ? m_xFile->contiguousRange(bgnSector, endSector) + : false; + } + /** \return The current cluster number for a file or directory. */ + uint32_t curCluster() const { + return m_fFile ? m_fFile->curCluster() + : m_xFile ? m_xFile->curCluster() + : 0; } /** \return The current position for a file or directory. */ uint64_t curPosition() const { - return m_fFile ? m_fFile->curPosition() : - m_xFile ? m_xFile->curPosition() : 0; + return m_fFile ? m_fFile->curPosition() + : m_xFile ? m_xFile->curPosition() + : 0; + } + /** \return Total allocated length for file. */ + uint64_t dataLength() const { + return m_fFile ? m_fFile->fileSize() : m_xFile ? m_xFile->dataLength() : 0; } /** \return Directory entry index. */ uint32_t dirIndex() const { - return m_fFile ? m_fFile->dirIndex() : - m_xFile ? m_xFile->dirIndex() : 0; + return m_fFile ? m_fFile->dirIndex() : m_xFile ? m_xFile->dirIndex() : 0; } /** Test for the existence of a file in a directory * @@ -127,8 +205,9 @@ class FsBaseFile { * \return true if the file exists else false. */ bool exists(const char* path) { - return m_fFile ? m_fFile->exists(path) : - m_xFile ? m_xFile->exists(path) : false; + return m_fFile ? m_fFile->exists(path) + : m_xFile ? m_xFile->exists(path) + : false; } /** get position for streams * \param[out] pos struct to receive position @@ -137,13 +216,13 @@ class FsBaseFile { if (m_fFile) m_fFile->fgetpos(pos); if (m_xFile) m_xFile->fgetpos(pos); } - /** + /** * Get a string from a file. * * fgets() reads bytes from a file into the array pointed to by \a str, until - * \a num - 1 bytes are read, or a delimiter is read and transferred to \a str, - * or end-of-file is encountered. The string is then terminated - * with a null byte. + * \a num - 1 bytes are read, or a delimiter is read and transferred to \a + * str, or end-of-file is encountered. The string is then terminated with a + * null byte. * * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' * terminates the string for Windows text files which use CRLF for newline. @@ -155,24 +234,26 @@ class FsBaseFile { * \param[in] delim Optional set of delimiters. The default is "\n". * * \return For success fgets() returns the length of the string in \a str. - * If no data is read, fgets() returns zero for EOF or -1 if an error occurred. + * If no data is read, fgets() returns zero for EOF or -1 if an error + * occurred. */ int fgets(char* str, int num, char* delim = nullptr) { - return m_fFile ? m_fFile->fgets(str, num, delim) : - m_xFile ? m_xFile->fgets(str, num, delim) : -1; + return m_fFile ? m_fFile->fgets(str, num, delim) + : m_xFile ? m_xFile->fgets(str, num, delim) + : -1; } /** \return The total number of bytes in a file. */ uint64_t fileSize() const { - return m_fFile ? m_fFile->fileSize() : - m_xFile ? m_xFile->fileSize() : 0; + return m_fFile ? m_fFile->fileSize() : m_xFile ? m_xFile->fileSize() : 0; } /** \return Address of first sector or zero for empty file. */ uint32_t firstSector() const { - return m_fFile ? m_fFile->firstSector() : - m_xFile ? m_xFile->firstSector() : 0; + return m_fFile ? m_fFile->firstSector() + : m_xFile ? m_xFile->firstSector() + : 0; } /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() {sync();} + void flush() { sync(); } /** set position for streams * \param[in] pos struct with value for new position */ @@ -188,8 +269,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool getAccessDateTime(uint16_t* pdate, uint16_t* ptime) { - return m_fFile ? m_fFile->getAccessDateTime(pdate, ptime) : - m_xFile ? m_xFile->getAccessDateTime(pdate, ptime) : false; + return m_fFile ? m_fFile->getAccessDateTime(pdate, ptime) + : m_xFile ? m_xFile->getAccessDateTime(pdate, ptime) + : false; } /** Get a file's create date and time. * @@ -199,13 +281,13 @@ class FsBaseFile { * \return true for success or false for failure. */ bool getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { - return m_fFile ? m_fFile->getCreateDateTime(pdate, ptime) : - m_xFile ? m_xFile->getCreateDateTime(pdate, ptime) : false; + return m_fFile ? m_fFile->getCreateDateTime(pdate, ptime) + : m_xFile ? m_xFile->getCreateDateTime(pdate, ptime) + : false; } /** \return All error bits. */ uint8_t getError() const { - return m_fFile ? m_fFile->getError() : - m_xFile ? m_xFile->getError() : 0XFF; + return m_fFile ? m_fFile->getError() : m_xFile ? m_xFile->getError() : 0XFF; } /** Get a file's Modify date and time. * @@ -215,8 +297,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { - return m_fFile ? m_fFile->getModifyDateTime(pdate, ptime) : - m_xFile ? m_xFile->getModifyDateTime(pdate, ptime) : false; + return m_fFile ? m_fFile->getModifyDateTime(pdate, ptime) + : m_xFile ? m_xFile->getModifyDateTime(pdate, ptime) + : false; } /** * Get a file's name followed by a zero byte. @@ -229,14 +312,16 @@ class FsBaseFile { */ size_t getName(char* name, size_t len) { *name = 0; - return m_fFile ? m_fFile->getName(name, len) : - m_xFile ? m_xFile->getName(name, len) : 0; + return m_fFile ? m_fFile->getName(name, len) + : m_xFile ? m_xFile->getName(name, len) + : 0; } /** \return value of writeError */ bool getWriteError() const { - return m_fFile ? m_fFile->getWriteError() : - m_xFile ? m_xFile->getWriteError() : true; + return m_fFile ? m_fFile->getWriteError() + : m_xFile ? m_xFile->getWriteError() + : true; } /** * Check for FsBlockDevice busy. @@ -244,58 +329,67 @@ class FsBaseFile { * \return true if busy else false. */ bool isBusy() { - return m_fFile ? m_fFile->isBusy() : - m_xFile ? m_xFile->isBusy() : true; + return m_fFile ? m_fFile->isBusy() : m_xFile ? m_xFile->isBusy() : true; } /** \return True if the file is contiguous. */ bool isContiguous() const { #if USE_FAT_FILE_FLAG_CONTIGUOUS - return m_fFile ? m_fFile->isContiguous() : - m_xFile ? m_xFile->isContiguous() : false; -#else // USE_FAT_FILE_FLAG_CONTIGUOUS + return m_fFile ? m_fFile->isContiguous() + : m_xFile ? m_xFile->isContiguous() + : false; +#else // USE_FAT_FILE_FLAG_CONTIGUOUS return m_xFile ? m_xFile->isContiguous() : false; #endif // USE_FAT_FILE_FLAG_CONTIGUOUS } /** \return True if this is a directory else false. */ bool isDir() const { - return m_fFile ? m_fFile->isDir() : - m_xFile ? m_xFile->isDir() : false; + return m_fFile ? m_fFile->isDir() : m_xFile ? m_xFile->isDir() : false; } /** This function reports if the current file is a directory or not. * \return true if the file is a directory. */ - bool isDirectory() const {return isDir();} + bool isDirectory() const { return isDir(); } /** \return True if this is a normal file. */ bool isFile() const { - return m_fFile ? m_fFile->isFile() : - m_xFile ? m_xFile->isFile() : false; + return m_fFile ? m_fFile->isFile() : m_xFile ? m_xFile->isFile() : false; + } + /** \return True if this is a normal file or sub-directory. */ + bool isFileOrSubDir() const { + return m_fFile ? m_fFile->isFileOrSubDir() + : m_xFile ? m_xFile->isFileOrSubDir() + : false; } /** \return True if this is a hidden file else false. */ bool isHidden() const { - return m_fFile ? m_fFile->isHidden() : - m_xFile ? m_xFile->isHidden() : false; + return m_fFile ? m_fFile->isHidden() + : m_xFile ? m_xFile->isHidden() + : false; } /** \return True if this is an open file/directory else false. */ - bool isOpen() const {return m_fFile || m_xFile;} + bool isOpen() const { return m_fFile || m_xFile; } /** \return True file is readable. */ bool isReadable() const { - return m_fFile ? m_fFile->isReadable() : - m_xFile ? m_xFile->isReadable() : false; - } + return m_fFile ? m_fFile->isReadable() + : m_xFile ? m_xFile->isReadable() + : false; + } /** \return True if file is read-only */ bool isReadOnly() const { - return m_fFile ? m_fFile->isReadOnly() : - m_xFile ? m_xFile->isReadOnly() : false; + return m_fFile ? m_fFile->isReadOnly() + : m_xFile ? m_xFile->isReadOnly() + : false; } - /** \return True if this is a subdirectory file else false. */ + /** \return True if this is a sub-directory file else false. */ bool isSubDir() const { - return m_fFile ? m_fFile->isSubDir() : - m_xFile ? m_xFile->isSubDir() : false; + return m_fFile ? m_fFile->isSubDir() + : m_xFile ? m_xFile->isSubDir() + : false; } /** \return True file is writable. */ bool isWritable() const { - return m_fFile ? m_fFile->isWritable() : - m_xFile ? m_xFile->isWritable() : false; + return m_fFile ? m_fFile->isWritable() + : m_xFile ? m_xFile->isWritable() + : false; } #if ENABLE_ARDUINO_SERIAL /** List directory contents. @@ -307,14 +401,13 @@ class FsBaseFile { * LS_SIZE - %Print file size. * * LS_R - Recursive list of subdirectories. + * \return true for success or false for failure. */ - bool ls(uint8_t flags) { - return ls(&Serial, flags); - } - /** List directory contents. */ - bool ls() { - return ls(&Serial); - } + bool ls(uint8_t flags) { return ls(&Serial, flags); } + /** List directory contents. + * \return true for success or false for failure. + */ + bool ls() { return ls(&Serial); } #endif // ENABLE_ARDUINO_SERIAL /** List directory contents. * @@ -323,8 +416,7 @@ class FsBaseFile { * \return true for success or false for failure. */ bool ls(print_t* pr) { - return m_fFile ? m_fFile->ls(pr) : - m_xFile ? m_xFile->ls(pr) : false; + return m_fFile ? m_fFile->ls(pr) : m_xFile ? m_xFile->ls(pr) : false; } /** List directory contents. * @@ -340,8 +432,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool ls(print_t* pr, uint8_t flags) { - return m_fFile ? m_fFile->ls(pr, flags) : - m_xFile ? m_xFile->ls(pr, flags) : false; + return m_fFile ? m_fFile->ls(pr, flags) + : m_xFile ? m_xFile->ls(pr, flags) + : false; } /** Make a new directory. * @@ -383,10 +476,12 @@ class FsBaseFile { * O_CREAT - If the file exists, this flag has no effect except as noted * under O_EXCL below. Otherwise, the file shall be created * - * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. + * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file + * exists. * * O_TRUNC - If the file exists and is a regular file, and the file is - * successfully opened and is not read only, its length shall be truncated to 0. + * successfully opened and is not read only, its length shall be truncated to + * 0. * * WARNING: A given file must not be opened by more than one file object * or file corruption may occur. @@ -410,7 +505,7 @@ class FsBaseFile { * See open() by path for definition of flags. * \return true for success or false for failure. */ - bool open(FsBaseFile* dir, uint32_t index, oflag_t oflag); + bool open(FsBaseFile* dir, uint32_t index, oflag_t oflag = O_RDONLY); /** Open a file or directory by name. * * \param[in] vol Volume where the file is located. @@ -422,7 +517,7 @@ class FsBaseFile { * * \return true for success or false for failure. */ - bool open(FsVolume* vol, const char* path, oflag_t oflag); + bool open(FsVolume* vol, const char* path, oflag_t oflag = O_RDONLY); /** Open a file or directory by name. * * \param[in] path A path for a file to be opened. @@ -435,6 +530,25 @@ class FsBaseFile { bool open(const char* path, oflag_t oflag = O_RDONLY) { return FsVolume::m_cwv && open(FsVolume::m_cwv, path, oflag); } + /** Open a file or directory by index in the current working directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag Values for \a oflag are constructed by a + * bitwise-inclusive OR of open flags. + * + * \return true for success or false for failure. + */ + bool open(uint32_t index, oflag_t oflag = O_RDONLY) { + FsBaseFile cwd; + return cwd.openCwd() && open(&cwd, index, oflag); + } + /** Open the current working directory. + * + * \return true for success or false for failure. + */ + bool openCwd(); /** Opens the next file or folder in a directory. * \param[in] dir directory containing files. * \param[in] oflag open flags. @@ -449,14 +563,13 @@ class FsBaseFile { */ bool openRoot(FsVolume* vol); /** \return the current file position. */ - uint64_t position() const {return curPosition();} + uint64_t position() const { return curPosition(); } /** Return the next available byte without consuming it. * * \return The byte if no error and not at eof else -1; */ int peek() { - return m_fFile ? m_fFile->peek() : - m_xFile ? m_xFile->peek() : -1; + return m_fFile ? m_fFile->peek() : m_xFile ? m_xFile->peek() : -1; } /** Allocate contiguous clusters to an empty file. * @@ -470,8 +583,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool preAllocate(uint64_t length) { - return m_fFile ? length < (1ULL << 32) && m_fFile->preAllocate(length) : - m_xFile ? m_xFile->preAllocate(length) : false; + return m_fFile ? length < (1ULL << 32) && m_fFile->preAllocate(length) + : m_xFile ? m_xFile->preAllocate(length) + : false; } /** Print a file's access date and time * @@ -480,8 +594,9 @@ class FsBaseFile { * \return true for success or false for failure. */ size_t printAccessDateTime(print_t* pr) { - return m_fFile ? m_fFile->printAccessDateTime(pr) : - m_xFile ? m_xFile->printAccessDateTime(pr) : 0; + return m_fFile ? m_fFile->printAccessDateTime(pr) + : m_xFile ? m_xFile->printAccessDateTime(pr) + : 0; } /** Print a file's creation date and time * @@ -490,8 +605,9 @@ class FsBaseFile { * \return true for success or false for failure. */ size_t printCreateDateTime(print_t* pr) { - return m_fFile ? m_fFile->printCreateDateTime(pr) : - m_xFile ? m_xFile->printCreateDateTime(pr) : 0; + return m_fFile ? m_fFile->printCreateDateTime(pr) + : m_xFile ? m_xFile->printCreateDateTime(pr) + : 0; } /** Print a number followed by a field terminator. * \param[in] value The number to be printed. @@ -500,8 +616,9 @@ class FsBaseFile { * \return The number of bytes written or -1 if an error occurs. */ size_t printField(double value, char term, uint8_t prec = 2) { - return m_fFile ? m_fFile->printField(value, term, prec) : - m_xFile ? m_xFile->printField(value, term, prec) : 0; + return m_fFile ? m_fFile->printField(value, term, prec) + : m_xFile ? m_xFile->printField(value, term, prec) + : 0; } /** Print a number followed by a field terminator. * \param[in] value The number to be printed. @@ -510,17 +627,18 @@ class FsBaseFile { * \return The number of bytes written or -1 if an error occurs. */ size_t printField(float value, char term, uint8_t prec = 2) { - return printField(static_cast(value), term, prec); + return printField(static_cast(value), term, prec); } /** Print a number followed by a field terminator. * \param[in] value The number to be printed. * \param[in] term The field terminator. Use '\\n' for CR LF. * \return The number of bytes written or -1 if an error occurs. */ - template + template size_t printField(Type value, char term) { - return m_fFile ? m_fFile->printField(value, term) : - m_xFile ? m_xFile->printField(value, term) : 0; + return m_fFile ? m_fFile->printField(value, term) + : m_xFile ? m_xFile->printField(value, term) + : 0; } /** Print a file's size. * @@ -530,8 +648,9 @@ class FsBaseFile { * for success and zero is returned for failure. */ size_t printFileSize(print_t* pr) { - return m_fFile ? m_fFile->printFileSize(pr) : - m_xFile ? m_xFile->printFileSize(pr) : 0; + return m_fFile ? m_fFile->printFileSize(pr) + : m_xFile ? m_xFile->printFileSize(pr) + : 0; } /** Print a file's modify date and time * @@ -540,8 +659,9 @@ class FsBaseFile { * \return true for success or false for failure. */ size_t printModifyDateTime(print_t* pr) { - return m_fFile ? m_fFile->printModifyDateTime(pr) : - m_xFile ? m_xFile->printModifyDateTime(pr) : 0; + return m_fFile ? m_fFile->printModifyDateTime(pr) + : m_xFile ? m_xFile->printModifyDateTime(pr) + : 0; } /** Print a file's name * @@ -550,8 +670,9 @@ class FsBaseFile { * \return true for success or false for failure. */ size_t printName(print_t* pr) { - return m_fFile ? m_fFile->printName(pr) : - m_xFile ? m_xFile->printName(pr) : 0; + return m_fFile ? m_fFile->printName(pr) + : m_xFile ? m_xFile->printName(pr) + : 0; } /** Read the next byte from a file. * @@ -576,8 +697,9 @@ class FsBaseFile { * or an I/O error occurred. */ int read(void* buf, size_t count) { - return m_fFile ? m_fFile->read(buf, count) : - m_xFile ? m_xFile->read(buf, count) : -1; + return m_fFile ? m_fFile->read(buf, count) + : m_xFile ? m_xFile->read(buf, count) + : -1; } /** Remove a file. * @@ -590,7 +712,7 @@ class FsBaseFile { * \return true for success or false for failure. */ bool remove(); - /** Remove a file. + /** Remove a file. * * The directory entry and all data for the file are deleted. * @@ -605,8 +727,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool remove(const char* path) { - return m_fFile ? m_fFile->remove(path) : - m_xFile ? m_xFile->remove(path) : false; + return m_fFile ? m_fFile->remove(path) + : m_xFile ? m_xFile->remove(path) + : false; } /** Rename a file or subdirectory. * @@ -615,19 +738,21 @@ class FsBaseFile { * \return true for success or false for failure. */ bool rename(const char* newPath) { - return m_fFile ? m_fFile->rename(newPath) : - m_xFile ? m_xFile->rename(newPath) : false; + return m_fFile ? m_fFile->rename(newPath) + : m_xFile ? m_xFile->rename(newPath) + : false; } /** Rename a file or subdirectory. * - * \param[in] dirFile Directory for the new path. + * \param[in] dir Directory for the new path. * \param[in] newPath New path name for the file/directory. * * \return true for success or false for failure. */ - bool rename(FsBaseFile* dirFile, const char* newPath) { - return m_fFile ? m_fFile->rename(dirFile->m_fFile, newPath) : - m_xFile ? m_xFile->rename(dirFile->m_xFile, newPath) : false; + bool rename(FsBaseFile* dir, const char* newPath) { + return m_fFile && dir->m_fFile ? m_fFile->rename(dir->m_fFile, newPath) + : m_xFile && dir->m_xFile ? m_xFile->rename(dir->m_xFile, newPath) + : false; } /** Set the file's current position to zero. */ void rewind() { @@ -657,22 +782,18 @@ class FsBaseFile { * \param[in] pos the new file position. * \return true for success or false for failure. */ - bool seek(uint64_t pos) {return seekSet(pos);} + bool seek(uint64_t pos) { return seekSet(pos); } /** Set the files position to current position + \a pos. See seekSet(). * \param[in] offset The new position in bytes from the current position. * \return true for success or false for failure. */ - bool seekCur(int64_t offset) { - return seekSet(curPosition() + offset); - } + bool seekCur(int64_t offset) { return seekSet(curPosition() + offset); } /** Set the files position to end-of-file + \a offset. See seekSet(). * Can't be used for directory files since file size is not defined. * \param[in] offset The new position in bytes from end-of-file. * \return true for success or false for failure. */ - bool seekEnd(int64_t offset = 0) { - return seekSet(fileSize() + offset); - } + bool seekEnd(int64_t offset = 0) { return seekSet(fileSize() + offset); } /** Sets a file's position. * * \param[in] pos The new position in bytes from the beginning of the file. @@ -680,19 +801,19 @@ class FsBaseFile { * \return true for success or false for failure. */ bool seekSet(uint64_t pos) { - return m_fFile ? pos < (1ULL << 32) && m_fFile->seekSet(pos) : - m_xFile ? m_xFile->seekSet(pos) : false; + return m_fFile ? pos < (1ULL << 32) && m_fFile->seekSet((uint32_t)pos) + : m_xFile ? m_xFile->seekSet(pos) + : false; } /** \return the file's size. */ - uint64_t size() const {return fileSize();} + uint64_t size() const { return fileSize(); } /** The sync() call causes all modified data and directory fields * to be written to the storage device. * * \return true for success or false for failure. */ bool sync() { - return m_fFile ? m_fFile->sync() : - m_xFile ? m_xFile->sync() : false; + return m_fFile ? m_fFile->sync() : m_xFile ? m_xFile->sync() : false; } /** Set a file's timestamps in its directory entry. * @@ -728,19 +849,20 @@ class FsBaseFile { */ bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { - return m_fFile ? - m_fFile->timestamp(flags, year, month, day, hour, minute, second) : - m_xFile ? - m_xFile->timestamp(flags, year, month, day, hour, minute, second) : - false; + return m_fFile ? m_fFile->timestamp(flags, year, month, day, hour, minute, + second) + : m_xFile ? m_xFile->timestamp(flags, year, month, day, hour, minute, + second) + : false; } /** Truncate a file to the current position. * * \return true for success or false for failure. */ bool truncate() { - return m_fFile ? m_fFile->truncate() : - m_xFile ? m_xFile->truncate() : false; + return m_fFile ? m_fFile->truncate() + : m_xFile ? m_xFile->truncate() + : false; } /** Truncate a file to a specified length. * The current file position will be set to end of file. @@ -750,23 +872,22 @@ class FsBaseFile { * \return true for success or false for failure. */ bool truncate(uint64_t length) { - return m_fFile ? length < (1ULL << 32) && m_fFile->truncate(length) : - m_xFile ? m_xFile->truncate(length) : false; + return m_fFile ? length < (1ULL << 32) && m_fFile->truncate(length) + : m_xFile ? m_xFile->truncate(length) + : false; } /** Write a string to a file. Used by the Arduino Print class. * \param[in] str Pointer to the string. * Use getWriteError to check for errors. * \return count of characters written for success or -1 for failure. */ - size_t write(const char* str) { - return write(str, strlen(str)); - } + size_t write(const char* str) { return write(str, strlen(str)); } /** Write a byte to a file. Required by the Arduino Print class. * \param[in] b the byte to be written. * Use getWriteError to check for errors. * \return 1 for success and 0 for failure. */ - size_t write(uint8_t b) {return write(&b, 1);} + size_t write(uint8_t b) { return write(&b, 1); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -780,13 +901,14 @@ class FsBaseFile { * \a nbyte. If an error occurs, write() returns zero and writeError is set. */ size_t write(const void* buf, size_t count) { - return m_fFile ? m_fFile->write(buf, count) : - m_xFile ? m_xFile->write(buf, count) : 0; + return m_fFile ? m_fFile->write(buf, count) + : m_xFile ? m_xFile->write(buf, count) + : 0; } private: newalign_t m_fileMem[FS_ALIGN_DIM(ExFatFile, FatFile)]; - FatFile* m_fFile = nullptr; + FatFile* m_fFile = nullptr; ExFatFile* m_xFile = nullptr; }; /** diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFormatter.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFormatter.h similarity index 89% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFormatter.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFormatter.h index 0c5d3a0a..96266edd 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsFormatter.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsFormatter.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,14 +24,16 @@ */ #ifndef FsFormatter_h #define FsFormatter_h -#include "FatLib/FatLib.h" #include "ExFatLib/ExFatLib.h" +#include "FatLib/FatLib.h" /** * \class FsFormatter * \brief Format a exFAT/FAT volume. */ class FsFormatter { public: + /** Constructor. */ + FsFormatter() = default; /** * Format a FAT volume. * @@ -46,10 +48,10 @@ class FsFormatter { if (sectorCount == 0) { return false; } - return sectorCount <= 67108864 ? - m_fFmt.format(dev, secBuffer, pr) : - m_xFmt.format(dev, secBuffer, pr); + return sectorCount <= 67108864 ? m_fFmt.format(dev, secBuffer, pr) + : m_xFmt.format(dev, secBuffer, pr); } + private: FatFormatter m_fFmt; ExFatFormatter m_xFmt; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsLib.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsLib.h similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsLib.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsLib.h index 2539797a..97eeb07d 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsLib.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsLib.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,7 +28,7 @@ * \file * \brief FsLib include file. */ -#include "FsVolume.h" #include "FsFile.h" #include "FsFormatter.h" +#include "FsVolume.h" #endif // FsLib_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsNew.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsNew.cpp similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsNew.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsNew.cpp index f02acb73..b9063978 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsNew.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsNew.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsNew.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsNew.h similarity index 94% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsNew.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsNew.h index 9ca13f2b..1b19f865 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsNew.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsNew.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -36,7 +36,7 @@ typedef uint32_t newalign_t; /** Dimension of aligned area. */ #define NEW_ALIGN_DIM(n) \ - (((size_t)(n) + sizeof(newalign_t) - 1U)/sizeof(newalign_t)) + (((size_t)(n) + sizeof(newalign_t) - 1U) / sizeof(newalign_t)) /** Dimension of aligned area for etype or ftype class. */ #define FS_ALIGN_DIM(etype, ftype) NEW_ALIGN_DIM(FS_SIZE(etype, ftype)) diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsVolume.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsVolume.cpp similarity index 84% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsVolume.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsVolume.cpp index e36d6ce6..a578ff30 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsVolume.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsVolume.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,23 +25,22 @@ #include "FsLib.h" FsVolume* FsVolume::m_cwv = nullptr; //------------------------------------------------------------------------------ -bool FsVolume::begin(FsBlockDevice* blockDev, bool setCwv, uint8_t part) { - m_blockDev = blockDev; +bool FsVolume::begin(FsBlockDevice* blockDev, bool setCwv, uint8_t part, + uint32_t volStart) { m_fVol = nullptr; m_xVol = new (m_volMem) ExFatVolume; - if (m_xVol && m_xVol->begin(m_blockDev, false, part)) { + if (m_xVol && m_xVol->begin(blockDev, false, part, volStart)) { goto done; } m_xVol = nullptr; m_fVol = new (m_volMem) FatVolume; - if (m_fVol && m_fVol->begin(m_blockDev, false, part)) { + if (m_fVol && m_fVol->begin(blockDev, false, part, volStart)) { goto done; } - m_cwv = nullptr; m_fVol = nullptr; return false; - done: +done: if (setCwv || !m_cwv) { m_cwv = this; } @@ -53,14 +52,14 @@ bool FsVolume::ls(print_t* pr, const char* path, uint8_t flags) { return dir.open(this, path, O_RDONLY) && dir.ls(pr, flags); } //------------------------------------------------------------------------------ -FsFile FsVolume::open(const char *path, oflag_t oflag) { +FsFile FsVolume::open(const char* path, oflag_t oflag) { FsFile tmpFile; tmpFile.open(this, path, oflag); return tmpFile; } #if ENABLE_ARDUINO_STRING //------------------------------------------------------------------------------ -FsFile FsVolume::open(const String &path, oflag_t oflag) { - return open(path.c_str(), oflag ); +FsFile FsVolume::open(const String& path, oflag_t oflag) { + return open(path.c_str(), oflag); } #endif // ENABLE_ARDUINO_STRING diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsVolume.h b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsVolume.h similarity index 70% rename from extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsVolume.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsVolume.h index ec344b35..7a386e0b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/FsLib/FsVolume.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/FsLib/FsVolume.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,9 +28,9 @@ * \file * \brief FsVolume include file. */ -#include "FsNew.h" -#include "../FatLib/FatLib.h" #include "../ExFatLib/ExFatLib.h" +#include "../FatLib/FatLib.h" +#include "FsNew.h" class FsFile; /** @@ -39,54 +39,75 @@ class FsFile; */ class FsVolume { public: - FsVolume() {} - - ~FsVolume() {end();} + FsVolume() = default; + ~FsVolume() { end(); } + /** Get file's user settable attributes. + * \param[in] path path to file. + * \return user settable file attributes for success else -1. + */ + int attrib(const char* path) { + return m_fVol ? m_fVol->attrib(path) : m_xVol ? m_xVol->attrib(path) : -1; + } + /** Set file's user settable attributes. + * \param[in] path path to file. + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \return true for success or false for failure. + */ + bool attrib(const char* path, uint8_t bits) { + return m_fVol ? m_fVol->attrib(path, bits) + : m_xVol ? m_xVol->attrib(path, bits) + : false; + } /** * Initialize an FatVolume object. * \param[in] blockDev Device block driver. * \param[in] setCwv Set current working volume if true. * \param[in] part partition to initialize. + * \param[in] volStart Start sector of volume if part is zero. * \return true for success or false for failure. */ - bool begin(FsBlockDevice* blockDev, bool setCwv = true, uint8_t part = 1); + bool begin(FsBlockDevice* blockDev, bool setCwv = true, uint8_t part = 1, + uint32_t volStart = 0); #ifndef DOXYGEN_SHOULD_SKIP_THIS uint32_t __attribute__((error("use sectorsPerCluster()"))) blocksPerCluster(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** \return the number of bytes in a cluster. */ uint32_t bytesPerCluster() const { - return m_fVol ? m_fVol->bytesPerCluster() : - m_xVol ? m_xVol->bytesPerCluster() : 0; + return m_fVol ? m_fVol->bytesPerCluster() + : m_xVol ? m_xVol->bytesPerCluster() + : 0; } /** * Set volume working directory to root. * \return true for success or false for failure. */ bool chdir() { - return m_fVol ? m_fVol->chdir() : - m_xVol ? m_xVol->chdir() : false; + return m_fVol ? m_fVol->chdir() : m_xVol ? m_xVol->chdir() : false; } /** * Set volume working directory. * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const char* path) { - return m_fVol ? m_fVol->chdir(path) : - m_xVol ? m_xVol->chdir(path) : false; + bool chdir(const char* path) { + return m_fVol ? m_fVol->chdir(path) : m_xVol ? m_xVol->chdir(path) : false; } /** Change global working volume to this volume. */ - void chvol() {m_cwv = this;} + void chvol() { m_cwv = this; } /** \return The total number of clusters in the volume. */ uint32_t clusterCount() const { - return m_fVol ? m_fVol->clusterCount() : - m_xVol ? m_xVol->clusterCount() : 0; + return m_fVol ? m_fVol->clusterCount() + : m_xVol ? m_xVol->clusterCount() + : 0; } /** \return The logical sector number for the start of file data. */ uint32_t dataStartSector() const { - return m_fVol ? m_fVol->dataStartSector() : - m_xVol ? m_xVol->clusterHeapStartSector() : 0; + return m_fVol ? m_fVol->dataStartSector() + : m_xVol ? m_xVol->clusterHeapStartSector() + : 0; } /** End access to volume * \return pointer to sector size buffer for format. @@ -104,25 +125,27 @@ class FsVolume { * \return true if the file exists else false. */ bool exists(const char* path) { - return m_fVol ? m_fVol->exists(path) : - m_xVol ? m_xVol->exists(path) : false; + return m_fVol ? m_fVol->exists(path) + : m_xVol ? m_xVol->exists(path) + : false; } /** \return The logical sector number for the start of the first FAT. */ uint32_t fatStartSector() const { - return m_fVol ? m_fVol->fatStartSector() : - m_xVol ? m_xVol->fatStartSector() : 0; + return m_fVol ? m_fVol->fatStartSector() + : m_xVol ? m_xVol->fatStartSector() + : 0; } /** \return Partition type, FAT_TYPE_EXFAT, FAT_TYPE_FAT32, * FAT_TYPE_FAT16, or zero for error. */ uint8_t fatType() const { - return m_fVol ? m_fVol->fatType() : - m_xVol ? m_xVol->fatType() : 0; + return m_fVol ? m_fVol->fatType() : m_xVol ? m_xVol->fatType() : 0; } - /** \return the free cluster count. */ - uint32_t freeClusterCount() const { - return m_fVol ? m_fVol->freeClusterCount() : - m_xVol ? m_xVol->freeClusterCount() : 0; + /** \return free cluster count or -1 if an error occurs. */ + int32_t freeClusterCount() const { + return m_fVol ? m_fVol->freeClusterCount() + : m_xVol ? m_xVol->freeClusterCount() + : -1; } /** * Check for device busy. @@ -130,8 +153,7 @@ class FsVolume { * \return true if busy else false. */ bool isBusy() { - return m_fVol ? m_fVol->isBusy() : - m_xVol ? m_xVol->isBusy() : false; + return m_fVol ? m_fVol->isBusy() : m_xVol ? m_xVol->isBusy() : false; } /** List directory contents. * @@ -140,8 +162,7 @@ class FsVolume { * \return true for success or false for failure. */ bool ls(print_t* pr) { - return m_fVol ? m_fVol->ls(pr) : - m_xVol ? m_xVol->ls(pr) : false; + return m_fVol ? m_fVol->ls(pr) : m_xVol ? m_xVol->ls(pr) : false; } /** List directory contents. * @@ -157,8 +178,9 @@ class FsVolume { * \return true for success or false for failure. */ bool ls(print_t* pr, uint8_t flags) { - return m_fVol ? m_fVol->ls(pr, flags) : - m_xVol ? m_xVol->ls(pr, flags) : false; + return m_fVol ? m_fVol->ls(pr, flags) + : m_xVol ? m_xVol->ls(pr, flags) + : false; } /** List the directory contents of a directory. * @@ -177,7 +199,7 @@ class FsVolume { * \return true for success or false for failure. */ bool ls(print_t* pr, const char* path, uint8_t flags); - /** Make a subdirectory in the volume root directory. + /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. * @@ -185,9 +207,10 @@ class FsVolume { * * \return true for success or false for failure. */ - bool mkdir(const char *path, bool pFlag = true) { - return m_fVol ? m_fVol->mkdir(path, pFlag) : - m_xVol ? m_xVol->mkdir(path, pFlag) : false; + bool mkdir(const char* path, bool pFlag = true) { + return m_fVol ? m_fVol->mkdir(path, pFlag) + : m_xVol ? m_xVol->mkdir(path, pFlag) + : false; } /** open a file * @@ -197,14 +220,15 @@ class FsVolume { */ FsFile open(const char* path, oflag_t oflag = O_RDONLY); /** Remove a file from the volume root directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * + * + * \param[in] path A path with a valid 8.3 DOS name for the file. + * * \return true for success or false for failure. - */ - bool remove(const char *path) { - return m_fVol ? m_fVol->remove(path) : - m_xVol ? m_xVol->remove(path) : false; + */ + bool remove(const char* path) { + return m_fVol ? m_fVol->remove(path) + : m_xVol ? m_xVol->remove(path) + : false; } /** Rename a file or subdirectory. * @@ -220,9 +244,10 @@ class FsVolume { * * \return true for success or false for failure. */ - bool rename(const char *oldPath, const char *newPath) { - return m_fVol ? m_fVol->rename(oldPath, newPath) : - m_xVol ? m_xVol->rename(oldPath, newPath) : false; + bool rename(const char* oldPath, const char* newPath) { + return m_fVol ? m_fVol->rename(oldPath, newPath) + : m_xVol ? m_xVol->rename(oldPath, newPath) + : false; } /** Remove a subdirectory from the volume's root directory. * @@ -232,22 +257,20 @@ class FsVolume { * * \return true for success or false for failure. */ - bool rmdir(const char *path) { - return m_fVol ? m_fVol->rmdir(path) : - m_xVol ? m_xVol->rmdir(path) : false; + bool rmdir(const char* path) { + return m_fVol ? m_fVol->rmdir(path) : m_xVol ? m_xVol->rmdir(path) : false; } /** \return The volume's cluster size in sectors. */ uint32_t sectorsPerCluster() const { - return m_fVol ? m_fVol->sectorsPerCluster() : - m_xVol ? m_xVol->sectorsPerCluster() : 0; + return m_fVol ? m_fVol->sectorsPerCluster() + : m_xVol ? m_xVol->sectorsPerCluster() + : 0; } #if ENABLE_ARDUINO_SERIAL /** List directory contents. * \return true for success or false for failure. */ - bool ls() { - return ls(&Serial); - } + bool ls() { return ls(&Serial); } /** List directory contents. * * \param[in] flags The inclusive OR of @@ -260,9 +283,7 @@ class FsVolume { * * \return true for success or false for failure. */ - bool ls(uint8_t flags) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags) { return ls(&Serial, flags); } /** List the directory contents of a directory to Serial. * * \param[in] path directory to list. @@ -289,18 +310,14 @@ class FsVolume { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const String& path) { - return chdir(path.c_str()); - } + bool chdir(const String& path) { return chdir(path.c_str()); } /** Test for the existence of a file in a directory * * \param[in] path Path of the file to be tested for. * * \return true if the file exists else false. */ - bool exists(const String &path) { - return exists(path.c_str()); - } + bool exists(const String& path) { return exists(path.c_str()); } /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. @@ -309,7 +326,7 @@ class FsVolume { * * \return true for success or false for failure. */ - bool mkdir(const String &path, bool pFlag = true) { + bool mkdir(const String& path, bool pFlag = true) { return mkdir(path.c_str(), pFlag); } /** open a file @@ -318,16 +335,14 @@ class FsVolume { * \param[in] oflag open flags. * \return a FsBaseFile object. */ - FsFile open(const String &path, oflag_t oflag = O_RDONLY); + FsFile open(const String& path, oflag_t oflag = O_RDONLY); /** Remove a file from the volume root directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * + * + * \param[in] path A path with a valid 8.3 DOS name for the file. + * * \return true for success or false for failure. - */ - bool remove(const String &path) { - return remove(path.c_str()); - } + */ + bool remove(const String& path) { return remove(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -353,9 +368,7 @@ class FsVolume { * * \return true for success or false for failure. */ - bool rmdir(const String &path) { - return rmdir(path.c_str()); - } + bool rmdir(const String& path) { return rmdir(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -373,18 +386,17 @@ class FsVolume { #endif // ENABLE_ARDUINO_STRING protected: - newalign_t m_volMem[FS_ALIGN_DIM(ExFatVolume, FatVolume)]; + newalign_t m_volMem[FS_ALIGN_DIM(ExFatVolume, FatVolume)]; private: /** FsBaseFile allowed access to private members. */ friend class FsBaseFile; - static FsVolume* cwv() {return m_cwv;} + static FsVolume* cwv() { return m_cwv; } FsVolume(const FsVolume& from); FsVolume& operator=(const FsVolume& from); static FsVolume* m_cwv; - FatVolume* m_fVol = nullptr; + FatVolume* m_fVol = nullptr; ExFatVolume* m_xVol = nullptr; - FsBlockDevice* m_blockDev; }; #endif // FsVolume_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/MinimumSerial.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/MinimumSerial.cpp similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/MinimumSerial.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/MinimumSerial.cpp index 50eeb00d..6a9259a9 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/MinimumSerial.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/MinimumSerial.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,14 +22,11 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "common/SysCall.h" -#if defined(UDR0) || defined(DOXYGEN) #include "MinimumSerial.h" -const uint16_t MIN_2X_BAUD = F_CPU/(4*(2*0XFFF + 1)) + 1; +#if defined(UDR0) || defined(DOXYGEN) +const uint16_t MIN_2X_BAUD = F_CPU / (4 * (2 * 0XFFF + 1)) + 1; //------------------------------------------------------------------------------ -int MinimumSerial::available() { - return UCSR0A & (1 << RXC0) ? 1 : 0; -} +int MinimumSerial::available() { return UCSR0A & (1 << RXC0) ? 1 : 0; } //------------------------------------------------------------------------------ void MinimumSerial::begin(uint32_t baud) { uint16_t baud_setting; @@ -53,7 +50,8 @@ void MinimumSerial::begin(uint32_t baud) { } //------------------------------------------------------------------------------ void MinimumSerial::flush() { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} + while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) { + } } //------------------------------------------------------------------------------ int MinimumSerial::read() { @@ -64,7 +62,8 @@ int MinimumSerial::read() { } //------------------------------------------------------------------------------ size_t MinimumSerial::write(uint8_t b) { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} + while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) { + } UDR0 = b; return 1; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/MinimumSerial.h b/extra-libraries/ESP32/SdFat-2.2.3/src/MinimumSerial.h similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/src/MinimumSerial.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/MinimumSerial.h index 951db128..7e232a31 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/MinimumSerial.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/MinimumSerial.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,7 +22,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ - /** +/** * \file * \brief Minimal AVR Serial driver. */ @@ -37,7 +37,7 @@ class MinimumSerial : public print_t { public: /** \return true for hardware serial */ - operator bool() {return true;} + operator bool() { return true; } /** * \return one if data is available. */ diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/RingBuf.h b/extra-libraries/ESP32/SdFat-2.2.3/src/RingBuf.h similarity index 56% rename from extra-libraries/ESP32/SdFat-2.1.2/src/RingBuf.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/RingBuf.h index a224fdf0..f796768c 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/RingBuf.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/RingBuf.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,22 +28,22 @@ * \file * \brief Ring buffer for data loggers. */ -#include "common/SysCall.h" #include "common/FmtNumber.h" +#include "common/SysCall.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS // Teensy 3.5/3.6 has hard fault at 0x20000000 for unaligned memcpy. #if defined(__MK64FX512__) || defined(__MK66FX1M0__) inline bool is_aligned(const void* ptr, uintptr_t alignment) { - auto iptr = reinterpret_cast(ptr); - return !(iptr % alignment); + auto iptr = reinterpret_cast(ptr); + return !(iptr % alignment); } inline void memcpyBuf(void* dst, const void* src, size_t len) { const uint8_t* b = reinterpret_cast(0X20000000UL); uint8_t* d = reinterpret_cast(dst); - const uint8_t *s = reinterpret_cast(src); + const uint8_t* s = reinterpret_cast(src); if ((is_aligned(d, 4) && is_aligned(s, 4) && (len & 3) == 0) || - !((d < b && b <= (d + len)) || (s < b && b <= (s + len)))) { + !((d < b && b <= (d + len)) || (s < b && b <= (s + len)))) { memcpy(dst, src, len); } else { while (len--) { @@ -51,7 +51,7 @@ inline void memcpyBuf(void* dst, const void* src, size_t len) { } } } -#else // defined(__MK64FX512__) || defined(__MK66FX1M0__) +#else // defined(__MK64FX512__) || defined(__MK66FX1M0__) inline void memcpyBuf(void* dst, const void* src, size_t len) { memcpy(dst, src, len); } @@ -59,23 +59,22 @@ inline void memcpyBuf(void* dst, const void* src, size_t len) { #endif // DOXYGEN_SHOULD_SKIP_THIS /** * \class RingBuf - * \brief Ring buffer for data loggers. + * \brief Ring buffer for data loggers and data transmitters. * - * This ring buffer may be used in ISRs. bytesFreeIsr(), bytesUsedIsr(), - * memcopyIn(), and memcopyOut() are ISR callable. For ISR use call - * memcopyIn() in the ISR and use writeOut() in non-interrupt code - * to write data to a file. readIn() and memcopyOut can be use in a - * similar way to provide file data to an ISR. + * This ring buffer may be used in ISRs. Use beginISR(), endISR(), write() + * and print() in the ISR and use writeOut() in non-interrupt code + * to write data to a file. * - * Print into a RingBuf in an ISR should also work but has not been verified. + * Use beginISR(), endISR() and read() in an ISR with readIn() in non-interrupt + * code to provide file data to an ISR. */ -template +template class RingBuf : public Print { public: /** * RingBuf Constructor. */ - RingBuf() {} + RingBuf() { begin(nullptr); } /** * Initialize RingBuf. * \param[in] file Underlying file. @@ -85,97 +84,41 @@ class RingBuf : public Print { m_count = 0; m_head = 0; m_tail = 0; + m_inISR = false; clearWriteError(); } /** - * - * \return the RingBuf free space in bytes. Not ISR callable. + * Disable protection of m_count by noInterrupts()/interrupts. */ - size_t bytesFree() const { - size_t count; - noInterrupts(); - count = m_count; - interrupts(); - return Size - count; - } + void beginISR() { m_inISR = true; } /** - * \return the RingBuf free space in bytes. ISR callable. + * \return the RingBuf free space in bytes. */ - size_t bytesFreeIsr() const { - return Size - m_count; - } + size_t bytesFree() const { return Size - bytesUsed(); } /** - * \return the RingBuf used space in bytes. Not ISR callable. + * \return the RingBuf used space in bytes. */ size_t bytesUsed() const { - size_t count; - noInterrupts(); - count = m_count; - interrupts(); - return count; + if (m_inISR) { + return m_count; + } else { + noInterrupts(); + size_t rtn = m_count; + interrupts(); + return rtn; + } } /** - * \return the RingBuf used space in bytes. ISR callable. + * Enable protection of m_count by noInterrupts()/interrupts. */ - size_t bytesUsedIsr() const { - return m_count; - } - /** - * Copy data to the RingBuf from buf. - * The number of bytes copied may be less than count if - * count is greater than bytesFree. - * - * This function may be used in an ISR with writeOut() - * in non-interrupt code. - * - * \param[in] buf Location of data to be copied. - * \param[in] count number of bytes to be copied. - * \return Number of bytes actually copied. - */ - size_t memcpyIn(const void* buf, size_t count) { - const uint8_t* src = (const uint8_t*)buf; - size_t n = Size - m_count; - if (count > n) { - count = n; - } - size_t nread = 0; - while (nread != count) { - n = minSize(Size - m_head, count - nread); - memcpyBuf(m_buf + m_head, src + nread, n); - m_head = advance(m_head, n); - nread += n; - } - m_count += nread; - return nread; - } - /** - * Copy date from the RingBuf to buf. - * The number of bytes copied may be less than count if - * bytesUsed is less than count. - * - * This function may be used in an ISR with readIn() in - * non-interrupt code. - * - * \param[out] buf Location to receive the data. - * \param[in] count number of bytes to be copied. - * \return Number of bytes actually copied. - */ - size_t memcpyOut(void* buf, size_t count) { - uint8_t* dst = reinterpret_cast(buf); - size_t nwrite = 0; - size_t n = m_count; - if (count > n) { - count = n; - } - while (nwrite != count) { - n = minSize(Size - m_tail, count - nwrite); - memcpyBuf(dst + nwrite, m_buf + m_tail, n); - m_tail = advance(m_tail, n); - nwrite += n; - } - m_count -= nwrite; - return nwrite; - } + void endISR() { m_inISR = false; } +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // See write(), read(), beginISR() and endISR(). + size_t __attribute__((error("use write(buf, count), beginISR(), endISR()"))) + memcpyIn(const void* buf, size_t count); + size_t __attribute__((error("use read(buf, count), beginISR(), endISR()"))) + memcpyOut(void* buf, size_t count); +#endif // DOXYGEN_SHOULD_SKIP_THIS /** Print a number followed by a field terminator. * \param[in] value The number to be printed. * \param[in] term The field terminator. Use '\\n' for CR LF. @@ -211,7 +154,7 @@ class RingBuf : public Print { template size_t printField(Type value, char term) { char sign = 0; - char buf[3*sizeof(Type) + 3]; + char buf[3 * sizeof(Type) + 3]; char* str = buf + sizeof(buf); if (term) { @@ -234,34 +177,77 @@ class RingBuf : public Print { } return write((const uint8_t*)str, &buf[sizeof(buf)] - str); } + /** Read data from RingBuf. + * \param[out] buf destination for data. + * \param[in] count number of bytes to read. + * \return Actual count of bytes read. + */ + size_t read(void* buf, size_t count) { + size_t n = bytesFree(); + if (count > n) { + count = n; + } + uint8_t* dst = reinterpret_cast(buf); + n = minSize(Size - m_tail, count); + if (n == count) { + memcpyBuf(dst, m_buf + m_tail, n); + m_tail = advance(m_tail, n); + } else { + memcpyBuf(dst, m_buf + m_tail, n); + memcpyBuf(dst + n, m_buf, count - n); + m_tail = count - n; + } + adjustCount(-count); + return count; + } + /** + * Efficient read for small types. + * + * \param[in] data location for data item. + * \return true for success else false. + */ + template + bool read(Type* data) { + if (bytesUsed() < sizeof(Type)) { + return false; + } + uint8_t* ptr = reinterpret_cast(data); + for (size_t i = 0; i < sizeof(Type); i++) { + ptr[i] = m_buf[m_tail]; + m_tail = advance(m_tail); + } + adjustCount(-sizeof(Type)); + return true; + } /** * Read data into the RingBuf from the underlying file. * the number of bytes read may be less than count if * bytesFree is less than count. * - * This function may be used in non-interrupt code with - * memcopyOut() in an ISR. + * This function must not be used in an ISR. * * \param[in] count number of bytes to be read. - * \return Number of bytes actually read. + * \return Number of bytes actually read or negative for read error. */ - size_t readIn(size_t count) { - size_t nread = 0; - size_t n = bytesFree(); // Protected from interrupts. + int readIn(size_t count) { + size_t n = bytesFree(); if (count > n) { count = n; } - while (nread != count) { - n = minSize(Size - m_head, count - nread); - if ((size_t)m_file->read(m_buf + m_head, n) != n) { - return nread; - } - m_head = advance(m_head, n); - nread += n; + n = minSize(Size - m_head, count); + auto rtn = m_file->read(m_buf + m_head, n); + if (rtn <= 0) { + return rtn; } - noInterrupts(); - m_count += nread; - interrupts(); + size_t nread = rtn; + if (n < count && nread == n) { + rtn = m_file->read(m_buf, count - n); + if (rtn > 0) { + nread += rtn; + } + } + m_head = advance(m_head, nread); + adjustCount(nread); return nread; } /** @@ -270,25 +256,36 @@ class RingBuf : public Print { */ bool sync() { size_t n = bytesUsed(); - return writeOut(n) == n; + return n ? writeOut(n) == n : true; } /** * Copy data to the RingBuf from buf. * - * The number of bytes copied may be less than count if - * count is greater than bytesFree. + * No data will be copied if count is greater than bytesFree. * Use getWriteError() to check for print errors and - * clearWriteError() to clear error. + * clearWriteError() to clear the error. * * \param[in] buf Location of data to be written. * \param[in] count number of bytes to be written. * \return Number of bytes actually written. */ size_t write(const void* buf, size_t count) { - if (count > bytesFree()) { + if (bytesFree() < count) { setWriteError(); + return 0; } - return memcpyIn(buf, count); + const uint8_t* src = (const uint8_t*)buf; + size_t n = minSize(Size - m_head, count); + if (n == count) { + memcpyBuf(m_buf + m_head, src, n); + m_head = advance(m_head, n); + } else { + memcpyBuf(m_buf + m_head, src, n); + memcpyBuf(m_buf, src + n, count - n); + m_head = count - n; + } + adjustCount(count); + return count; } /** * Copy str to RingBuf. @@ -296,9 +293,7 @@ class RingBuf : public Print { * \param[in] str Location of data to be written. * \return Number of bytes actually written. */ - size_t write(const char* str) { - return Print::write(str); - } + size_t write(const char* str) { return Print::write(str); } /** * Override virtual function in Print for efficiency. * @@ -309,13 +304,35 @@ class RingBuf : public Print { size_t write(const uint8_t* buf, size_t count) override { return write((const void*)buf, count); } + /** + * Efficient write for small types. + * \param[in] data Item to be written. + * \return Number of bytes actually written. + */ + template + size_t write(Type data) { + uint8_t* ptr = reinterpret_cast(&data); + if (bytesFree() < sizeof(Type)) { + setWriteError(); + return 0; + } + for (size_t i = 0; i < sizeof(Type); i++) { + m_buf[m_head] = ptr[i]; + m_head = advance(m_head); + } + adjustCount(sizeof(Type)); + return sizeof(Type); + } /** * Required function for Print. * \param[in] data Byte to be written. * \return Number of bytes actually written. + * + * Try to force devirtualization by using final and always_inline. */ - size_t write(uint8_t data) override { - return write(&data, 1); + size_t write(uint8_t data) final __attribute__((always_inline)) { + // Use this if above does not compile size_t write(uint8_t data) final { + return write(data); } /** * Write data to file from RingBuf buffer. @@ -324,43 +341,60 @@ class RingBuf : public Print { * The number of bytes written may be less than count if * bytesUsed is less than count or if an error occurs. * - * This function may be used in non-interrupt code with - * memcopyIn() in an ISR. + * This function must only be used in non-interrupt code. * * \return Number of bytes actually written. */ size_t writeOut(size_t count) { size_t n = bytesUsed(); // Protected from interrupts; - if (count > n) { + if (count > n) { count = n; } - size_t nwrite = 0; - while (nwrite != count) { - n = minSize(Size - m_tail, count - nwrite); - if (m_file->write(m_buf + m_tail, n) != n) { - break; - } - m_tail = advance(m_tail, n); - nwrite += n; + n = minSize(Size - m_tail, count); + auto rtn = m_file->write(m_buf + m_tail, n); + if (rtn <= 0) { + return 0; } - noInterrupts(); - m_count -= nwrite; - interrupts(); + size_t nwrite = rtn; + if (n < count && nwrite == n) { + rtn = m_file->write(m_buf, count - n); + if (rtn > 0) { + nwrite += rtn; + } + } + m_tail = advance(m_tail, nwrite); + adjustCount(-nwrite); return nwrite; } private: uint8_t __attribute__((aligned(4))) m_buf[Size]; - F* m_file = nullptr; + F* m_file; volatile size_t m_count; size_t m_head; size_t m_tail; + volatile bool m_inISR; + void adjustCount(int amount) { + if (m_inISR) { + m_count += amount; + } else { + noInterrupts(); + m_count += amount; + interrupts(); + } + } + size_t advance(size_t index) { + if (!((Size - 1) & Size)) { + return (index + 1) & (Size - 1); + } + return index + 1 < Size ? index + 1 : 0; + } size_t advance(size_t index, size_t n) { index += n; return index < Size ? index : index - Size; } // avoid macro MIN - size_t minSize(size_t a, size_t b) {return a < b ? a : b;} + size_t minSize(size_t a, size_t b) { return a < b ? a : b; } }; #endif // RingBuf_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/CPPLINT.cfg b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/CPPLINT.cfg similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/CPPLINT.cfg rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/CPPLINT.cfg diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCard.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCard.h similarity index 80% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCard.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCard.h index dd5172b4..86697bbd 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCard.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCard.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,13 +22,19 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Top level include for SPI and SDIO cards. + */ #ifndef SdCard_h #define SdCard_h -#include "SdioCard.h" #include "SdSpiCard.h" +#include "SdioCard.h" #if HAS_SDIO_CLASS +/** Type for both SPI and SDIO cards. */ typedef SdCardInterface SdCard; -#else // HAS_SDIO_CLASS +#else // HAS_SDIO_CLASS +/** Type for SPI card. */ typedef SdSpiCard SdCard; #endif // HAS_SDIO_CLASS /** Determine card configuration type. @@ -36,13 +42,19 @@ typedef SdSpiCard SdCard; * \param[in] cfg Card configuration. * \return true if SPI. */ -inline bool isSpi(SdSpiConfig cfg) {(void)cfg; return true;} +inline bool isSpi(SdSpiConfig cfg) { + (void)cfg; + return true; +} /** Determine card configuration type. * * \param[in] cfg Card configuration. * \return true if SPI. */ -inline bool isSpi(SdioConfig cfg) {(void)cfg; return false;} +inline bool isSpi(SdioConfig cfg) { + (void)cfg; + return false; +} /** * \class SdCardFactory * \brief Setup a SPI card or SDIO card. @@ -52,11 +64,10 @@ class SdCardFactory { /** Initialize SPI card. * * \param[in] config SPI configuration. - * \return generic card pointer. + * \return generic card pointer or nullptr if failure. */ SdCard* newCard(SdSpiConfig config) { - m_spiCard.begin(config); - return &m_spiCard; + return m_spiCard.begin(config) ? &m_spiCard : nullptr; } /** Initialize SDIO card. * @@ -65,9 +76,8 @@ class SdCardFactory { */ SdCard* newCard(SdioConfig config) { #if HAS_SDIO_CLASS - m_sdioCard.begin(config); - return &m_sdioCard; -#else // HAS_SDIO_CLASS + return m_sdioCard.begin(config) ? &m_sdioCard : nullptr; +#else // HAS_SDIO_CLASS (void)config; return nullptr; #endif // HAS_SDIO_CLASS diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.cpp similarity index 81% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.cpp index 5705a305..f3a52f2a 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,21 +25,28 @@ #include "SdCardInfo.h" //------------------------------------------------------------------------------ #undef SD_CARD_ERROR -#define SD_CARD_ERROR(e, m) case SD_CARD_ERROR_##e: pr->print(F(#e)); break; +#define SD_CARD_ERROR(e, m) \ + case SD_CARD_ERROR_##e: \ + pr->print(F(#e)); \ + break; void printSdErrorSymbol(print_t* pr, uint8_t code) { pr->print(F("SD_CARD_ERROR_")); switch (code) { SD_ERROR_CODE_LIST - default: pr->print(F("UNKNOWN")); + default: + pr->print(F("UNKNOWN")); } } //------------------------------------------------------------------------------ #undef SD_CARD_ERROR -#define SD_CARD_ERROR(e, m) case SD_CARD_ERROR_##e: pr->print(F(m)); break; +#define SD_CARD_ERROR(e, m) \ + case SD_CARD_ERROR_##e: \ + pr->print(F(m)); \ + break; void printSdErrorText(print_t* pr, uint8_t code) { - switch - (code) { + switch (code) { SD_ERROR_CODE_LIST - default: pr->print(F("Unknown error")); + default: + pr->print(F("Unknown error")); } } diff --git a/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.h new file mode 100644 index 00000000..9ef7f75b --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInfo.h @@ -0,0 +1,477 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/** + * \file + * \brief Definitions for SD cards. + */ +#ifndef SdCardInfo_h +#define SdCardInfo_h +#include + +#include "../common/SysCall.h" +// Based on the document: +// +// SD Specifications +// Part 1 +// Physical Layer +// Simplified Specification +// Version 8.00 +// Sep 23, 2020 +// +// https://www.sdcard.org/downloads/pls/ +#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ +// SD registers are big endian. +#error bit fields in structures assume little endian processor. +#endif // __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ +//------------------------------------------------------------------------------ +// SD card errors +// See the SD Specification for command info. +/** Define error codes and brief description. */ +#define SD_ERROR_CODE_LIST \ + SD_CARD_ERROR(NONE, "No error") \ + SD_CARD_ERROR(CMD0, "Card reset failed") \ + SD_CARD_ERROR(CMD2, "SDIO read CID") \ + SD_CARD_ERROR(CMD3, "SDIO publish RCA") \ + SD_CARD_ERROR(CMD6, "Switch card function") \ + SD_CARD_ERROR(CMD7, "SDIO card select") \ + SD_CARD_ERROR(CMD8, "Send and check interface settings") \ + SD_CARD_ERROR(CMD9, "Read CSD data") \ + SD_CARD_ERROR(CMD10, "Read CID data") \ + SD_CARD_ERROR(CMD12, "Stop multiple block transmission") \ + SD_CARD_ERROR(CMD13, "Read card status") \ + SD_CARD_ERROR(CMD17, "Read single block") \ + SD_CARD_ERROR(CMD18, "Read multiple blocks") \ + SD_CARD_ERROR(CMD24, "Write single block") \ + SD_CARD_ERROR(CMD25, "Write multiple blocks") \ + SD_CARD_ERROR(CMD32, "Set first erase block") \ + SD_CARD_ERROR(CMD33, "Set last erase block") \ + SD_CARD_ERROR(CMD38, "Erase selected blocks") \ + SD_CARD_ERROR(CMD58, "Read OCR register") \ + SD_CARD_ERROR(CMD59, "Set CRC mode") \ + SD_CARD_ERROR(ACMD6, "Set SDIO bus width") \ + SD_CARD_ERROR(ACMD13, "Read extended status") \ + SD_CARD_ERROR(ACMD23, "Set pre-erased count") \ + SD_CARD_ERROR(ACMD41, "Activate card initialization") \ + SD_CARD_ERROR(ACMD51, "Read SCR data") \ + SD_CARD_ERROR(READ_TOKEN, "Bad read data token") \ + SD_CARD_ERROR(READ_CRC, "Read CRC error") \ + SD_CARD_ERROR(READ_FIFO, "SDIO fifo read timeout") \ + SD_CARD_ERROR(READ_REG, "Read CID or CSD failed.") \ + SD_CARD_ERROR(READ_START, "Bad readStart argument") \ + SD_CARD_ERROR(READ_TIMEOUT, "Read data timeout") \ + SD_CARD_ERROR(STOP_TRAN, "Multiple block stop failed") \ + SD_CARD_ERROR(TRANSFER_COMPLETE, "SDIO transfer complete") \ + SD_CARD_ERROR(WRITE_DATA, "Write data not accepted") \ + SD_CARD_ERROR(WRITE_FIFO, "SDIO fifo write timeout") \ + SD_CARD_ERROR(WRITE_START, "Bad writeStart argument") \ + SD_CARD_ERROR(WRITE_PROGRAMMING, "Flash programming") \ + SD_CARD_ERROR(WRITE_TIMEOUT, "Write timeout") \ + SD_CARD_ERROR(DMA, "DMA transfer failed") \ + SD_CARD_ERROR(ERASE, "Card did not accept erase commands") \ + SD_CARD_ERROR(ERASE_SINGLE_SECTOR, "Card does not support erase") \ + SD_CARD_ERROR(ERASE_TIMEOUT, "Erase command timeout") \ + SD_CARD_ERROR(INIT_NOT_CALLED, "Card has not been initialized") \ + SD_CARD_ERROR(INVALID_CARD_CONFIG, "Invalid card config") \ + SD_CARD_ERROR(FUNCTION_NOT_SUPPORTED, "Unsupported SDIO command") + +enum { +/** Macro for generation of error codes using an enum. */ +#define SD_CARD_ERROR(e, m) SD_CARD_ERROR_##e, + SD_ERROR_CODE_LIST +#undef SD_CARD_ERROR + SD_CARD_ERROR_UNKNOWN +}; +/** Print the enum symbol for an error code. + * \param[in] pr Print stream. + * \param[in] code enum value for error. + */ +void printSdErrorSymbol(print_t* pr, uint8_t code); +/** Print text for an error code. + * \param[in] pr Print stream. + * \param[in] code enum value for error. + */ +void printSdErrorText(print_t* pr, uint8_t code); +//------------------------------------------------------------------------------ +// card types +/** Standard capacity V1 SD card */ +const uint8_t SD_CARD_TYPE_SD1 = 1; +/** Standard capacity V2 SD card */ +const uint8_t SD_CARD_TYPE_SD2 = 2; +/** High Capacity SD card */ +const uint8_t SD_CARD_TYPE_SDHC = 3; +//------------------------------------------------------------------------------ +// SD operation timeouts +/** command timeout ms */ +const uint16_t SD_CMD_TIMEOUT = 300; +/** erase timeout ms */ +const uint16_t SD_ERASE_TIMEOUT = 10000; +/** init timeout ms */ +const uint16_t SD_INIT_TIMEOUT = 2000; +/** read timeout ms */ +const uint16_t SD_READ_TIMEOUT = 300; +/** write time out ms */ +const uint16_t SD_WRITE_TIMEOUT = 600; +//------------------------------------------------------------------------------ +// SD card commands +/** GO_IDLE_STATE - init card in spi mode if CS low */ +const uint8_t CMD0 = 0X00; +/** ALL_SEND_CID - Asks any card to send the CID. */ +const uint8_t CMD2 = 0X02; +/** SEND_RELATIVE_ADDR - Ask the card to publish a new RCA. */ +const uint8_t CMD3 = 0X03; +/** SWITCH_FUNC - Switch Function Command */ +const uint8_t CMD6 = 0X06; +/** SELECT/DESELECT_CARD - toggles between the stand-by and transfer states. */ +const uint8_t CMD7 = 0X07; +/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ +const uint8_t CMD8 = 0X08; +/** SEND_CSD - read the Card Specific Data (CSD register) */ +const uint8_t CMD9 = 0X09; +/** SEND_CID - read the card identification information (CID register) */ +const uint8_t CMD10 = 0X0A; +/** VOLTAGE_SWITCH -Switch to 1.8V bus signaling level. */ +const uint8_t CMD11 = 0X0B; +/** STOP_TRANSMISSION - end multiple sector read sequence */ +const uint8_t CMD12 = 0X0C; +/** SEND_STATUS - read the card status register */ +const uint8_t CMD13 = 0X0D; +/** READ_SINGLE_SECTOR - read a single data sector from the card */ +const uint8_t CMD17 = 0X11; +/** READ_MULTIPLE_SECTOR - read multiple data sectors from the card */ +const uint8_t CMD18 = 0X12; +/** WRITE_SECTOR - write a single data sector to the card */ +const uint8_t CMD24 = 0X18; +/** WRITE_MULTIPLE_SECTOR - write sectors of data until a STOP_TRANSMISSION */ +const uint8_t CMD25 = 0X19; +/** ERASE_WR_BLK_START - sets the address of the first sector to be erased */ +const uint8_t CMD32 = 0X20; +/** ERASE_WR_BLK_END - sets the address of the last sector of the continuous + range to be erased*/ +const uint8_t CMD33 = 0X21; +/** ERASE - erase all previously selected sectors */ +const uint8_t CMD38 = 0X26; +/** APP_CMD - escape for application specific command */ +const uint8_t CMD55 = 0X37; +/** READ_OCR - read the OCR register of a card */ +const uint8_t CMD58 = 0X3A; +/** CRC_ON_OFF - enable or disable CRC checking */ +const uint8_t CMD59 = 0X3B; +/** SET_BUS_WIDTH - Defines the data bus width for data transfer. */ +const uint8_t ACMD6 = 0X06; +/** SD_STATUS - Send the SD Status. */ +const uint8_t ACMD13 = 0X0D; +/** SET_WR_BLK_ERASE_COUNT - Set the number of write sectors to be + pre-erased before writing */ +const uint8_t ACMD23 = 0X17; +/** SD_SEND_OP_COMD - Sends host capacity support information and + activates the card's initialization process */ +const uint8_t ACMD41 = 0X29; +/** Reads the SD Configuration Register (SCR). */ +const uint8_t ACMD51 = 0X33; +//============================================================================== +// CARD_STATUS +/** The command's argument was out of the allowed range for this card. */ +const uint32_t CARD_STATUS_OUT_OF_RANGE = 1UL << 31; +/** A misaligned address which did not match the sector length. */ +const uint32_t CARD_STATUS_ADDRESS_ERROR = 1UL << 30; +/** The transferred sector length is not allowed for this card. */ +const uint32_t CARD_STATUS_SECTOR_LEN_ERROR = 1UL << 29; +/** An error in the sequence of erase commands occurred. */ +const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL << 28; +/** An invalid selection of write-sectors for erase occurred. */ +const uint32_t CARD_STATUS_ERASE_PARAM = 1UL << 27; +/** Set when the host attempts to write to a protected sector. */ +const uint32_t CARD_STATUS_WP_VIOLATION = 1UL << 26; +/** When set, signals that the card is locked by the host. */ +const uint32_t CARD_STATUS_CARD_IS_LOCKED = 1UL << 25; +/** Set when a sequence or password error has been detected. */ +const uint32_t CARD_STATUS_LOCK_UNLOCK_FAILED = 1UL << 24; +/** The CRC check of the previous command failed. */ +const uint32_t CARD_STATUS_COM_CRC_ERROR = 1UL << 23; +/** Command not legal for the card state. */ +const uint32_t CARD_STATUS_ILLEGAL_COMMAND = 1UL << 22; +/** Card internal ECC was applied but failed to correct the data. */ +const uint32_t CARD_STATUS_CARD_ECC_FAILED = 1UL << 21; +/** Internal card controller error */ +const uint32_t CARD_STATUS_CC_ERROR = 1UL << 20; +/** A general or an unknown error occurred during the operation. */ +const uint32_t CARD_STATUS_ERROR = 1UL << 19; +// bits 19, 18, and 17 reserved. +/** Permanent WP set or attempt to change read only values of CSD. */ +const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL << 16; +/** partial address space was erased due to write protect. */ +const uint32_t CARD_STATUS_WP_ERASE_SKIP = 1UL << 15; +/** The command has been executed without using the internal ECC. */ +const uint32_t CARD_STATUS_CARD_ECC_DISABLED = 1UL << 14; +/** out of erase sequence command was received. */ +const uint32_t CARD_STATUS_ERASE_RESET = 1UL << 13; +/** The state of the card when receiving the command. + * 0 = idle + * 1 = ready + * 2 = ident + * 3 = stby + * 4 = tran + * 5 = data + * 6 = rcv + * 7 = prg + * 8 = dis + * 9-14 = reserved + * 15 = reserved for I/O mode + */ +const uint32_t CARD_STATUS_CURRENT_STATE = 0XF << 9; +/** Shift for current state. */ +const uint32_t CARD_STATUS_CURRENT_STATE_SHIFT = 9; +/** Corresponds to buffer empty signaling on the bus. */ +const uint32_t CARD_STATUS_READY_FOR_DATA = 1UL << 8; +// bit 7 reserved. +/** Extension Functions may set this bit to get host to deal with events. */ +const uint32_t CARD_STATUS_FX_EVENT = 1UL << 6; +/** The card will expect ACMD, or the command has been interpreted as ACMD */ +const uint32_t CARD_STATUS_APP_CMD = 1UL << 5; +// bit 4 reserved. +/** Error in the sequence of the authentication process. */ +const uint32_t CARD_STATUS_AKE_SEQ_ERROR = 1UL << 3; +// bits 2,1, and 0 reserved for manufacturer test mode. +//============================================================================== +/** status for card in the ready state */ +const uint8_t R1_READY_STATE = 0X00; +/** status for card in the idle state */ +const uint8_t R1_IDLE_STATE = 0X01; +/** status bit for illegal command */ +const uint8_t R1_ILLEGAL_COMMAND = 0X04; +/** start data token for read or write single sector*/ +const uint8_t DATA_START_SECTOR = 0XFE; +/** stop token for write multiple sectors*/ +const uint8_t STOP_TRAN_TOKEN = 0XFD; +/** start data token for write multiple sectors*/ +const uint8_t WRITE_MULTIPLE_TOKEN = 0XFC; +/** mask for data response tokens after a write sector operation */ +const uint8_t DATA_RES_MASK = 0X1F; +/** write data accepted token */ +const uint8_t DATA_RES_ACCEPTED = 0X05; +//============================================================================== +/** + * \class cid_t + * \brief Card Identification (CID) register. + */ +struct cid_t { + // byte 0 + /** Manufacturer ID */ + uint8_t mid; + // byte 1-2 + /** OEM/Application ID. */ + char oid[2]; + // byte 3-7 + /** Product name. */ + char pnm[5]; + // byte 8 + /** Product revision - n.m two 4-bit nibbles. */ + uint8_t prv; + // byte 9-12 + /** Product serial 32-bit number Big Endian format. */ + uint8_t psn8[4]; + // byte 13-14 + /** Manufacturing date big endian - four nibbles RYYM Reserved Year Month. */ + uint8_t mdt[2]; + // byte 15 + /** CRC7 bits 1-7 checksum, bit 0 always 1 */ + uint8_t crc; + // Extract big endian fields. + /** \return major revision number. */ + int prvN() const { return prv >> 4; } + /** \return minor revision number. */ + int prvM() const { return prv & 0XF; } + /** \return Manufacturing Year. */ + int mdtYear() const { return 2000 + ((mdt[0] & 0XF) << 4) + (mdt[1] >> 4); } + /** \return Manufacturing Month. */ + int mdtMonth() const { return mdt[1] & 0XF; } + /** \return Product Serial Number. */ + uint32_t psn() const { + return (uint32_t)psn8[0] << 24 | (uint32_t)psn8[1] << 16 | + (uint32_t)psn8[2] << 8 | (uint32_t)psn8[3]; + } +} __attribute__((packed)); +//============================================================================== +/** + * \class csd_t + * \brief Union of old and new style CSD register. + */ +struct csd_t { + /** union of all CSD versions */ + uint8_t csd[16]; + // Extract big endian fields. + /** \return Capacity in sectors */ + uint32_t capacity() const { + uint32_t c_size; + uint8_t ver = csd[0] >> 6; + if (ver == 0) { + c_size = (uint32_t)(csd[6] & 3) << 10; + c_size |= (uint32_t)csd[7] << 2 | csd[8] >> 6; + uint8_t c_size_mult = (csd[9] & 3) << 1 | csd[10] >> 7; + uint8_t read_bl_len = csd[5] & 15; + return (c_size + 1) << (c_size_mult + read_bl_len + 2 - 9); + } else if (ver == 1) { + c_size = (uint32_t)(csd[7] & 63) << 16; + c_size |= (uint32_t)csd[8] << 8; + c_size |= csd[9]; + return (c_size + 1) << 10; + } else { + return 0; + } + } + /** \return true if erase granularity is single block. */ + bool eraseSingleBlock() const { return csd[10] & 0X40; } + /** \return erase size in 512 byte blocks if eraseSingleBlock is false. */ + int eraseSize() const { return ((csd[10] & 0X3F) << 1 | csd[11] >> 7) + 1; } + /** \return true if the contents is copied or true if original. */ + bool copy() const { return csd[14] & 0X40; } + /** \return true if the entire card is permanently write protected. */ + bool permWriteProtect() const { return csd[14] & 0X20; } + /** \return true if the entire card is temporarily write protected. */ + bool tempWriteProtect() const { return csd[14] & 0X10; } +}; +//============================================================================== +/** + * \class scr_t + * \brief SCR register. + */ +struct scr_t { + /** Bytes 0-3 SD Association, bytes 4-7 reserved for manufacturer. */ + uint8_t scr[8]; + /** \return SCR_STRUCTURE field - must be zero.*/ + uint8_t srcStructure() const { return scr[0] >> 4; } + /** \return SD_SPEC field 0 - v1.0 or V1.01, 1 - 1.10, 2 - V2.00 or greater */ + uint8_t sdSpec() const { return scr[0] & 0XF; } + /** \return false if all zero, true if all one. */ + bool dataAfterErase() const { return scr[1] & 0X80; } + /** \return CPRM Security Version. */ + uint8_t sdSecurity() const { return (scr[1] >> 4) & 0X7; } + /** \return 0101b. */ + uint8_t sdBusWidths() const { return scr[1] & 0XF; } + /** \return true if V3.0 or greater. */ + bool sdSpec3() const { return scr[2] & 0X80; } + /** \return if true and sdSpecX is zero V4.xx. */ + bool sdSpec4() const { return scr[2] & 0X4; } + /** \return nonzero for version 5 or greater if sdSpec == 2, + sdSpec3 == true. Version is return plus four.*/ + uint8_t sdSpecX() const { return (scr[2] & 0X3) << 2 | scr[3] >> 6; } + /** \return bit map for support CMD58/59, CMD48/49, CMD23, and CMD20 */ + uint8_t cmdSupport() const { return scr[3] & 0XF; } + /** \return SD spec version */ + int16_t sdSpecVer() const { + if (sdSpec() > 2) { + return -1; + } else if (sdSpec() < 2) { + return sdSpec() ? 110 : 101; + } else if (!sdSpec3()) { + return 200; + } else if (!sdSpec4() && !sdSpecX()) { + return 300; + } + return 400 + 100 * sdSpecX(); + } +}; +//============================================================================== +/** + * \class sds_t + * \brief SD Status. + */ +// fields are big endian +struct sds_t { + /** byte 0, bit 7-6 width, bit 5 secured mode, bits 4-0 reserved. */ + uint8_t busWidthSecureMode; + /** byte 1 reserved */ + uint8_t reserved1; + /** byte 2-3 zero for SD rd/wr memory card. */ + uint8_t sdCardType[2]; + /** byte 4-7 size of protected area big endian */ + uint8_t sizeOfProtectedArea[4]; + /** byte 8 speed class. */ + uint8_t speed; + /** byte 9 performance move */ + uint8_t performanceMove; + /** byte 10 AU size code. */ + uint8_t auSize; + /** byte 11-12 erase size big endian */ + uint8_t eraseSize[2]; + /** byte 13 erase timeout and erase offset */ + uint8_t eraseTimeoutOffset; + /** byte 14 */ + uint8_t uhsClassAuSize; + /** byte 15 */ + uint8_t videoSpeedClass; + /** byte 16-17 */ + uint8_t vscAuSize[2]; + /** byte 18-21 */ + uint8_t susAddr[3]; + /** byte 21 */ + uint8_t appPerfClass; + /** byte 22 */ + uint8_t perfEnhance; + /** byte 23 */ + uint8_t discardFule; + /** byte 24 */ + uint8_t reservedManufacturer[40]; + + /** \return appClass. */ + int appClass() { return appPerfClass; } + /** \return AU size in KB. or zero for error. */ + uint32_t auSizeKB() { + // 0XF mask and uint16_t array helps compiler optimize size on Uno. + uint8_t val = (auSize >> 4) & 0XF; + static const uint16_t au[] = {0, 16, 32, 64, 128, + 256, 512, 1024, 2048, 4096, + 8192, 12288, 16384, 24576, 32768}; + return val < 0XF ? au[val] : 65536UL; + } + /** \return current bus width or -1 for error. */ + uint8_t busWidth() const { + uint8_t w = busWidthSecureMode >> 6; + return w == 2 ? 4 : w == 0 ? 1 : -1; + } + /** \return true is discard operation is supported else true. */ + bool discard() const { return discardFule & 2; } + /** \return eraseSize in AUs. */ + uint16_t eraseSizeAU() const { + return (uint16_t)eraseSize[0] << 8 | (uint16_t)eraseSize[1]; + } + /** \return eraseTimeout seconds. */ + uint8_t eraseTimeout() const { return eraseTimeoutOffset >> 2; } + /** \return eraseOffset seconds. */ + uint8_t eraseOffset() const { return eraseTimeoutOffset & 3; } + /** \return true if full user logical erase is supported else false. */ + bool fule() const { return discardFule & 1; } + /** \return true for secure mode else false. */ + bool secureMode() const { return busWidthSecureMode & 0X20; } + /** \return speed class or -1 for error. */ + int speedClass() const { + return speed < 4 ? 2 * speed : speed == 4 ? 10 : -1; + } + /** \return UHS Speed Grade. */ + int uhsClass() const { return uhsClassAuSize >> 4; } + /** \return Video Speed */ + int videoClass() { return videoSpeedClass; } +}; +#endif // SdCardInfo_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInterface.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInterface.h similarity index 78% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInterface.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInterface.h index 11161036..586fbdd3 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInterface.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdCardInterface.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,6 +22,10 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Abstract interface for an SD card. + */ #ifndef SdCardInterface_h #define SdCardInterface_h #include "../common/FsBlockDeviceInterface.h" @@ -32,9 +36,14 @@ */ class SdCardInterface : public FsBlockDeviceInterface { public: - /** end use of card */ - virtual void end() = 0; - /** Erase a range of sectors. + /** CMD6 Switch mode: Check Function Set Function. + * \param[in] arg CMD6 argument. + * \param[out] status return status data. + * + * \return true for success or false for failure. + */ + virtual bool cardCMD6(uint32_t arg, uint8_t* status) = 0; + /** Erase a range of sectors. * * \param[in] firstSector The address of the first sector in the range. * \param[in] lastSector The address of the last sector in the range. @@ -46,12 +55,12 @@ class SdCardInterface : public FsBlockDeviceInterface { virtual uint8_t errorCode() const = 0; /** \return error data. */ virtual uint32_t errorData() const = 0; - /** \return true if card is busy. */ - virtual bool isBusy() = 0; /** \return false by default */ - virtual bool hasDedicatedSpi() {return false;} + virtual bool hasDedicatedSpi() { return false; } /** \return false by default */ - bool virtual isDedicatedSpi() {return false;} + bool virtual isDedicatedSpi() { return false; } + /** \return false by default */ + bool virtual isSpi() { return false; } /** Set SPI sharing state * \param[in] value desired state. * \return false by default. @@ -68,7 +77,7 @@ class SdCardInterface : public FsBlockDeviceInterface { * \return true for success or false for failure. */ virtual bool readCID(cid_t* cid) = 0; - /** + /** * Read a card's CSD register. * * \param[out] csd pointer to area for returned data. @@ -82,15 +91,19 @@ class SdCardInterface : public FsBlockDeviceInterface { * \return true for success or false for failure. */ virtual bool readOCR(uint32_t* ocr) = 0; - /** - * Determine the size of an SD flash memory card. + /** Read SCR register. * - * \return The number of 512 byte data sectors in the card - * or zero if an error occurs. + * \param[out] scr Value of SCR register. + * \return true for success or false for failure. */ - virtual uint32_t sectorCount() = 0; + virtual bool readSCR(scr_t* scr) = 0; + /** Return the 64 byte SD Status register. + * \param[out] sds location for 64 status bytes. + * \return true for success or false for failure. + */ + virtual bool readSDS(sds_t* sds) = 0; /** \return card status. */ - virtual uint32_t status() {return 0XFFFFFFFF;} + virtual uint32_t status() { return 0XFFFFFFFF; } /** Return the card type: SD V1, SD V2 or SDHC/SDXC * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC. */ diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdSpiCard.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdSpiCard.cpp similarity index 75% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdSpiCard.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdSpiCard.cpp index b2afef16..e924336c 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdSpiCard.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdSpiCard.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -27,14 +27,11 @@ class Timeout { public: Timeout() {} - explicit Timeout(uint16_t ms) {set(ms);} - uint16_t millis16() {return millis();} - void set(uint16_t ms) { - m_endTime = ms + millis16(); - } - bool timedOut() { - return (int16_t)(m_endTime - millis16()) < 0; - } + explicit Timeout(uint16_t ms) { set(ms); } + uint16_t millis16() { return millis(); } + void set(uint16_t ms) { m_endTime = ms + millis16(); } + bool timedOut() { return (int16_t)(m_endTime - millis16()) < 0; } + private: uint16_t m_endTime; }; @@ -77,48 +74,44 @@ static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { // uses the x^16,x^12,x^5,x^1 polynomial. #ifdef __AVR__ static const uint16_t crctab[] PROGMEM = { -#else // __AVR__ +#else // __AVR__ static const uint16_t crctab[] = { #endif // __AVR__ - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, - 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, - 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, - 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, - 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, - 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, - 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, - 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, - 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, - 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, - 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, - 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, - 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, - 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, - 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, - 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, - 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, - 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, - 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, - 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, - 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, - 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, - 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 -}; + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, + 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, + 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, + 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, + 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, + 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, + 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, + 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, + 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, + 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, + 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, + 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, + 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, + 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, + 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, + 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, + 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, + 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, + 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, + 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, + 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, + 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, + 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, + 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, + 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, + 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0}; static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { uint16_t crc = 0; for (size_t i = 0; i < n; i++) { #ifdef __AVR__ crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8); -#else // __AVR__ +#else // __AVR__ crc = crctab[(crc >> 8 ^ data[i]) & 0XFF] ^ (crc << 8); #endif // __AVR__ } @@ -130,10 +123,12 @@ static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { // SharedSpiCard member functions //------------------------------------------------------------------------------ bool SharedSpiCard::begin(SdSpiConfig spiConfig) { + uint8_t cardType; + uint32_t arg; Timeout timeout; - m_spiActive = false; + // Restore state to creator. + initSharedSpiCard(); m_errorCode = SD_CARD_ERROR_NONE; - m_type = 0; m_csPin = spiConfig.csPin; #if SPI_DRIVER_SELECT >= 2 m_spiDriverPtr = spiConfig.spiPort; @@ -144,24 +139,25 @@ bool SharedSpiCard::begin(SdSpiConfig spiConfig) { #endif // SPI_DRIVER_SELECT sdCsInit(m_csPin); spiUnselect(); - spiSetSckSpeed(1000UL*SD_MAX_INIT_RATE_KHZ); + spiSetSckSpeed(1000UL * SD_MAX_INIT_RATE_KHZ); spiBegin(spiConfig); - uint32_t arg; - m_state = IDLE_STATE; + m_beginCalled = true; + spiStart(); // must supply min of 74 clock cycles with CS high. spiUnselect(); for (uint8_t i = 0; i < 10; i++) { - spiSend(0XFF); + spiReceive(); } spiSelect(); - // command to go idle in SPI mode - for (uint8_t i = 1;; i++) { + timeout.set(SD_INIT_TIMEOUT); + while (true) { + // command to go idle in SPI mode if (cardCommand(CMD0, 0) == R1_IDLE_STATE) { break; } - if (i == SD_CMD0_RETRY) { + if (timeout.timedOut()) { error(SD_CARD_ERROR_CMD0); goto fail; } @@ -172,23 +168,27 @@ bool SharedSpiCard::begin(SdSpiConfig spiConfig) { goto fail; } #endif // USE_SD_CRC - // check SD version - if (!(cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) { - type(SD_CARD_TYPE_SD2); + while (true) { + if (cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND) { + cardType = SD_CARD_TYPE_SD1; + break; + } + // Skip first three bytes. for (uint8_t i = 0; i < 4; i++) { m_status = spiReceive(); } - if (m_status != 0XAA) { + if (m_status == 0XAA) { + cardType = SD_CARD_TYPE_SD2; + break; + } + if (timeout.timedOut()) { error(SD_CARD_ERROR_CMD8); goto fail; } - } else { - type(SD_CARD_TYPE_SD1); } // initialize card and send host supports SDHC if SD2 - arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; - timeout.set(SD_INIT_TIMEOUT); + arg = cardType == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; while (cardAcmd(ACMD41, arg) != R1_READY_STATE) { // check for timeout if (timeout.timedOut()) { @@ -196,15 +196,14 @@ bool SharedSpiCard::begin(SdSpiConfig spiConfig) { goto fail; } } - // if SD2 read OCR register to check for SDHC card - if (type() == SD_CARD_TYPE_SD2) { + if (cardType == SD_CARD_TYPE_SD2) { if (cardCommand(CMD58, 0)) { error(SD_CARD_ERROR_CMD58); goto fail; } if ((spiReceive() & 0XC0) == 0XC0) { - type(SD_CARD_TYPE_SDHC); + cardType = SD_CARD_TYPE_SDHC; } // Discard rest of ocr - contains allowed voltage range. for (uint8_t i = 0; i < 3; i++) { @@ -213,9 +212,26 @@ bool SharedSpiCard::begin(SdSpiConfig spiConfig) { } spiStop(); spiSetSckSpeed(spiConfig.maxSck); + m_type = cardType; return true; - fail: +fail: + spiStop(); + return false; +} +//------------------------------------------------------------------------------ +bool SharedSpiCard::cardCMD6(uint32_t arg, uint8_t* status) { + if (cardCommand(CMD6, arg)) { + error(SD_CARD_ERROR_CMD6); + goto fail; + } + if (!readData(status, 64)) { + goto fail; + } + spiStop(); + return true; + +fail: spiStop(); return false; } @@ -229,12 +245,9 @@ uint8_t SharedSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { if (!m_spiActive) { spiStart(); } - if (cmd != CMD12) { - if (!waitReady(SD_CMD_TIMEOUT) && cmd != CMD0) { - return 0XFF; - } + if (cmd != CMD0 && cmd != CMD12 && !waitReady(SD_CMD_TIMEOUT)) { + return 0XFF; } - #if USE_SD_CRC // form message uint8_t buf[6]; @@ -249,7 +262,7 @@ uint8_t SharedSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { // send message spiSend(buf, 6); -#else // USE_SD_CRC +#else // USE_SD_CRC // send command spiSend(cmd | 0x40); @@ -267,35 +280,42 @@ uint8_t SharedSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { spiReceive(); // there are 1-8 fill bytes before response. fill bytes should be 0XFF. - uint16_t n = 0; + uint8_t n = 0; do { m_status = spiReceive(); } while (m_status & 0X80 && ++n < 10); return m_status; } //------------------------------------------------------------------------------ +void SharedSpiCard::end() { + if (m_beginCalled) { + syncDevice(); + spiEnd(); + m_beginCalled = false; + } +} +//------------------------------------------------------------------------------ bool SharedSpiCard::erase(uint32_t firstSector, uint32_t lastSector) { csd_t csd; if (!readCSD(&csd)) { goto fail; } // check for single sector erase - if (!csd.v1.erase_blk_en) { + if (!csd.eraseSingleBlock()) { // erase size mask - uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; + uint8_t m = csd.eraseSize() - 1; if ((firstSector & m) != 0 || ((lastSector + 1) & m) != 0) { // error card can't erase specified area error(SD_CARD_ERROR_ERASE_SINGLE_SECTOR); goto fail; } } - if (m_type != SD_CARD_TYPE_SDHC) { + if (type() != SD_CARD_TYPE_SDHC) { firstSector <<= 9; lastSector <<= 9; } - if (cardCommand(CMD32, firstSector) - || cardCommand(CMD33, lastSector) - || cardCommand(CMD38, 0)) { + if (cardCommand(CMD32, firstSector) || cardCommand(CMD33, lastSector) || + cardCommand(CMD38, 0)) { error(SD_CARD_ERROR_ERASE); goto fail; } @@ -306,14 +326,14 @@ bool SharedSpiCard::erase(uint32_t firstSector, uint32_t lastSector) { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ bool SharedSpiCard::eraseSingleSectorEnable() { csd_t csd; - return readCSD(&csd) ? csd.v1.erase_blk_en : false; + return readCSD(&csd) ? csd.eraseSingleBlock() : false; } //------------------------------------------------------------------------------ bool SharedSpiCard::isBusy() { @@ -331,9 +351,7 @@ bool SharedSpiCard::isBusy() { return rtn; } //------------------------------------------------------------------------------ -bool SharedSpiCard::readData(uint8_t* dst) { - return readData(dst, 512); -} +bool SharedSpiCard::readData(uint8_t* dst) { return readData(dst, 512); } //------------------------------------------------------------------------------ bool SharedSpiCard::readData(uint8_t* dst, size_t count) { #if USE_SD_CRC @@ -365,14 +383,14 @@ bool SharedSpiCard::readData(uint8_t* dst, size_t count) { error(SD_CARD_ERROR_READ_CRC); goto fail; } -#else // USE_SD_CRC +#else // USE_SD_CRC // discard crc spiReceive(); spiReceive(); #endif // USE_SD_CRC return true; - fail: +fail: spiStop(); return false; } @@ -384,12 +402,16 @@ bool SharedSpiCard::readOCR(uint32_t* ocr) { goto fail; } for (uint8_t i = 0; i < 4; i++) { +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ p[3 - i] = spiReceive(); +#else // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + p[i] = spiReceive(); +#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ } spiStop(); return true; - fail: +fail: spiStop(); return false; } @@ -407,7 +429,24 @@ bool SharedSpiCard::readRegister(uint8_t cmd, void* buf) { spiStop(); return true; - fail: +fail: + spiStop(); + return false; +} +//------------------------------------------------------------------------------ +bool SharedSpiCard::readSCR(scr_t* scr) { + uint8_t* dst = reinterpret_cast(scr); + if (cardAcmd(ACMD51, 0)) { + error(SD_CARD_ERROR_ACMD51); + goto fail; + } + if (!readData(dst, sizeof(scr_t))) { + goto fail; + } + spiStop(); + return true; + +fail: spiStop(); return false; } @@ -427,7 +466,7 @@ bool SharedSpiCard::readSector(uint32_t sector, uint8_t* dst) { spiStop(); return true; - fail: +fail: spiStop(); return false; } @@ -442,7 +481,7 @@ bool SharedSpiCard::readSectors(uint32_t sector, uint8_t* dst, size_t ns) { } } return readStop(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -457,24 +496,25 @@ bool SharedSpiCard::readStart(uint32_t sector) { m_state = READ_STATE; return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SharedSpiCard::readStatus(uint8_t* status) { +bool SharedSpiCard::readSDS(sds_t* sds) { + uint8_t* dst = reinterpret_cast(sds); // retrun is R2 so read extra status byte. if (cardAcmd(ACMD13, 0) || spiReceive()) { error(SD_CARD_ERROR_ACMD13); goto fail; } - if (!readData(status, 64)) { + if (!readData(dst, sizeof(sds_t))) { goto fail; } spiStop(); return true; - fail: +fail: spiStop(); return false; } @@ -488,27 +528,29 @@ bool SharedSpiCard::readStop() { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ uint32_t SharedSpiCard::sectorCount() { csd_t csd; - return readCSD(&csd) ? sdCardCapacity(&csd) : 0; + return readCSD(&csd) ? csd.capacity() : 0; } //------------------------------------------------------------------------------ void SharedSpiCard::spiStart() { + SPI_ASSERT_NOT_ACTIVE; if (!m_spiActive) { spiActivate(); + m_spiActive = true; spiSelect(); // Dummy byte to drive MISO busy status. spiSend(0XFF); - m_spiActive = true; } } //------------------------------------------------------------------------------ void SharedSpiCard::spiStop() { + SPI_ASSERT_ACTIVE; if (m_spiActive) { spiUnselect(); // Insure MISO goes to low Z. @@ -549,7 +591,7 @@ bool SharedSpiCard::writeData(const uint8_t* src) { } return true; - fail: +fail: spiStop(); return false; } @@ -558,7 +600,7 @@ bool SharedSpiCard::writeData(const uint8_t* src) { bool SharedSpiCard::writeData(uint8_t token, const uint8_t* src) { #if USE_SD_CRC uint16_t crc = CRC_CCITT(src, 512); -#else // USE_SD_CRC +#else // USE_SD_CRC uint16_t crc = 0XFFFF; #endif // USE_SD_CRC spiSend(token); @@ -573,7 +615,7 @@ bool SharedSpiCard::writeData(uint8_t token, const uint8_t* src) { } return true; - fail: +fail: spiStop(); return false; } @@ -607,13 +649,13 @@ bool SharedSpiCard::writeSector(uint32_t sector, const uint8_t* src) { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SharedSpiCard::writeSectors(uint32_t sector, - const uint8_t* src, size_t ns) { +bool SharedSpiCard::writeSectors(uint32_t sector, const uint8_t* src, + size_t ns) { if (!writeStart(sector)) { goto fail; } @@ -624,7 +666,7 @@ bool SharedSpiCard::writeSectors(uint32_t sector, } return writeStop(); - fail: +fail: spiStop(); return false; } @@ -641,7 +683,7 @@ bool SharedSpiCard::writeStart(uint32_t sector) { m_state = WRITE_STATE; return true; - fail: +fail: spiStop(); return false; } @@ -655,7 +697,7 @@ bool SharedSpiCard::writeStop() { m_state = IDLE_STATE; return true; - fail: +fail: error(SD_CARD_ERROR_STOP_TRAN); spiStop(); return false; @@ -673,8 +715,7 @@ bool DedicatedSpiCard::readSector(uint32_t sector, uint8_t* dst) { return readSectors(sector, dst, 1); } //------------------------------------------------------------------------------ -bool DedicatedSpiCard::readSectors( - uint32_t sector, uint8_t* dst, size_t ns) { +bool DedicatedSpiCard::readSectors(uint32_t sector, uint8_t* dst, size_t ns) { if (sdState() != READ_STATE || sector != m_curSector) { if (!readStart(sector)) { goto fail; @@ -689,7 +730,7 @@ bool DedicatedSpiCard::readSectors( m_curSector += ns; return m_dedicatedSpi ? true : readStop(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -708,8 +749,8 @@ bool DedicatedSpiCard::writeSector(uint32_t sector, const uint8_t* src) { return SharedSpiCard::writeSector(sector, src); } //------------------------------------------------------------------------------ -bool DedicatedSpiCard::writeSectors( - uint32_t sector, const uint8_t* src, size_t ns) { +bool DedicatedSpiCard::writeSectors(uint32_t sector, const uint8_t* src, + size_t ns) { if (sdState() != WRITE_STATE || m_curSector != sector) { if (!writeStart(sector)) { goto fail; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdSpiCard.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdSpiCard.h similarity index 76% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdSpiCard.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdSpiCard.h index d0b5b7bd..4b1477c3 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdSpiCard.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdSpiCard.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,15 +24,44 @@ */ /** * \file - * \brief SdSpiCard class for V2 SD/SDHC cards + * \brief Classes for SPI access to SD/SDHC cards. */ #ifndef SdSpiCard_h #define SdSpiCard_h #include + +#include "../SpiDriver/SdSpiDriver.h" #include "../common/SysCall.h" #include "SdCardInfo.h" #include "SdCardInterface.h" -#include "../SpiDriver/SdSpiDriver.h" +/** Verify correct SPI active if non-zero. */ +#define CHECK_SPI_ACTIVE 0 +#if CHECK_SPI_ACTIVE +/** Check SPI active. */ +#define SPI_ASSERT_ACTIVE \ + { \ + if (!m_spiActive) { \ + Serial.print(F("SPI_ASSERT_ACTIVE")); \ + Serial.println(__LINE__); \ + while (true) \ + ; \ + } \ + } +#define SPI_ASSERT_NOT_ACTIVE \ + { \ + if (m_spiActive) { \ + Serial.print(F("SPI_ASSERT_NOT_ACTIVE")); \ + Serial.println(__LINE__); \ + while (true) \ + ; \ + } \ + } +#else // CHECK_SPI_ACTIVE +/** Check for SPI active. */ +#define SPI_ASSERT_ACTIVE +/** Check for SPI not active. */ +#define SPI_ASSERT_NOT_ACTIVE +#endif // CHECK_SPI_ACTIVE //============================================================================== /** * \class SharedSpiCard @@ -42,7 +71,7 @@ class SharedSpiCard : public SdCardInterface { #elif USE_BLOCK_DEVICE_INTERFACE class SharedSpiCard : public FsBlockDeviceInterface { -#else // HAS_SDIO_CLASS +#else // HAS_SDIO_CLASS class SharedSpiCard { #endif // HAS_SDIO_CLASS public: @@ -53,16 +82,21 @@ class SharedSpiCard { /** SD is in multi-sector write state. */ static const uint8_t WRITE_STATE = 2; /** Construct an instance of SharedSpiCard. */ - SharedSpiCard() {} + SharedSpiCard() { initSharedSpiCard(); } /** Initialize the SD card. * \param[in] spiConfig SPI card configuration. * \return true for success or false for failure. */ bool begin(SdSpiConfig spiConfig); + /** CMD6 Switch mode: Check Function Set Function. + * \param[in] arg CMD6 argument. + * \param[out] status return status data. + * + * \return true for success or false for failure. + */ + bool cardCMD6(uint32_t arg, uint8_t* status); /** End use of card */ - void end() { - spiEnd(); - } + void end(); /** Erase a range of sectors. * * \param[in] firstSector The address of the first sector in the range. @@ -87,21 +121,18 @@ class SharedSpiCard { * \param[in] code value for error code. */ void error(uint8_t code) { -// (void)code; + // (void)code; m_errorCode = code; } /** - * \return code for the last error. See SdCardInfo.h for a list of error codes. + * \return code for the last error. See SdCardInfo.h for a list of error + * codes. */ - uint8_t errorCode() const { - return m_errorCode; - } + uint8_t errorCode() const { return m_errorCode; } /** \return error data for last error. */ - uint32_t errorData() const { - return m_status; - } + uint32_t errorData() const { return m_status; } /** \return false for shared class. */ - bool hasDedicatedSpi() {return false;} + bool hasDedicatedSpi() { return false; } /** * Check for busy. MISO low indicates the card is busy. * @@ -109,7 +140,9 @@ class SharedSpiCard { */ bool isBusy(); /** \return false, can't be in dedicated state. */ - bool isDedicatedSpi() {return false;} + bool isDedicatedSpi() { return false; } + /** \return true if card is on SPI bus. */ + bool isSpi() { return true; } /** * Read a card's CID register. The CID contains card identification * information such as Manufacturer ID, Product name, Product serial @@ -119,9 +152,7 @@ class SharedSpiCard { * * \return true for success or false for failure. */ - bool readCID(cid_t* cid) { - return readRegister(CMD10, cid); - } + bool readCID(cid_t* cid) { return readRegister(CMD10, cid); } /** * Read a card's CSD register. The CSD contains Card-Specific Data that * provides information regarding access to the card's contents. @@ -130,9 +161,7 @@ class SharedSpiCard { * * \return true for success or false for failure. */ - bool readCSD(csd_t* csd) { - return readRegister(CMD9, csd); - } + bool readCSD(csd_t* csd) { return readRegister(CMD9, csd); } /** Read one data sector in a multiple sector read sequence * * \param[out] dst Pointer to the location for the data to be read. @@ -146,6 +175,12 @@ class SharedSpiCard { * \return true for success or false for failure. */ bool readOCR(uint32_t* ocr); + /** Read SCR register. + * + * \param[out] scr Value of SCR register. + * \return true for success or false for failure. + */ + bool readSCR(scr_t* scr); /** * Read a 512 byte sector from an SD card. * @@ -174,18 +209,18 @@ class SharedSpiCard { * \return true for success or false for failure. */ bool readStart(uint32_t sector); - /** Return the 64 byte card status + /** Return the 64 byte SD Status register. * \param[out] status location for 64 status bytes. * \return true for success or false for failure. */ - bool readStatus(uint8_t* status); + bool readSDS(sds_t* status); /** End a read multiple sectors sequence. * * \return true for success or false for failure. */ bool readStop(); /** \return SD multi-sector read/write state */ - uint8_t sdState() {return m_state;} + uint8_t sdState() { return m_state; } /** * Determine the size of an SD flash memory card. * @@ -215,9 +250,7 @@ class SharedSpiCard { /** Return the card type: SD V1, SD V2 or SDHC/SDXC * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC. */ - uint8_t type() const { - return m_type; - } + uint8_t type() const { return m_type; } /** * Write a 512 byte sector to an SD card. * @@ -266,86 +299,77 @@ class SharedSpiCard { uint8_t cardCommand(uint8_t cmd, uint32_t arg); bool readData(uint8_t* dst, size_t count); bool readRegister(uint8_t cmd, void* buf); - void spiSelect() { - sdCsWrite(m_csPin, false); - } + void spiSelect() { sdCsWrite(m_csPin, false); } void spiStart(); void spiStop(); - void spiUnselect() { - sdCsWrite(m_csPin, true); - } - void type(uint8_t value) { - m_type = value; - } + void spiUnselect() { sdCsWrite(m_csPin, true); } bool waitReady(uint16_t ms); bool writeData(uint8_t token, const uint8_t* src); #if SPI_DRIVER_SELECT < 2 - void spiActivate() { - m_spiDriver.activate(); - } - void spiBegin(SdSpiConfig spiConfig) { - m_spiDriver.begin(spiConfig); - } - void spiDeactivate() { - m_spiDriver.deactivate(); - } - void spiEnd() { - m_spiDriver.end(); - } + void spiActivate() { m_spiDriver.activate(); } + void spiBegin(SdSpiConfig spiConfig) { m_spiDriver.begin(spiConfig); } + void spiDeactivate() { m_spiDriver.deactivate(); } + void spiEnd() { m_spiDriver.end(); } uint8_t spiReceive() { + SPI_ASSERT_ACTIVE; return m_spiDriver.receive(); } uint8_t spiReceive(uint8_t* buf, size_t n) { + SPI_ASSERT_ACTIVE; return m_spiDriver.receive(buf, n); } void spiSend(uint8_t data) { + SPI_ASSERT_ACTIVE; m_spiDriver.send(data); } void spiSend(const uint8_t* buf, size_t n) { + SPI_ASSERT_ACTIVE; m_spiDriver.send(buf, n); } - void spiSetSckSpeed(uint32_t maxSck) { - m_spiDriver.setSckSpeed(maxSck); - } + void spiSetSckSpeed(uint32_t maxSck) { m_spiDriver.setSckSpeed(maxSck); } SdSpiDriver m_spiDriver; #else // SPI_DRIVER_SELECT < 2 - void spiActivate() { - m_spiDriverPtr->activate(); - } - void spiBegin(SdSpiConfig spiConfig) { - m_spiDriverPtr->begin(spiConfig); - } - void spiDeactivate() { - m_spiDriverPtr->deactivate(); - } - void spiEnd() { - m_spiDriverPtr->end(); - } + void spiActivate() { m_spiDriverPtr->activate(); } + void spiBegin(SdSpiConfig spiConfig) { m_spiDriverPtr->begin(spiConfig); } + void spiDeactivate() { m_spiDriverPtr->deactivate(); } + void spiEnd() { m_spiDriverPtr->end(); } uint8_t spiReceive() { + SPI_ASSERT_ACTIVE; return m_spiDriverPtr->receive(); } uint8_t spiReceive(uint8_t* buf, size_t n) { + SPI_ASSERT_ACTIVE; return m_spiDriverPtr->receive(buf, n); } void spiSend(uint8_t data) { + SPI_ASSERT_ACTIVE; m_spiDriverPtr->send(data); } void spiSend(const uint8_t* buf, size_t n) { + SPI_ASSERT_ACTIVE; m_spiDriverPtr->send(buf, n); } - void spiSetSckSpeed(uint32_t maxSck) { - m_spiDriverPtr->setSckSpeed(maxSck); - } + void spiSetSckSpeed(uint32_t maxSck) { m_spiDriverPtr->setSckSpeed(maxSck); } SdSpiDriver* m_spiDriverPtr; + #endif // SPI_DRIVER_SELECT < 2 + void initSharedSpiCard() { + m_beginCalled = false; + m_csPin = 0; + m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; + m_spiActive = false; + m_state = IDLE_STATE; + m_status = 0; + m_type = 0; + } + bool m_beginCalled; SdCsPin_t m_csPin; - uint8_t m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; - bool m_spiActive; + uint8_t m_errorCode; + bool m_spiActive; uint8_t m_state; uint8_t m_status; - uint8_t m_type = 0; + uint8_t m_type; }; - //============================================================================== /** * \class DedicatedSpiCard @@ -354,16 +378,16 @@ class SharedSpiCard { class DedicatedSpiCard : public SharedSpiCard { public: /** Construct an instance of DedicatedSpiCard. */ - DedicatedSpiCard() {} + DedicatedSpiCard() = default; /** Initialize the SD card. * \param[in] spiConfig SPI card configuration. * \return true for success or false for failure. */ bool begin(SdSpiConfig spiConfig); /** \return true, can be in dedicaded state. */ - bool hasDedicatedSpi() {return true;} + bool hasDedicatedSpi() { return true; } /** \return true if in dedicated SPI state. */ - bool isDedicatedSpi() {return m_dedicatedSpi;} + bool isDedicatedSpi() { return m_dedicatedSpi; } /** * Read a 512 byte sector from an SD card. * @@ -405,7 +429,7 @@ class DedicatedSpiCard : public SharedSpiCard { bool writeSectors(uint32_t sector, const uint8_t* src, size_t ns); private: - uint32_t m_curSector; + uint32_t m_curSector = 0; bool m_dedicatedSpi = false; }; //============================================================================== diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioCard.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioCard.h similarity index 88% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioCard.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioCard.h index cfbe4cdc..eb032e4a 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioCard.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioCard.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,12 +22,17 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Classes for SDIO cards. + */ #ifndef SdioCard_h #define SdioCard_h #include "../common/SysCall.h" #include "SdCardInterface.h" - +/** Use programmed I/O with FIFO. */ #define FIFO_SDIO 0 +/** Use programmed I/O with DMA. */ #define DMA_SDIO 1 /** * \class SdioConfig @@ -42,9 +47,10 @@ class SdioConfig { */ explicit SdioConfig(uint8_t opt) : m_options(opt) {} /** \return SDIO card options. */ - uint8_t options() {return m_options;} + uint8_t options() { return m_options; } /** \return true if DMA_SDIO. */ - bool useDma() {return m_options & DMA_SDIO;} + bool useDma() { return m_options & DMA_SDIO; } + private: uint8_t m_options = FIFO_SDIO; }; @@ -60,13 +66,20 @@ class SdioCard : public SdCardInterface { * \return true for success or false for failure. */ bool begin(SdioConfig sdioConfig); + /** CMD6 Switch mode: Check Function Set Function. + * \param[in] arg CMD6 argument. + * \param[out] status return status data. + * + * \return true for success or false for failure. + */ + bool cardCMD6(uint32_t arg, uint8_t* status); /** Disable an SDIO card. * not implemented. */ void end() {} #ifndef DOXYGEN_SHOULD_SKIP_THIS - uint32_t __attribute__((error("use sectorCount()"))) cardSize(); + uint32_t __attribute__((error("use sectorCount()"))) cardSize(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** Erase a range of sectors. * @@ -82,7 +95,8 @@ class SdioCard : public SdCardInterface { */ bool erase(uint32_t firstSector, uint32_t lastSector); /** - * \return code for the last error. See SdCardInfo.h for a list of error codes. + * \return code for the last error. See SdCardInfo.h for a list of error + * codes. */ uint8_t errorCode() const; /** \return error data for last error. */ @@ -146,26 +160,27 @@ class SdioCard : public SdCardInterface { * \return true for success or false for failure. */ bool readOCR(uint32_t* ocr); + /** Read SCR register. + * + * \param[out] scr Value of SCR register. + * \return true for success or false for failure. + */ + bool readSCR(scr_t* scr); + /** Return the 64 byte SD Status register. + * \param[out] sds location for 64 status bytes. + * \return true for success or false for failure. + */ + bool readSDS(sds_t* sds); /** Start a read multiple sectors sequence. * * \param[in] sector Address of first sector in sequence. * * \note This function is used with readData() and readStop() for optimized - * multiple sector reads. SPI chipSelect must be low for the entire sequence. + * multiple sector reads. * * \return true for success or false for failure. */ bool readStart(uint32_t sector); - /** Start a read multiple sectors sequence. - * - * \param[in] sector Address of first sector in sequence. - * \param[in] count Maximum sector count. - * \note This function is used with readData() and readStop() for optimized - * multiple sector reads. SPI chipSelect must be low for the entire sequence. - * - * \return true for success or false for failure. - */ - bool readStart(uint32_t sector, uint32_t count); /** End a read multiple sectors sequence. * * \return true for success or false for failure. @@ -173,7 +188,7 @@ class SdioCard : public SdCardInterface { bool readStop(); /** \return SDIO card status. */ uint32_t status(); - /** + /** * Determine the size of an SD flash memory card. * * \return The number of 512 byte data sectors in the card @@ -226,16 +241,6 @@ class SdioCard : public SdCardInterface { * \return true for success or false for failure. */ bool writeStart(uint32_t sector); - /** Start a write multiple sectors sequence. - * - * \param[in] sector Address of first sector in sequence. - * \param[in] count Maximum sector count. - * \note This function is used with writeData() and writeStop() - * for optimized multiple sector writes. - * - * \return true for success or false for failure. - */ - bool writeStart(uint32_t sector, uint32_t count); /** End a write multiple sectors sequence. * diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.cpp similarity index 76% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.cpp index 8908919c..c4b81330 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,6 +24,7 @@ */ #if defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__IMXRT1062__) #include "SdioTeensy.h" + #include "SdCardInfo.h" #include "SdioCard.h" //============================================================================== @@ -36,39 +37,34 @@ const uint32_t CMD8_RETRIES = 3; const uint32_t BUSY_TIMEOUT_MICROS = 1000000; //============================================================================== const uint32_t SDHC_IRQSTATEN_MASK = - SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | - SDHC_IRQSTATEN_DEBESEN | SDHC_IRQSTATEN_DCESEN | - SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | - SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | - SDHC_IRQSTATEN_CTOESEN | SDHC_IRQSTATEN_DINTSEN | - SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; + SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | SDHC_IRQSTATEN_DEBESEN | + SDHC_IRQSTATEN_DCESEN | SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | + SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | SDHC_IRQSTATEN_CTOESEN | + SDHC_IRQSTATEN_DINTSEN | SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; const uint32_t SDHC_IRQSTAT_CMD_ERROR = - SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | - SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; + SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; -const uint32_t SDHC_IRQSTAT_DATA_ERROR = - SDHC_IRQSTAT_AC12E | SDHC_IRQSTAT_DEBE | - SDHC_IRQSTAT_DCE | SDHC_IRQSTAT_DTOE; +const uint32_t SDHC_IRQSTAT_DATA_ERROR = SDHC_IRQSTAT_AC12E | + SDHC_IRQSTAT_DEBE | SDHC_IRQSTAT_DCE | + SDHC_IRQSTAT_DTOE; const uint32_t SDHC_IRQSTAT_ERROR = - SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | - SDHC_IRQSTAT_DATA_ERROR; + SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | SDHC_IRQSTAT_DATA_ERROR; const uint32_t SDHC_IRQSIGEN_MASK = - SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | - SDHC_IRQSIGEN_DEBEIEN | SDHC_IRQSIGEN_DCEIEN | - SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | - SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | - SDHC_IRQSIGEN_CTOEIEN | SDHC_IRQSIGEN_TCIEN; + SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | SDHC_IRQSIGEN_DEBEIEN | + SDHC_IRQSIGEN_DCEIEN | SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | + SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | SDHC_IRQSIGEN_CTOEIEN | + SDHC_IRQSIGEN_TCIEN; //============================================================================== const uint32_t CMD_RESP_NONE = SDHC_XFERTYP_RSPTYP(0); -const uint32_t CMD_RESP_R1 = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(2); +const uint32_t CMD_RESP_R1 = + SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(2); -const uint32_t CMD_RESP_R1b = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(3); +const uint32_t CMD_RESP_R1b = + SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(3); const uint32_t CMD_RESP_R2 = SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(1); @@ -86,26 +82,23 @@ const uint32_t DATA_READ_DMA = DATA_READ | SDHC_XFERTYP_DMAEN; const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; -const uint32_t DATA_READ_MULTI_PGM = DATA_READ | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN; +const uint32_t DATA_READ_MULTI_PGM = + DATA_READ | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_BCEN; const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_DMAEN; const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; -const uint32_t DATA_WRITE_MULTI_PGM = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN; +const uint32_t DATA_WRITE_MULTI_PGM = + SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_BCEN; #elif defined(__IMXRT1062__) // Use low bits for SDHC_MIX_CTRL since bits 15-0 of SDHC_XFERTYP are reserved. -const uint32_t SDHC_MIX_CTRL_MASK = SDHC_MIX_CTRL_DMAEN | SDHC_MIX_CTRL_BCEN | - SDHC_MIX_CTRL_AC12EN | - SDHC_MIX_CTRL_DDR_EN | - SDHC_MIX_CTRL_DTDSEL | - SDHC_MIX_CTRL_MSBSEL | - SDHC_MIX_CTRL_NIBBLE_POS | - SDHC_MIX_CTRL_AC23EN; +const uint32_t SDHC_MIX_CTRL_MASK = + SDHC_MIX_CTRL_DMAEN | SDHC_MIX_CTRL_BCEN | SDHC_MIX_CTRL_AC12EN | + SDHC_MIX_CTRL_DDR_EN | SDHC_MIX_CTRL_DTDSEL | SDHC_MIX_CTRL_MSBSEL | + SDHC_MIX_CTRL_NIBBLE_POS | SDHC_MIX_CTRL_AC23EN; const uint32_t DATA_READ = SDHC_MIX_CTRL_DTDSEL | SDHC_XFERTYP_DPSEL; @@ -116,7 +109,6 @@ const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_MIX_CTRL_MSBSEL | const uint32_t DATA_READ_MULTI_PGM = DATA_READ | SDHC_MIX_CTRL_MSBSEL; - const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_MIX_CTRL_DMAEN; const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_MIX_CTRL_MSBSEL | @@ -128,16 +120,22 @@ const uint32_t DATA_WRITE_MULTI_PGM = SDHC_XFERTYP_DPSEL | SDHC_MIX_CTRL_MSBSEL; const uint32_t ACMD6_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD6) | CMD_RESP_R1; +const uint32_t ACMD13_XFERTYP = + SDHC_XFERTYP_CMDINX(ACMD13) | CMD_RESP_R1 | DATA_READ_DMA; + const uint32_t ACMD41_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD41) | CMD_RESP_R3; +const uint32_t ACMD51_XFERTYP = + SDHC_XFERTYP_CMDINX(ACMD51) | CMD_RESP_R1 | DATA_READ_DMA; + const uint32_t CMD0_XFERTYP = SDHC_XFERTYP_CMDINX(CMD0) | CMD_RESP_NONE; const uint32_t CMD2_XFERTYP = SDHC_XFERTYP_CMDINX(CMD2) | CMD_RESP_R2; const uint32_t CMD3_XFERTYP = SDHC_XFERTYP_CMDINX(CMD3) | CMD_RESP_R6; -const uint32_t CMD6_XFERTYP = SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | - DATA_READ_DMA; +const uint32_t CMD6_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | DATA_READ_DMA; const uint32_t CMD7_XFERTYP = SDHC_XFERTYP_CMDINX(CMD7) | CMD_RESP_R1b; @@ -149,28 +147,28 @@ const uint32_t CMD10_XFERTYP = SDHC_XFERTYP_CMDINX(CMD10) | CMD_RESP_R2; const uint32_t CMD11_XFERTYP = SDHC_XFERTYP_CMDINX(CMD11) | CMD_RESP_R1; -const uint32_t CMD12_XFERTYP = SDHC_XFERTYP_CMDINX(CMD12) | CMD_RESP_R1b | - SDHC_XFERTYP_CMDTYP(3); +const uint32_t CMD12_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD12) | CMD_RESP_R1b | SDHC_XFERTYP_CMDTYP(3); const uint32_t CMD13_XFERTYP = SDHC_XFERTYP_CMDINX(CMD13) | CMD_RESP_R1; -const uint32_t CMD17_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | - DATA_READ_DMA; +const uint32_t CMD17_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | DATA_READ_DMA; -const uint32_t CMD18_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_DMA; +const uint32_t CMD18_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | DATA_READ_MULTI_DMA; -const uint32_t CMD18_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_PGM; +const uint32_t CMD18_PGM_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | DATA_READ_MULTI_PGM; -const uint32_t CMD24_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | - DATA_WRITE_DMA; +const uint32_t CMD24_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | DATA_WRITE_DMA; -const uint32_t CMD25_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_DMA; +const uint32_t CMD25_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | DATA_WRITE_MULTI_DMA; -const uint32_t CMD25_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_PGM; +const uint32_t CMD25_PGM_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | DATA_WRITE_MULTI_PGM; const uint32_t CMD32_XFERTYP = SDHC_XFERTYP_CMDINX(CMD32) | CMD_RESP_R1; @@ -208,12 +206,21 @@ static uint32_t m_sdClkKhz = 0; static uint32_t m_ocr; static cid_t m_cid; static csd_t m_csd; +static scr_t m_scr; +static sds_t m_sds; //============================================================================== -#define DBG_TRACE Serial.print("TRACE."); Serial.println(__LINE__); delay(200); +#define DBG_TRACE \ + Serial.print("TRACE."); \ + Serial.println(__LINE__); \ + delay(200); #define USE_DEBUG_MODE 0 #if USE_DEBUG_MODE -#define DBG_IRQSTAT() if (SDHC_IRQSTAT) {Serial.print(__LINE__);\ - Serial.print(" IRQSTAT "); Serial.println(SDHC_IRQSTAT, HEX);} +#define DBG_IRQSTAT() \ + if (SDHC_IRQSTAT) { \ + Serial.print(__LINE__); \ + Serial.print(" IRQSTAT "); \ + Serial.println(SDHC_IRQSTAT, HEX); \ + } static void printRegs(uint32_t line) { uint32_t blkattr = SDHC_BLKATTR; uint32_t xfertyp = SDHC_XFERTYP; @@ -230,36 +237,68 @@ static void printRegs(uint32_t line) { Serial.print(xfertyp >> 24); Serial.print(" TYP"); Serial.print((xfertyp >> 2) & 3); - if (xfertyp & SDHC_XFERTYP_DPSEL) {Serial.print(" DPSEL");} + if (xfertyp & SDHC_XFERTYP_DPSEL) { + Serial.print(" DPSEL"); + } Serial.println(); Serial.print("PRSSTAT "); Serial.print(prsstat, HEX); - if (prsstat & SDHC_PRSSTAT_BREN) {Serial.print(" BREN");} - if (prsstat & SDHC_PRSSTAT_BWEN) {Serial.print(" BWEN");} - if (prsstat & SDHC_PRSSTAT_RTA) {Serial.print(" RTA");} - if (prsstat & SDHC_PRSSTAT_WTA) {Serial.print(" WTA");} - if (prsstat & SDHC_PRSSTAT_SDOFF) {Serial.print(" SDOFF");} - if (prsstat & SDHC_PRSSTAT_PEROFF) {Serial.print(" PEROFF");} - if (prsstat & SDHC_PRSSTAT_HCKOFF) {Serial.print(" HCKOFF");} - if (prsstat & SDHC_PRSSTAT_IPGOFF) {Serial.print(" IPGOFF");} - if (prsstat & SDHC_PRSSTAT_SDSTB) {Serial.print(" SDSTB");} - if (prsstat & SDHC_PRSSTAT_DLA) {Serial.print(" DLA");} - if (prsstat & SDHC_PRSSTAT_CDIHB) {Serial.print(" CDIHB");} - if (prsstat & SDHC_PRSSTAT_CIHB) {Serial.print(" CIHB");} + if (prsstat & SDHC_PRSSTAT_BREN) { + Serial.print(" BREN"); + } + if (prsstat & SDHC_PRSSTAT_BWEN) { + Serial.print(" BWEN"); + } + if (prsstat & SDHC_PRSSTAT_RTA) { + Serial.print(" RTA"); + } + if (prsstat & SDHC_PRSSTAT_WTA) { + Serial.print(" WTA"); + } + if (prsstat & SDHC_PRSSTAT_SDOFF) { + Serial.print(" SDOFF"); + } + if (prsstat & SDHC_PRSSTAT_PEROFF) { + Serial.print(" PEROFF"); + } + if (prsstat & SDHC_PRSSTAT_HCKOFF) { + Serial.print(" HCKOFF"); + } + if (prsstat & SDHC_PRSSTAT_IPGOFF) { + Serial.print(" IPGOFF"); + } + if (prsstat & SDHC_PRSSTAT_SDSTB) { + Serial.print(" SDSTB"); + } + if (prsstat & SDHC_PRSSTAT_DLA) { + Serial.print(" DLA"); + } + if (prsstat & SDHC_PRSSTAT_CDIHB) { + Serial.print(" CDIHB"); + } + if (prsstat & SDHC_PRSSTAT_CIHB) { + Serial.print(" CIHB"); + } Serial.println(); Serial.print("PROCTL "); Serial.print(proctl, HEX); if (proctl & SDHC_PROCTL_SABGREQ) Serial.print(" SABGREQ"); Serial.print(" EMODE"); - Serial.print((proctl >>4) & 3); + Serial.print((proctl >> 4) & 3); Serial.print(" DWT"); - Serial.print((proctl >>1) & 3); + Serial.print((proctl >> 1) & 3); Serial.println(); Serial.print("IRQSTAT "); Serial.print(irqstat, HEX); - if (irqstat & SDHC_IRQSTAT_BGE) {Serial.print(" BGE");} - if (irqstat & SDHC_IRQSTAT_TC) {Serial.print(" TC");} - if (irqstat & SDHC_IRQSTAT_CC) {Serial.print(" CC");} + if (irqstat & SDHC_IRQSTAT_BGE) { + Serial.print(" BGE"); + } + if (irqstat & SDHC_IRQSTAT_TC) { + Serial.print(" TC"); + } + if (irqstat & SDHC_IRQSTAT_CC) { + Serial.print(" CC"); + } Serial.print("\nm_irqstat "); Serial.println(m_irqstat, HEX); } @@ -294,12 +333,12 @@ static void sdIrs() { //------------------------------------------------------------------------------ static void enableGPIO(bool enable) { const uint32_t PORT_CLK = PORT_PCR_MUX(4) | PORT_PCR_DSE; - const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PE | PORT_PCR_PS; + const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PE | PORT_PCR_PS; const uint32_t PORT_PUP = PORT_PCR_MUX(1) | PORT_PCR_PE | PORT_PCR_PS; PORTE_PCR0 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D1 PORTE_PCR1 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D0 - PORTE_PCR2 = enable ? PORT_CLK : PORT_PUP; // SDHC_CLK + PORTE_PCR2 = enable ? PORT_CLK : PORT_PUP; // SDHC_CLK PORTE_PCR3 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_CMD PORTE_PCR4 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D3 PORTE_PCR5 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D2 @@ -313,7 +352,7 @@ static void initClock() { // Enable SDHC clock. SIM_SCGC3 |= SIM_SCGC3_SDHC; } -static uint32_t baseClock() { return F_CPU;} +static uint32_t baseClock() { return F_CPU; } #elif defined(__IMXRT1062__) //------------------------------------------------------------------------------ @@ -331,13 +370,13 @@ static void enableGPIO(bool enable) { const uint32_t CLOCK_MASK = IOMUXC_SW_PAD_CTL_PAD_PKE | #if defined(ARDUINO_TEENSY41) IOMUXC_SW_PAD_CTL_PAD_DSE(7) | -#else // defined(ARDUINO_TEENSY41) +#else // defined(ARDUINO_TEENSY41) IOMUXC_SW_PAD_CTL_PAD_DSE(4) | ///// WHG #endif // defined(ARDUINO_TEENSY41) IOMUXC_SW_PAD_CTL_PAD_SPEED(2); - const uint32_t DATA_MASK = CLOCK_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE | - IOMUXC_SW_PAD_CTL_PAD_PUS(1); + const uint32_t DATA_MASK = + CLOCK_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE | IOMUXC_SW_PAD_CTL_PAD_PUS(1); if (enable) { gpioMux(0); IOMUXC_SW_PAD_CTL_PAD_GPIO_SD_B0_04 = DATA_MASK; // DAT2 @@ -361,20 +400,20 @@ static void initClock() { /* Enable USDHC clock. */ CCM_CCGR6 |= CCM_CCGR6_USDHC1(CCM_CCGR_ON); CCM_CSCDR1 &= ~(CCM_CSCDR1_USDHC1_CLK_PODF_MASK); - CCM_CSCMR1 |= CCM_CSCMR1_USDHC1_CLK_SEL; // PLL2PFD0 -// CCM_CSCDR1 |= CCM_CSCDR1_USDHC1_CLK_PODF((7)); / &0x7 WHG + CCM_CSCMR1 |= CCM_CSCMR1_USDHC1_CLK_SEL; // PLL2PFD0 + // CCM_CSCDR1 |= CCM_CSCDR1_USDHC1_CLK_PODF((7)); / &0x7 WHG CCM_CSCDR1 |= CCM_CSCDR1_USDHC1_CLK_PODF((1)); } //------------------------------------------------------------------------------ static uint32_t baseClock() { uint32_t divider = ((CCM_CSCDR1 >> 11) & 0x7) + 1; - return (528000000U * 3)/((CCM_ANALOG_PFD_528 & 0x3F)/6)/divider; + return (528000000U * 3) / ((CCM_ANALOG_PFD_528 & 0x3F) / 6) / divider; } #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) //============================================================================== // Static functions. static bool cardAcmd(uint32_t rca, uint32_t xfertyp, uint32_t arg) { - return cardCommand(CMD55_XFERTYP, rca) && cardCommand (xfertyp, arg); + return cardCommand(CMD55_XFERTYP, rca) && cardCommand(xfertyp, arg); } //------------------------------------------------------------------------------ static bool cardCommand(uint32_t xfertyp, uint32_t arg) { @@ -398,21 +437,38 @@ static bool cardCommand(uint32_t xfertyp, uint32_t arg) { m_irqstat = SDHC_IRQSTAT; SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_CC) && - !(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); + return (m_irqstat & SDHC_IRQSTAT_CC) && !(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); } //------------------------------------------------------------------------------ -static bool cardCMD6(uint32_t arg, uint8_t* status) { - // CMD6 returns 64 bytes. +static bool cardACMD13(sds_t* scr) { + // ACMD13 returns 64 bytes. if (waitTimeout(isBusyCMD13)) { return sdError(SD_CARD_ERROR_CMD13); } enableDmaIrs(); - SDHC_DSADDR = (uint32_t)status; + SDHC_DSADDR = (uint32_t)scr; SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - if (!cardCommand(CMD6_XFERTYP, arg)) { - return sdError(SD_CARD_ERROR_CMD6); + if (!cardAcmd(m_rca, ACMD13_XFERTYP, 0)) { + return sdError(SD_CARD_ERROR_ACMD13); + } + if (!waitDmaStatus()) { + return sdError(SD_CARD_ERROR_DMA); + } + return true; +} +//------------------------------------------------------------------------------ +static bool cardACMD51(scr_t* scr) { + // ACMD51 returns 8 bytes. + if (waitTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + enableDmaIrs(); + SDHC_DSADDR = (uint32_t)scr; + SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(8); + SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; + if (!cardAcmd(m_rca, ACMD51_XFERTYP, 0)) { + return sdError(SD_CARD_ERROR_ACMD51); } if (!waitDmaStatus()) { return sdError(SD_CARD_ERROR_DMA); @@ -431,7 +487,7 @@ static void initSDHC() { // Disable GPIO clock. enableGPIO(false); -#if defined (__IMXRT1062__) +#if defined(__IMXRT1062__) SDHC_MIX_CTRL |= 0x80000000; #endif // (__IMXRT1062__) @@ -450,7 +506,7 @@ static void initSDHC() { SDHC_IRQSTATEN = SDHC_IRQSTATEN_MASK; attachInterruptVector(IRQ_SDHC, sdIrs); - NVIC_SET_PRIORITY(IRQ_SDHC, 6*16); + NVIC_SET_PRIORITY(IRQ_SDHC, 6 * 16); NVIC_ENABLE_IRQ(IRQ_SDHC); // Send 80 clocks to card. @@ -471,32 +527,22 @@ static bool isBusyCommandComplete() { return !(SDHC_IRQSTAT & (SDHC_IRQSTAT_CC | SDHC_IRQSTAT_CMD_ERROR)); } //------------------------------------------------------------------------------ -static bool isBusyCommandInhibit() { - return SDHC_PRSSTAT & SDHC_PRSSTAT_CIHB; -} +static bool isBusyCommandInhibit() { return SDHC_PRSSTAT & SDHC_PRSSTAT_CIHB; } //------------------------------------------------------------------------------ -static bool isBusyDat() { - return SDHC_PRSSTAT & (1 << 24) ? false : true; -} +static bool isBusyDat() { return SDHC_PRSSTAT & (1 << 24) ? false : true; } //------------------------------------------------------------------------------ -static bool isBusyDMA() { - return m_dmaBusy; -} +static bool isBusyDMA() { return m_dmaBusy; } //------------------------------------------------------------------------------ -static bool isBusyFifoRead() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BREN); -} +static bool isBusyFifoRead() { return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BREN); } //------------------------------------------------------------------------------ -static bool isBusyFifoWrite() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN); -} +static bool isBusyFifoWrite() { return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN); } //------------------------------------------------------------------------------ static bool isBusyTransferComplete() { return !(SDHC_IRQSTAT & (SDHC_IRQSTAT_TC | SDHC_IRQSTAT_ERROR)); } //------------------------------------------------------------------------------ -static bool rdWrSectors(uint32_t xfertyp, - uint32_t sector, uint8_t* buf, size_t n) { +static bool rdWrSectors(uint32_t xfertyp, uint32_t sector, uint8_t* buf, + size_t n) { if ((3 & (uint32_t)buf) || n == 0) { return sdError(SD_CARD_ERROR_DMA); } @@ -504,10 +550,10 @@ static bool rdWrSectors(uint32_t xfertyp, return sdError(SD_CARD_ERROR_CMD13); } enableDmaIrs(); - SDHC_DSADDR = (uint32_t)buf; + SDHC_DSADDR = (uint32_t)buf; SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(n) | SDHC_BLKATTR_BLKSIZE(512); SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - if (!cardCommand(xfertyp, m_highCapacity ? sector : 512*sector)) { + if (!cardCommand(xfertyp, m_highCapacity ? sector : 512 * sector)) { return false; } return waitDmaStatus(); @@ -521,7 +567,7 @@ static bool readReg16(uint32_t xfertyp, void* data) { } uint32_t sr[] = {SDHC_CMDRSP0, SDHC_CMDRSP1, SDHC_CMDRSP2, SDHC_CMDRSP3}; for (int i = 0; i < 15; i++) { - d[14 - i] = sr[i/4] >> 8*(i%4); + d[14 - i] = sr[i / 4] >> 8 * (i % 4); } d[15] = 0; return true; @@ -532,16 +578,17 @@ static void setSdclk(uint32_t kHzMax) { const uint32_t SDCLKFS_LIMIT = 0X100; uint32_t dvs = 1; uint32_t sdclkfs = 1; - uint32_t maxSdclk = 1000*kHzMax; + uint32_t maxSdclk = 1000 * kHzMax; uint32_t base = baseClock(); - while ((base/(sdclkfs*DVS_LIMIT) > maxSdclk) && (sdclkfs < SDCLKFS_LIMIT)) { + while ((base / (sdclkfs * DVS_LIMIT) > maxSdclk) && + (sdclkfs < SDCLKFS_LIMIT)) { sdclkfs <<= 1; } - while ((base/(sdclkfs*dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { + while ((base / (sdclkfs * dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { dvs++; } - m_sdClkKhz = base/(1000*sdclkfs*dvs); + m_sdClkKhz = base / (1000 * sdclkfs * dvs); sdclkfs >>= 1; dvs--; #if defined(__MK64FX512__) || defined(__MK66FX1M0__) @@ -550,11 +597,12 @@ static void setSdclk(uint32_t kHzMax) { #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) // Change dividers. - uint32_t sysctl = SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK - | SDHC_SYSCTL_DVS_MASK | SDHC_SYSCTL_SDCLKFS_MASK); + uint32_t sysctl = + SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK | SDHC_SYSCTL_DVS_MASK | + SDHC_SYSCTL_SDCLKFS_MASK); - SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) - | SDHC_SYSCTL_SDCLKFS(sdclkfs); + SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) | + SDHC_SYSCTL_SDCLKFS(sdclkfs); // Wait until the SDHC clock is stable. while (!(SDHC_PRSSTAT & SDHC_PRSSTAT_SDSTB)) { @@ -662,12 +710,16 @@ bool SdioCard::begin(SdioConfig sdioConfig) { m_version2 = true; break; } + SDHC_SYSCTL |= SDHC_SYSCTL_RSTA; + while (SDHC_SYSCTL & SDHC_SYSCTL_RSTA) { + } } + // Must support 3.2-3.4 Volts arg = m_version2 ? 0X40300000 : 0x00300000; int m = micros(); do { if (!cardAcmd(0, ACMD41_XFERTYP, arg) || - ((micros() - m) > BUSY_TIMEOUT_MICROS)) { + ((micros() - m) > BUSY_TIMEOUT_MICROS)) { return sdError(SD_CARD_ERROR_ACMD41); } } while ((SDHC_CMDRSP0 & 0x80000000) == 0); @@ -703,14 +755,32 @@ bool SdioCard::begin(SdioConfig sdioConfig) { SDHC_WML = SDHC_WML_RDWML(FIFO_WML) | SDHC_WML_WRWML(FIFO_WML); + if (!cardACMD51(&m_scr)) { + return false; + } + if (!cardACMD13(&m_sds)) { + return false; + } // Determine if High Speed mode is supported and set frequency. // Check status[16] for error 0XF or status[16] for new mode 0X1. uint8_t status[64]; - if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && - cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - kHzSdClk = 50000; - } else { - kHzSdClk = 25000; + kHzSdClk = 25000; + if (m_scr.sdSpec() > 0) { + // card is 1.10 or greater - must support CMD6 + if (!cardCMD6(0X00FFFFFF, status)) { + return false; + } + if (2 & status[13]) { + // Card supports High Speed mode - switch mode. + if (!cardCMD6(0X80FFFFF1, status)) { + return false; + } + if ((status[16] & 0XF) == 1) { + kHzSdClk = 50000; + } else { + return sdError(SD_CARD_ERROR_CMD6); + } + } } // Disable GPIO. enableGPIO(false); @@ -724,16 +794,32 @@ bool SdioCard::begin(SdioConfig sdioConfig) { return true; } //------------------------------------------------------------------------------ +bool SdioCard::cardCMD6(uint32_t arg, uint8_t* status) { + // CMD6 returns 64 bytes. + if (waitTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + enableDmaIrs(); + SDHC_DSADDR = (uint32_t)status; + SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); + SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; + if (!cardCommand(CMD6_XFERTYP, arg)) { + return sdError(SD_CARD_ERROR_CMD6); + } + if (!waitDmaStatus()) { + return sdError(SD_CARD_ERROR_DMA); + } + return true; +} +//------------------------------------------------------------------------------ bool SdioCard::erase(uint32_t firstSector, uint32_t lastSector) { -#if ENABLE_TEENSY_SDIO_MOD if (m_curState != IDLE_STATE && !syncDevice()) { return false; } -#endif // ENABLE_TEENSY_SDIO_MOD // check for single sector erase - if (!m_csd.v1.erase_blk_en) { + if (!m_csd.eraseSingleBlock()) { // erase size mask - uint8_t m = (m_csd.v1.sector_size_high << 1) | m_csd.v1.sector_size_low; + uint8_t m = m_csd.eraseSize() - 1; if ((firstSector & m) != 0 || ((lastSector + 1) & m) != 0) { // error card can't erase specified area return sdError(SD_CARD_ERROR_ERASE_SINGLE_SECTOR); @@ -747,7 +833,7 @@ bool SdioCard::erase(uint32_t firstSector, uint32_t lastSector) { return sdError(SD_CARD_ERROR_CMD32); } if (!cardCommand(CMD33_XFERTYP, lastSector)) { - return sdError(SD_CARD_ERROR_CMD33); + return sdError(SD_CARD_ERROR_CMD33); } if (!cardCommand(CMD38_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD38); @@ -758,17 +844,11 @@ bool SdioCard::erase(uint32_t firstSector, uint32_t lastSector) { return true; } //------------------------------------------------------------------------------ -uint8_t SdioCard::errorCode() const { - return m_errorCode; -} +uint8_t SdioCard::errorCode() const { return m_errorCode; } //------------------------------------------------------------------------------ -uint32_t SdioCard::errorData() const { - return m_irqstat; -} +uint32_t SdioCard::errorData() const { return m_irqstat; } //------------------------------------------------------------------------------ -uint32_t SdioCard::errorLine() const { - return m_errorLine; -} +uint32_t SdioCard::errorLine() const { return m_errorLine; } //------------------------------------------------------------------------------ bool SdioCard::isBusy() { if (m_sdioConfig.useDma()) { @@ -785,7 +865,7 @@ bool SdioCard::isBusy() { m_transferActive = false; stopTransmission(false); return true; -#else // defined(__MK64FX512__) || defined(__MK66FX1M0__) +#else // defined(__MK64FX512__) || defined(__MK66FX1M0__) return false; #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) } @@ -794,17 +874,15 @@ bool SdioCard::isBusy() { } } //------------------------------------------------------------------------------ -uint32_t SdioCard::kHzSdClk() { - return m_sdClkKhz; -} +uint32_t SdioCard::kHzSdClk() { return m_sdClkKhz; } //------------------------------------------------------------------------------ bool SdioCard::readCID(cid_t* cid) { - memcpy(cid, &m_cid, 16); + memcpy(cid, &m_cid, sizeof(cid_t)); return true; } //------------------------------------------------------------------------------ bool SdioCard::readCSD(csd_t* csd) { - memcpy(csd, &m_csd, 16); + memcpy(csd, &m_csd, sizeof(csd_t)); return true; } //------------------------------------------------------------------------------ @@ -822,7 +900,7 @@ bool SdioCard::readData(uint8_t* dst) { if (waitTimeout(isBusyFifoRead)) { return sdError(SD_CARD_ERROR_READ_FIFO); } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { + for (uint32_t iw = 0; iw < 512 / (4 * FIFO_WML); iw++) { while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BREN)) { } for (uint32_t i = 0; i < FIFO_WML; i++) { @@ -843,6 +921,16 @@ bool SdioCard::readOCR(uint32_t* ocr) { return true; } //------------------------------------------------------------------------------ +bool SdioCard::readSCR(scr_t* scr) { + memcpy(scr, &m_scr, sizeof(scr_t)); + return true; +} +//------------------------------------------------------------------------------ +bool SdioCard::readSDS(sds_t* sds) { + memcpy(sds, &m_sds, sizeof(sds_t)); + return true; +} +//------------------------------------------------------------------------------ bool SdioCard::readSector(uint32_t sector, uint8_t* dst) { if (m_sdioConfig.useDma()) { uint8_t aligned[512]; @@ -899,7 +987,7 @@ bool SdioCard::readSectors(uint32_t sector, uint8_t* dst, size_t n) { } } else { for (size_t i = 0; i < n; i++) { - if (!readSector(sector + i, dst + i*512UL)) { + if (!readSector(sector + i, dst + i * 512UL)) { return false; } } @@ -917,28 +1005,22 @@ bool SdioCard::readStart(uint32_t sector) { #if defined(__IMXRT1062__) // Infinite transfer. SDHC_BLKATTR = SDHC_BLKATTR_BLKSIZE(512); -#else // defined(__IMXRT1062__) +#else // defined(__IMXRT1062__) // Errata - can't do infinite transfer. SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(MAX_BLKCNT) | SDHC_BLKATTR_BLKSIZE(512); #endif // defined(__IMXRT1062__) - if (!cardCommand(CMD18_PGM_XFERTYP, m_highCapacity ? sector : 512*sector)) { + if (!cardCommand(CMD18_PGM_XFERTYP, m_highCapacity ? sector : 512 * sector)) { return sdError(SD_CARD_ERROR_CMD18); } return true; } //------------------------------------------------------------------------------ -bool SdioCard::readStop() { - return transferStop(); -} +bool SdioCard::readStop() { return transferStop(); } //------------------------------------------------------------------------------ -uint32_t SdioCard::sectorCount() { - return sdCardCapacity(&m_csd); -} +uint32_t SdioCard::sectorCount() { return m_csd.capacity(); } //------------------------------------------------------------------------------ -uint32_t SdioCard::status() { - return statusCMD13(); -} +uint32_t SdioCard::status() { return statusCMD13(); } //------------------------------------------------------------------------------ bool SdioCard::stopTransmission(bool blocking) { m_curState = IDLE_STATE; @@ -966,8 +1048,10 @@ bool SdioCard::syncDevice() { } //------------------------------------------------------------------------------ uint8_t SdioCard::type() const { - return m_version2 ? m_highCapacity ? - SD_CARD_TYPE_SDHC : SD_CARD_TYPE_SD2 : SD_CARD_TYPE_SD1; + return !m_initDone ? 0 + : !m_version2 ? SD_CARD_TYPE_SD1 + : !m_highCapacity ? SD_CARD_TYPE_SD2 + : SD_CARD_TYPE_SDHC; } //------------------------------------------------------------------------------ bool SdioCard::writeData(const uint8_t* src) { @@ -984,7 +1068,7 @@ bool SdioCard::writeData(const uint8_t* src) { if (waitTimeout(isBusyFifoWrite)) { return sdError(SD_CARD_ERROR_WRITE_FIFO); } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { + for (uint32_t iw = 0; iw < 512 / (4 * FIFO_WML); iw++) { while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN)) { } for (uint32_t i = 0; i < FIFO_WML; i++) { @@ -1025,7 +1109,7 @@ bool SdioCard::writeSector(uint32_t sector, const uint8_t* src) { if (!syncDevice()) { return false; } - if (!writeStart(sector )) { + if (!writeStart(sector)) { return false; } m_curSector = sector; @@ -1055,7 +1139,7 @@ bool SdioCard::writeSectors(uint32_t sector, const uint8_t* src, size_t n) { } } else { for (size_t i = 0; i < n; i++) { - if (!writeSector(sector + i, src + i*512UL)) { + if (!writeSector(sector + i, src + i * 512UL)) { return false; } } @@ -1072,17 +1156,15 @@ bool SdioCard::writeStart(uint32_t sector) { #if defined(__IMXRT1062__) // Infinite transfer. SDHC_BLKATTR = SDHC_BLKATTR_BLKSIZE(512); -#else // defined(__IMXRT1062__) +#else // defined(__IMXRT1062__) // Errata - can't do infinite transfer. SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(MAX_BLKCNT) | SDHC_BLKATTR_BLKSIZE(512); #endif // defined(__IMXRT1062__) - if (!cardCommand(CMD25_PGM_XFERTYP, m_highCapacity ? sector : 512*sector)) { + if (!cardCommand(CMD25_PGM_XFERTYP, m_highCapacity ? sector : 512 * sector)) { return sdError(SD_CARD_ERROR_CMD25); } return true; } //------------------------------------------------------------------------------ -bool SdioCard::writeStop() { - return transferStop(); -} +bool SdioCard::writeStop() { return transferStop(); } #endif // defined(__MK64FX512__) defined(__MK66FX1M0__) defined(__IMXRT1062__) diff --git a/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.h new file mode 100644 index 00000000..5d97e569 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdCard/SdioTeensy.h @@ -0,0 +1,530 @@ +/** + * \file + * \brief Definitions for Teensy HDHC. + */ + +#ifndef SdioTeensy_h +#define SdioTeensy_h + +// From Paul's SD.h driver. + +#if defined(__IMXRT1062__) +#define MAKE_REG_MASK(m, s) (((uint32_t)(((uint32_t)(m) << s)))) +#define MAKE_REG_GET(x, m, s) (((uint32_t)(((uint32_t)(x) >> s) & m))) +#define MAKE_REG_SET(x, m, s) (((uint32_t)(((uint32_t)(x)&m) << s))) + +#define SDHC_BLKATTR_BLKSIZE_MASK \ + MAKE_REG_MASK( \ + 0x1FFF, 0) // uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size Mask +#define SDHC_BLKATTR_BLKSIZE(n) \ + MAKE_REG_SET(n, 0x1FFF, \ + 0) // uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size +#define SDHC_BLKATTR_BLKCNT_MASK \ + MAKE_REG_MASK(0x1FFF, 16) //((uint32_t)0x1FFF<<16) +#define SDHC_BLKATTR_BLKCNT(n) \ + MAKE_REG_SET(n, 0x1FFF, 16) //(uint32_t)(((n) & 0x1FFF)<<16) // Blocks Count + // For Current Transfer + +#define SDHC_XFERTYP_CMDINX(n) \ + MAKE_REG_SET(n, 0x3F, 24) //(uint32_t)(((n) & 0x3F)<<24)// Command Index +#define SDHC_XFERTYP_CMDTYP(n) \ + MAKE_REG_SET(n, 0x3, 22) //(uint32_t)(((n) & 0x3)<<22) // Command Type +#define SDHC_XFERTYP_DPSEL \ + MAKE_REG_MASK(0x1, 21) //((uint32_t)0x00200000) // Data Present Select +#define SDHC_XFERTYP_CICEN \ + MAKE_REG_MASK(0x1, \ + 20) //((uint32_t)0x00100000) // Command Index Check Enable +#define SDHC_XFERTYP_CCCEN \ + MAKE_REG_MASK(0x1, \ + 19) //((uint32_t)0x00080000) // Command CRC Check Enable +#define SDHC_XFERTYP_RSPTYP(n) \ + MAKE_REG_SET(n, 0x3, \ + 16) //(uint32_t)(((n) & 0x3)<<16) // Response Type Select +#define SDHC_XFERTYP_MSBSEL \ + MAKE_REG_MASK(0x1, 5) //((uint32_t)0x00000020) // Multi/Single Block Select +#define SDHC_XFERTYP_DTDSEL \ + MAKE_REG_MASK( \ + 0x1, 4) //((uint32_t)0x00000010) // Data Transfer Direction Select +#define SDHC_XFERTYP_AC12EN \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Auto CMD12 Enable +#define SDHC_XFERTYP_BCEN \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Block Count Enable +#define SDHC_XFERTYP_DMAEN \ + MAKE_REG_MASK(0x3, 0) //((uint32_t)0x00000001) // DMA Enable + +#define SDHC_PRSSTAT_DLSL_MASK \ + MAKE_REG_MASK(0xFF, 24) //((uint32_t)0xFF000000) // DAT Line Signal Level +#define SDHC_PRSSTAT_CLSL \ + MAKE_REG_MASK(0x1, 23) //((uint32_t)0x00800000) // CMD Line Signal Level +#define SDHC_PRSSTAT_WPSPL MAKE_REG_MASK(0x1, 19) // +#define SDHC_PRSSTAT_CDPL MAKE_REG_MASK(0x1, 18) // +#define SDHC_PRSSTAT_CINS \ + MAKE_REG_MASK(0x1, 16) //((uint32_t)0x00010000) // Card Inserted +#define SDHC_PRSSTAT_TSCD MAKE_REG_MASK(0x1, 15) +#define SDHC_PRSSTAT_RTR MAKE_REG_MASK(0x1, 12) +#define SDHC_PRSSTAT_BREN \ + MAKE_REG_MASK(0x1, 11) //((uint32_t)0x00000800) // Buffer Read Enable +#define SDHC_PRSSTAT_BWEN \ + MAKE_REG_MASK(0x1, 10) //((uint32_t)0x00000400) // Buffer Write Enable +#define SDHC_PRSSTAT_RTA \ + MAKE_REG_MASK(0x1, 9) //((uint32_t)0x00000200) // Read Transfer Active +#define SDHC_PRSSTAT_WTA \ + MAKE_REG_MASK(0x1, 8) //((uint32_t)0x00000100) // Write Transfer Active +#define SDHC_PRSSTAT_SDOFF \ + MAKE_REG_MASK( \ + 0x1, 7) //((uint32_t)0x00000080) // SD Clock Gated Off Internally +#define SDHC_PRSSTAT_PEROFF \ + MAKE_REG_MASK( \ + 0x1, 6) //((uint32_t)0x00000040) // SDHC clock Gated Off Internally +#define SDHC_PRSSTAT_HCKOFF \ + MAKE_REG_MASK( \ + 0x1, 5) //((uint32_t)0x00000020) // System Clock Gated Off Internally +#define SDHC_PRSSTAT_IPGOFF \ + MAKE_REG_MASK( \ + 0x1, 4) //((uint32_t)0x00000010) // Bus Clock Gated Off Internally +#define SDHC_PRSSTAT_SDSTB \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // SD Clock Stable +#define SDHC_PRSSTAT_DLA \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Data Line Active +#define SDHC_PRSSTAT_CDIHB \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Command Inhibit (DAT) +#define SDHC_PRSSTAT_CIHB \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Command Inhibit (CMD) + +#define SDHC_PROTCT_NONEXACT_BLKRD MAKE_REG_MASK(0x1, 30) // +#define SDHC_PROTCT_BURST_LENEN(n) MAKE_REG_SET(n, 0x7, 12) // +#define SDHC_PROCTL_WECRM \ + MAKE_REG_MASK(0x1, 26) //((uint32_t)0x04000000) // Wakeup Event Enable On + // SD Card Removal +#define SDHC_PROCTL_WECINS \ + MAKE_REG_MASK(0x1, 25) //((uint32_t)0x02000000) // Wakeup Event Enable On + // SD Card Insertion +#define SDHC_PROCTL_WECINT \ + MAKE_REG_MASK(0x1, 24) //((uint32_t)0x01000000) // Wakeup Event Enable On + // Card Interrupt +#define SDHC_PROCTL_RD_DONE_NOBLK MAKE_REG_MASK(0x1, 20) // +#define SDHC_PROCTL_IABG \ + MAKE_REG_MASK(0x1, 19) //((uint32_t)0x00080000) // Interrupt At Block Gap +#define SDHC_PROCTL_RWCTL \ + MAKE_REG_MASK(0x1, 18) //((uint32_t)0x00040000) // Read Wait Control +#define SDHC_PROCTL_CREQ \ + MAKE_REG_MASK(0x1, 17) //((uint32_t)0x00020000) // Continue Request +#define SDHC_PROCTL_SABGREQ \ + MAKE_REG_MASK(0x1, \ + 16) //((uint32_t)0x00010000) // Stop At Block Gap Request +#define SDHC_PROCTL_DMAS(n) \ + MAKE_REG_SET(n, 0x3, 8) //(uint32_t)(((n) & 0x3)<<8) // DMA Select +#define SDHC_PROCTL_CDSS \ + MAKE_REG_MASK(0x1, \ + 7) //((uint32_t)0x00000080) // Card Detect Signal Selection +#define SDHC_PROCTL_CDTL \ + MAKE_REG_MASK(0x1, 6) //((uint32_t)0x00000040) // Card Detect Test Level +#define SDHC_PROCTL_EMODE(n) \ + MAKE_REG_SET(n, 0x3, 4) //(uint32_t)(((n) & 0x3)<<4) // Endian Mode +#define SDHC_PROCTL_EMODE_MASK \ + MAKE_REG_MASK(0x3, 4) //(uint32_t)((0x3)<<4) // Endian Mode +#define SDHC_PROCTL_D3CD \ + MAKE_REG_MASK(0x1, \ + 3) //((uint32_t)0x00000008) // DAT3 As Card Detection Pin +#define SDHC_PROCTL_DTW(n) \ + MAKE_REG_SET(n, 0x3, 1) //(uint32_t)(((n) & 0x3)<<1) // Data Transfer Width, + // 0=1bit, 1=4bit, 2=8bit +#define SDHC_PROCTL_DTW_MASK MAKE_REG_MASK(0x3, 1) //((uint32_t)0x00000006) +#define SDHC_PROCTL_LCTL \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // LED Control + +#define SDHC_SYSCTL_RSTT MAKE_REG_MASK(0x1, 28) // +#define SDHC_SYSCTL_INITA \ + MAKE_REG_MASK(0x1, 27) //((uint32_t)0x08000000) // Initialization Active +#define SDHC_SYSCTL_RSTD \ + MAKE_REG_MASK( \ + 0x1, 26) //((uint32_t)0x04000000) // Software Reset For DAT Line +#define SDHC_SYSCTL_RSTC \ + MAKE_REG_MASK( \ + 0x1, 25) //((uint32_t)0x02000000) // Software Reset For CMD Line +#define SDHC_SYSCTL_RSTA \ + MAKE_REG_MASK(0x1, 24) //((uint32_t)0x01000000) // Software Reset For ALL +#define SDHC_SYSCTL_DTOCV(n) \ + MAKE_REG_SET( \ + n, 0xF, \ + 16) //(uint32_t)(((n) & 0xF)<<16) // Data Timeout Counter Value +#define SDHC_SYSCTL_DTOCV_MASK MAKE_REG_MASK(0xF, 16) //((uint32_t)0x000F0000) +#define SDHC_SYSCTL_SDCLKFS(n) \ + MAKE_REG_SET(n, 0xFF, \ + 8) //(uint32_t)(((n) & 0xFF)<<8) // SDCLK Frequency Select +#define SDHC_SYSCTL_SDCLKFS_MASK \ + MAKE_REG_MASK(0xFF, 8) //((uint32_t)0x0000FF00) +#define SDHC_SYSCTL_DVS(n) \ + MAKE_REG_SET(n, 0xF, 4) //(uint32_t)(((n) & 0xF)<<4) // Divisor +#define SDHC_SYSCTL_DVS_MASK MAKE_REG_MASK(0xF, 4) //((uint32_t)0x000000F0) + +#define SDHC_SYSCTL_SDCLKEN ((uint32_t)0x00000008) // SD Clock Enable +#define SDHC_SYSCTL_PEREN ((uint32_t)0x00000004) // Peripheral Clock Enable +#define SDHC_SYSCTL_HCKEN ((uint32_t)0x00000002) // System Clock Enable +#define SDHC_SYSCTL_IPGEN ((uint32_t)0x00000001) // IPG Clock Enable + +#define SDHC_IRQSTAT_DMAE \ + MAKE_REG_MASK(0x1, 28) //((uint32_t)0x10000000) // DMA Error +#define SDHC_IRQSTAT_TNE MAKE_REG_MASK(0x1, 26) // +#define SDHC_IRQSTAT_AC12E \ + MAKE_REG_MASK(0x1, 24) //((uint32_t)0x01000000) // Auto CMD12 Error +#define SDHC_IRQSTAT_DEBE \ + MAKE_REG_MASK(0x1, 22) //((uint32_t)0x00400000) // Data End Bit Error +#define SDHC_IRQSTAT_DCE \ + MAKE_REG_MASK(0x1, 21) //((uint32_t)0x00200000) // Data CRC Error +#define SDHC_IRQSTAT_DTOE \ + MAKE_REG_MASK(0x1, 20) //((uint32_t)0x00100000) // Data Timeout Error +#define SDHC_IRQSTAT_CIE \ + MAKE_REG_MASK(0x1, 19) //((uint32_t)0x00080000) // Command Index Error +#define SDHC_IRQSTAT_CEBE \ + MAKE_REG_MASK(0x1, 18) //((uint32_t)0x00040000) // Command End Bit Error +#define SDHC_IRQSTAT_CCE \ + MAKE_REG_MASK(0x1, 17) //((uint32_t)0x00020000) // Command CRC Error +#define SDHC_IRQSTAT_CTOE \ + MAKE_REG_MASK(0x1, 16) //((uint32_t)0x00010000) // Command Timeout Error +#define SDHC_IRQSTAT_TP MAKE_REG_MASK(0x1, 14) // +#define SDHC_IRQSTAT_RTE MAKE_REG_MASK(0x1, 12) // +#define SDHC_IRQSTAT_CINT \ + MAKE_REG_MASK(0x1, 8) //((uint32_t)0x00000100) // Card Interrupt +#define SDHC_IRQSTAT_CRM \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // Card Removal +#define SDHC_IRQSTAT_CINS \ + MAKE_REG_MASK(0x1, 6) //((uint32_t)0x00000040) // Card Insertion +#define SDHC_IRQSTAT_BRR \ + MAKE_REG_MASK(0x1, 5) //((uint32_t)0x00000020) // Buffer Read Ready +#define SDHC_IRQSTAT_BWR \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Buffer Write Ready +#define SDHC_IRQSTAT_DINT \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // DMA Interrupt +#define SDHC_IRQSTAT_BGE \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Block Gap Event +#define SDHC_IRQSTAT_TC \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Transfer Complete +#define SDHC_IRQSTAT_CC \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Command Complete + +#define SDHC_IRQSTATEN_DMAESEN \ + MAKE_REG_MASK(0x1, 28) //((uint32_t)0x10000000) // DMA Error Status Enable +#define SDHC_IRQSTATEN_TNESEN MAKE_REG_MASK(0x1, 26) // +#define SDHC_IRQSTATEN_AC12ESEN \ + MAKE_REG_MASK( \ + 0x1, 24) //((uint32_t)0x01000000) // Auto CMD12 Error Status Enable +#define SDHC_IRQSTATEN_DEBESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 22) //((uint32_t)0x00400000) // Data End Bit Error Status Enable +#define SDHC_IRQSTATEN_DCESEN \ + MAKE_REG_MASK( \ + 0x1, 21) //((uint32_t)0x00200000) // Data CRC Error Status Enable +#define SDHC_IRQSTATEN_DTOESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 20) //((uint32_t)0x00100000) // Data Timeout Error Status Enable +#define SDHC_IRQSTATEN_CIESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 19) //((uint32_t)0x00080000) // Command Index Error Status Enable +#define SDHC_IRQSTATEN_CEBESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 18) //((uint32_t)0x00040000) // Command End Bit Error Status Enable +#define SDHC_IRQSTATEN_CCESEN \ + MAKE_REG_MASK( \ + 0x1, 17) //((uint32_t)0x00020000) // Command CRC Error Status Enable +#define SDHC_IRQSTATEN_CTOESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 16) //((uint32_t)0x00010000) // Command Timeout Error Status Enable +#define SDHC_IRQSTATEN_TPSEN MAKE_REG_MASK(0x1, 14) // +#define SDHC_IRQSTATEN_RTESEN MAKE_REG_MASK(0x1, 12) // +#define SDHC_IRQSTATEN_CINTSEN \ + MAKE_REG_MASK(0x1, \ + 8) //((uint32_t)0x00000100) // Card Interrupt Status Enable +#define SDHC_IRQSTATEN_CRMSEN \ + MAKE_REG_MASK(0x1, \ + 7) //((uint32_t)0x00000080) // Card Removal Status Enable +#define SDHC_IRQSTATEN_CINSEN \ + MAKE_REG_MASK(0x1, \ + 6) //((uint32_t)0x00000040) // Card Insertion Status Enable +#define SDHC_IRQSTATEN_BRRSEN \ + MAKE_REG_MASK( \ + 0x1, 5) //((uint32_t)0x00000020) // Buffer Read Ready Status Enable +#define SDHC_IRQSTATEN_BWRSEN \ + MAKE_REG_MASK( \ + 0x1, 4) //((uint32_t)0x00000010) // Buffer Write Ready Status Enable +#define SDHC_IRQSTATEN_DINTSEN \ + MAKE_REG_MASK(0x1, \ + 3) //((uint32_t)0x00000008) // DMA Interrupt Status Enable +#define SDHC_IRQSTATEN_BGESEN \ + MAKE_REG_MASK( \ + 0x1, 2) //((uint32_t)0x00000004) // Block Gap Event Status Enable +#define SDHC_IRQSTATEN_TCSEN \ + MAKE_REG_MASK( \ + 0x1, 1) //((uint32_t)0x00000002) // Transfer Complete Status Enable +#define SDHC_IRQSTATEN_CCSEN \ + MAKE_REG_MASK( \ + 0x1, 0) //((uint32_t)0x00000001) // Command Complete Status Enable + +#define SDHC_IRQSIGEN_DMAEIEN \ + MAKE_REG_MASK(0x1, \ + 28) //((uint32_t)0x10000000) // DMA Error Interrupt Enable +#define SDHC_IRQSIGEN_TNEIEN MAKE_REG_MASK(0x1, 26) // +#define SDHC_IRQSIGEN_AC12EIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 24) //((uint32_t)0x01000000) // Auto CMD12 Error Interrupt Enable +#define SDHC_IRQSIGEN_DEBEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 22) //((uint32_t)0x00400000) // Data End Bit Error Interrupt Enable +#define SDHC_IRQSIGEN_DCEIEN \ + MAKE_REG_MASK( \ + 0x1, 21) //((uint32_t)0x00200000) // Data CRC Error Interrupt Enable +#define SDHC_IRQSIGEN_DTOEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 20) //((uint32_t)0x00100000) // Data Timeout Error Interrupt Enable +#define SDHC_IRQSIGEN_CIEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 19) //((uint32_t)0x00080000) // Command Index Error Interrupt Enable +#define SDHC_IRQSIGEN_CEBEIEN \ + MAKE_REG_MASK(0x1, 18) //((uint32_t)0x00040000) // Command End Bit Error + // Interrupt Enable +#define SDHC_IRQSIGEN_CCEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 17) //((uint32_t)0x00020000) // Command CRC Error Interrupt Enable +#define SDHC_IRQSIGEN_CTOEIEN \ + MAKE_REG_MASK(0x1, 16) //((uint32_t)0x00010000) // Command Timeout Error + // Interrupt Enable +#define SDHC_IRQSIGEN_TPIEN MAKE_REG_MASK(0x1, 14) // +#define SDHC_IRQSIGEN_RTEIEN MAKE_REG_MASK(0x1, 12) // +#define SDHC_IRQSIGEN_CINTIEN \ + MAKE_REG_MASK( \ + 0x1, 8) //((uint32_t)0x00000100) // Card Interrupt Interrupt Enable +#define SDHC_IRQSIGEN_CRMIEN \ + MAKE_REG_MASK( \ + 0x1, 7) //((uint32_t)0x00000080) // Card Removal Interrupt Enable +#define SDHC_IRQSIGEN_CINSIEN \ + MAKE_REG_MASK( \ + 0x1, 6) //((uint32_t)0x00000040) // Card Insertion Interrupt Enable +#define SDHC_IRQSIGEN_BRRIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 5) //((uint32_t)0x00000020) // Buffer Read Ready Interrupt Enable +#define SDHC_IRQSIGEN_BWRIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 4) //((uint32_t)0x00000010) // Buffer Write Ready Interrupt Enable +#define SDHC_IRQSIGEN_DINTIEN \ + MAKE_REG_MASK( \ + 0x1, 3) //((uint32_t)0x00000008) // DMA Interrupt Interrupt Enable +#define SDHC_IRQSIGEN_BGEIEN \ + MAKE_REG_MASK( \ + 0x1, 2) //((uint32_t)0x00000004) // Block Gap Event Interrupt Enable +#define SDHC_IRQSIGEN_TCIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 1) //((uint32_t)0x00000002) // Transfer Complete Interrupt Enable +#define SDHC_IRQSIGEN_CCIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 0) //((uint32_t)0x00000001) // Command Complete Interrupt Enable + +#define SDHC_AC12ERR_SMPLCLK_SEL MAKE_REG_MASK(0x1, 23) // +#define SDHC_AC12ERR_EXEC_TUNING MAKE_REG_MASK(0x1, 22) // +#define SDHC_AC12ERR_CNIBAC12E \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // Command Not Issued By + // Auto CMD12 Error +#define SDHC_AC12ERR_AC12IE \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Auto CMD12 Index Error +#define SDHC_AC12ERR_AC12CE \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // Auto CMD12 CRC Error +#define SDHC_AC12ERR_AC12EBE \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Auto CMD12 End Bit Error +#define SDHC_AC12ERR_AC12TOE \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Auto CMD12 Timeout Error +#define SDHC_AC12ERR_AC12NE \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Auto CMD12 Not Executed + +#define SDHC_HTCAPBLT_VS18 MAKE_REG_MASK(0x1, 26) // +#define SDHC_HTCAPBLT_VS30 MAKE_REG_MASK(0x1, 25) // +#define SDHC_HTCAPBLT_VS33 MAKE_REG_MASK(0x1, 24) // +#define SDHC_HTCAPBLT_SRS MAKE_REG_MASK(0x1, 23) // +#define SDHC_HTCAPBLT_DMAS MAKE_REG_MASK(0x1, 22) // +#define SDHC_HTCAPBLT_HSS MAKE_REG_MASK(0x1, 21) // +#define SDHC_HTCAPBLT_ADMAS MAKE_REG_MASK(0x1, 20) // +#define SDHC_HTCAPBLT_MBL_VAL MAKE_REG_GET((USDHC1_HOST_CTRL_CAP), 0x7, 16) // +#define SDHC_HTCAPBLT_RETUN_MODE \ + MAKE_REG_GET((USDHC1_HOST_CTRL_CAP), 0x3, 14) // +#define SDHC_HTCAPBLT_TUNE_SDR50 MAKE_REG_MASK(0x1, 13) // +#define SDHC_HTCAPBLT_TIME_RETUN(n) MAKE_REG_SET(n, 0xF, 8) // + +#define SDHC_WML_WR_BRSTLEN_MASK MAKE_REG_MASK(0x1F, 24) // +#define SDHC_WML_RD_BRSTLEN_MASK MAKE_REG_MASK(0x1F, 8) // +#define SDHC_WML_WR_WML_MASK MAKE_REG_MASK(0xFF, 16) // +#define SDHC_WML_RD_WML_MASK MAKE_REG_MASK(0xFF, 0) // +#define SDHC_WML_WR_BRSTLEN(n) \ + MAKE_REG_SET(n, 0x1F, 24) //(uint32_t)(((n) & 0x7F)<<16) // Write Burst Len +#define SDHC_WML_RD_BRSTLEN(n) \ + MAKE_REG_SET(n, 0x1F, 8) //(uint32_t)(((n) & 0x7F)<<0) // Read Burst Len +#define SDHC_WML_WR_WML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level +#define SDHC_WML_RD_WML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level +#define SDHC_WML_WRWML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level +#define SDHC_WML_RDWML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level + +// Teensy 4.0 only +#define SDHC_MIX_CTRL_DMAEN MAKE_REG_MASK(0x1, 0) // +#define SDHC_MIX_CTRL_BCEN MAKE_REG_MASK(0x1, 1) // +#define SDHC_MIX_CTRL_AC12EN MAKE_REG_MASK(0x1, 2) // +#define SDHC_MIX_CTRL_DDR_EN MAKE_REG_MASK(0x1, 3) // +#define SDHC_MIX_CTRL_DTDSEL MAKE_REG_MASK(0x1, 4) // +#define SDHC_MIX_CTRL_MSBSEL MAKE_REG_MASK(0x1, 5) // +#define SDHC_MIX_CTRL_NIBBLE_POS MAKE_REG_MASK(0x1, 6) // +#define SDHC_MIX_CTRL_AC23EN MAKE_REG_MASK(0x1, 7) // + +#define SDHC_FEVT_CINT \ + MAKE_REG_MASK(0x1, \ + 31) //((uint32_t)0x80000000) // Force Event Card Interrupt +#define SDHC_FEVT_DMAE \ + MAKE_REG_MASK(0x1, 28) //((uint32_t)0x10000000) // Force Event DMA Error +#define SDHC_FEVT_AC12E \ + MAKE_REG_MASK( \ + 0x1, 24) //((uint32_t)0x01000000) // Force Event Auto CMD12 Error +#define SDHC_FEVT_DEBE \ + MAKE_REG_MASK( \ + 0x1, 22) //((uint32_t)0x00400000) // Force Event Data End Bit Error +#define SDHC_FEVT_DCE \ + MAKE_REG_MASK(0x1, \ + 21) //((uint32_t)0x00200000) // Force Event Data CRC Error +#define SDHC_FEVT_DTOE \ + MAKE_REG_MASK( \ + 0x1, 20) //((uint32_t)0x00100000) // Force Event Data Timeout Error +#define SDHC_FEVT_CIE \ + MAKE_REG_MASK( \ + 0x1, 19) //((uint32_t)0x00080000) // Force Event Command Index Error +#define SDHC_FEVT_CEBE \ + MAKE_REG_MASK( \ + 0x1, \ + 18) //((uint32_t)0x00040000) // Force Event Command End Bit Error +#define SDHC_FEVT_CCE \ + MAKE_REG_MASK( \ + 0x1, 17) //((uint32_t)0x00020000) // Force Event Command CRC Error +#define SDHC_FEVT_CTOE \ + MAKE_REG_MASK( \ + 0x1, \ + 16) //((uint32_t)0x00010000) // Force Event Command Timeout Error +#define SDHC_FEVT_CNIBAC12E \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // Force Event Command Not + // Executed By Auto Command 12 Error +#define SDHC_FEVT_AC12IE \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Force Event Auto Command + // 12 Index Error +#define SDHC_FEVT_AC12EBE \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // Force Event Auto Command + // 12 End Bit Error +#define SDHC_FEVT_AC12CE \ + MAKE_REG_MASK( \ + 0x1, \ + 2) //((uint32_t)0x00000004) // Force Event Auto Command 12 CRC Error +#define SDHC_FEVT_AC12TOE \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Force Event Auto Command + // 12 Time Out Error +#define SDHC_FEVT_AC12NE \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Force Event Auto Command + // 12 Not Executed + +#define SDHC_ADMAES_ADMADCE MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) +#define SDHC_ADMAES_ADMALME MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) +#define SDHC_ADMAES_ADMAES_MASK MAKE_REG_MASK(0x3, 0) //((uint32_t)0x00000003) + +#define SDHC_MMCBOOT_BOOTBLKCNT(n) \ + MAKE_REG_MASK(0xFF, 16) //(uint32_t)(((n) & 0xFFF)<<16) // stop at block gap + // value of automatic mode +#define SDHC_MMCBOOT_AUTOSABGEN \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // enable auto stop at + // block gap function +#define SDHC_MMCBOOT_BOOTEN \ + MAKE_REG_MASK(0x1, 6) //((uint32_t)0x00000040) // Boot Mode Enable +#define SDHC_MMCBOOT_BOOTMODE \ + MAKE_REG_MASK(0x1, 5) //((uint32_t)0x00000020) // Boot Mode Select +#define SDHC_MMCBOOT_BOOTACK \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Boot Ack Mode Select +#define SDHC_MMCBOOT_DTOCVACK(n) \ + MAKE_REG_MASK( \ + 0xF, \ + 0) //(uint32_t)(((n) & 0xF)<<0) // Boot ACK Time Out Counter Value +// #define SDHC_HOSTVER (*(volatile uint32_t*)0x400B10FC) // Host Controller +// Version + +#define CCM_ANALOG_PFD_528_PFD0_FRAC_MASK 0x3f +#define CCM_ANALOG_PFD_528_PFD0_FRAC(n) ((n)&CCM_ANALOG_PFD_528_PFD0_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD1_FRAC_MASK (0x3f << 8) +#define CCM_ANALOG_PFD_528_PFD1_FRAC(n) \ + (((n) << 8) & CCM_ANALOG_PFD_528_PFD1_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD2_FRAC_MASK (0x3f << 16) +#define CCM_ANALOG_PFD_528_PFD2_FRAC(n) \ + (((n) << 16) & CCM_ANALOG_PFD_528_PFD2_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD3_FRAC_MASK ((0x3f<<24) +#define CCM_ANALOG_PFD_528_PFD3_FRAC(n) \ + (((n) << 24) & CCM_ANALOG_PFD_528_PFD3_FRAC_MASK) + +#define SDHC_DSADDR (USDHC1_DS_ADDR) // DMA System Address register +#define SDHC_BLKATTR (USDHC1_BLK_ATT) // Block Attributes register +#define SDHC_CMDARG (USDHC1_CMD_ARG) // Command Argument register +#define SDHC_XFERTYP (USDHC1_CMD_XFR_TYP) // Transfer Type register +#define SDHC_CMDRSP0 (USDHC1_CMD_RSP0) // Command Response 0 +#define SDHC_CMDRSP1 (USDHC1_CMD_RSP1) // Command Response 1 +#define SDHC_CMDRSP2 (USDHC1_CMD_RSP2) // Command Response 2 +#define SDHC_CMDRSP3 (USDHC1_CMD_RSP3) // Command Response 3 +#define SDHC_DATPORT (USDHC1_DATA_BUFF_ACC_PORT) // Buffer Data Port register +#define SDHC_PRSSTAT (USDHC1_PRES_STATE) // Present State register +#define SDHC_PROCTL (USDHC1_PROT_CTRL) // Protocol Control register +#define SDHC_SYSCTL (USDHC1_SYS_CTRL) // System Control register +#define SDHC_IRQSTAT (USDHC1_INT_STATUS) // Interrupt Status register +#define SDHC_IRQSTATEN \ + (USDHC1_INT_STATUS_EN) // Interrupt Status Enable register +#define SDHC_IRQSIGEN \ + (USDHC1_INT_SIGNAL_EN) // Interrupt Signal Enable register +#define SDHC_AC12ERR \ + (USDHC1_AUTOCMD12_ERR_STATUS) // Auto CMD12 Error Status Register +#define SDHC_HTCAPBLT (USDHC1_HOST_CTRL_CAP) // Host Controller Capabilities +#define SDHC_WML (USDHC1_WTMK_LVL) // Watermark Level Register +#define SDHC_MIX_CTRL (USDHC1_MIX_CTRL) // Mixer Control +#define SDHC_FEVT (USDHC1_FORCE_EVENT) // Force Event register +#define SDHC_ADMAES (USDHC1_ADMA_ERR_STATUS) // ADMA Error Status register +#define SDHC_ADSADDR (USDHC1_ADMA_SYS_ADDR) // ADMA System Addressregister +#define SDHC_VENDOR (USDHC1_VEND_SPEC) // Vendor Specific register +#define SDHC_MMCBOOT (USDHC1_MMC_BOOT) // MMC Boot register +#define SDHC_VENDOR2 (USDHC2_VEND_SPEC2) // Vendor Specific2 register +// +#define IRQ_SDHC IRQ_SDHC1 + +#define SDHC_MAX_DVS (0xF + 1U) +#define SDHC_MAX_CLKFS (0xFF + 1U) +#define SDHC_PREV_DVS(x) ((x) -= 1U) +#define SDHC_PREV_CLKFS(x, y) ((x) >>= (y)) + +#define CCM_CSCDR1_USDHC1_CLK_PODF_MASK (0x7 << 11) +#define CCM_CSCDR1_USDHC1_CLK_PODF(n) (((n)&0x7) << 11) + +#define IOMUXC_SW_PAD_CTL_PAD_SRE ((0x1 <) < 0) +#define IOMUXC_SW_PAD_CTL_PAD_PKE ((0x1) << 12) +#define IOMUXC_SW_PAD_CTL_PAD_PUE ((0x1) << 13) +#define IOMUXC_SW_PAD_CTL_PAD_HYS ((0x1) << 16) +#define IOMUXC_SW_PAD_CTL_PAD_SPEED(n) (((n)&0x3) << 6) +#define IOMUXC_SW_PAD_CTL_PAD_PUS(n) (((n)&0x3) << 14) +#define IOMUXC_SW_PAD_CTL_PAD_PUS_MASK ((0x3) << 14) +#define IOMUXC_SW_PAD_CTL_PAD_DSE(n) (((n)&0x7) << 3) +#define IOMUXC_SW_PAD_CTL_PAD_DSE_MASK ((0x7) << 3) +#endif // defined(__IMXRT1062__) +#endif // SdioTeensy_h \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.2.3/src/SdFat.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdFat.h new file mode 100644 index 00000000..d804a613 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdFat.h @@ -0,0 +1,510 @@ +/** + * Copyright (c) 2011-2024 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#ifndef SdFat_h +#define SdFat_h +#define DISABLE_FS_H_WARNING 1 +/** + * \file + * \brief main SdFs include file. + */ +#include "ExFatLib/ExFatLib.h" +#include "FatLib/FatLib.h" +#include "FsLib/FsLib.h" +#include "SdCard/SdCard.h" +#include "common/SysCall.h" +#if INCLUDE_SDIOS +#include "sdios.h" +#endif // INCLUDE_SDIOS +//------------------------------------------------------------------------------ +/** SdFat version for cpp use. */ +#define SD_FAT_VERSION 20203 +/** SdFat version as string. */ +#define SD_FAT_VERSION_STR "2.2.3" +//============================================================================== +/** + * \class SdBase + * \brief base SD file system template class. + */ +template +class SdBase : public Vol { + public: + //---------------------------------------------------------------------------- + /** Initialize SD card and file system. + * + * \param[in] csPin SD card chip select pin. + * \return true for success or false for failure. + */ + bool begin(SdCsPin_t csPin = SS) { +#ifdef BUILTIN_SDCARD + if (csPin == BUILTIN_SDCARD) { + return begin(SdioConfig(FIFO_SDIO)); + } +#endif // BUILTIN_SDCARD + return begin(SdSpiConfig(csPin, SHARED_SPI)); + } + //---------------------------------------------------------------------------- + /** Initialize SD card and file system. + * + * \param[in] csPin SD card chip select pin. + * \param[in] maxSck Maximum SCK frequency. + * \return true for success or false for failure. + */ + bool begin(SdCsPin_t csPin, uint32_t maxSck) { + return begin(SdSpiConfig(csPin, SHARED_SPI, maxSck)); + } + //---------------------------------------------------------------------------- + /** Initialize SD card and file system for SPI mode. + * + * \param[in] spiConfig SPI configuration. + * \return true for success or false for failure. + */ + bool begin(SdSpiConfig spiConfig) { + return cardBegin(spiConfig) && volumeBegin(); + } + //--------------------------------------------------------------------------- + /** Initialize SD card and file system for SDIO mode. + * + * \param[in] sdioConfig SDIO configuration. + * \return true for success or false for failure. + */ + bool begin(SdioConfig sdioConfig) { + return cardBegin(sdioConfig) && volumeBegin(); + } + //---------------------------------------------------------------------------- + /** \return Pointer to SD card object. */ + SdCard* card() { return m_card; } + //---------------------------------------------------------------------------- + /** Initialize SD card in SPI mode. + * + * \param[in] spiConfig SPI configuration. + * \return true for success or false for failure. + */ + bool cardBegin(SdSpiConfig spiConfig) { + m_card = m_cardFactory.newCard(spiConfig); + return m_card && !m_card->errorCode(); + } + //---------------------------------------------------------------------------- + /** Initialize SD card in SDIO mode. + * + * \param[in] sdioConfig SDIO configuration. + * \return true for success or false for failure. + */ + bool cardBegin(SdioConfig sdioConfig) { + m_card = m_cardFactory.newCard(sdioConfig); + return m_card && !m_card->errorCode(); + } + //---------------------------------------------------------------------------- + /** End use of card. */ + void end() { + Vol::end(); + if (m_card) { + m_card->end(); + } + } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] pr Print destination. + */ + void errorHalt(print_t* pr) { + if (sdErrorCode()) { + pr->print(F("SdError: 0X")); + pr->print(sdErrorCode(), HEX); + pr->print(F(",0X")); + pr->println(sdErrorData(), HEX); + } else if (!Vol::fatType()) { + pr->println(F("Check SD format.")); + } + while (true) { + } + } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] pr Print destination. + * \param[in] msg Message to print. + */ + void errorHalt(print_t* pr, const char* msg) { + pr->print(F("error: ")); + pr->println(msg); + errorHalt(pr); + } + //---------------------------------------------------------------------------- + /** %Print msg and halt. + * + * \param[in] pr Print destination. + * \param[in] msg Message to print. + */ + void errorHalt(print_t* pr, const __FlashStringHelper* msg) { + pr->print(F("error: ")); + pr->println(msg); + errorHalt(pr); + } + //---------------------------------------------------------------------------- + /** Format SD card + * + * \param[in] pr Print destination. + * \return true for success else false. + */ + bool format(print_t* pr = nullptr) { + Fmt fmt; + uint8_t* mem = Vol::end(); + if (!mem) { + return false; + } + bool switchSpi = hasDedicatedSpi() && !isDedicatedSpi(); + if (switchSpi && !setDedicatedSpi(true)) { + return false; + } + bool rtn = fmt.format(card(), mem, pr); + if (switchSpi && !setDedicatedSpi(false)) { + return false; + } + return rtn; + } + //---------------------------------------------------------------------------- + /** \return the free cluster count. */ + uint32_t freeClusterCount() { + bool switchSpi = hasDedicatedSpi() && !isDedicatedSpi(); + if (switchSpi && !setDedicatedSpi(true)) { + return 0; + } + uint32_t rtn = Vol::freeClusterCount(); + if (switchSpi && !setDedicatedSpi(false)) { + return 0; + } + return rtn; + } + //---------------------------------------------------------------------------- + /** \return true if can be in dedicated SPI state */ + bool hasDedicatedSpi() { return m_card ? m_card->hasDedicatedSpi() : false; } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] pr Print destination. + */ + void initErrorHalt(print_t* pr) { + initErrorPrint(pr); + while (true) { + } + } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] pr Print destination. + * \param[in] msg Message to print. + */ + void initErrorHalt(print_t* pr, const char* msg) { + pr->println(msg); + initErrorHalt(pr); + } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] pr Print destination. + * \param[in] msg Message to print. + */ + void initErrorHalt(print_t* pr, const __FlashStringHelper* msg) { + pr->println(msg); + initErrorHalt(pr); + } + //---------------------------------------------------------------------------- + /** Print error details after begin() fails. + * + * \param[in] pr Print destination. + */ + void initErrorPrint(print_t* pr) { + pr->println(F("begin() failed")); + if (sdErrorCode()) { + pr->println(F("Do not reformat the SD.")); + if (sdErrorCode() == SD_CARD_ERROR_CMD0) { + pr->println(F("No card, wrong chip select pin, or wiring error?")); + } + } + errorPrint(pr); + } + //---------------------------------------------------------------------------- + /** \return true if in dedicated SPI state. */ + bool isDedicatedSpi() { return m_card ? m_card->isDedicatedSpi() : false; } + //---------------------------------------------------------------------------- + /** %Print volume FAT/exFAT type. + * + * \param[in] pr Print destination. + */ + void printFatType(print_t* pr) { + if (Vol::fatType() == FAT_TYPE_EXFAT) { + pr->print(F("exFAT")); + } else { + pr->print(F("FAT")); + pr->print(Vol::fatType()); + } + } + //---------------------------------------------------------------------------- + /** %Print SD errorCode and errorData. + * + * \param[in] pr Print destination. + */ + void errorPrint(print_t* pr) { + if (sdErrorCode()) { + pr->print(F("SdError: 0X")); + pr->print(sdErrorCode(), HEX); + pr->print(F(",0X")); + pr->println(sdErrorData(), HEX); + } else if (!Vol::fatType()) { + pr->println(F("Check SD format.")); + } + } + //---------------------------------------------------------------------------- + /** %Print msg, any SD error code. + * + * \param[in] pr Print destination. + * \param[in] msg Message to print. + */ + void errorPrint(print_t* pr, char const* msg) { + pr->print(F("error: ")); + pr->println(msg); + errorPrint(pr); + } + + /** %Print msg, any SD error code. + * + * \param[in] pr Print destination. + * \param[in] msg Message to print. + */ + void errorPrint(print_t* pr, const __FlashStringHelper* msg) { + pr->print(F("error: ")); + pr->println(msg); + errorPrint(pr); + } + //---------------------------------------------------------------------------- + /** %Print error info and return. + * + * \param[in] pr Print destination. + */ + void printSdError(print_t* pr) { + if (sdErrorCode()) { + if (sdErrorCode() == SD_CARD_ERROR_CMD0) { + pr->println(F("No card, wrong chip select pin, or wiring error?")); + } + pr->print(F("SD error: ")); + printSdErrorSymbol(pr, sdErrorCode()); + pr->print(F(" = 0x")); + pr->print(sdErrorCode(), HEX); + pr->print(F(",0x")); + pr->println(sdErrorData(), HEX); + } else if (!Vol::fatType()) { + pr->println(F("Check SD format.")); + } + } + //---------------------------------------------------------------------------- + /** \return SD card error code. */ + uint8_t sdErrorCode() { + if (m_card) { + return m_card->errorCode(); + } + return SD_CARD_ERROR_INVALID_CARD_CONFIG; + } + //---------------------------------------------------------------------------- + /** \return SD card error data. */ + uint8_t sdErrorData() { return m_card ? m_card->errorData() : 0; } + //---------------------------------------------------------------------------- + /** Set SPI sharing state + * \param[in] value desired state. + * \return true for success else false; + */ + bool setDedicatedSpi(bool value) { + if (m_card) { + return m_card->setDedicatedSpi(value); + } + return false; + } + //---------------------------------------------------------------------------- + /** \return pointer to base volume */ + Vol* vol() { return reinterpret_cast(this); } + //---------------------------------------------------------------------------- + /** Initialize file system after call to cardBegin. + * + * \return true for success or false for failure. + */ + bool volumeBegin() { + return Vol::begin(m_card) || Vol::begin(m_card, true, 0); + } +#if ENABLE_ARDUINO_SERIAL + /** Print error details after begin() fails. */ + void initErrorPrint() { initErrorPrint(&Serial); } + //---------------------------------------------------------------------------- + /** %Print msg to Serial and halt. + * + * \param[in] msg Message to print. + */ + void errorHalt(const __FlashStringHelper* msg) { errorHalt(&Serial, msg); } + //---------------------------------------------------------------------------- + /** %Print error info to Serial and halt. */ + void errorHalt() { errorHalt(&Serial); } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] msg Message to print. + */ + void errorHalt(const char* msg) { errorHalt(&Serial, msg); } + //---------------------------------------------------------------------------- + /** %Print error info and halt. */ + void initErrorHalt() { initErrorHalt(&Serial); } + //---------------------------------------------------------------------------- + /** %Print msg, any SD error code. + * + * \param[in] msg Message to print. + */ + void errorPrint(const char* msg) { errorPrint(&Serial, msg); } + /** %Print msg, any SD error code. + * + * \param[in] msg Message to print. + */ + void errorPrint(const __FlashStringHelper* msg) { errorPrint(&Serial, msg); } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] msg Message to print. + */ + void initErrorHalt(const char* msg) { initErrorHalt(&Serial, msg); } + //---------------------------------------------------------------------------- + /** %Print error info and halt. + * + * \param[in] msg Message to print. + */ + void initErrorHalt(const __FlashStringHelper* msg) { + initErrorHalt(&Serial, msg); + } +#endif // ENABLE_ARDUINO_SERIAL + //---------------------------------------------------------------------------- + private: + SdCard* m_card = nullptr; + SdCardFactory m_cardFactory; +}; +//------------------------------------------------------------------------------ +/** + * \class SdFat32 + * \brief SD file system class for FAT volumes. + */ +class SdFat32 : public SdBase { + public: +}; +//------------------------------------------------------------------------------ +/** + * \class SdExFat + * \brief SD file system class for exFAT volumes. + */ +class SdExFat : public SdBase { + public: +}; +//------------------------------------------------------------------------------ +/** + * \class SdFs + * \brief SD file system class for FAT16, FAT32, and exFAT volumes. + */ +class SdFs : public SdBase { + public: +}; +//------------------------------------------------------------------------------ +#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) +/** Select type for SdFat. */ +typedef SdFat32 SdFat; +/** Select type for SdBaseFile. */ +typedef FatFile SdBaseFile; +#elif SDFAT_FILE_TYPE == 2 +typedef SdExFat SdFat; +typedef ExFatFile SdBaseFile; +#elif SDFAT_FILE_TYPE == 3 +typedef SdFs SdFat; +typedef FsBaseFile SdBaseFile; +#else // SDFAT_FILE_TYPE +#error Invalid SDFAT_FILE_TYPE +#endif // SDFAT_FILE_TYPE +// +// Only define File if FS.h is not included. +// Line with test for __has_include must not have operators or parentheses. +#if defined __has_include +#if __has_include() +#define HAS_INCLUDE_FS_H +#endif // __has_include() +#endif // defined __has_include +#ifndef HAS_INCLUDE_FS_H +#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) +/** Select type for File. */ +typedef File32 File; +#elif SDFAT_FILE_TYPE == 2 +typedef ExFile File; +#elif SDFAT_FILE_TYPE == 3 +typedef FsFile File; +#endif // SDFAT_FILE_TYPE +#elif !defined(DISABLE_FS_H_WARNING) +#warning File not defined because __has_include(FS.h) +#endif // HAS_INCLUDE_FS_H +/** + * \class SdFile + * \brief FAT16/FAT32 file with Print. + */ +class SdFile : public PrintFile { + public: + SdFile() {} + /** Create an open SdFile. + * \param[in] path path for file. + * \param[in] oflag open flags. + */ + SdFile(const char* path, oflag_t oflag) { open(path, oflag); } + /** Set the date/time callback function + * + * \param[in] dateTime The user's call back function. The callback + * function is of the form: + * + * \code + * void dateTime(uint16_t* date, uint16_t* time) { + * uint16_t year; + * uint8_t month, day, hour, minute, second; + * + * // User gets date and time from GPS or real-time clock here + * + * // return date using FS_DATE macro to format fields + * *date = FS_DATE(year, month, day); + * + * // return time using FS_TIME macro to format fields + * *time = FS_TIME(hour, minute, second); + * } + * \endcode + * + * Sets the function that is called when a file is created or when + * a file's directory entry is modified by sync(). All timestamps, + * access, creation, and modify, are set when a file is created. + * sync() maintains the last access date and last modify date/time. + * + */ + static void dateTimeCallback(void (*dateTime)(uint16_t* date, + uint16_t* time)) { + FsDateTime::setCallback(dateTime); + } + /** Cancel the date/time callback function. */ + static void dateTimeCallbackCancel() { FsDateTime::clearCallback(); } +}; +#endif // SdFat_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdFatConfig.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SdFatConfig.h similarity index 80% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SdFatConfig.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SdFatConfig.h index 141ffd9e..4e6e547f 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdFatConfig.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SdFatConfig.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -34,17 +34,60 @@ #endif // __AVR__ // // To try UTF-8 encoded filenames. -// #define USE_UTF8_LONG_NAMES 1 +// #define USE_UTF8_LONG_NAMES 1 // // For minimum flash size use these settings: // #define USE_FAT_FILE_FLAG_CONTIGUOUS 0 // #define ENABLE_DEDICATED_SPI 0 // #define USE_LONG_FILE_NAMES 0 // #define SDFAT_FILE_TYPE 1 +// #define CHECK_FLASH_PROGRAMMING 0 // May cause SD to sleep at high current. // // Options can be set in a makefile or an IDE like platformIO // if they are in a #ifndef/#endif block below. //------------------------------------------------------------------------------ +/* + * Options for file class constructors, assignment operators and destructors. + * + * By default file copy constructors and copy assignment operators are + * private to prevent multiple copies of a instance for a file. + * + * File move constructors and move assignment operators are public to permit + * return of a file instance for compilers that aren't able to use copy elision. + * + */ +/** File copy constructors and copy assignment operators are deleted */ +#define FILE_COPY_CONSTRUCTOR_DELETED 0 +/** File copy constructors and copy assignment operators are private */ +#define FILE_COPY_CONSTRUCTOR_PRIVATE 1 +/** File copy constructors and copy assignment operators are public */ +#define FILE_COPY_CONSTRUCTOR_PUBLIC 2 + +#ifndef FILE_COPY_CONSTRUCTOR_SELECT +/** Specify kind of file copy constructors and copy assignment operators */ +#define FILE_COPY_CONSTRUCTOR_SELECT FILE_COPY_CONSTRUCTOR_PUBLIC +#endif // FILE_COPY_CONSTRUCTOR_SELECT +/** File move constructors and move assignment operators are deleted. */ +#define FILE_MOVE_CONSTRUCTOR_DELETED 0 +/** File move constructors and move assignment operators are public. */ +#define FILE_MOVE_CONSTRUCTOR_PUBLIC 1 + +#ifndef FILE_MOVE_CONSTRUCTOR_SELECT +/** Specify kind of file move constructors and move assignment operators */ +#define FILE_MOVE_CONSTRUCTOR_SELECT FILE_MOVE_CONSTRUCTOR_PUBLIC +#endif // FILE_MOVE_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT != FILE_MOVE_CONSTRUCTOR_PUBLIC && \ + FILE_COPY_CONSTRUCTOR_SELECT != FILE_COPY_CONSTRUCTOR_PUBLIC +#error "No public move or copy assign operators" +#endif // FILE_MOVE_CONSTRUCTOR_SELECT && FILE_MOVE_CONSTRUCTOR_SELECT +/** + * Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor. */ +#ifndef DESTRUCTOR_CLOSES_FILE +#define DESTRUCTOR_CLOSES_FILE 0 +#endif // DESTRUCTOR_CLOSES_FILE +//------------------------------------------------------------------------------ + /** For Debug - must be one */ #define ENABLE_ARDUINO_FEATURES 1 /** For Debug - must be one */ @@ -121,14 +164,28 @@ #define SPI_DRIVER_SELECT 0 #endif // SPI_DRIVER_SELECT /** - * If USE_SPI_ARRAY_TRANSFER is non-zero and the standard SPI library is - * use, the array transfer function, transfer(buf, size), will be used. - * This option will allocate up to a 512 byte temporary buffer for send. + * If USE_SPI_ARRAY_TRANSFER is one and the standard SPI library is + * use, the array transfer function, transfer(buf, count), will be used. + * This option will allocate a 512 byte temporary buffer for send. * This may be faster for some boards. Do not use this with AVR boards. + * + * Warning: the next options are often fastest but only available for some + * non-Arduino board packages. + * + * If USE_SPI_ARRAY_TRANSFER is two use transfer(nullptr, buf, count) for + * receive and transfer(buf, nullptr, count) for send. + * + * If USE_SPI_ARRAY_TRANSFER is three use transfer(nullptr, buf, count) for + * receive and transfer(buf, rxTmp, count) for send. Try this with Adafruit + * SAMD51. + * + * If USE_SPI_ARRAY_TRANSFER is four use transfer(txTmp, buf, count) for + * receive and transfer(buf, rxTmp, count) for send. Try this with STM32. */ #ifndef USE_SPI_ARRAY_TRANSFER #define USE_SPI_ARRAY_TRANSFER 0 #endif // USE_SPI_ARRAY_TRANSFER +//------------------------------------------------------------------------------ /** * SD maximum initialization clock rate. */ @@ -160,7 +217,8 @@ #ifndef USE_BLOCK_DEVICE_INTERFACE #define USE_BLOCK_DEVICE_INTERFACE 0 #endif // USE_BLOCK_DEVICE_INTERFACE - /** +//------------------------------------------------------------------------------ +/** * SD_CHIP_SELECT_MODE defines how the functions * void sdCsInit(SdCsPin_t pin) {pinMode(pin, OUTPUT);} * and @@ -258,7 +316,7 @@ typedef uint8_t SdCsPin_t; * is non-zero. */ #ifndef CHECK_FLASH_PROGRAMMING -#define CHECK_FLASH_PROGRAMMING 0 +#define CHECK_FLASH_PROGRAMMING 1 #endif // CHECK_FLASH_PROGRAMMING //------------------------------------------------------------------------------ /** @@ -311,15 +369,6 @@ typedef uint8_t SdCsPin_t; #define FAT12_SUPPORT 0 #endif // FAT12_SUPPORT //------------------------------------------------------------------------------ -/** - * Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor. - * - * Causes use of lots of heap in ARM. - */ -#ifndef DESTRUCTOR_CLOSES_FILE -#define DESTRUCTOR_CLOSES_FILE 0 -#endif // DESTRUCTOR_CLOSES_FILE -//------------------------------------------------------------------------------ /** * Call flush for endl if ENDL_CALLS_FLUSH is nonzero * @@ -345,8 +394,8 @@ typedef uint8_t SdCsPin_t; * Set USE_SIMPLE_LITTLE_ENDIAN nonzero for little endian processors * with no memory alignment restrictions. */ -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\ - && (defined(__AVR__) || defined(__ARM_FEATURE_UNALIGNED)) +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && \ + (defined(__AVR__) || defined(__ARM_FEATURE_UNALIGNED)) #define USE_SIMPLE_LITTLE_ENDIAN 1 #else // __BYTE_ORDER_ #define USE_SIMPLE_LITTLE_ENDIAN 0 @@ -393,11 +442,11 @@ typedef uint8_t SdCsPin_t; #endif // BUILTIN_SDCARD // SPI for built-in card. #ifndef SDCARD_SPI -#define SDCARD_SPI SPI1 +#define SDCARD_SPI SPI1 #define SDCARD_MISO_PIN 59 #define SDCARD_MOSI_PIN 61 -#define SDCARD_SCK_PIN 60 -#define SDCARD_SS_PIN 62 +#define SDCARD_SCK_PIN 60 +#define SDCARD_SS_PIN 62 #endif // SDCARD_SPI #define HAS_SDIO_CLASS 1 #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) @@ -408,15 +457,13 @@ typedef uint8_t SdCsPin_t; /** * Determine the default SPI configuration. */ -#if defined(ARDUINO_ARCH_APOLLO3)\ - || (defined(__AVR__) && defined(SPDR) && defined(SPSR) && defined(SPIF))\ - || (defined(__AVR__) && defined(SPI0) && defined(SPI_RXCIF_bm))\ - || defined(ESP8266) || defined(ESP32)\ - || defined(PLATFORM_ID)\ - || defined(ARDUINO_SAM_DUE)\ - || defined(STM32_CORE_VERSION)\ - || defined(__STM32F1__) || defined(__STM32F4__)\ - || (defined(CORE_TEENSY) && defined(__arm__)) +#if defined(ARDUINO_ARCH_APOLLO3) || \ + (defined(__AVR__) && defined(SPDR) && defined(SPSR) && defined(SPIF)) || \ + (defined(__AVR__) && defined(SPI0) && defined(SPI_RXCIF_bm)) || \ + defined(ESP8266) || defined(ESP32) || defined(PLATFORM_ID) || \ + defined(ARDUINO_SAM_DUE) || defined(STM32_CORE_VERSION) || \ + defined(__STM32F1__) || defined(__STM32F4__) || \ + (defined(CORE_TEENSY) && defined(__arm__)) #define SD_HAS_CUSTOM_SPI 1 #else // SD_HAS_CUSTOM_SPI // Use standard SPI library. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiArduinoDriver.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiArduinoDriver.h similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiArduinoDriver.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiArduinoDriver.h index 00bdb9ff..a571f9fb 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiArduinoDriver.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiArduinoDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -38,6 +38,8 @@ */ class SdSpiArduinoDriver { public: + /** Constructor. */ + SdSpiArduinoDriver() = default; /** Activate SPI hardware. */ void activate(); /** Initialize the SPI bus. @@ -55,12 +57,12 @@ class SdSpiArduinoDriver { */ uint8_t receive(); /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] count Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ + * + * \param[out] buf Buffer to receive the data. + * \param[in] count Number of bytes to receive. + * + * \return Zero for no error or nonzero error code. + */ uint8_t receive(uint8_t* buf, size_t count); /** Send a byte. * @@ -82,7 +84,7 @@ class SdSpiArduinoDriver { } private: - SPIClass *m_spi; + SPIClass* m_spi = nullptr; SPISettings m_spiSettings; }; /** Typedef for use of SdSpiArduinoDriver */ diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiArtemis.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiArtemis.cpp similarity index 83% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiArtemis.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiArtemis.cpp index a7a064f7..8f6efdd1 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiArtemis.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiArtemis.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,9 +25,7 @@ #include "SdSpiDriver.h" #if defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_ARCH_APOLLO3) //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -38,17 +36,11 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - m_spi->end(); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { memset(buf, 0XFF, count); @@ -56,24 +48,22 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { // If not a multiple of four. Command with CRC used six byte send. - while (count%4) { + while (count % 4) { send(*buf++); count--; } // Convert byte array to 4 byte array. - uint32_t myArray[count/4]; // NOLINT - for (int x = 0; x < count/4; x++) { + uint32_t myArray[count / 4]; // NOLINT + for (int x = 0; x < count / 4; x++) { myArray[x] = ((uint32_t)buf[(x * 4) + 3] << (8 * 3)) | ((uint32_t)buf[(x * 4) + 2] << (8 * 2)) | ((uint32_t)buf[(x * 4) + 1] << (8 * 1)) | ((uint32_t)buf[(x * 4) + 0] << (8 * 0)); } - m_spi->transfer(reinterpret_cast(myArray), count); + m_spi->transfer(reinterpret_cast(myArray), count); } #endif // defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_ARCH_APOLLO3) diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiAvr.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiAvr.h similarity index 80% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiAvr.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiAvr.h index c3df3fe8..731bf8f7 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiAvr.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiAvr.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,7 +25,7 @@ #ifndef SdSpiAvr_h #define SdSpiAvr_h // Use of in-line for AVR to save flash. -#define nop asm volatile ("nop\n\t") +#define nop asm volatile("nop\n\t") //------------------------------------------------------------------------------ inline void SdSpiArduinoDriver::activate() { SPI.beginTransaction(m_spiSettings); @@ -36,17 +36,11 @@ inline void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { SPI.begin(); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::deactivate() { - SPI.endTransaction(); -} +inline void SdSpiArduinoDriver::deactivate() { SPI.endTransaction(); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::end() { - SPI.end(); -} +inline void SdSpiArduinoDriver::end() { SPI.end(); } //------------------------------------------------------------------------------ -inline uint8_t SdSpiArduinoDriver::receive() { - return SPI.transfer(0XFF); -} +inline uint8_t SdSpiArduinoDriver::receive() { return SPI.transfer(0XFF); } //------------------------------------------------------------------------------ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { if (count == 0) { @@ -58,12 +52,14 @@ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { // nops optimize loop for 16MHz CPU 8 MHz SPI nop; nop; - while (!(SPSR & _BV(SPIF))) {} + while (!(SPSR & _BV(SPIF))) { + } uint8_t in = SPDR; SPDR = 0XFF; *buf++ = in; } - while (!(SPSR & _BV(SPIF))) {} + while (!(SPSR & _BV(SPIF))) { + } *buf = SPDR; #elif defined(SPI_RXCIF_bm) SPI0.DATA = 0XFF; @@ -73,12 +69,14 @@ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { nop; nop; nop; - while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) {} + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } uint8_t in = SPI0.DATA; SPI0.DATA = 0XFF; *buf++ = in; } - while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) {} + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } *buf = SPI0.DATA; #else // SPSR #error Unsupported AVR CPU - edit SdFatConfig.h to use standard SPI library. @@ -86,11 +84,9 @@ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { return 0; } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::send(uint8_t data) { - SPI.transfer(data); -} +inline void SdSpiArduinoDriver::send(uint8_t data) { SPI.transfer(data); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +inline void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { if (count == 0) { return; } @@ -101,10 +97,12 @@ inline void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { // nops optimize loop for 16MHz CPU 8 MHz SPI nop; nop; - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } SPDR = b; } - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } #elif defined(SPI_RXCIF_bm) SPI0.DATA = *buf++; while (--count) { @@ -113,10 +111,12 @@ inline void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { nop; nop; nop; - while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) {} + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } SPI0.DATA = b; } - while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) {} + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } #else // SPSR #error Unsupported AVR CPU - edit SdFatConfig.h to use standard SPI library. #endif // SPSR diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiBareUnoDriver.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiBareUnoDriver.h similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiBareUnoDriver.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiBareUnoDriver.h index c0c8bbdd..5c3eda34 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiBareUnoDriver.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiBareUnoDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,8 +30,9 @@ */ #include + #include "../common/SysCall.h" -#define nop asm volatile ("nop\n\t") +#define nop asm volatile("nop\n\t") #ifndef HIGH #define HIGH 1 #endif // HIGH @@ -79,10 +80,10 @@ inline void unoPinMode(uint8_t pin, uint8_t mode) { sei(); } -#define UNO_SS 10 +#define UNO_SS 10 #define UNO_MOSI 11 #define UNO_MISO 12 -#define UNO_SCK 13 +#define UNO_SCK 13 //------------------------------------------------------------------------------ /** * \class SdSpiDriverBareUno @@ -116,16 +117,14 @@ class SdSpiDriverBareUno { * * \return The byte. */ - uint8_t receive() { - return transfer(0XFF); - } + uint8_t receive() { return transfer(0XFF); } /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] count Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ + * + * \param[out] buf Buffer to receive the data. + * \param[in] count Number of bytes to receive. + * + * \return Zero for no error or nonzero error code. + */ uint8_t receive(uint8_t* buf, size_t count) { if (count == 0) { return 0; @@ -133,7 +132,8 @@ class SdSpiDriverBareUno { uint8_t* pr = buf; SPDR = 0XFF; while (--count > 0) { - while (!(SPSR & _BV(SPIF))) {} + while (!(SPSR & _BV(SPIF))) { + } uint8_t in = SPDR; SPDR = 0XFF; *pr++ = in; @@ -141,7 +141,8 @@ class SdSpiDriverBareUno { nop; nop; } - while (!(SPSR & _BV(SPIF))) {} + while (!(SPSR & _BV(SPIF))) { + } *pr = SPDR; return 0; } @@ -149,9 +150,7 @@ class SdSpiDriverBareUno { * * \param[in] data Byte to send */ - void send(uint8_t data) { - transfer(data); - } + void send(uint8_t data) { transfer(data); } /** Send multiple bytes. * * \param[in] buf Buffer for data to be sent. @@ -164,18 +163,18 @@ class SdSpiDriverBareUno { SPDR = *buf++; while (--count > 0) { uint8_t b = *buf++; - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } SPDR = b; // nops to optimize loop for 16MHz CPU 8 MHz SPI nop; nop; } - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } } /** Set CS low. */ - void select() { - unoDigitalWrite(m_csPin, LOW); - } + void select() { unoDigitalWrite(m_csPin, LOW); } /** Save high speed SPISettings after SD initialization. * * \param[in] spiConfig SPI options. @@ -186,13 +185,12 @@ class SdSpiDriverBareUno { } static uint8_t transfer(uint8_t data) { SPDR = data; - while (!(SPSR & _BV(SPIF))) {} // wait + while (!(SPSR & _BV(SPIF))) { + } // wait return SPDR; } /** Set CS high. */ - void unselect() { - unoDigitalWrite(m_csPin, HIGH); - } + void unselect() { unoDigitalWrite(m_csPin, HIGH); } private: SdCsPin_t m_csPin; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiBaseClass.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiBaseClass.h similarity index 89% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiBaseClass.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiBaseClass.h index cd61fef7..505e2f60 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiBaseClass.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiBaseClass.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -51,12 +51,12 @@ class SdSpiBaseClass { */ virtual uint8_t receive() = 0; /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] count Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ + * + * \param[out] buf Buffer to receive the data. + * \param[in] count Number of bytes to receive. + * + * \return Zero for no error or nonzero error code. + */ virtual uint8_t receive(uint8_t* buf, size_t count) = 0; /** Send a byte. * @@ -73,6 +73,6 @@ class SdSpiBaseClass { * * \param[in] maxSck Maximum SCK frequency. */ - virtual void setSckSpeed(uint32_t maxSck) {(void)maxSck;} + virtual void setSckSpeed(uint32_t maxSck) { (void)maxSck; } }; #endif // SdSpiBaseClass_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiChipSelect.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiChipSelect.cpp similarity index 84% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiChipSelect.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiChipSelect.cpp index cec052a8..f7927f2c 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiChipSelect.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiChipSelect.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -26,22 +26,14 @@ #if ENABLE_ARDUINO_FEATURES #if SD_CHIP_SELECT_MODE == 0 //------------------------------------------------------------------------------ -void sdCsInit(SdCsPin_t pin) { - pinMode(pin, OUTPUT); -} +void sdCsInit(SdCsPin_t pin) { pinMode(pin, OUTPUT); } //------------------------------------------------------------------------------ -void sdCsWrite(SdCsPin_t pin, bool level) { - digitalWrite(pin, level); -} +void sdCsWrite(SdCsPin_t pin, bool level) { digitalWrite(pin, level); } #elif SD_CHIP_SELECT_MODE == 1 //------------------------------------------------------------------------------ -__attribute__((weak)) -void sdCsInit(SdCsPin_t pin) { - pinMode(pin, OUTPUT); -} +__attribute__((weak)) void sdCsInit(SdCsPin_t pin) { pinMode(pin, OUTPUT); } //------------------------------------------------------------------------------ -__attribute__((weak)) -void sdCsWrite(SdCsPin_t pin, bool level) { +__attribute__((weak)) void sdCsWrite(SdCsPin_t pin, bool level) { digitalWrite(pin, level); } #endif // SD_CHIP_SELECT_MODE == 0 diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiDriver.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiDriver.h similarity index 87% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiDriver.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiDriver.h index dfbad17f..c43055b7 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiDriver.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -52,19 +52,24 @@ const uint8_t DEDICATED_SPI = 1; * \param[in] opt option field of SdSpiConfig. * \return true for dedicated SPI. */ -inline bool spiOptionDedicated(uint8_t opt) {return opt & DEDICATED_SPI;} -#else // ENABLE_DEDICATED_SPI +inline bool spiOptionDedicated(uint8_t opt) { return opt & DEDICATED_SPI; } +#else // ENABLE_DEDICATED_SPI /** * \param[in] opt option field of SdSpiConfig. * \return true for dedicated SPI. */ -inline bool spiOptionDedicated(uint8_t opt) {(void)opt; return false;} +inline bool spiOptionDedicated(uint8_t opt) { + (void)opt; + return false; +} #endif // ENABLE_DEDICATED_SPI +/** The user will call begin. Useful for custom SPI configurations. */ +const uint8_t USER_SPI_BEGIN = 2; //------------------------------------------------------------------------------ /** SPISettings for SCK frequency in Hz. */ #define SD_SCK_HZ(maxSpeed) (maxSpeed) /** SPISettings for SCK frequency in MHz. */ -#define SD_SCK_MHZ(maxMhz) (1000000UL*(maxMhz)) +#define SD_SCK_MHZ(maxMhz) (1000000UL * (maxMhz)) // SPI divisor constants - obsolete. /** Set SCK to max rate. */ #define SPI_FULL_SPEED SD_SCK_MHZ(50) @@ -93,8 +98,8 @@ typedef SdSpiSoftDriver SpiPort_t; class SdSpiBaseClass; /** Port type for extrernal SPI driver. */ typedef SdSpiBaseClass SpiPort_t; -#else // SPI_DRIVER_SELECT -typedef void* SpiPort_t; +#else // SPI_DRIVER_SELECT +typedef void* SpiPort_t; #endif // SPI_DRIVER_SELECT //------------------------------------------------------------------------------ /** @@ -103,15 +108,15 @@ typedef void* SpiPort_t; */ class SdSpiConfig { public: - /** SdSpiConfig constructor. + /** SdSpiConfig constructor. * * \param[in] cs Chip select pin. * \param[in] opt Options. * \param[in] maxSpeed Maximum SCK frequency. * \param[in] port The SPI port to use. */ - SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t* port) : - csPin(cs), options(opt), maxSck(maxSpeed), spiPort(port) {} + SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t* port) + : csPin(cs), options(opt), maxSck(maxSpeed), spiPort(port) {} /** SdSpiConfig constructor. * @@ -119,8 +124,8 @@ class SdSpiConfig { * \param[in] opt Options. * \param[in] maxSpeed Maximum SCK frequency. */ - SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed) : - csPin(cs), options(opt), maxSck(maxSpeed) {} + SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed) + : csPin(cs), options(opt), maxSck(maxSpeed) {} /** SdSpiConfig constructor. * * \param[in] cs Chip select pin. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiDue.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiDue.cpp similarity index 75% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiDue.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiDue.cpp index f9260b11..73fc4c64 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiDue.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiDue.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -42,13 +42,9 @@ #define SPI_RX_IDX 2 //------------------------------------------------------------------------------ /* Disable DMA Controller. */ -static void dmac_disable() { - DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); -} +static void dmac_disable() { DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); } /* Enable DMA Controller. */ -static void dmac_enable() { - DMAC->DMAC_EN = DMAC_EN_ENABLE; -} +static void dmac_enable() { DMAC->DMAC_EN = DMAC_EN_ENABLE; } /* Disable DMA Channel. */ static void dmac_channel_disable(uint32_t ul_num) { DMAC->DMAC_CHDR = DMAC_CHDR_DIS0 << ul_num; @@ -67,14 +63,15 @@ static void spiDmaRX(uint8_t* dst, uint16_t count) { dmac_channel_disable(SPI_DMAC_RX_CH); DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_SADDR = (uint32_t)&SPI0->SPI_RDR; DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DADDR = (uint32_t)dst; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLA = + count | DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLB = + DMAC_CTRLB_SRC_DSCR | DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | DMAC_CTRLB_SRC_INCR_FIXED | DMAC_CTRLB_DST_INCR_INCREMENTING; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CFG = DMAC_CFG_SRC_PER(SPI_RX_IDX) | - DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ASAP_CFG; + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CFG = + DMAC_CFG_SRC_PER(SPI_RX_IDX) | DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | + DMAC_CFG_FIFOCFG_ASAP_CFG; dmac_channel_enable(SPI_DMAC_RX_CH); } //------------------------------------------------------------------------------ @@ -89,16 +86,17 @@ static void spiDmaTX(const uint8_t* src, uint16_t count) { dmac_channel_disable(SPI_DMAC_TX_CH); DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLA = + count | DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLB = + DMAC_CTRLB_SRC_DSCR | DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | src_incr | DMAC_CTRLB_DST_INCR_FIXED; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(SPI_TX_IDX) | - DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CFG = + DMAC_CFG_DST_PER(SPI_TX_IDX) | DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | + DMAC_CFG_FIFOCFG_ALAP_CFG; dmac_channel_enable(SPI_DMAC_TX_CH); } @@ -141,39 +139,36 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { #endif // USE_SAM3X_DMAC } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - SPI.endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { SPI.endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - SPI.end(); -} +void SdSpiArduinoDriver::end() { SPI.end(); } //------------------------------------------------------------------------------ static inline uint8_t spiTransfer(uint8_t b) { Spi* pSpi = SPI0; pSpi->SPI_TDR = b; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) { + } b = pSpi->SPI_RDR; return b; } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return spiTransfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return spiTransfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { Spi* pSpi = SPI0; int rtn = 0; #if USE_SAM3X_DMAC // clear overrun error - while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) {pSpi->SPI_RDR;} + while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) { + pSpi->SPI_RDR; + } spiDmaRX(buf, count); spiDmaTX(0, count); uint32_t m = millis(); while (!dmac_channel_transfer_done(SPI_DMAC_RX_CH)) { - if ((millis() - m) > SAM3X_DMA_TIMEOUT) { + if ((millis() - m) > SAM3X_DMA_TIMEOUT) { dmac_channel_disable(SPI_DMAC_RX_CH); dmac_channel_disable(SPI_DMAC_TX_CH); rtn = 2; @@ -183,34 +178,39 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { if (pSpi->SPI_SR & SPI_SR_OVRES) { rtn |= 1; } -#else // USE_SAM3X_DMAC +#else // USE_SAM3X_DMAC for (size_t i = 0; i < count; i++) { pSpi->SPI_TDR = 0XFF; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) { + } buf[i] = pSpi->SPI_RDR; } #endif // USE_SAM3X_DMAC return rtn; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - spiTransfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { spiTransfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { Spi* pSpi = SPI0; #if USE_SAM3X_DMAC spiDmaTX(buf, count); - while (!dmac_channel_transfer_done(SPI_DMAC_TX_CH)) {} -#else // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} + while (!dmac_channel_transfer_done(SPI_DMAC_TX_CH)) { + } +#else // #if USE_SAM3X_DMAC + while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) { + } for (size_t i = 0; i < count; i++) { pSpi->SPI_TDR = buf[i]; - while ((pSpi->SPI_SR & SPI_SR_TDRE) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_TDRE) == 0) { + } } #endif // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) { + } // leave RDR empty - while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) {pSpi->SPI_RDR;} + while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) { + pSpi->SPI_RDR; + } } #endif // defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_SAM_DUE) diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiESP.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiESP.cpp similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiESP.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiESP.cpp index bc58f5d3..27a51803 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiESP.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiESP.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -27,9 +27,7 @@ #if defined(SD_USE_CUSTOM_SPI) && (defined(ESP8266) || defined(ESP32)) #define ESP_UNALIGN_OK 1 //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -44,29 +42,23 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - m_spi->end(); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { #if ESP_UNALIGN_OK m_spi->transferBytes(nullptr, buf, count); -#else // ESP_UNALIGN_OK +#else // ESP_UNALIGN_OK // Adjust to 32-bit alignment. while ((reinterpret_cast(buf) & 0X3) && count) { *buf++ = m_spi->transfer(0xff); count--; } // Do multiple of four byte transfers. - size_t n4 = 4*(count/4); + size_t n4 = 4 * (count / 4); if (n4) { m_spi->transferBytes(nullptr, buf, n4); } @@ -78,11 +70,9 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { #if !ESP_UNALIGN_OK // Adjust to 32-bit alignment. while ((reinterpret_cast(buf) & 0X3) && count) { diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiLibDriver.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiLibDriver.h similarity index 62% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiLibDriver.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiLibDriver.h index 0522419c..44a7a2d5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiLibDriver.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiLibDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -43,48 +43,72 @@ inline void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { } else { m_spi = &SPI; } - m_spi->begin(); + if (!(spiConfig.options & USER_SPI_BEGIN)) { + m_spi->begin(); + } } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::end() { - m_spi->end(); -} +inline void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +inline void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -inline uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer( 0XFF); -} +inline uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { -#if USE_SPI_ARRAY_TRANSFER - memset(buf, 0XFF, count); - m_spi->transfer(buf, count); -#else // USE_SPI_ARRAY_TRANSFER +#if USE_SPI_ARRAY_TRANSFER == 0 for (size_t i = 0; i < count; i++) { buf[i] = m_spi->transfer(0XFF); } -#endif // USE_SPI_ARRAY_TRANSFER +#elif USE_SPI_ARRAY_TRANSFER == 1 + memset(buf, 0XFF, count); + m_spi->transfer(buf, count); +#elif USE_SPI_ARRAY_TRANSFER < 4 + m_spi->transfer(nullptr, buf, count); +#elif USE_SPI_ARRAY_TRANSFER == 4 + uint8_t txTmp[512]; + memset(txTmp, 0XFF, sizeof(txTmp)); + while (count) { + size_t n = count <= sizeof(txTmp) ? count : sizeof(txTmp); + m_spi->transfer(txTmp, buf, n); + buf += n; + count -= n; + } +#else // USE_SPI_ARRAY_TRANSFER == 0 +#error invalid USE_SPI_ARRAY_TRANSFER +#endif // USE_SPI_ARRAY_TRANSFER == 0 return 0; } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +inline void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ inline void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { -#if USE_SPI_ARRAY_TRANSFER - if (count <= 512) { - uint8_t tmp[512]; - memcpy(tmp, buf, count); - m_spi->transfer(tmp, count); - } -#else // USE_SPI_ARRAY_TRANSFER +#if USE_SPI_ARRAY_TRANSFER == 0 for (size_t i = 0; i < count; i++) { m_spi->transfer(buf[i]); } -#endif // USE_SPI_ARRAY_TRANSFER +#elif USE_SPI_ARRAY_TRANSFER == 1 + uint8_t tmp[512]; + while (count > 0) { + size_t n = count <= sizeof(tmp) ? count : sizeof(tmp); + memcpy(tmp, buf, n); + m_spi->transfer(tmp, n); + count -= n; + buf += n; + } +#elif USE_SPI_ARRAY_TRANSFER == 2 + // Some systems do not allow const uint8_t*. + m_spi->transfer(const_cast(buf), nullptr, count); +#elif USE_SPI_ARRAY_TRANSFER < 5 + uint8_t rxTmp[512]; + while (count > 0) { + size_t n = count <= sizeof(rxTmp) ? count : sizeof(rxTmp); + // Some systems do not allow const uint8_t*. + m_spi->transfer(const_cast(buf), rxTmp, n); + buf += n; + count -= n; + } +#else // if USE_SPI_ARRAY_TRANSFER == 0 +#error invalid USE_SPI_ARRAY_TRANSFER +#endif // USE_SPI_ARRAY_TRANSFER == 0 } #endif // SdSpiLibDriver_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiParticle.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiParticle.cpp similarity index 81% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiParticle.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiParticle.cpp index e6918204..ecf6f52e 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiParticle.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiParticle.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,9 +30,7 @@ static void SD_SPI_DMA_TransferComplete_Callback() { SPI_DMA_TransferCompleted = true; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -43,36 +41,29 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - m_spi->end(); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { SPI_DMA_TransferCompleted = false; m_spi->transfer(nullptr, buf, count, SD_SPI_DMA_TransferComplete_Callback); - while (!SPI_DMA_TransferCompleted) {} + while (!SPI_DMA_TransferCompleted) { + } return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { SPI_DMA_TransferCompleted = false; m_spi->transfer(const_cast(buf), nullptr, count, - SD_SPI_DMA_TransferComplete_Callback); + SD_SPI_DMA_TransferComplete_Callback); - while (!SPI_DMA_TransferCompleted) {} + while (!SPI_DMA_TransferCompleted) { + } } #endif // defined(SD_USE_CUSTOM_SPI) && defined(PLATFORM_ID) - diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSTM32.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSTM32.cpp similarity index 82% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSTM32.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSTM32.cpp index 1e2369ac..544c2dfb 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSTM32.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSTM32.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,8 +24,7 @@ */ // Driver for: https://github.com/rogerclarkmelbourne/Arduino_STM32 #include "SdSpiDriver.h" -#if defined(SD_USE_CUSTOM_SPI)\ - && (defined(__STM32F1__) || defined(__STM32F4__)) +#if defined(SD_USE_CUSTOM_SPI) && (defined(__STM32F1__) || defined(__STM32F4__)) #if defined(__STM32F1__) #define USE_STM32_DMA 1 #elif defined(__STM32F4__) @@ -34,9 +33,7 @@ #error Unknown STM32 type #endif // defined(__STM32F1__) //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -47,35 +44,27 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - m_spi->end(); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { #if USE_STM32_DMA return m_spi->dmaTransfer(nullptr, buf, count); -#else // USE_STM32_DMA +#else // USE_STM32_DMA m_spi->read(buf, count); return 0; #endif // USE_STM32_DMA } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { #if USE_STM32_DMA m_spi->dmaTransfer(const_cast(buf), nullptr, count); -#else // USE_STM32_DMA +#else // USE_STM32_DMA m_spi->write(const_cast(buf), count); #endif // USE_STM32_DMA } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSTM32Core.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSTM32Core.cpp similarity index 87% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSTM32Core.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSTM32Core.cpp index 86b2a7a0..8b7da947 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSTM32Core.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSTM32Core.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -26,9 +26,7 @@ #include "SdSpiDriver.h" #if defined(SD_USE_CUSTOM_SPI) && defined(STM32_CORE_VERSION) //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -39,17 +37,11 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - m_spi->end(); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { // Must send 0XFF - SD looks at send data for command. @@ -58,9 +50,7 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { // Avoid stack overflow if bad count. This should cause a write error. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSoftDriver.h b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSoftDriver.h similarity index 91% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSoftDriver.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSoftDriver.h index b49221ea..c681ca4a 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiSoftDriver.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiSoftDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -88,30 +88,29 @@ class SdSpiSoftDriver { * * \param[in] maxSck Maximum SCK frequency. */ - void setSckSpeed(uint32_t maxSck) { - (void)maxSck; - } + void setSckSpeed(uint32_t maxSck) { (void)maxSck; } }; //------------------------------------------------------------------------------ /** * \class SoftSpiDriver * \brief Class for external soft SPI. */ -template +template class SoftSpiDriver : public SdSpiSoftDriver { public: /** Initialize the SPI bus. */ - void begin() {m_spi.begin();} + void begin() { m_spi.begin(); } /** Receive a byte. * * \return The byte. */ - uint8_t receive() {return m_spi.receive();} + uint8_t receive() { return m_spi.receive(); } /** Send a byte. * * \param[in] data Byte to send */ - void send(uint8_t data) {m_spi.send(data);} + void send(uint8_t data) { m_spi.send(data); } + private: SoftSPI m_spi; }; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiTeensy3.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiTeensy3.cpp similarity index 83% rename from extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiTeensy3.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiTeensy3.cpp index d0303e3d..6c8e045b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SpiDriver/SdSpiTeensy3.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/SpiDriver/SdSpiTeensy3.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,12 +23,10 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiDriver.h" -#if defined(SD_USE_CUSTOM_SPI) && defined(__arm__) && defined(CORE_TEENSY) +#if defined(SD_USE_CUSTOM_SPI) && defined(__arm__) && defined(CORE_TEENSY) #define USE_BLOCK_TRANSFER 1 //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -46,23 +44,17 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::end() { - m_spi->end(); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { #if USE_BLOCK_TRANSFER memset(buf, 0XFF, count); m_spi->transfer(buf, count); -#else // USE_BLOCK_TRANSFER +#else // USE_BLOCK_TRANSFER for (size_t i = 0; i < count; i++) { buf[i] = m_spi->transfer(0XFF); } @@ -70,11 +62,9 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { #if USE_BLOCK_TRANSFER uint32_t tmp[128]; if (0 < count && count <= 512) { diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/ArduinoFiles.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/ArduinoFiles.h similarity index 82% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/ArduinoFiles.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/ArduinoFiles.h index 748125de..e5a06d64 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/ArduinoFiles.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/ArduinoFiles.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -39,7 +39,7 @@ * \class PrintFile * \brief PrintFile class. */ -template +template class PrintFile : public print_t, public BaseFile { public: using BaseFile::clearWriteError; @@ -50,16 +50,14 @@ class PrintFile : public print_t, public BaseFile { * \param[in] b byte to write. * \return one for success. */ - size_t write(uint8_t b) { - return BaseFile::write(&b, 1); - } + size_t write(uint8_t b) { return BaseFile::write(&b, 1); } }; //------------------------------------------------------------------------------ /** * \class StreamFile * \brief StreamFile class. */ -template +template class StreamFile : public stream_t, public BaseFile { public: using BaseFile::clearWriteError; @@ -72,24 +70,13 @@ class StreamFile : public stream_t, public BaseFile { /** \return number of bytes available from the current position to EOF * or INT_MAX if more than INT_MAX bytes are available. */ - int available() { - return BaseFile::available(); - } + int available() { return BaseFile::available(); } /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() { - BaseFile::sync(); - } + void flush() { BaseFile::sync(); } /** This function reports if the current file is a directory or not. - * \return true if the file is a directory. - */ - bool isDirectory() { - return BaseFile::isDir(); - } - /** No longer implemented due to Long File Names. - * - * Use getName(char* name, size_t size). - * \return a pointer to replacement suggestion. + * \return true if the file is a directory. */ + bool isDirectory() { return BaseFile::isDir(); } #ifndef DOXYGEN_SHOULD_SKIP_THIS char* __attribute__((error("use getName(name, size)"))) name(); #endif // DOXYGEN_SHOULD_SKIP_THIS @@ -97,21 +84,15 @@ class StreamFile : public stream_t, public BaseFile { * * \return The byte if no error and not at eof else -1; */ - int peek() { - return BaseFile::peek(); - } + int peek() { return BaseFile::peek(); } /** \return the current file position. */ - PosType position() { - return BaseFile::curPosition(); - } + PosType position() { return BaseFile::curPosition(); } /** Read the next byte from a file. * * \return For success return the next byte in the file as an int. * If an error occurs or end of file is reached return -1. */ - int read() { - return BaseFile::read(); - } + int read() { return BaseFile::read(); } /** Rewind a file if it is a directory */ void rewindDirectory() { if (BaseFile::isDir()) { @@ -125,21 +106,15 @@ class StreamFile : public stream_t, public BaseFile { * \param[in] pos the new file position. * \return true for success or false for failure. */ - bool seek(PosType pos) { - return BaseFile::seekSet(pos); - } + bool seek(PosType pos) { return BaseFile::seekSet(pos); } /** \return the file's size. */ - PosType size() { - return BaseFile::fileSize(); - } + PosType size() { return BaseFile::fileSize(); } /** Write a byte to a file. Required by the Arduino Print class. * \param[in] b the byte to be written. * Use getWriteError to check for errors. * \return 1 for success and 0 for failure. */ - size_t write(uint8_t b) { - return BaseFile::write(b); - } + size_t write(uint8_t b) { return BaseFile::write(b); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/CPPLINT.cfg b/extra-libraries/ESP32/SdFat-2.2.3/src/common/CPPLINT.cfg similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/CPPLINT.cfg rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/CPPLINT.cfg diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/CompileDateTime.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/CompileDateTime.h similarity index 56% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/CompileDateTime.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/CompileDateTime.h index 4f57aa6a..7cc041eb 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/CompileDateTime.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/CompileDateTime.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,51 +24,46 @@ */ #ifndef CompileDateTime_h #define CompileDateTime_h +#include // Note - these functions will compile to a few bytes // since they are evaluated at compile time. /** \return year field of the __DATE__ macro. */ constexpr uint16_t compileYear() { - return 1000*(__DATE__[7] - '0') - + 100*(__DATE__[8] - '0') - + 10*(__DATE__[9] - '0') - + (__DATE__[10] - '0'); -} -/** \return true if str equals the month field of the __DATE__ macro. */ -constexpr bool compileMonthIs(const char* str) { - return __DATE__[0] == str[0] - && __DATE__[1] == str[1] - && __DATE__[2] == str[2]; + return 1000 * (__DATE__[7] - '0') + 100 * (__DATE__[8] - '0') + + 10 * (__DATE__[9] - '0') + (__DATE__[10] - '0'); } /** \return month field of the __DATE__ macro. */ constexpr uint8_t compileMonth() { - return compileMonthIs("Jan") ? 1 : - compileMonthIs("Feb") ? 2 : - compileMonthIs("Mar") ? 3 : - compileMonthIs("Apr") ? 4 : - compileMonthIs("May") ? 5 : - compileMonthIs("Jun") ? 6 : - compileMonthIs("Jul") ? 7 : - compileMonthIs("Aug") ? 8 : - compileMonthIs("Sep") ? 9 : - compileMonthIs("Oct") ? 10 : - compileMonthIs("Nov") ? 11 : - compileMonthIs("Dec") ? 12 : 0; + return __DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n' ? 1 + : __DATE__[0] == 'F' && __DATE__[1] == 'e' && __DATE__[2] == 'b' ? 2 + : __DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r' ? 3 + : __DATE__[0] == 'A' && __DATE__[1] == 'p' && __DATE__[2] == 'r' ? 4 + : __DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y' ? 5 + : __DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n' ? 6 + : __DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l' ? 7 + : __DATE__[0] == 'A' && __DATE__[1] == 'u' && __DATE__[2] == 'g' ? 8 + : __DATE__[0] == 'S' && __DATE__[1] == 'e' && __DATE__[2] == 'p' ? 9 + : __DATE__[0] == 'O' && __DATE__[1] == 'c' && __DATE__[2] == 't' ? 10 + : __DATE__[0] == 'N' && __DATE__[1] == 'o' && __DATE__[2] == 'v' ? 11 + : __DATE__[0] == 'D' && __DATE__[1] == 'e' && __DATE__[2] == 'c' ? 12 + : 0; } /** \return day field of the __DATE__ macro. */ constexpr uint8_t compileDay() { - return 10*(__DATE__[4] == ' ' ? 0 : __DATE__[4] - '0') + (__DATE__[5] - '0'); + return 10 * ((__DATE__[4] == ' ' ? '0' : __DATE__[4]) - '0') + + (__DATE__[5] - '0'); } /** \return hour field of the __TIME__ macro. */ constexpr uint8_t compileHour() { - return 10*(__TIME__[0] - '0') + __TIME__[1] - '0'; + return 10 * (__TIME__[0] - '0') + __TIME__[1] - '0'; } /** \return minute field of the __TIME__ macro. */ constexpr uint8_t compileMinute() { - return 10*(__TIME__[3] - '0') + __TIME__[4] - '0'; + return 10 * (__TIME__[3] - '0') + __TIME__[4] - '0'; } /** \return second field of the __TIME__ macro. */ constexpr uint8_t compileSecond() { - return 10*(__TIME__[6] - '0') + __TIME__[7] - '0'; + return 10 * (__TIME__[6] - '0') + __TIME__[7] - '0'; } #endif // CompileDateTime_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/DebugMacros.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/DebugMacros.h similarity index 91% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/DebugMacros.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/DebugMacros.h index 7d0af924..653cc86e 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/DebugMacros.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/DebugMacros.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -46,11 +46,15 @@ __attribute__((unused)) static void dbgHalt(uint16_t line) { Serial.print(F(DBG_FILE)); Serial.write('.'); Serial.println(line); - while (true) {} + while (true) { + } } #define DBG_FAIL_MACRO dbgFail(__LINE__) #define DBG_HALT_MACRO dbgHalt(__LINE__) -#define DBG_HALT_IF(b) if (b) {dbgHalt(__LINE__);} +#define DBG_HALT_IF(b) \ + if (b) { \ + dbgHalt(__LINE__); \ + } #else // USE_DBG_MACROS #define DBG_FAIL_MACRO @@ -66,7 +70,10 @@ __attribute__((unused)) static void dbgWarn(uint16_t line) { Serial.println(line); } #define DBG_WARN_MACRO dbgWarn(__LINE__) -#define DBG_WARN_IF(b) if (b) {dbgWarn(__LINE__);} +#define DBG_WARN_IF(b) \ + if (b) { \ + dbgWarn(__LINE__); \ + } #else // USE_DBG_MACROS > 1 #define DBG_WARN_MACRO #define DBG_WARN_IF(b) diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FmtNumber.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FmtNumber.cpp similarity index 71% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FmtNumber.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FmtNumber.cpp index d9eb37e0..906d8ee0 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FmtNumber.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FmtNumber.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -40,80 +40,84 @@ // (we add 1 because we will be using the floor of the result later) // divmod10_asm16 and divmod10_asm32 are public domain code by Stimmer. // http://forum.arduino.cc/index.php?topic=167414.msg1293679#msg1293679 -#define divmod10_asm16(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " lsr %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") +#define divmod10_asm16(in32, mod8, tmp8) \ + asm volatile( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " lsr %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + : "+r"(in32), "=d"(mod8), "=d"(tmp8) \ + : \ + : "r0") -#define divmod10_asm32(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " mul %C0,%2 \n\t" \ - " clr %C0 \n\t" \ - " add %B0,r0 \n\t" \ - " adc %C0,r1 \n\t" \ - " mul %D0,%2 \n\t" \ - " clr %D0 \n\t" \ - " add %C0,r0 \n\t" \ - " adc %D0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,%C0 \n\t" \ - " adc %C0,%D0 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,%C0 \n\t" \ - " adc %B0,%D0 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%D0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " lsr %D0 \n\t" \ - " ror %C0 \n\t" \ - " ror %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") +#define divmod10_asm32(in32, mod8, tmp8) \ + asm volatile( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " mul %C0,%2 \n\t" \ + " clr %C0 \n\t" \ + " add %B0,r0 \n\t" \ + " adc %C0,r1 \n\t" \ + " mul %D0,%2 \n\t" \ + " clr %D0 \n\t" \ + " add %C0,r0 \n\t" \ + " adc %D0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,%C0 \n\t" \ + " adc %C0,%D0 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,%C0 \n\t" \ + " adc %B0,%D0 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%D0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " lsr %D0 \n\t" \ + " ror %C0 \n\t" \ + " ror %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + : "+r"(in32), "=d"(mod8), "=d"(tmp8) \ + : \ + : "r0") //------------------------------------------------------------------------------ /* // C++ code is based on this version of divmod10 by robtillaart. @@ -162,7 +166,7 @@ char* fmtBase10(char* str, uint16_t n) { #ifdef USE_STIMMER uint8_t tmp8, r; divmod10_asm16(n, r, tmp8); -#else // USE_STIMMER +#else // USE_STIMMER uint16_t t = n; n = (n >> 1) + (n >> 2); n = n + (n >> 4); @@ -187,7 +191,7 @@ char* fmtBase10(char* str, uint32_t n) { #ifdef USE_STIMMER uint8_t tmp8, r; divmod10_asm32(n, r, tmp8); -#else // USE_STIMMER +#else // USE_STIMMER uint32_t t = n; n = (n >> 1) + (n >> 2); n = n + (n >> 4); @@ -231,7 +235,7 @@ char* fmtUnsigned(char* str, uint32_t num, uint8_t base, bool caps) { if (base == 10) return fmtBase10(str, (uint32_t)num); #endif // USE_FMT_BASE10 do { - int c = num%base; + int c = num % base; *--str = c + (c < 10 ? '0' : caps ? 'A' - 10 : 'a' - 10); } while (num /= base); return str; @@ -239,11 +243,11 @@ char* fmtUnsigned(char* str, uint32_t num, uint8_t base, bool caps) { //----------------------------------------------------------------------------- static const double powTen[] = {1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9}; -static const double rnd[] = - {5e-1, 5e-2, 5e-3, 5e-4, 5e-5, 5e-6, 5e-7, 5e-8, 5e-9, 5e-10}; -static const size_t MAX_PREC = sizeof(powTen)/sizeof(powTen[0]); +static const double rnd[] = {5e-1, 5e-2, 5e-3, 5e-4, 5e-5, + 5e-6, 5e-7, 5e-8, 5e-9, 5e-10}; +static const size_t MAX_PREC = sizeof(powTen) / sizeof(powTen[0]); -char *fmtDouble(char *str, double num, uint8_t prec, bool altFmt) { +char* fmtDouble(char* str, double num, uint8_t prec, bool altFmt) { bool neg = num < 0; if (neg) { num = -num; @@ -275,7 +279,7 @@ char *fmtDouble(char *str, double num, uint8_t prec, bool altFmt) { uint32_t ul = num; if (prec) { char* s = str - prec; - uint32_t f = (num - ul)*powTen[prec - 1]; + uint32_t f = (num - ul) * powTen[prec - 1]; str = fmtBase10(str, f); while (str > s) { *--str = '0'; @@ -298,8 +302,8 @@ char *fmtDouble(char *str, double num, uint8_t prec, bool altFmt) { * \param[in] expChar Use exp format if non zero. * \return Pointer to first character of result. */ -char* fmtDouble(char* str, double value, - uint8_t prec, bool altFmt, char expChar) { +char* fmtDouble(char* str, double value, uint8_t prec, bool altFmt, + char expChar) { if (expChar != 'e' && expChar != 'E') { expChar = 0; } @@ -347,11 +351,11 @@ char* fmtDouble(char* str, double value, exp++; } } else if (value < 1.0L) { - while (value < 1e-16L) { + while (value < 1e-16L) { value *= 1e16L; exp -= 16; } - while (value < 1e-4L) { + while (value < 1e-4L) { value *= 1e4L; exp -= 4; } @@ -384,13 +388,13 @@ char* fmtDouble(char* str, double value, uint32_t whole = value; if (prec) { char* tmp = str - prec; - uint32_t fraction = (value - whole)*powTen[prec - 1]; + uint32_t fraction = (value - whole) * powTen[prec - 1]; str = fmtBase10(str, fraction); while (str > tmp) { *--str = '0'; } } - if (prec || altFmt)*--str = '.'; + if (prec || altFmt) *--str = '.'; str = fmtBase10(str, whole); if (neg) { *--str = '-'; @@ -404,14 +408,14 @@ char* fmtDouble(char* str, double value, #ifdef __AVR__ static const float m[] PROGMEM = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; static const float p[] PROGMEM = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; -#else // __AVR__ +#else // __AVR__ static const float m[] = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; static const float p[] = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; #endif // __AVR__ #endif // DOXYGEN_SHOULD_SKIP_THIS // scale float v by power of ten. return v*10^n float scale10(float v, int8_t n) { - const float *s; + const float* s; if (n < 0) { n = -n; s = m; @@ -424,7 +428,7 @@ float scale10(float v, int8_t n) { if (n & 1) { v *= pgm_read_float(&s[i]); } -#else // __AVR__ +#else // __AVR__ if (n & 1) { v *= s[i]; } @@ -449,7 +453,8 @@ float scanFloat(const char* str, const char** ptr) { *ptr = str; } - while (isSpace((c = *str++))) {} + while (isSpace((c = *str++))) { + } neg = c == '-'; if (c == '-' || c == '+') { c = *str++; @@ -463,7 +468,7 @@ float scanFloat(const char* str, const char** ptr) { if (isDigit(c)) { digit = true; if (nd < 9) { - fract = 10*fract + c - '0'; + fract = 10 * fract + c - '0'; nd++; if (dot) { fracExp--; @@ -498,7 +503,7 @@ float scanFloat(const char* str, const char** ptr) { if (exp > EXP_LIMIT) { goto fail; } - exp = 10*exp + c - '0'; + exp = 10 * exp + c - '0'; successPtr = str; c = *str++; } @@ -510,6 +515,6 @@ float scanFloat(const char* str, const char** ptr) { v = scale10(static_cast(fract), fracExp); return neg ? -v : v; - fail: +fail: return 0; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FmtNumber.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FmtNumber.h similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FmtNumber.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FmtNumber.h index 6d25ed82..7f435232 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FmtNumber.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FmtNumber.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,17 +25,13 @@ #ifndef FmtNumber_h #define FmtNumber_h #include -#include #include -inline bool isDigit(char c) { - return '0' <= (c) && (c) <= '9'; -} -inline bool isSpace(char c) { - return (c) == ' ' || (0X9 <= (c) && (c) <= 0XD); -} +#include +inline bool isDigit(char c) { return '0' <= (c) && (c) <= '9'; } +inline bool isSpace(char c) { return (c) == ' ' || (0X9 <= (c) && (c) <= 0XD); } char* fmtBase10(char* str, uint16_t n); char* fmtBase10(char* str, uint32_t n); -char* fmtDouble(char *str, double d, uint8_t prec, bool altFmt); +char* fmtDouble(char* str, double d, uint8_t prec, bool altFmt); char* fmtDouble(char* str, double d, uint8_t prec, bool altFmt, char expChar); char* fmtHex(char* str, uint32_t n); char* fmtSigned(char* str, int32_t n, uint8_t base, bool caps); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsApiConstants.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsApiConstants.h similarity index 75% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsApiConstants.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsApiConstants.h index 3905e147..3fcc20ca 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsApiConstants.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsApiConstants.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -42,23 +42,23 @@ /** Use O_NONBLOCK for open at EOF */ #define O_AT_END O_NONBLOCK ///< Open at EOF. typedef int oflag_t; -#else // USE_FCNTL_H -#define O_RDONLY 0X00 ///< Open for reading only. -#define O_WRONLY 0X01 ///< Open for writing only. -#define O_RDWR 0X02 ///< Open for reading and writing. -#define O_AT_END 0X04 ///< Open at EOF. -#define O_APPEND 0X08 ///< Set append mode. -#define O_CREAT 0x10 ///< Create file if it does not exist. -#define O_TRUNC 0x20 ///< Truncate file to zero length. -#define O_EXCL 0x40 ///< Fail if the file exists. -#define O_SYNC 0x80 ///< Synchronized write I/O operations. +#else // USE_FCNTL_H +#define O_RDONLY 0X00 ///< Open for reading only. +#define O_WRONLY 0X01 ///< Open for writing only. +#define O_RDWR 0X02 ///< Open for reading and writing. +#define O_AT_END 0X04 ///< Open at EOF. +#define O_APPEND 0X08 ///< Set append mode. +#define O_CREAT 0x10 ///< Create file if it does not exist. +#define O_TRUNC 0x20 ///< Truncate file to zero length. +#define O_EXCL 0x40 ///< Fail if the file exists. +#define O_SYNC 0x80 ///< Synchronized write I/O operations. -#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) ///< Mask for access mode. +#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) ///< Mask for access mode. typedef uint8_t oflag_t; -#endif // USE_FCNTL_H +#endif // USE_FCNTL_H -#define O_READ O_RDONLY -#define O_WRITE O_WRONLY +#define O_READ O_RDONLY +#define O_WRITE O_WRONLY inline bool isWriteMode(oflag_t oflag) { oflag &= O_ACCMODE; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsBlockDevice.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsBlockDevice.h similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsBlockDevice.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsBlockDevice.h index c0cabaff..e89c5b02 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsBlockDevice.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsBlockDevice.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsBlockDeviceInterface.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsBlockDeviceInterface.h similarity index 98% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsBlockDeviceInterface.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsBlockDeviceInterface.h index ecd99121..93913181 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsBlockDeviceInterface.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsBlockDeviceInterface.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,8 +28,8 @@ */ #ifndef FsBlockDeviceInterface_h #define FsBlockDeviceInterface_h -#include #include +#include /** * \class FsBlockDeviceInterface * \brief FsBlockDeviceInterface class. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsCache.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsCache.cpp similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsCache.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsCache.cpp index 227a82f7..031c42ee 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsCache.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsCache.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,8 +23,9 @@ * DEALINGS IN THE SOFTWARE. */ #define DBG_FILE "FsCache.cpp" -#include "DebugMacros.h" #include "FsCache.h" + +#include "DebugMacros.h" //------------------------------------------------------------------------------ uint8_t* FsCache::prepare(uint32_t sector, uint8_t option) { if (!m_blockDev) { @@ -48,7 +49,7 @@ uint8_t* FsCache::prepare(uint32_t sector, uint8_t option) { m_status |= option & CACHE_STATUS_MASK; return m_buffer; - fail: +fail: return nullptr; } //------------------------------------------------------------------------------ @@ -60,8 +61,7 @@ bool FsCache::sync() { } // mirror second FAT if (m_status & CACHE_STATUS_MIRROR_FAT) { - uint32_t sector = m_sector + m_mirrorOffset; - if (!m_blockDev->writeSector(sector, m_buffer)) { + if (!m_blockDev->writeSector(m_sector + m_mirrorOffset, m_buffer)) { DBG_FAIL_MACRO; goto fail; } @@ -70,6 +70,6 @@ bool FsCache::sync() { } return true; - fail: +fail: return false; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsCache.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsCache.h similarity index 89% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsCache.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsCache.h index f5d8ae80..54778012 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsCache.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsCache.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,8 +28,8 @@ * \file * \brief Common cache code for exFAT and FAT. */ -#include "SysCall.h" #include "FsBlockDevice.h" +#include "SysCall.h" /** * \class FsCache * \brief Sector cache. @@ -42,7 +42,7 @@ class FsCache { static const uint8_t CACHE_STATUS_MIRROR_FAT = 2; /** Cache sector status bits */ static const uint8_t CACHE_STATUS_MASK = - CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT; + CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT; /** Sync existing sector but do not read new sector. */ static const uint8_t CACHE_OPTION_NO_READ = 4; /** Cache sector for read. */ @@ -51,12 +51,12 @@ class FsCache { static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY; /** Reserve cache sector for write - do not read from sector device. */ static const uint8_t CACHE_RESERVE_FOR_WRITE = - CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; + CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; //---------------------------------------------------------------------------- + /** Cobstructor. */ + FsCache() { init(nullptr); } /** \return Cache buffer address. */ - uint8_t* cacheBuffer() { - return m_buffer; - } + uint8_t* cacheBuffer() { return m_buffer; } /** * Cache safe read of a sector. * @@ -107,7 +107,7 @@ class FsCache { * \return true for success or false for failure. */ bool cacheSafeWrite(uint32_t sector, const uint8_t* src, size_t count) { - if (isCached(sector, count)) { + if (isCached(sector, count)) { invalidate(); } return m_blockDev->writeSectors(sector, src, count); @@ -121,9 +121,7 @@ class FsCache { return m_buffer; } /** Set current sector dirty. */ - void dirty() { - m_status |= CACHE_STATUS_DIRTY; - } + void dirty() { m_status |= CACHE_STATUS_DIRTY; } /** Initialize the cache. * \param[in] blockDev Block device for this cache. */ @@ -140,8 +138,8 @@ class FsCache { * \param[in] sector Sector to checked. * \return true if the sector is cached. */ - bool isCached(uint32_t sector) const {return sector == m_sector;} - /** Check if the cache contains a sector from a range. + bool isCached(uint32_t sector) const { return sector == m_sector; } + /** Check if the cache contains a sector from a range. * \param[in] sector Start sector of the range. * \param[in] count Number of sectors in the range. * \return true if a sector in the range is cached. @@ -150,9 +148,7 @@ class FsCache { return sector <= m_sector && m_sector < (sector + count); } /** \return dirty status */ - bool isDirty() { - return m_status & CACHE_STATUS_DIRTY; - } + bool isDirty() { return m_status & CACHE_STATUS_DIRTY; } /** Prepare cache to access sector. * \param[in] sector Sector to read. * \param[in] option mode for cached sector. @@ -160,15 +156,11 @@ class FsCache { */ uint8_t* prepare(uint32_t sector, uint8_t option); /** \return Logical sector number for cached sector. */ - uint32_t sector() { - return m_sector; - } + uint32_t sector() { return m_sector; } /** Set the offset to the second FAT for mirroring. * \param[in] offset Sector offset to second FAT. */ - void setMirrorOffset(uint32_t offset) { - m_mirrorOffset = offset; - } + void setMirrorOffset(uint32_t offset) { m_mirrorOffset = offset; } /** Write current sector if dirty. * \return true for success or false for failure. */ @@ -177,8 +169,8 @@ class FsCache { private: uint8_t m_status; FsBlockDevice* m_blockDev; - uint32_t m_mirrorOffset; uint32_t m_sector; + uint32_t m_mirrorOffset; uint8_t m_buffer[512]; }; #endif // FsCache_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsDateTime.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsDateTime.cpp similarity index 83% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsDateTime.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsDateTime.cpp index 31f5f585..be3736b6 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsDateTime.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsDateTime.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,9 +22,10 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "SysCall.h" #include "FsDateTime.h" + #include "FmtNumber.h" +#include "SysCall.h" static void dateTimeMs10(uint16_t* date, uint16_t* time, uint8_t* ms10) { *ms10 = 0; @@ -33,19 +34,17 @@ static void dateTimeMs10(uint16_t* date, uint16_t* time, uint8_t* ms10) { //------------------------------------------------------------------------------ /** Date time callback. */ namespace FsDateTime { - void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10) = nullptr; - void (*callback2)(uint16_t* date, uint16_t* time) = nullptr; - void clearCallback() { - callback = nullptr; - } - void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)) { - callback = dateTimeMs10; - callback2 = dateTime; - } - void setCallback( - void (*dateTime)(uint16_t* date, uint16_t* time, uint8_t* ms10)) { - callback = dateTime; - } +void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10) = nullptr; +void (*callback2)(uint16_t* date, uint16_t* time) = nullptr; +void clearCallback() { callback = nullptr; } +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)) { + callback = dateTimeMs10; + callback2 = dateTime; +} +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time, + uint8_t* ms10)) { + callback = dateTime; +} } // namespace FsDateTime //------------------------------------------------------------------------------ static char* fsFmtField(char* str, uint16_t n, char sep) { @@ -74,14 +73,14 @@ char* fsFmtTime(char* str, uint16_t time) { } //------------------------------------------------------------------------------ char* fsFmtTime(char* str, uint16_t time, uint8_t sec100) { - str = fsFmtField(str, 2*(time & 31) + (sec100 < 100 ? 0 : 1), 0); + str = fsFmtField(str, 2 * (time & 31) + (sec100 < 100 ? 0 : 1), 0); *--str = ':'; return fsFmtTime(str, time); } //------------------------------------------------------------------------------ char* fsFmtTimeZone(char* str, int8_t tz) { - char sign; if (tz & 0X80) { + char sign; if (tz & 0X40) { sign = '-'; tz = -tz; @@ -90,8 +89,8 @@ char* fsFmtTimeZone(char* str, int8_t tz) { tz &= 0X7F; } if (tz) { - str = fsFmtField(str, 15*(tz%4), 0); - str = fsFmtField(str, tz/4, ':'); + str = fsFmtField(str, 15 * (tz % 4), 0); + str = fsFmtField(str, tz / 4, ':'); *--str = sign; } *--str = 'C'; @@ -103,12 +102,12 @@ char* fsFmtTimeZone(char* str, int8_t tz) { //------------------------------------------------------------------------------ size_t fsPrintDate(print_t* pr, uint16_t date) { // Allow YYYY-MM-DD - char buf[sizeof("YYYY-MM-DD") -1]; + char buf[sizeof("YYYY-MM-DD") - 1]; char* str = buf + sizeof(buf); if (date) { str = fsFmtDate(str, date); } else { - do { + do { *--str = ' '; } while (str > buf); } @@ -117,7 +116,7 @@ size_t fsPrintDate(print_t* pr, uint16_t date) { //------------------------------------------------------------------------------ size_t fsPrintDateTime(print_t* pr, uint16_t date, uint16_t time) { // Allow YYYY-MM-DD hh:mm - char buf[sizeof("YYYY-MM-DD hh:mm") -1]; + char buf[sizeof("YYYY-MM-DD hh:mm") - 1]; char* str = buf + sizeof(buf); if (date) { str = fsFmtTime(str, time); @@ -135,10 +134,10 @@ size_t fsPrintDateTime(print_t* pr, uint32_t dateTime) { return fsPrintDateTime(pr, dateTime >> 16, dateTime & 0XFFFF); } //------------------------------------------------------------------------------ -size_t fsPrintDateTime(print_t* pr, - uint32_t dateTime, uint8_t s100, int8_t tz) { +size_t fsPrintDateTime(print_t* pr, uint32_t dateTime, uint8_t s100, + int8_t tz) { // Allow YYYY-MM-DD hh:mm:ss UTC+hh:mm - char buf[sizeof("YYYY-MM-DD hh:mm:ss UTC+hh:mm") -1]; + char buf[sizeof("YYYY-MM-DD hh:mm:ss UTC+hh:mm") - 1]; char* str = buf + sizeof(buf); if (tz) { str = fsFmtTimeZone(str, tz); @@ -152,7 +151,7 @@ size_t fsPrintDateTime(print_t* pr, //------------------------------------------------------------------------------ size_t fsPrintTime(print_t* pr, uint16_t time) { // Allow hh:mm - char buf[sizeof("hh:mm") -1]; + char buf[sizeof("hh:mm") - 1]; char* str = buf + sizeof(buf); str = fsFmtTime(str, time); return pr->write(reinterpret_cast(str), buf + sizeof(buf) - str); @@ -160,7 +159,7 @@ size_t fsPrintTime(print_t* pr, uint16_t time) { //------------------------------------------------------------------------------ size_t fsPrintTime(print_t* pr, uint16_t time, uint8_t sec100) { // Allow hh:mm:ss - char buf[sizeof("hh:mm:ss") -1]; + char buf[sizeof("hh:mm:ss") - 1]; char* str = buf + sizeof(buf); str = fsFmtTime(str, time, sec100); return pr->write(reinterpret_cast(str), buf + sizeof(buf) - str); @@ -168,7 +167,7 @@ size_t fsPrintTime(print_t* pr, uint16_t time, uint8_t sec100) { //------------------------------------------------------------------------------ size_t fsPrintTimeZone(print_t* pr, int8_t tz) { // Allow UTC+hh:mm - char buf[sizeof("UTC+hh:mm") -1]; + char buf[sizeof("UTC+hh:mm") - 1]; char* str = buf + sizeof(buf); str = fsFmtTimeZone(str, tz); return pr->write(reinterpret_cast(str), buf + sizeof(buf) - str); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsDateTime.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsDateTime.h similarity index 56% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsDateTime.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsDateTime.h index cd8b2c7c..3080c14b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsDateTime.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsDateTime.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,6 +25,7 @@ #ifndef FsDateTime_h #define FsDateTime_h #include + #include "CompileDateTime.h" #include "SysCall.h" @@ -36,74 +37,74 @@ /** Date time callback */ namespace FsDateTime { - /** Date time callback. */ - extern void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10); - /** Date time callback. */ - extern void (*callback2)(uint16_t* date, uint16_t* time); - /** Cancel callback. */ - void clearCallback(); - /** Set the date/time callback function. - * - * \param[in] dateTime The user's call back function. The callback. - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here. - * - * // Return date using FS_DATE macro to format fields. - * *date = FS_DATE(year, month, day); - * - * // Return time using FS_TIME macro to format fields. - * *time = FS_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - */ - void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)); - /** Set the date/time callback function. - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here. - * - * // Return date using FS_DATE macro to format fields - * *date = FS_DATE(year, month, day); - * - * // Return time using FS_TIME macro to format fields - * *time = FS_TIME(hour, minute, second); - * - * // Return the time since the last even second in units of 10 ms. - * // The granularity of the seconds part of FS_TIME is 2 seconds so - * // this field is a count of hundredth of a second and its valid - * // range is 0-199 inclusive. - * // For a simple RTC return 100*(seconds & 1). - * *ms10 = - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - */ - void setCallback( - void (*dateTime)(uint16_t* date, uint16_t* time, uint8_t* ms10)); +/** Date time callback. */ +extern void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10); +/** Date time callback. */ +extern void (*callback2)(uint16_t* date, uint16_t* time); +/** Cancel callback. */ +void clearCallback(); +/** Set the date/time callback function. + * + * \param[in] dateTime The user's call back function. The callback. + * function is of the form: + * + * \code + * void dateTime(uint16_t* date, uint16_t* time) { + * uint16_t year; + * uint8_t month, day, hour, minute, second; + * + * // User gets date and time from GPS or real-time clock here. + * + * // Return date using FS_DATE macro to format fields. + * *date = FS_DATE(year, month, day); + * + * // Return time using FS_TIME macro to format fields. + * *time = FS_TIME(hour, minute, second); + * } + * \endcode + * + * Sets the function that is called when a file is created or when + * a file's directory entry is modified by sync(). All timestamps, + * access, creation, and modify, are set when a file is created. + * sync() maintains the last access date and last modify date/time. + * + */ +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)); +/** Set the date/time callback function. + * + * \param[in] dateTime The user's call back function. The callback + * function is of the form: + * + * \code + * void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { + * uint16_t year; + * uint8_t month, day, hour, minute, second; + * + * // User gets date and time from GPS or real-time clock here. + * + * // Return date using FS_DATE macro to format fields + * *date = FS_DATE(year, month, day); + * + * // Return time using FS_TIME macro to format fields + * *time = FS_TIME(hour, minute, second); + * + * // Return the time since the last even second in units of 10 ms. + * // The granularity of the seconds part of FS_TIME is 2 seconds so + * // this field is a count of hundredth of a second and its valid + * // range is 0-199 inclusive. + * // For a simple RTC return 100*(seconds & 1). + * *ms10 = + * } + * \endcode + * + * Sets the function that is called when a file is created or when + * a file's directory entry is modified by sync(). All timestamps, + * access, creation, and modify, are set when a file is created. + * sync() maintains the last access date and last modify date/time. + * + */ +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time, + uint8_t* ms10)); } // namespace FsDateTime /** date field for directory entry @@ -115,8 +116,8 @@ namespace FsDateTime { */ static inline uint16_t FS_DATE(uint16_t year, uint8_t month, uint8_t day) { year -= 1980; - return year > 127 || month > 12 || day > 31 ? 0 : - year << 9 | month << 5 | day; + return year > 127 || month > 12 || day > 31 ? 0 + : year << 9 | month << 5 | day; } /** year part of FAT directory date field * \param[in] fatDate Date in packed dir format. @@ -139,9 +140,7 @@ static inline uint8_t FS_MONTH(uint16_t fatDate) { * * \return Extracted day [1,31] */ -static inline uint8_t FS_DAY(uint16_t fatDate) { - return fatDate & 0X1F; -} +static inline uint8_t FS_DAY(uint16_t fatDate) { return fatDate & 0X1F; } /** time field for directory entry * \param[in] hour [0,23] * \param[in] minute [0,59] @@ -150,17 +149,16 @@ static inline uint8_t FS_DAY(uint16_t fatDate) { * \return Packed time for directory entry. */ static inline uint16_t FS_TIME(uint8_t hour, uint8_t minute, uint8_t second) { - return hour > 23 || minute > 59 || second > 59 ? 0 : - hour << 11 | minute << 5 | second >> 1; + return hour > 23 || minute > 59 || second > 59 + ? 0 + : hour << 11 | minute << 5 | second >> 1; } /** hour part of FAT directory time field * \param[in] fatTime Time in packed dir format. * * \return Extracted hour [0,23] */ -static inline uint8_t FS_HOUR(uint16_t fatTime) { - return fatTime >> 11; -} +static inline uint8_t FS_HOUR(uint16_t fatTime) { return fatTime >> 11; } /** minute part of FAT directory time field * \param[in] fatTime Time in packed dir format. * @@ -177,7 +175,7 @@ static inline uint8_t FS_MINUTE(uint16_t fatTime) { * \return Extracted second [0,58] */ static inline uint8_t FS_SECOND(uint16_t fatTime) { - return 2*(fatTime & 0X1F); + return 2 * (fatTime & 0X1F); } char* fsFmtDate(char* str, uint16_t date); char* fsFmtTime(char* str, uint16_t time); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsName.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsName.cpp similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsName.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsName.cpp index f2a98e8a..d75d642b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsName.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsName.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,6 +23,7 @@ * DEALINGS IN THE SOFTWARE. */ #include "FsName.h" + #include "FsUtf.h" #if USE_UTF8_LONG_NAMES uint16_t FsName::get16() { @@ -48,7 +49,7 @@ uint16_t FsName::get16() { } return rtn; - fail: +fail: return 0XFFFF; } #endif // USE_UTF8_LONG_NAMES diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsName.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsName.h similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsName.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsName.h index d7cc425c..93753aae 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsName.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsName.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,8 +24,9 @@ */ #ifndef FsName_h #define FsName_h -#include "SysCall.h" #include + +#include "SysCall.h" /** * \file * \brief FsName class. @@ -44,18 +45,16 @@ class FsName { const char* end; #if !USE_UTF8_LONG_NAMES /** \return true if at end. */ - bool atEnd() {return next == end;} + bool atEnd() { return next == end; } /** Reset to start of LFN. */ - void reset() {next = begin;} + void reset() { next = begin; } /** \return next char of LFN. */ - char getch() {return atEnd() ? 0 : *next++;} + char getch() { return atEnd() ? 0 : *next++; } /** \return next UTF-16 unit of LFN. */ - uint16_t get16() {return atEnd() ? 0 : *next++;} -#else // !USE_UTF8_LONG_NAMES + uint16_t get16() { return atEnd() ? 0 : *next++; } +#else // !USE_UTF8_LONG_NAMES uint16_t ls = 0; - bool atEnd() { - return !ls && next == end; - } + bool atEnd() { return !ls && next == end; } void reset() { next = begin; ls = 0; // lowSurrogate diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsStructs.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsStructs.cpp similarity index 98% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsStructs.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsStructs.cpp index 14f3a7da..294dbe25 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsStructs.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsStructs.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsStructs.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsStructs.h similarity index 57% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/FsStructs.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/FsStructs.h index 750af2e1..4ea662dd 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsStructs.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsStructs.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -26,9 +26,15 @@ #define FsStructs_h #include #include -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ +// See: +// https://learn.microsoft.com/en-us/windows/win32/fileio/file-systems +// https://learn.microsoft.com/en-us/windows/win32/fileio/exfat-specification +// https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc +// https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/FileIO/exfat-specification.md +//------------------------------------------------------------------------------ void lbaToMbrChs(uint8_t* chs, uint32_t capacityMB, uint32_t lba); -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ #if !defined(USE_SIMPLE_LITTLE_ENDIAN) || USE_SIMPLE_LITTLE_ENDIAN // assumes CPU is little-endian and handles alignment issues. inline uint16_t getLe16(const uint8_t* src) { @@ -49,40 +55,33 @@ inline void setLe32(uint8_t* dst, uint32_t src) { inline void setLe64(uint8_t* dst, uint64_t src) { *reinterpret_cast(dst) = src; } -#else // USE_SIMPLE_LITTLE_ENDIAN +#else // USE_SIMPLE_LITTLE_ENDIAN inline uint16_t getLe16(const uint8_t* src) { - return (uint16_t)src[0] << 0 | - (uint16_t)src[1] << 8; + return (uint16_t)src[0] << 0 | (uint16_t)src[1] << 8; } inline uint32_t getLe32(const uint8_t* src) { - return (uint32_t)src[0] << 0 | - (uint32_t)src[1] << 8 | - (uint32_t)src[2] << 16 | - (uint32_t)src[3] << 24; + return (uint32_t)src[0] << 0 | (uint32_t)src[1] << 8 | + (uint32_t)src[2] << 16 | (uint32_t)src[3] << 24; } inline uint64_t getLe64(const uint8_t* src) { - return (uint64_t)src[0] << 0 | - (uint64_t)src[1] << 8 | - (uint64_t)src[2] << 16 | - (uint64_t)src[3] << 24 | - (uint64_t)src[4] << 32 | - (uint64_t)src[5] << 40 | - (uint64_t)src[6] << 48 | - (uint64_t)src[7] << 56; + return (uint64_t)src[0] << 0 | (uint64_t)src[1] << 8 | + (uint64_t)src[2] << 16 | (uint64_t)src[3] << 24 | + (uint64_t)src[4] << 32 | (uint64_t)src[5] << 40 | + (uint64_t)src[6] << 48 | (uint64_t)src[7] << 56; } inline void setLe16(uint8_t* dst, uint16_t src) { - dst[0] = src >> 0; - dst[1] = src >> 8; + dst[0] = src >> 0; + dst[1] = src >> 8; } inline void setLe32(uint8_t* dst, uint32_t src) { - dst[0] = src >> 0; - dst[1] = src >> 8; + dst[0] = src >> 0; + dst[1] = src >> 8; dst[2] = src >> 16; dst[3] = src >> 24; } inline void setLe64(uint8_t* dst, uint64_t src) { - dst[0] = src >> 0; - dst[1] = src >> 8; + dst[0] = src >> 0; + dst[1] = src >> 8; dst[2] = src >> 16; dst[3] = src >> 24; dst[4] = src >> 32; @@ -97,8 +96,8 @@ const size_t FS_DIR_SIZE = 32; //------------------------------------------------------------------------------ // Reserved characters for exFAT names and FAT LFN. inline bool lfnReservedChar(uint8_t c) { - return c < 0X20 || c == '"' || c == '*' || c == '/' || c == ':' - || c == '<' || c == '>' || c == '?' || c == '\\'|| c == '|'; + return c < 0X20 || c == '"' || c == '*' || c == '/' || c == ':' || c == '<' || + c == '>' || c == '?' || c == '\\' || c == '|'; } //------------------------------------------------------------------------------ // Reserved characters for FAT short 8.3 names. @@ -127,17 +126,17 @@ typedef struct mbrPartition { } MbrPart_t; //------------------------------------------------------------------------------ typedef struct masterBootRecordSector { - uint8_t bootCode[446]; + uint8_t bootCode[446]; MbrPart_t part[4]; - uint8_t signature[2]; + uint8_t signature[2]; } MbrSector_t; //------------------------------------------------------------------------------ typedef struct partitionBootSector { - uint8_t jmpInstruction[3]; - char oemName[8]; - uint8_t bpb[109]; - uint8_t bootCode[390]; - uint8_t signature[2]; + uint8_t jmpInstruction[3]; + char oemName[8]; + uint8_t bpb[109]; + uint8_t bootCode[390]; + uint8_t signature[2]; } pbs_t; //------------------------------------------------------------------------------ typedef struct { @@ -149,72 +148,72 @@ typedef struct { uint64_t position; uint32_t cluster; } fspos_t; -//============================================================================= +//============================================================================== const uint8_t EXTENDED_BOOT_SIGNATURE = 0X29; typedef struct biosParameterBlockFat16 { - uint8_t bytesPerSector[2]; - uint8_t sectorsPerCluster; - uint8_t reservedSectorCount[2]; - uint8_t fatCount; - uint8_t rootDirEntryCount[2]; - uint8_t totalSectors16[2]; - uint8_t mediaType; - uint8_t sectorsPerFat16[2]; - uint8_t sectorsPerTrtack[2]; - uint8_t headCount[2]; - uint8_t hidddenSectors[4]; - uint8_t totalSectors32[4]; + uint8_t bytesPerSector[2]; + uint8_t sectorsPerCluster; + uint8_t reservedSectorCount[2]; + uint8_t fatCount; + uint8_t rootDirEntryCount[2]; + uint8_t totalSectors16[2]; + uint8_t mediaType; + uint8_t sectorsPerFat16[2]; + uint8_t sectorsPerTrtack[2]; + uint8_t headCount[2]; + uint8_t hidddenSectors[4]; + uint8_t totalSectors32[4]; - uint8_t physicalDriveNumber; - uint8_t extReserved; - uint8_t extSignature; - uint8_t volumeSerialNumber[4]; - uint8_t volumeLabel[11]; - uint8_t volumeType[8]; + uint8_t physicalDriveNumber; + uint8_t extReserved; + uint8_t extSignature; + uint8_t volumeSerialNumber[4]; + uint8_t volumeLabel[11]; + uint8_t volumeType[8]; } BpbFat16_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct biosParameterBlockFat32 { - uint8_t bytesPerSector[2]; - uint8_t sectorsPerCluster; - uint8_t reservedSectorCount[2]; - uint8_t fatCount; - uint8_t rootDirEntryCount[2]; - uint8_t totalSectors16[2]; - uint8_t mediaType; - uint8_t sectorsPerFat16[2]; - uint8_t sectorsPerTrtack[2]; - uint8_t headCount[2]; - uint8_t hidddenSectors[4]; - uint8_t totalSectors32[4]; + uint8_t bytesPerSector[2]; + uint8_t sectorsPerCluster; + uint8_t reservedSectorCount[2]; + uint8_t fatCount; + uint8_t rootDirEntryCount[2]; + uint8_t totalSectors16[2]; + uint8_t mediaType; + uint8_t sectorsPerFat16[2]; + uint8_t sectorsPerTrtack[2]; + uint8_t headCount[2]; + uint8_t hidddenSectors[4]; + uint8_t totalSectors32[4]; - uint8_t sectorsPerFat32[4]; - uint8_t fat32Flags[2]; - uint8_t fat32Version[2]; - uint8_t fat32RootCluster[4]; - uint8_t fat32FSInfoSector[2]; - uint8_t fat32BackBootSector[2]; - uint8_t fat32Reserved[12]; + uint8_t sectorsPerFat32[4]; + uint8_t fat32Flags[2]; + uint8_t fat32Version[2]; + uint8_t fat32RootCluster[4]; + uint8_t fat32FSInfoSector[2]; + uint8_t fat32BackBootSector[2]; + uint8_t fat32Reserved[12]; - uint8_t physicalDriveNumber; - uint8_t extReserved; - uint8_t extSignature; - uint8_t volumeSerialNumber[4]; - uint8_t volumeLabel[11]; - uint8_t volumeType[8]; + uint8_t physicalDriveNumber; + uint8_t extReserved; + uint8_t extSignature; + uint8_t volumeSerialNumber[4]; + uint8_t volumeLabel[11]; + uint8_t volumeType[8]; } BpbFat32_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct partitionBootSectorFat { - uint8_t jmpInstruction[3]; - char oemName[8]; + uint8_t jmpInstruction[3]; + char oemName[8]; union { uint8_t bpb[109]; BpbFat16_t bpb16; BpbFat32_t bpb32; } bpb; - uint8_t bootCode[390]; - uint8_t signature[2]; + uint8_t bootCode[390]; + uint8_t signature[2]; } PbsFat_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint32_t FSINFO_LEAD_SIGNATURE = 0X41615252; const uint32_t FSINFO_STRUCT_SIGNATURE = 0x61417272; const uint32_t FSINFO_TRAIL_SIGNATURE = 0xAA550000; @@ -227,17 +226,25 @@ typedef struct FsInfoSector { uint8_t reserved2[12]; uint8_t trailSignature[4]; } FsInfo_t; -//----------------------------------------------------------------------------- -/** name[0] value for entry that is free after being "deleted" */ -const uint8_t FAT_NAME_DELETED = 0XE5; +//============================================================================== +/** Attributes common to FAT and exFAT */ +const uint8_t FS_ATTRIB_READ_ONLY = 0x01; +const uint8_t FS_ATTRIB_HIDDEN = 0x02; +const uint8_t FS_ATTRIB_SYSTEM = 0x04; +const uint8_t FS_ATTRIB_DIRECTORY = 0x10; +const uint8_t FS_ATTRIB_ARCHIVE = 0x20; +// Attributes that users can change. +const uint8_t FS_ATTRIB_USER_SETTABLE = FS_ATTRIB_READ_ONLY | FS_ATTRIB_HIDDEN | + FS_ATTRIB_SYSTEM | FS_ATTRIB_ARCHIVE; +// Attributes to copy when a file is opened. +const uint8_t FS_ATTRIB_COPY = FS_ATTRIB_USER_SETTABLE | FS_ATTRIB_DIRECTORY; +//============================================================================== /** name[0] value for entry that is free and no allocated entries follow */ const uint8_t FAT_NAME_FREE = 0X00; -const uint8_t FAT_ATTRIB_READ_ONLY = 0x01; -const uint8_t FAT_ATTRIB_HIDDEN = 0x02; -const uint8_t FAT_ATTRIB_SYSTEM = 0x04; -const uint8_t FAT_ATTRIB_LABEL = 0x08; -const uint8_t FAT_ATTRIB_DIRECTORY = 0x10; -const uint8_t FAT_ATTRIB_ARCHIVE = 0x20; +/** name[0] value for entry that is free after being "deleted" */ +const uint8_t FAT_NAME_DELETED = 0XE5; +// Directory attribute of volume label. +const uint8_t FAT_ATTRIB_LABEL = 0x08; const uint8_t FAT_ATTRIB_LONG_NAME = 0X0F; /** Filename base-name is all lower case */ const uint8_t FAT_CASE_LC_BASE = 0X08; @@ -245,34 +252,34 @@ const uint8_t FAT_CASE_LC_BASE = 0X08; const uint8_t FAT_CASE_LC_EXT = 0X10; typedef struct { - uint8_t name[11]; - uint8_t attributes; - uint8_t caseFlags; - uint8_t createTimeMs; - uint8_t createTime[2]; - uint8_t createDate[2]; - uint8_t accessDate[2]; - uint8_t firstClusterHigh[2]; - uint8_t modifyTime[2]; - uint8_t modifyDate[2]; - uint8_t firstClusterLow[2]; - uint8_t fileSize[4]; + uint8_t name[11]; + uint8_t attributes; + uint8_t caseFlags; + uint8_t createTimeMs; + uint8_t createTime[2]; + uint8_t createDate[2]; + uint8_t accessDate[2]; + uint8_t firstClusterHigh[2]; + uint8_t modifyTime[2]; + uint8_t modifyDate[2]; + uint8_t firstClusterLow[2]; + uint8_t fileSize[4]; } DirFat_t; -static inline bool isFileDir(const DirFat_t* dir) { - return (dir->attributes & (FAT_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) == 0; +static inline bool isFatFile(const DirFat_t* dir) { + return (dir->attributes & (FS_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) == 0; } -static inline bool isFileOrSubdir(const DirFat_t* dir) { +static inline bool isFatFileOrSubdir(const DirFat_t* dir) { return (dir->attributes & FAT_ATTRIB_LABEL) == 0; } -static inline uint8_t isLongName(const DirFat_t* dir) { +static inline uint8_t isFatLongName(const DirFat_t* dir) { return dir->attributes == FAT_ATTRIB_LONG_NAME; } -static inline bool isSubdir(const DirFat_t* dir) { - return (dir->attributes & (FAT_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) - == FAT_ATTRIB_DIRECTORY; +static inline bool isFatSubdir(const DirFat_t* dir) { + return (dir->attributes & (FS_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) == + FS_ATTRIB_DIRECTORY; } -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ /** * Order mask that indicates the entry is the last long dir entry in a * set of long dir entries. All valid sets of long dir entries must @@ -283,20 +290,20 @@ const uint8_t FAT_ORDER_LAST_LONG_ENTRY = 0X40; const uint8_t FAT_MAX_LFN_LENGTH = 255; typedef struct { - uint8_t order; - uint8_t unicode1[10]; - uint8_t attributes; - uint8_t mustBeZero1; - uint8_t checksum; - uint8_t unicode2[12]; - uint8_t mustBeZero2[2]; - uint8_t unicode3[4]; + uint8_t order; + uint8_t unicode1[10]; + uint8_t attributes; + uint8_t mustBeZero1; + uint8_t checksum; + uint8_t unicode2[12]; + uint8_t mustBeZero2[2]; + uint8_t unicode3[4]; } DirLfn_t; -//============================================================================= +//============================================================================== inline uint32_t exFatChecksum(uint32_t sum, uint8_t data) { return (sum << 31) + (sum >> 1) + data; } -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct biosParameterBlockExFat { uint8_t mustBeZero[53]; uint8_t partitionOffset[8]; @@ -316,93 +323,93 @@ typedef struct biosParameterBlockExFat { uint8_t percentInUse; uint8_t reserved[7]; } BpbExFat_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct ExFatBootSector { - uint8_t jmpInstruction[3]; - char oemName[8]; - BpbExFat_t bpb; - uint8_t bootCode[390]; - uint8_t signature[2]; + uint8_t jmpInstruction[3]; + char oemName[8]; + BpbExFat_t bpb; + uint8_t bootCode[390]; + uint8_t signature[2]; } ExFatPbs_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint32_t EXFAT_EOC = 0XFFFFFFFF; const uint8_t EXFAT_TYPE_BITMAP = 0X81; typedef struct { - uint8_t type; - uint8_t flags; - uint8_t reserved[18]; - uint8_t firstCluster[4]; - uint8_t size[8]; + uint8_t type; + uint8_t flags; + uint8_t reserved[18]; + uint8_t firstCluster[4]; + uint8_t size[8]; } DirBitmap_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint8_t EXFAT_TYPE_UPCASE = 0X82; typedef struct { - uint8_t type; - uint8_t reserved1[3]; - uint8_t checksum[4]; - uint8_t reserved2[12]; - uint8_t firstCluster[4]; - uint8_t size[8]; + uint8_t type; + uint8_t reserved1[3]; + uint8_t checksum[4]; + uint8_t reserved2[12]; + uint8_t firstCluster[4]; + uint8_t size[8]; } DirUpcase_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint8_t EXFAT_TYPE_LABEL = 0X83; typedef struct { - uint8_t type; - uint8_t labelLength; - uint8_t unicode[22]; - uint8_t reserved[8]; + uint8_t type; + uint8_t labelLength; + uint8_t unicode[22]; + uint8_t reserved[8]; } DirLabel_t; -//----------------------------------------------------------------------------- -const uint8_t EXFAT_TYPE_FILE = 0X85; -const uint8_t EXFAT_ATTRIB_READ_ONLY = 0x01; -const uint8_t EXFAT_ATTRIB_HIDDEN = 0x02; -const uint8_t EXFAT_ATTRIB_SYSTEM = 0x04; -const uint8_t EXFAT_ATTRIB_RESERVED = 0x08; -const uint8_t EXFAT_ATTRIB_DIRECTORY = 0x10; -const uint8_t EXFAT_ATTRIB_ARCHIVE = 0x20; +//------------------------------------------------------------------------------ +// Last entry in directory. +const uint8_t EXFAT_TYPE_END_DIR = 0X00; +// Entry is used if bit is set. +const uint8_t EXFAT_TYPE_USED = 0X80; +const uint8_t EXFAT_TYPE_FILE = 0X85; +// File attribute reserved since used for FAT volume label. +const uint8_t EXFAT_ATTRIB_RESERVED = 0x08; typedef struct { - uint8_t type; - uint8_t setCount; - uint8_t setChecksum[2]; - uint8_t attributes[2]; - uint8_t reserved1[2]; - uint8_t createTime[2]; - uint8_t createDate[2]; - uint8_t modifyTime[2]; - uint8_t modifyDate[2]; - uint8_t accessTime[2]; - uint8_t accessDate[2]; - uint8_t createTimeMs; - uint8_t modifyTimeMs; - uint8_t createTimezone; - uint8_t modifyTimezone; - uint8_t accessTimezone; - uint8_t reserved2[7]; + uint8_t type; + uint8_t setCount; + uint8_t setChecksum[2]; + uint8_t attributes[2]; + uint8_t reserved1[2]; + uint8_t createTime[2]; + uint8_t createDate[2]; + uint8_t modifyTime[2]; + uint8_t modifyDate[2]; + uint8_t accessTime[2]; + uint8_t accessDate[2]; + uint8_t createTimeMs; + uint8_t modifyTimeMs; + uint8_t createTimezone; + uint8_t modifyTimezone; + uint8_t accessTimezone; + uint8_t reserved2[7]; } DirFile_t; -const uint8_t EXFAT_TYPE_STREAM = 0XC0; -const uint8_t EXFAT_FLAG_ALWAYS1 = 0x01; +const uint8_t EXFAT_TYPE_STREAM = 0XC0; +const uint8_t EXFAT_FLAG_ALWAYS1 = 0x01; const uint8_t EXFAT_FLAG_CONTIGUOUS = 0x02; typedef struct { - uint8_t type; - uint8_t flags; - uint8_t reserved1; - uint8_t nameLength; - uint8_t nameHash[2]; - uint8_t reserved2[2]; - uint8_t validLength[8]; - uint8_t reserved3[4]; - uint8_t firstCluster[4]; - uint8_t dataLength[8]; + uint8_t type; + uint8_t flags; + uint8_t reserved1; + uint8_t nameLength; + uint8_t nameHash[2]; + uint8_t reserved2[2]; + uint8_t validLength[8]; + uint8_t reserved3[4]; + uint8_t firstCluster[4]; + uint8_t dataLength[8]; } DirStream_t; const uint8_t EXFAT_TYPE_NAME = 0XC1; const uint8_t EXFAT_MAX_NAME_LENGTH = 255; typedef struct { - uint8_t type; - uint8_t mustBeZero; - uint8_t unicode[30]; + uint8_t type; + uint8_t mustBeZero; + uint8_t unicode[30]; } DirName_t; #endif // FsStructs_h diff --git a/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.cpp new file mode 100644 index 00000000..7b7ef143 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.cpp @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "FsUtf.h" +namespace FsUtf { +//---------------------------------------------------------------------------- +char* cpToMb(uint32_t cp, char* str, const char* end) { + size_t n = end - str; + if (cp < 0X80) { + if (n < 1) goto fail; + *(str++) = static_cast(cp); + } else if (cp < 0X800) { + if (n < 2) goto fail; + *(str++) = static_cast((cp >> 6) | 0XC0); + *(str++) = static_cast((cp & 0X3F) | 0X80); + } else if (cp < 0X10000) { + if (n < 3) goto fail; + *(str++) = static_cast((cp >> 12) | 0XE0); + *(str++) = static_cast(((cp >> 6) & 0X3F) | 0X80); + *(str++) = static_cast((cp & 0X3F) | 0X80); + } else { + if (n < 4) goto fail; + *(str++) = static_cast((cp >> 18) | 0XF0); + *(str++) = static_cast(((cp >> 12) & 0X3F) | 0X80); + *(str++) = static_cast(((cp >> 6) & 0X3F) | 0X80); + *(str++) = static_cast((cp & 0X3F) | 0X80); + } + return str; + +fail: + return nullptr; +} +//---------------------------------------------------------------------------- +// to do? improve error check +const char* mbToCp(const char* str, const char* end, uint32_t* rtn) { + size_t n; + uint32_t cp; + if (str >= end) { + return nullptr; + } + uint8_t ch = str[0]; + if ((ch & 0X80) == 0) { + *rtn = ch; + return str + 1; + } + if ((ch & 0XE0) == 0XC0) { + cp = ch & 0X1F; + n = 2; + } else if ((ch & 0XF0) == 0XE0) { + cp = ch & 0X0F; + n = 3; + } else if ((ch & 0XF8) == 0XF0) { + cp = ch & 0X07; + n = 4; + } else { + return nullptr; + } + if ((str + n) > end) { + return nullptr; + } + for (size_t i = 1; i < n; i++) { + ch = str[i]; + if ((ch & 0XC0) != 0X80) { + return nullptr; + } + cp <<= 6; + cp |= ch & 0X3F; + } + // Don't allow over long as ASCII. + if (cp < 0X80 || !isValidCp(cp)) { + return nullptr; + } + *rtn = cp; + return str + n; +} +//---------------------------------------------------------------------------- +const char* mbToU16(const char* str, const char* end, uint16_t* hs, + uint16_t* ls) { + uint32_t cp; + const char* ptr = mbToCp(str, end, &cp); + if (!ptr) { + return nullptr; + } + if (cp <= 0XFFFF) { + *hs = cp; + *ls = 0; + } else { + *hs = highSurrogate(cp); + *ls = lowSurrogate(cp); + } + return ptr; +} +} // namespace FsUtf diff --git a/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.h new file mode 100644 index 00000000..8d4e9701 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/FsUtf.h @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#ifndef FsUtf_h +#define FsUtf_h +/** + * \file + * \brief Unicode Transformation Format functions. + */ +#include +#include +namespace FsUtf { +/** High surrogate for a code point. + * \param{in} cp code point. + * \return high surrogate. + */ +inline uint16_t highSurrogate(uint32_t cp) { + return (cp >> 10) + (0XD800 - (0X10000 >> 10)); +} +/** Low surrogate for a code point. + * \param{in} cp code point. + * \return low surrogate. + */ +inline uint16_t lowSurrogate(uint32_t cp) { return (cp & 0X3FF) + 0XDC00; } +/** Check for a valid code point. + * \param[in] cp code point. + * \return true if valid else false. + */ +inline bool isValidCp(uint32_t cp) { + return cp <= 0x10FFFF && (cp < 0XD800 || cp > 0XDFFF); +} +/** Check for UTF-16 surrogate. + * \param[in] c UTF-16 unit. + * \return true if c is a surrogate else false. + */ +inline bool isSurrogate(uint16_t c) { return 0XD800 <= c && c <= 0XDFFF; } +/** Check for UTF-16 high surrogate. + * \param[in] c UTF-16 unit.. + * \return true if c is a high surrogate else false. + */ +inline bool isHighSurrogate(uint16_t c) { return 0XD800 <= c && c <= 0XDBFF; } +/** Check for UTF-16 low surrogate. + * \param[in] c UTF-16 unit.. + * \return true if c is a low surrogate else false. + */ +inline bool isLowSurrogate(uint16_t c) { return 0XDC00 <= c && c <= 0XDFFF; } +/** Convert UFT-16 surrogate pair to code point. + * \param[in] hs high surrogate. + * \param[in] ls low surrogate. + * \return code point. + */ +inline uint32_t u16ToCp(uint16_t hs, uint16_t ls) { + return 0X10000 + (((hs & 0X3FF) << 10) | (ls & 0X3FF)); +} +/** Encodes a 32 bit code point as a UTF-8 sequence. + * \param[in] cp code point to encode. + * \param[out] str location for UTF-8 sequence. + * \param[in] end location following last character of str. + * \return location one beyond last encoded character. + */ +char* cpToMb(uint32_t cp, char* str, const char* end); +/** Get next code point from a UTF-8 sequence. + * \param[in] str location for UTF-8 sequence. + * \param[in] end location following last character of str. + * May be nullptr if str is zero terminated. + * \param[out] rtn location for the code point. + * \return location of next UTF-8 character in str of nullptr for error. + */ +const char* mbToCp(const char* str, const char* end, uint32_t* rtn); +/** Get next code point from a UTF-8 sequence as UTF-16. + * \param[in] str location for UTF-8 sequence. + * \param[in] end location following last character of str. + * \param[out] hs location for the code point or high surrogate. + * \param[out] ls location for zero or high surrogate. + * \return location of next UTF-8 character in str of nullptr for error. + */ +const char* mbToU16(const char* str, const char* end, uint16_t* hs, + uint16_t* ls); +} // namespace FsUtf +#endif // FsUtf_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/SysCall.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/SysCall.h similarity index 98% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/SysCall.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/SysCall.h index c7be07e1..709dfae1 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/SysCall.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/SysCall.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,8 +28,9 @@ */ #ifndef SysCall_h #define SysCall_h -#include #include +#include + #include "../SdFatConfig.h" #if __cplusplus < 201103 #warning nullptr defined diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/upcase.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/common/upcase.cpp similarity index 50% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/upcase.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/upcase.cpp index af23181c..fb1e2175 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/upcase.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/upcase.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,16 +22,17 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include #include "upcase.h" + +#include #ifdef __AVR__ #include #define TABLE_MEM PROGMEM -#define readTable8(sym) pgm_read_byte(&sym) +#define readTable8(sym) pgm_read_byte(&sym) #define readTable16(sym) pgm_read_word(&sym) #else // __AVR__ #define TABLE_MEM -#define readTable8(sym) (sym) +#define readTable8(sym) (sym) #define readTable16(sym) (sym) #endif // __AVR__ @@ -49,147 +50,51 @@ struct pair16 { typedef struct pair16 pair16_t; //------------------------------------------------------------------------------ static const map16_t mapTable[] TABLE_MEM = { - {0X0061, -32, 26}, - {0X00E0, -32, 23}, - {0X00F8, -32, 7 }, - {0X0100, 1, 48}, - {0X0132, 1, 6}, - {0X0139, 1, 16}, - {0X014A, 1, 46}, - {0X0179, 1, 6}, - {0X0182, 1, 4}, - {0X01A0, 1, 6}, - {0X01B3, 1, 4}, - {0X01CD, 1, 16}, - {0X01DE, 1, 18}, - {0X01F8, 1, 40}, - {0X0222, 1, 18}, - {0X0246, 1, 10}, - {0X03AD, -37, 3}, - {0X03B1, -32, 17}, - {0X03C3, -32, 9}, - {0X03D8, 1, 24}, - {0X0430, -32, 32}, - {0X0450, -80, 16}, - {0X0460, 1, 34}, - {0X048A, 1, 54}, - {0X04C1, 1, 14}, - {0X04D0, 1, 68}, - {0X0561, -48, 38}, - {0X1E00, 1, 150}, - {0X1EA0, 1, 90}, - {0X1F00, 8, 8}, - {0X1F10, 8, 6}, - {0X1F20, 8, 8}, - {0X1F30, 8, 8}, - {0X1F40, 8, 6}, - {0X1F60, 8, 8}, - {0X1F70, 74, 2}, - {0X1F72, 86, 4}, - {0X1F76, 100, 2}, - {0X1F7A, 112, 2}, - {0X1F7C, 126, 2}, - {0X1F80, 8, 8}, - {0X1F90, 8, 8}, - {0X1FA0, 8, 8}, - {0X1FB0, 8, 2}, - {0X1FD0, 8, 2}, - {0X1FE0, 8, 2}, - {0X2170, -16, 16}, - {0X24D0, -26, 26}, - {0X2C30, -48, 47}, - {0X2C67, 1, 6}, - {0X2C80, 1, 100}, - {0X2D00, 0, 38}, - {0XFF41, -32, 26}, + {0X0061, -32, 26}, {0X00E0, -32, 23}, {0X00F8, -32, 7}, {0X0100, 1, 48}, + {0X0132, 1, 6}, {0X0139, 1, 16}, {0X014A, 1, 46}, {0X0179, 1, 6}, + {0X0182, 1, 4}, {0X01A0, 1, 6}, {0X01B3, 1, 4}, {0X01CD, 1, 16}, + {0X01DE, 1, 18}, {0X01F8, 1, 40}, {0X0222, 1, 18}, {0X0246, 1, 10}, + {0X03AD, -37, 3}, {0X03B1, -32, 17}, {0X03C3, -32, 9}, {0X03D8, 1, 24}, + {0X0430, -32, 32}, {0X0450, -80, 16}, {0X0460, 1, 34}, {0X048A, 1, 54}, + {0X04C1, 1, 14}, {0X04D0, 1, 68}, {0X0561, -48, 38}, {0X1E00, 1, 150}, + {0X1EA0, 1, 90}, {0X1F00, 8, 8}, {0X1F10, 8, 6}, {0X1F20, 8, 8}, + {0X1F30, 8, 8}, {0X1F40, 8, 6}, {0X1F60, 8, 8}, {0X1F70, 74, 2}, + {0X1F72, 86, 4}, {0X1F76, 100, 2}, {0X1F7A, 112, 2}, {0X1F7C, 126, 2}, + {0X1F80, 8, 8}, {0X1F90, 8, 8}, {0X1FA0, 8, 8}, {0X1FB0, 8, 2}, + {0X1FD0, 8, 2}, {0X1FE0, 8, 2}, {0X2170, -16, 16}, {0X24D0, -26, 26}, + {0X2C30, -48, 47}, {0X2C67, 1, 6}, {0X2C80, 1, 100}, {0X2D00, 0, 38}, + {0XFF41, -32, 26}, }; -const size_t MAP_DIM = sizeof(mapTable)/sizeof(map16_t); +const size_t MAP_DIM = sizeof(mapTable) / sizeof(map16_t); //------------------------------------------------------------------------------ static const pair16_t lookupTable[] TABLE_MEM = { - {0X00FF, 0X0178}, - {0X0180, 0X0243}, - {0X0188, 0X0187}, - {0X018C, 0X018B}, - {0X0192, 0X0191}, - {0X0195, 0X01F6}, - {0X0199, 0X0198}, - {0X019A, 0X023D}, - {0X019E, 0X0220}, - {0X01A8, 0X01A7}, - {0X01AD, 0X01AC}, - {0X01B0, 0X01AF}, - {0X01B9, 0X01B8}, - {0X01BD, 0X01BC}, - {0X01BF, 0X01F7}, - {0X01C6, 0X01C4}, - {0X01C9, 0X01C7}, - {0X01CC, 0X01CA}, - {0X01DD, 0X018E}, - {0X01F3, 0X01F1}, - {0X01F5, 0X01F4}, - {0X023A, 0X2C65}, - {0X023C, 0X023B}, - {0X023E, 0X2C66}, - {0X0242, 0X0241}, - {0X0253, 0X0181}, - {0X0254, 0X0186}, - {0X0256, 0X0189}, - {0X0257, 0X018A}, - {0X0259, 0X018F}, - {0X025B, 0X0190}, - {0X0260, 0X0193}, - {0X0263, 0X0194}, - {0X0268, 0X0197}, - {0X0269, 0X0196}, - {0X026B, 0X2C62}, - {0X026F, 0X019C}, - {0X0272, 0X019D}, - {0X0275, 0X019F}, - {0X027D, 0X2C64}, - {0X0280, 0X01A6}, - {0X0283, 0X01A9}, - {0X0288, 0X01AE}, - {0X0289, 0X0244}, - {0X028A, 0X01B1}, - {0X028B, 0X01B2}, - {0X028C, 0X0245}, - {0X0292, 0X01B7}, - {0X037B, 0X03FD}, - {0X037C, 0X03FE}, - {0X037D, 0X03FF}, - {0X03AC, 0X0386}, - {0X03C2, 0X03A3}, - {0X03CC, 0X038C}, - {0X03CD, 0X038E}, - {0X03CE, 0X038F}, - {0X03F2, 0X03F9}, - {0X03F8, 0X03F7}, - {0X03FB, 0X03FA}, - {0X04CF, 0X04C0}, - {0X1D7D, 0X2C63}, - {0X1F51, 0X1F59}, - {0X1F53, 0X1F5B}, - {0X1F55, 0X1F5D}, - {0X1F57, 0X1F5F}, - {0X1F78, 0X1FF8}, - {0X1F79, 0X1FF9}, - {0X1FB3, 0X1FBC}, - {0X1FCC, 0X1FC3}, - {0X1FE5, 0X1FEC}, - {0X1FFC, 0X1FF3}, - {0X214E, 0X2132}, - {0X2184, 0X2183}, - {0X2C61, 0X2C60}, - {0X2C76, 0X2C75}, + {0X00FF, 0X0178}, {0X0180, 0X0243}, {0X0188, 0X0187}, {0X018C, 0X018B}, + {0X0192, 0X0191}, {0X0195, 0X01F6}, {0X0199, 0X0198}, {0X019A, 0X023D}, + {0X019E, 0X0220}, {0X01A8, 0X01A7}, {0X01AD, 0X01AC}, {0X01B0, 0X01AF}, + {0X01B9, 0X01B8}, {0X01BD, 0X01BC}, {0X01BF, 0X01F7}, {0X01C6, 0X01C4}, + {0X01C9, 0X01C7}, {0X01CC, 0X01CA}, {0X01DD, 0X018E}, {0X01F3, 0X01F1}, + {0X01F5, 0X01F4}, {0X023A, 0X2C65}, {0X023C, 0X023B}, {0X023E, 0X2C66}, + {0X0242, 0X0241}, {0X0253, 0X0181}, {0X0254, 0X0186}, {0X0256, 0X0189}, + {0X0257, 0X018A}, {0X0259, 0X018F}, {0X025B, 0X0190}, {0X0260, 0X0193}, + {0X0263, 0X0194}, {0X0268, 0X0197}, {0X0269, 0X0196}, {0X026B, 0X2C62}, + {0X026F, 0X019C}, {0X0272, 0X019D}, {0X0275, 0X019F}, {0X027D, 0X2C64}, + {0X0280, 0X01A6}, {0X0283, 0X01A9}, {0X0288, 0X01AE}, {0X0289, 0X0244}, + {0X028A, 0X01B1}, {0X028B, 0X01B2}, {0X028C, 0X0245}, {0X0292, 0X01B7}, + {0X037B, 0X03FD}, {0X037C, 0X03FE}, {0X037D, 0X03FF}, {0X03AC, 0X0386}, + {0X03C2, 0X03A3}, {0X03CC, 0X038C}, {0X03CD, 0X038E}, {0X03CE, 0X038F}, + {0X03F2, 0X03F9}, {0X03F8, 0X03F7}, {0X03FB, 0X03FA}, {0X04CF, 0X04C0}, + {0X1D7D, 0X2C63}, {0X1F51, 0X1F59}, {0X1F53, 0X1F5B}, {0X1F55, 0X1F5D}, + {0X1F57, 0X1F5F}, {0X1F78, 0X1FF8}, {0X1F79, 0X1FF9}, {0X1FB3, 0X1FBC}, + {0X1FCC, 0X1FC3}, {0X1FE5, 0X1FEC}, {0X1FFC, 0X1FF3}, {0X214E, 0X2132}, + {0X2184, 0X2183}, {0X2C61, 0X2C60}, {0X2C76, 0X2C75}, }; -const size_t LOOKUP_DIM = sizeof(lookupTable)/sizeof(pair16_t); +const size_t LOOKUP_DIM = sizeof(lookupTable) / sizeof(pair16_t); //------------------------------------------------------------------------------ static size_t searchPair16(const pair16_t* table, size_t size, uint16_t key) { size_t left = 0; size_t right = size; - size_t mid; while (right - left > 1) { - mid = left + (right - left)/2; + size_t mid = left + (right - left) / 2; if (readTable16(table[mid].key) <= key) { left = mid; } else { @@ -207,7 +112,7 @@ uint16_t toUpcase(uint16_t chr) { } i = searchPair16(reinterpret_cast(mapTable), MAP_DIM, chr); first = readTable16(mapTable[i].base); - if (first <= chr && (chr - first) < readTable8(mapTable[i].count)) { + if (first <= chr && (chr - first) < readTable8(mapTable[i].count)) { int8_t off = readTable8(mapTable[i].off); if (off == 1) { return chr - ((chr - first) & 1); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/upcase.h b/extra-libraries/ESP32/SdFat-2.2.3/src/common/upcase.h similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/common/upcase.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/common/upcase.h index 979986ed..1a8ece9a 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/upcase.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/common/upcase.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ArduinoStream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ArduinoStream.h similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ArduinoStream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ArduinoStream.h index 1fbce34e..8dfc3225 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ArduinoStream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ArduinoStream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -42,7 +42,7 @@ class ArduinoInStream : public ibufstream { * \param[in] buf buffer for input line * \param[in] size size of input buffer */ - ArduinoInStream(Stream &hws, char* buf, size_t size) { + ArduinoInStream(Stream& hws, char* buf, size_t size) { m_hw = &hws; m_line = buf; m_size = size; @@ -70,7 +70,7 @@ class ArduinoInStream : public ibufstream { m_line[i++] = m_hw->read(); m_line[i] = '\0'; } -done: + done: init(m_line); } @@ -95,7 +95,7 @@ done: } private: - char *m_line; + char* m_line; size_t m_size; Stream* m_hw; }; @@ -124,9 +124,7 @@ class ArduinoOutStream : public ostream { } m_pr->write(c); } - void putstr(const char* str) { - m_pr->write(str); - } + void putstr(const char* str) { m_pr->write(str); } bool seekoff(off_type off, seekdir way) { (void)off; (void)way; @@ -136,12 +134,8 @@ class ArduinoOutStream : public ostream { (void)pos; return false; } - bool sync() { - return true; - } - pos_type tellpos() { - return 0; - } + bool sync() { return true; } + pos_type tellpos() { return 0; } /// @endcond private: ArduinoOutStream() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StdioStream.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StdioStream.cpp similarity index 83% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StdioStream.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StdioStream.cpp index 3505b14f..1433e3d7 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StdioStream.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StdioStream.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,6 +23,9 @@ * DEALINGS IN THE SOFTWARE. */ #include "StdioStream.h" +#ifdef __AVR__ +#include +#endif // __AVR__ #include "../common/FmtNumber.h" //------------------------------------------------------------------------------ int StdioStream::fclose() { @@ -55,11 +58,11 @@ int StdioStream::fflush() { //------------------------------------------------------------------------------ char* StdioStream::fgets(char* str, size_t num, size_t* len) { char* s = str; - size_t n; if (num-- == 0) { return 0; } while (num) { + size_t n; if ((n = m_r) == 0) { if (!fillBuf()) { if (s == str) { @@ -98,43 +101,43 @@ bool StdioStream::fopen(const char* path, const char* mode) { oflag_t oflag; uint8_t m; switch (*mode++) { - case 'a': - m = O_WRONLY; - oflag = O_CREAT | O_APPEND; - m_status = S_SWR; - break; - - case 'r': - m = O_RDONLY; - oflag = 0; - m_status = S_SRD; - break; - - case 'w': - m = O_WRONLY; - oflag = O_CREAT | O_TRUNC; - m_status = S_SWR; - break; - - default: - goto fail; - } - while (*mode) { - switch (*mode++) { - case '+': - m_status = S_SRW; - m = O_RDWR; + case 'a': + m = O_WRONLY; + oflag = O_CREAT | O_APPEND; + m_status = S_SWR; break; - case 'b': + case 'r': + m = O_RDONLY; + oflag = 0; + m_status = S_SRD; break; - case 'x': - oflag |= O_EXCL; + case 'w': + m = O_WRONLY; + oflag = O_CREAT | O_TRUNC; + m_status = S_SWR; break; default: goto fail; + } + while (*mode) { + switch (*mode++) { + case '+': + m_status = S_SRW; + m = O_RDWR; + break; + + case 'b': + break; + + case 'x': + oflag |= O_EXCL; + break; + + default: + goto fail; } } oflag |= m; @@ -146,7 +149,7 @@ bool StdioStream::fopen(const char* path, const char* mode) { m_p = m_buf; return true; - fail: +fail: m_status = 0; return false; } @@ -158,7 +161,7 @@ int StdioStream::fputs(const char* str) { //------------------------------------------------------------------------------ size_t StdioStream::fread(void* ptr, size_t size, size_t count) { uint8_t* dst = reinterpret_cast(ptr); - size_t total = size*count; + size_t total = size * count; if (total == 0) { return 0; } @@ -169,7 +172,7 @@ size_t StdioStream::fread(void* ptr, size_t size, size_t count) { m_p += m_r; need -= m_r; if (!fillBuf()) { - return (total - need)/size; + return (total - need) / size; } } memcpy(dst, m_p, need); @@ -186,37 +189,40 @@ int StdioStream::fseek(int32_t offset, int origin) { } } switch (origin) { - case SEEK_CUR: - pos = ftell(); - if (pos < 0) { - goto fail; - } - pos += offset; - if (!StreamBaseFile::seekCur(pos)) { - goto fail; - } - break; + case SEEK_CUR: + pos = ftell(); + if (pos < 0) { + goto fail; + } + pos += offset; + if (!StreamBaseFile::seekCur(pos)) { + goto fail; + } + break; - case SEEK_SET: - if (!StreamBaseFile::seekSet(offset)) { - goto fail; - } - break; + case SEEK_SET: + if (offset < 0) { + goto fail; + } + if (!StreamBaseFile::seekSet((uint32_t)offset)) { + goto fail; + } + break; - case SEEK_END: - if (!StreamBaseFile::seekEnd(offset)) { - goto fail; - } - break; + case SEEK_END: + if (!StreamBaseFile::seekEnd(offset)) { + goto fail; + } + break; - default: - goto fail; + default: + goto fail; } m_r = 0; m_p = m_buf; return 0; - fail: +fail: return EOF; } //------------------------------------------------------------------------------ @@ -234,7 +240,7 @@ int32_t StdioStream::ftell() { } //------------------------------------------------------------------------------ size_t StdioStream::fwrite(const void* ptr, size_t size, size_t count) { - return write(ptr, count*size) < 0 ? EOF : count; + return write(ptr, count * size) < 0 ? EOF : count; } //------------------------------------------------------------------------------ int StdioStream::write(const void* buf, size_t count) { @@ -257,8 +263,9 @@ int StdioStream::write(const void* buf, size_t count) { } //------------------------------------------------------------------------------ #if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) -size_t StdioStream::print(const __FlashStringHelper *str) { - const char *p = (const char*)str; +size_t StdioStream::print(const __FlashStringHelper* str) { +#ifdef __AVR__ + PGM_P p = reinterpret_cast(str); uint8_t c; while ((c = pgm_read_byte(p))) { if (putc(c) < 0) { @@ -266,13 +273,16 @@ size_t StdioStream::print(const __FlashStringHelper *str) { } p++; } - return p - (const char*)str; + return p - reinterpret_cast(str); +#else // __AVR__ + return print(reinterpret_cast(str)); +#endif // __AVR__ } #endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) //------------------------------------------------------------------------------ int StdioStream::printDec(float value, uint8_t prec) { char buf[24]; - char *ptr = fmtDouble(buf + sizeof(buf), value, prec, false); + char* ptr = fmtDouble(buf + sizeof(buf), value, prec, false); return write(ptr, buf + sizeof(buf) - ptr); } //------------------------------------------------------------------------------ @@ -304,7 +314,7 @@ int StdioStream::printDec(int16_t n) { //------------------------------------------------------------------------------ int StdioStream::printDec(uint16_t n) { char buf[5]; - char *ptr = fmtBase10(buf + sizeof(buf), n); + char* ptr = fmtBase10(buf + sizeof(buf), n); uint8_t len = buf + sizeof(buf) - ptr; return write(ptr, len); } @@ -324,14 +334,14 @@ int StdioStream::printDec(int32_t n) { //------------------------------------------------------------------------------ int StdioStream::printDec(uint32_t n) { char buf[10]; - char *ptr = fmtBase10(buf + sizeof(buf), n); + char* ptr = fmtBase10(buf + sizeof(buf), n); uint8_t len = buf + sizeof(buf) - ptr; return write(ptr, len); } //------------------------------------------------------------------------------ int StdioStream::printHex(uint32_t n) { char buf[8]; - char *ptr = fmtHex(buf + sizeof(buf), n); + char* ptr = fmtHex(buf + sizeof(buf), n); uint8_t len = buf + sizeof(buf) - ptr; return write(ptr, len); } @@ -342,7 +352,7 @@ bool StdioStream::rewind() { return false; } } - StreamBaseFile::seekSet(0); + StreamBaseFile::seekSet(0UL); m_r = 0; return true; } @@ -377,8 +387,7 @@ int StdioStream::fillGet() { //------------------------------------------------------------------------------ // private bool StdioStream::fillBuf() { - if (!(m_status & - S_SRD)) { // check for S_ERR and S_EOF ??///////////////// + if (!(m_status & S_SRD)) { // check for S_ERR and S_EOF ??///////////////// if (!(m_status & S_SRW)) { m_status |= S_ERR; return false; @@ -405,8 +414,7 @@ bool StdioStream::fillBuf() { //------------------------------------------------------------------------------ // private bool StdioStream::flushBuf() { - if (!(m_status & - S_SWR)) { // check for S_ERR ??//////////////////////// + if (!(m_status & S_SWR)) { if (!(m_status & S_SRW)) { m_status |= S_ERR; return false; @@ -435,17 +443,3 @@ int StdioStream::flushPut(uint8_t c) { m_w--; return *m_p++ = c; } -//------------------------------------------------------------------------------ -char* StdioStream::fmtSpace(uint8_t len) { - if (m_w < len) { - if (!flushBuf() || m_w < len) { - return 0; - } - } - if (len > m_w) { - return 0; - } - m_p += len; - m_w -= len; - return reinterpret_cast(m_p); -} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StdioStream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StdioStream.h similarity index 95% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StdioStream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StdioStream.h index 76998d7f..276c7790 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StdioStream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StdioStream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,11 +29,12 @@ * \brief StdioStream class */ #include + #include "ios.h" //------------------------------------------------------------------------------ /** Total size of stream buffer. The entire buffer is used for output. - * During input UNGETC_BUF_SIZE of this space is reserved for ungetc. - */ + * During input UNGETC_BUF_SIZE of this space is reserved for ungetc. + */ const uint8_t STREAM_BUF_SIZE = 64; /** Amount of buffer allocated for ungetc during input. */ const uint8_t UNGETC_BUF_SIZE = 2; @@ -63,7 +64,7 @@ const uint8_t UNGETC_BUF_SIZE = 2; #undef getchar #undef gets #undef perror -//#undef printf // NOLINT +// #undef printf // NOLINT #undef putc #undef putchar #undef puts @@ -73,7 +74,7 @@ const uint8_t UNGETC_BUF_SIZE = 2; #undef scanf #undef setbuf #undef setvbuf -//#undef sprintf // NOLINT +// #undef sprintf // NOLINT #undef sscanf #undef tmpfile #undef tmpnam @@ -114,12 +115,10 @@ class StdioStream : private StreamBaseFile { /** Constructor * */ - StdioStream() {} + StdioStream() : m_buf{0} {} //---------------------------------------------------------------------------- /** Clear the stream's end-of-file and error indicators. */ - void clearerr() { - m_status &= ~(S_ERR | S_EOF); - } + void clearerr() { m_status &= ~(S_ERR | S_EOF); } //---------------------------------------------------------------------------- /** Close a stream. * @@ -137,16 +136,12 @@ class StdioStream : private StreamBaseFile { /** Test the stream's end-of-file indicator. * \return non-zero if and only if the end-of-file indicator is set. */ - int feof() { - return (m_status & S_EOF) != 0; - } + int feof() { return (m_status & S_EOF) != 0; } //---------------------------------------------------------------------------- /** Test the stream's error indicator. * \return return non-zero if and only if the error indicator is set. */ - int ferror() { - return (m_status & S_ERR) != 0; - } + int ferror() { return (m_status & S_ERR) != 0; } //---------------------------------------------------------------------------- /** Flush the stream. * @@ -167,9 +162,7 @@ class StdioStream : private StreamBaseFile { * set and the fgetc function returns EOF. Otherwise, the fgetc function * returns the next character from the input stream. */ - int fgetc() { - return m_r-- == 0 ? fillGet() : *m_p++; - } + int fgetc() { return m_r-- == 0 ? fillGet() : *m_p++; } //---------------------------------------------------------------------------- /** Get a string from a stream. * @@ -265,9 +258,7 @@ class StdioStream : private StreamBaseFile { * has written. Otherwise, it returns EOF and sets the error indicator for * the stream. */ - int fputc(int c) { - return m_w-- == 0 ? flushPut(c) : *m_p++ = c; - } + int fputc(int c) { return m_w-- == 0 ? flushPut(c) : *m_p++ = c; } //---------------------------------------------------------------------------- /** Write a string to a stream. * @@ -336,7 +327,7 @@ class StdioStream : private StreamBaseFile { * less than count, an error has occurred. If size or count is zero, * fwrite returns zero. */ - size_t fwrite(const void * ptr, size_t size, size_t count); + size_t fwrite(const void* ptr, size_t size, size_t count); //---------------------------------------------------------------------------- /** Get a byte from the stream. * @@ -348,8 +339,7 @@ class StdioStream : private StreamBaseFile { * set and the fgetc function returns EOF. Otherwise, the fgetc function * returns the next character from the input stream. */ - inline __attribute__((always_inline)) - int getc() { + inline __attribute__((always_inline)) int getc() { return m_r-- == 0 ? fillGet() : *m_p++; } //---------------------------------------------------------------------------- @@ -364,8 +354,7 @@ class StdioStream : private StreamBaseFile { * has written. Otherwise, it returns EOF and sets the error indicator for * the stream. */ - inline __attribute__((always_inline)) - int putc(int c) { + inline __attribute__((always_inline)) int putc(int c) { return m_w-- == 0 ? flushPut(c) : *m_p++ = c; } //---------------------------------------------------------------------------- @@ -373,8 +362,7 @@ class StdioStream : private StreamBaseFile { * * \return two, the number of bytes written, for success or -1 for failure. */ - inline __attribute__((always_inline)) - int putCRLF() { + inline __attribute__((always_inline)) int putCRLF() { if (m_w < 2) { if (!flushBuf()) { return -1; @@ -390,9 +378,7 @@ class StdioStream : private StreamBaseFile { * \param[in] c the character to write. * \return the number of bytes written. */ - size_t print(char c) { - return putc(c) < 0 ? 0 : 1; - } + size_t print(char c) { return putc(c) < 0 ? 0 : 1; } //---------------------------------------------------------------------------- /** Write a string. * @@ -412,7 +398,7 @@ class StdioStream : private StreamBaseFile { * * \return the number of bytes written. */ - size_t print(const __FlashStringHelper *str); + size_t print(const __FlashStringHelper* str); #endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) //---------------------------------------------------------------------------- /** Print a floating point number. @@ -456,9 +442,7 @@ class StdioStream : private StreamBaseFile { * * \return two, the number of bytes written, for success or zero for failure. */ - size_t println() { - return putCRLF() > 0 ? 2 : 0; - } + size_t println() { return putCRLF() > 0 ? 2 : 0; } //---------------------------------------------------------------------------- /** Print a floating point number followed by CR/LF. * @@ -519,9 +503,7 @@ class StdioStream : private StreamBaseFile { * \param[in] n number to be print. * \return The number of bytes written or -1 if an error occurs. */ - int printDec(unsigned char n) { - return printDec((uint16_t)n); - } + int printDec(unsigned char n) { return printDec((uint16_t)n); } //---------------------------------------------------------------------------- /** Print a int16_t * \param[in] n number to be printed. @@ -609,7 +591,7 @@ class StdioStream : private StreamBaseFile { */ int printHexln(uint32_t n) { int rtn = printHex(n); - return rtn < 0 || putCRLF() != 2 ? -1 : rtn + 2; + return rtn < 0 || putCRLF() != 2 ? -1 : rtn + 2; } //---------------------------------------------------------------------------- /** Set position of a stream to the beginning. @@ -643,7 +625,6 @@ class StdioStream : private StreamBaseFile { int fillGet(); bool flushBuf(); int flushPut(uint8_t c); - char* fmtSpace(uint8_t len); int write(const void* buf, size_t count); //---------------------------------------------------------------------------- // S_SRD and S_WR are never simultaneously asserted @@ -653,11 +634,11 @@ class StdioStream : private StreamBaseFile { static const uint8_t S_EOF = 0x10; // found EOF static const uint8_t S_ERR = 0x20; // found error //---------------------------------------------------------------------------- - uint8_t m_buf[STREAM_BUF_SIZE]; - uint8_t m_status = 0; + uint8_t m_buf[STREAM_BUF_SIZE]; + uint8_t m_status = 0; uint8_t* m_p = m_buf; - uint8_t m_r = 0; - uint8_t m_w; + uint8_t m_r = 0; + uint8_t m_w = 0; }; //------------------------------------------------------------------------------ #endif // StdioStream_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StreamBaseClass.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StreamBaseClass.cpp similarity index 79% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StreamBaseClass.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StreamBaseClass.cpp index 0d867d77..ca2a3396 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/StreamBaseClass.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/StreamBaseClass.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -52,35 +52,35 @@ void StreamBaseClass::open(const char* path, ios::openmode mode) { oflag_t oflag; clearWriteError(); switch (mode & (app | in | out | trunc)) { - case app | in: - case app | in | out: - oflag = O_RDWR | O_APPEND | O_CREAT; - break; + case app | in: + case app | in | out: + oflag = O_RDWR | O_APPEND | O_CREAT; + break; - case app: - case app | out: - oflag = O_WRONLY | O_APPEND | O_CREAT; - break; + case app: + case app | out: + oflag = O_WRONLY | O_APPEND | O_CREAT; + break; - case in: - oflag = O_RDONLY; - break; + case in: + oflag = O_RDONLY; + break; - case in | out: - oflag = O_RDWR | O_CREAT; - break; + case in | out: + oflag = O_RDWR | O_CREAT; + break; - case in | out | trunc: - oflag = O_RDWR | O_TRUNC | O_CREAT; - break; + case in | out | trunc: + oflag = O_RDWR | O_TRUNC | O_CREAT; + break; - case out: - case out | trunc: - oflag = O_WRONLY | O_TRUNC | O_CREAT; - break; + case out: + case out | trunc: + oflag = O_WRONLY | O_TRUNC | O_CREAT; + break; - default: - goto fail; + default: + goto fail; } if (mode & ios::ate) { oflag |= O_AT_END; @@ -92,7 +92,7 @@ void StreamBaseClass::open(const char* path, ios::openmode mode) { clear(); return; - fail: +fail: StreamBaseFile::close(); setstate(failbit); return; @@ -133,20 +133,20 @@ void StreamBaseClass::putstr(const char* str) { bool StreamBaseClass::seekoff(off_type off, seekdir way) { pos_type pos; switch (way) { - case beg: - pos = off; - break; + case beg: + pos = off; + break; - case cur: - pos = StreamBaseFile::curPosition() + off; - break; + case cur: + pos = StreamBaseFile::curPosition() + off; + break; - case end: - pos = StreamBaseFile::fileSize() + off; - break; + case end: + pos = StreamBaseFile::fileSize() + off; + break; - default: - return false; + default: + return false; } return seekpos(pos); } @@ -155,6 +155,4 @@ int StreamBaseClass::write(const void* buf, size_t n) { return StreamBaseFile::write(buf, n); } //------------------------------------------------------------------------------ -void StreamBaseClass::write(char c) { - StreamBaseFile::write(&c, 1); -} +void StreamBaseClass::write(char c) { StreamBaseFile::write(&c, 1); } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/bufstream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/bufstream.h similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/bufstream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/bufstream.h index 1b91f04a..a7e75053 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/bufstream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/bufstream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,6 +29,7 @@ * \brief \ref ibufstream and \ref obufstream classes */ #include + #include "iostream.h" //============================================================================== /** @@ -43,9 +44,7 @@ class ibufstream : public istream { * \param[in] str pointer to string to be parsed * Warning: The string will not be copied so must stay in scope. */ - explicit ibufstream(const char* str) { - init(str); - } + explicit ibufstream(const char* str) { init(str); } /** Initialize an ibufstream * \param[in] str pointer to string to be parsed * Warning: The string will not be copied so must stay in scope. @@ -66,9 +65,7 @@ class ibufstream : public istream { setstate(eofbit); return -1; } - void getpos(pos_t* pos) { - pos->position = m_pos; - } + void getpos(pos_t* pos) { pos->position = m_pos; } bool seekoff(off_type off, seekdir way) { (void)off; (void)way; @@ -81,12 +78,8 @@ class ibufstream : public istream { } return false; } - void setpos(pos_t* pos) { - m_pos = pos->position; - } - pos_type tellpos() { - return m_pos; - } + void setpos(pos_t* pos) { m_pos = pos->position; } + pos_type tellpos() { return m_pos; } /// @endcond private: const char* m_buf = nullptr; @@ -106,27 +99,21 @@ class obufstream : public ostream { * \param[in] buf buffer for formatted string * \param[in] size buffer size */ - obufstream(char *buf, size_t size) { - init(buf, size); - } + obufstream(char* buf, size_t size) { init(buf, size); } /** Initialize an obufstream * \param[in] buf buffer for formatted string * \param[in] size buffer size */ - void init(char *buf, size_t size) { + void init(char* buf, size_t size) { m_buf = buf; buf[0] = '\0'; m_size = size; m_in = 0; } /** \return a pointer to the buffer */ - char* buf() { - return m_buf; - } + char* buf() { return m_buf; } /** \return the length of the formatted string */ - size_t length() { - return m_in; - } + size_t length() { return m_in; } protected: /// @cond SHOW_PROTECTED @@ -138,7 +125,7 @@ class obufstream : public ostream { m_buf[m_in++] = c; m_buf[m_in] = '\0'; } - void putstr(const char *str) { + void putstr(const char* str) { while (*str) { putch(*str++); } @@ -156,15 +143,11 @@ class obufstream : public ostream { m_buf[m_in] = '\0'; return true; } - bool sync() { - return true; - } - pos_type tellpos() { - return m_in; - } + bool sync() { return true; } + pos_type tellpos() { return m_in; } /// @endcond private: - char *m_buf = nullptr; + char* m_buf = nullptr; size_t m_size = 0; size_t m_in = 0; }; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/fstream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/fstream.h similarity index 72% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/fstream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/fstream.h index b176a52f..e6e222e2 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/fstream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/fstream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -36,38 +36,28 @@ */ class StreamBaseClass : protected StreamBaseFile, virtual public ios { protected: - void clearWriteError() { - StreamBaseFile::clearWriteError(); - } + void clearWriteError() { StreamBaseFile::clearWriteError(); } /* Internal do not use * \return mode */ int16_t getch(); - bool getWriteError() { - return StreamBaseFile::getWriteError(); - } + bool getWriteError() { return StreamBaseFile::getWriteError(); } void open(const char* path, ios::openmode mode); /** Internal do not use * \return mode */ - ios::openmode getmode() { - return m_mode; - } + ios::openmode getmode() { return m_mode; } void putch(char c); - void putstr(const char *str); + void putstr(const char* str); bool seekoff(off_type off, seekdir way); /** Internal do not use * \param[in] pos */ - bool seekpos(pos_type pos) { - return StreamBaseFile::seekSet(pos); - } + bool seekpos(pos_type pos) { return StreamBaseFile::seekSet(pos); } /** Internal do not use * \param[in] mode */ - void setmode(ios::openmode mode) { - m_mode = mode; - } + void setmode(ios::openmode mode) { m_mode = mode; } int write(const void* buf, size_t n); void write(char c); @@ -79,7 +69,7 @@ class StreamBaseClass : protected StreamBaseFile, virtual public ios { * \class fstream * \brief file input/output stream. */ -class fstream : public iostream, StreamBaseClass { +class fstream : public iostream, StreamBaseClass { public: using iostream::peek; fstream() {} @@ -103,9 +93,7 @@ class fstream : public iostream, StreamBaseClass { /** Close a file and force cached data and directory information * to be written to the storage device. */ - void close() { - StreamBaseClass::close(); - } + void close() { StreamBaseClass::close(); } /** Open a fstream * \param[in] path path to open * \param[in] mode open mode @@ -132,54 +120,36 @@ class fstream : public iostream, StreamBaseClass { StreamBaseClass::open(path, mode); } /** \return True if stream is open else false. */ - bool is_open() { - return StreamBaseFile::isOpen(); - } + bool is_open() { return StreamBaseFile::isOpen(); } protected: /// @cond SHOW_PROTECTED /** Internal - do not use * \return */ - int16_t getch() { - return StreamBaseClass::getch(); - } + int16_t getch() { return StreamBaseClass::getch(); } /** Internal - do not use - * \param[out] pos - */ - void getpos(pos_t* pos) { - StreamBaseFile::fgetpos(pos); - } + * \param[out] pos + */ + void getpos(pos_t* pos) { StreamBaseFile::fgetpos(pos); } /** Internal - do not use * \param[in] c */ - void putch(char c) { - StreamBaseClass::putch(c); - } + void putch(char c) { StreamBaseClass::putch(c); } /** Internal - do not use * \param[in] str */ - void putstr(const char *str) { - StreamBaseClass::putstr(str); - } + void putstr(const char* str) { StreamBaseClass::putstr(str); } /** Internal - do not use * \param[in] pos */ bool seekoff(off_type off, seekdir way) { return StreamBaseClass::seekoff(off, way); } - bool seekpos(pos_type pos) { - return StreamBaseClass::seekpos(pos); - } - void setpos(pos_t* pos) { - StreamBaseFile::fsetpos(pos); - } - bool sync() { - return StreamBaseClass::sync(); - } - pos_type tellpos() { - return StreamBaseFile::curPosition(); - } + bool seekpos(pos_type pos) { return StreamBaseClass::seekpos(pos); } + void setpos(pos_t* pos) { StreamBaseFile::fsetpos(pos); } + bool sync() { return StreamBaseClass::sync(); } + pos_type tellpos() { return StreamBaseFile::curPosition(); } /// @endcond }; //============================================================================== @@ -187,7 +157,7 @@ class fstream : public iostream, StreamBaseClass { * \class ifstream * \brief file input stream. */ -class ifstream : public istream, StreamBaseClass { +class ifstream : public istream, StreamBaseClass { public: using istream::peek; ifstream() {} @@ -195,22 +165,16 @@ class ifstream : public istream, StreamBaseClass { * \param[in] path file to open * \param[in] mode open mode */ - explicit ifstream(const char* path, openmode mode = in) { - open(path, mode); - } + explicit ifstream(const char* path, openmode mode = in) { open(path, mode); } #if DESTRUCTOR_CLOSES_FILE ~ifstream() {} #endif // DESTRUCTOR_CLOSES_FILE /** Close a file and force cached data and directory information * to be written to the storage device. */ - void close() { - StreamBaseClass::close(); - } + void close() { StreamBaseClass::close(); } /** \return True if stream is open else false. */ - bool is_open() { - return StreamBaseFile::isOpen(); - } + bool is_open() { return StreamBaseFile::isOpen(); } /** Open an ifstream * \param[in] path file to open * \param[in] mode open mode @@ -226,30 +190,20 @@ class ifstream : public istream, StreamBaseClass { /** Internal - do not use * \return */ - int16_t getch() { - return StreamBaseClass::getch(); - } + int16_t getch() override { return StreamBaseClass::getch(); } /** Internal - do not use * \param[out] pos */ - void getpos(pos_t* pos) { - StreamBaseFile::fgetpos(pos); - } + void getpos(pos_t* pos) override { StreamBaseFile::fgetpos(pos); } /** Internal - do not use * \param[in] pos */ - bool seekoff(off_type off, seekdir way) { + bool seekoff(off_type off, seekdir way) override { return StreamBaseClass::seekoff(off, way); } - bool seekpos(pos_type pos) { - return StreamBaseClass::seekpos(pos); - } - void setpos(pos_t* pos) { - StreamBaseFile::fsetpos(pos); - } - pos_type tellpos() { - return StreamBaseFile::curPosition(); - } + bool seekpos(pos_type pos) override { return StreamBaseClass::seekpos(pos); } + void setpos(pos_t* pos) override { StreamBaseFile::fsetpos(pos); } + pos_type tellpos() override { return StreamBaseFile::curPosition(); } /// @endcond }; //============================================================================== @@ -257,16 +211,14 @@ class ifstream : public istream, StreamBaseClass { * \class ofstream * \brief file output stream. */ -class ofstream : public ostream, StreamBaseClass { +class ofstream : public ostream, StreamBaseClass { public: ofstream() {} /** Constructor with open * \param[in] path file to open * \param[in] mode open mode */ - explicit ofstream(const char* path, openmode mode = out) { - open(path, mode); - } + explicit ofstream(const char* path, openmode mode = out) { open(path, mode); } #if DESTRUCTOR_CLOSES_FILE ~ofstream() {} #endif // DESTRUCTOR_CLOSES_FILE @@ -280,9 +232,7 @@ class ofstream : public ostream, StreamBaseClass { /** Close a file and force cached data and directory information * to be written to the storage device. */ - void close() { - StreamBaseClass::close(); - } + void close() { StreamBaseClass::close(); } /** Open an ofstream * \param[in] path file to open * \param[in] mode open mode @@ -293,9 +243,7 @@ class ofstream : public ostream, StreamBaseClass { StreamBaseClass::open(path, mode | out); } /** \return True if stream is open else false. */ - bool is_open() { - return StreamBaseFile::isOpen(); - } + bool is_open() { return StreamBaseFile::isOpen(); } protected: /// @cond SHOW_PROTECTED @@ -303,28 +251,18 @@ class ofstream : public ostream, StreamBaseClass { * Internal do not use * \param[in] c */ - void putch(char c) { - StreamBaseClass::putch(c); - } - void putstr(const char* str) { - StreamBaseClass::putstr(str); - } - bool seekoff(off_type off, seekdir way) { + void putch(char c) override { StreamBaseClass::putch(c); } + void putstr(const char* str) override { StreamBaseClass::putstr(str); } + bool seekoff(off_type off, seekdir way) override { return StreamBaseClass::seekoff(off, way); } - bool seekpos(pos_type pos) { - return StreamBaseClass::seekpos(pos); - } + bool seekpos(pos_type pos) override { return StreamBaseClass::seekpos(pos); } /** * Internal do not use * \param[in] b */ - bool sync() { - return StreamBaseClass::sync(); - } - pos_type tellpos() { - return StreamBaseFile::curPosition(); - } + bool sync() override { return StreamBaseClass::sync(); } + pos_type tellpos() override { return StreamBaseFile::curPosition(); } /// @endcond }; #endif // fstream_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ios.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ios.h similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ios.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ios.h index cb22a582..50eb58fe 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ios.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ios.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -70,7 +70,7 @@ class ios_base { typedef uint32_t pos_type; /** type for relative seek offset */ typedef int32_t off_type; -#else // SDFAT_FILE_TYPE +#else // SDFAT_FILE_TYPE /** * unsigned size that can represent maximum file size. * (violates spec - should be signed) @@ -93,36 +93,36 @@ class ios_base { /** type for format flags */ typedef unsigned int fmtflags; /** left adjust fields */ - static const fmtflags left = 0x0001; + static const fmtflags left = 0x0001; /** right adjust fields */ - static const fmtflags right = 0x0002; + static const fmtflags right = 0x0002; /** fill between sign/base prefix and number */ - static const fmtflags internal = 0x0004; + static const fmtflags internal = 0x0004; /** base 10 flag*/ - static const fmtflags dec = 0x0008; + static const fmtflags dec = 0x0008; /** base 16 flag */ - static const fmtflags hex = 0x0010; + static const fmtflags hex = 0x0010; /** base 8 flag */ - static const fmtflags oct = 0x0020; + static const fmtflags oct = 0x0020; // static const fmtflags fixed = 0x0040; // static const fmtflags scientific = 0x0080; /** use strings true/false for bool */ - static const fmtflags boolalpha = 0x0100; + static const fmtflags boolalpha = 0x0100; /** use prefix 0X for hex and 0 for oct */ - static const fmtflags showbase = 0x0200; + static const fmtflags showbase = 0x0200; /** always show '.' for floating numbers */ - static const fmtflags showpoint = 0x0400; + static const fmtflags showpoint = 0x0400; /** show + sign for nonnegative numbers */ - static const fmtflags showpos = 0x0800; + static const fmtflags showpos = 0x0800; /** skip initial white space */ - static const fmtflags skipws = 0x1000; + static const fmtflags skipws = 0x1000; // static const fmtflags unitbuf = 0x2000; /** use uppercase letters in number representations */ - static const fmtflags uppercase = 0x4000; + static const fmtflags uppercase = 0x4000; /** mask for adjustfield */ static const fmtflags adjustfield = left | right | internal; /** mask for basefield */ - static const fmtflags basefield = dec | hex | oct; + static const fmtflags basefield = dec | hex | oct; // static const fmtflags floatfield = scientific | fixed; //---------------------------------------------------------------------------- /** typedef for iostream open mode */ @@ -130,24 +130,25 @@ class ios_base { // Openmode flags. /** seek to end before each write */ - static const openmode app = 0X4; + static const openmode app = 0X4; /** open and seek to end immediately after opening */ - static const openmode ate = 0X8; + static const openmode ate = 0X8; /** perform input and output in binary mode (as opposed to text mode) */ static const openmode binary = 0X10; /** open for input */ - static const openmode in = 0X20; + static const openmode in = 0X20; /** open for output */ - static const openmode out = 0X40; + static const openmode out = 0X40; /** truncate an existing stream when opening */ - static const openmode trunc = 0X80; + static const openmode trunc = 0X80; //---------------------------------------------------------------------------- - ios_base() : m_fill(' '), m_fmtflags(dec | right | skipws) - , m_precision(2), m_width(0) {} + ios_base() + : m_fill(' '), + m_fmtflags(dec | right | skipws), + m_precision(2), + m_width(0) {} /** \return fill character */ - char fill() { - return m_fill; - } + char fill() { return m_fill; } /** Set fill character * \param[in] c new fill character * \return old fill character @@ -158,9 +159,7 @@ class ios_base { return r; } /** \return format flags */ - fmtflags flags() const { - return m_fmtflags; - } + fmtflags flags() const { return m_fmtflags; } /** set format flags * \param[in] fl new flag * \return old flags @@ -171,9 +170,7 @@ class ios_base { return tmp; } /** \return precision */ - int precision() const { - return m_precision; - } + int precision() const { return m_precision; } /** set precision * \param[in] n new precision * \return old precision @@ -206,13 +203,9 @@ class ios_base { /** clear format flags * \param[in] fl flags to be cleared */ - void unsetf(fmtflags fl) { - m_fmtflags &= ~fl; - } + void unsetf(fmtflags fl) { m_fmtflags &= ~fl; } /** \return width */ - unsigned width() { - return m_width; - } + unsigned width() { return m_width; } /** set width * \param[in] n new width * \return old width @@ -396,19 +389,13 @@ class ios : public ios_base { return !fail() ? reinterpret_cast(this) : nullptr; } /** \return true if fail() else false. */ - bool operator!() const { - return fail(); - } + bool operator!() const { return fail(); } /** \return false if fail() else true. */ - explicit operator bool() const {return !fail();} + explicit operator bool() const { return !fail(); } /** \return The iostate flags for this file. */ - iostate rdstate() const { - return m_iostate; - } + iostate rdstate() const { return m_iostate; } /** \return True if no iostate flags are set else false. */ - bool good() const { - return m_iostate == goodbit; - } + bool good() const { return m_iostate == goodbit; } /** \return true if end of file has been reached else false. * * Warning: An empty file returns false before the first read. @@ -416,31 +403,21 @@ class ios : public ios_base { * Moral: eof() is only useful in combination with fail(), to find out * whether EOF was the cause for failure */ - bool eof() const { - return m_iostate & eofbit; - } + bool eof() const { return m_iostate & eofbit; } /** \return true if any iostate bit other than eof are set else false. */ - bool fail() const { - return m_iostate & (failbit | badbit); - } + bool fail() const { return m_iostate & (failbit | badbit); } /** \return true if bad bit is set else false. */ - bool bad() const { - return m_iostate & badbit; - } + bool bad() const { return m_iostate & badbit; } /** Clear iostate bits. * * \param[in] state The flags you want to set after clearing all flags. **/ - void clear(iostate state = goodbit) { - m_iostate = state; - } + void clear(iostate state = goodbit) { m_iostate = state; } /** Set iostate bits. * * \param[in] state Bitts to set. **/ - void setstate(iostate state) { - m_iostate |= state; - } + void setstate(iostate state) { m_iostate |= state; } private: iostate m_iostate = 0; diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/iostream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/iostream.h similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/iostream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/iostream.h index 8ced1492..697f478f 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/iostream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/iostream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -34,7 +34,7 @@ * \param[in] is the Stream * \return The stream */ -inline istream& ws(istream& is) { +inline istream &ws(istream &is) { is.skipWhite(); return is; } @@ -42,7 +42,7 @@ inline istream& ws(istream& is) { * \param[in] os The Stream * \return The stream */ -inline ostream& endl(ostream& os) { +inline ostream &endl(ostream &os) { os.put('\n'); #if ENDL_CALLS_FLUSH os.flush(); @@ -53,7 +53,7 @@ inline ostream& endl(ostream& os) { * \param[in] os The stream * \return The stream */ -inline ostream& flush(ostream& os) { +inline ostream &flush(ostream &os) { os.flush(); return os; } @@ -75,7 +75,7 @@ struct setfill { * \param[in] arg set setfill object * \return the stream */ -inline ostream &operator<< (ostream &os, const setfill &arg) { +inline ostream &operator<<(ostream &os, const setfill &arg) { os.fill(arg.c); return os; } @@ -105,7 +105,7 @@ struct setprecision { * \param[in] arg set setprecision object * \return the stream */ -inline ostream &operator<< (ostream &os, const setprecision &arg) { +inline ostream &operator<<(ostream &os, const setprecision &arg) { os.precision(arg.p); return os; } @@ -135,7 +135,7 @@ struct setw { * \param[in] arg set setw object * \return the stream */ -inline ostream &operator<< (ostream &os, const setw &arg) { +inline ostream &operator<<(ostream &os, const setw &arg) { os.width(arg.w); return os; } @@ -153,6 +153,5 @@ inline istream &operator>>(istream &is, const setw &arg) { * \class iostream * \brief Input/Output stream */ -class iostream : public istream, public ostream { -}; +class iostream : public istream, public ostream {}; #endif // iostream_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/istream.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/istream.cpp similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/istream.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/istream.cpp index 87fe004e..48a2044d 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/istream.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/istream.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,9 +22,13 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include -#include #include "istream.h" + +#ifdef __AVR__ +#include +#endif // __AVR__ +#include +#include //------------------------------------------------------------------------------ int istream::get() { int c; @@ -46,12 +50,11 @@ istream& istream::get(char& c) { return *this; } //------------------------------------------------------------------------------ -istream& istream::get(char *str, streamsize n, char delim) { - int c; +istream& istream::get(char* str, streamsize n, char delim) { pos_t pos; m_gcount = 0; - while ((m_gcount + 1) < n) { - c = getch(&pos); + while ((m_gcount + 1) < n) { + int c = getch(&pos); if (c < 0) { break; } @@ -70,7 +73,7 @@ istream& istream::get(char *str, streamsize n, char delim) { return *this; } //------------------------------------------------------------------------------ -void istream::getBool(bool *b) { +void istream::getBool(bool* b) { if ((flags() & boolalpha) == 0) { getNumber(b); return; @@ -78,7 +81,7 @@ void istream::getBool(bool *b) { #ifdef __AVR__ PGM_P truePtr = PSTR("true"); PGM_P falsePtr = PSTR("false"); -#else // __AVR__ +#else // __AVR__ const char* truePtr = "true"; const char* falsePtr = "false"; #endif // __AVR @@ -92,7 +95,7 @@ void istream::getBool(bool *b) { #ifdef __AVR__ falseOk = falseOk && c == pgm_read_byte(falsePtr + i); trueOk = trueOk && c == pgm_read_byte(truePtr + i); -#else // __AVR__ +#else // __AVR__ falseOk = falseOk && c == falsePtr[i]; trueOk = trueOk && c == truePtr[i]; #endif // __AVR__ @@ -149,8 +152,8 @@ bool istream::getDouble(double* value) { while (1) { if (isdigit(c)) { got_digit = true; - if (frac < uint32_max/10) { - frac = frac * 10 + (c - '0'); + if (frac < uint32_max / 10) { + frac = frac * 10 + (c - '0'); if (got_dot) { fracExp--; } @@ -197,7 +200,7 @@ bool istream::getDouble(double* value) { if (exp & 1) { if (expNeg) { // check for underflow - if (v < DBL_MIN * pow10 && frac != 0) { + if (v < DBL_MIN * pow10 && frac != 0) { goto fail; } v /= pow10; @@ -216,7 +219,7 @@ bool istream::getDouble(double* value) { *value = neg ? -v : v; return true; - fail: +fail: // error restore position to last good place setpos(&endPos); setstate(failbit); @@ -224,15 +227,14 @@ bool istream::getDouble(double* value) { } //------------------------------------------------------------------------------ -istream& istream::getline(char *str, streamsize n, char delim) { +istream& istream::getline(char* str, streamsize n, char delim) { pos_t pos; - int c; m_gcount = 0; if (n > 0) { str[0] = '\0'; } while (1) { - c = getch(&pos); + int c = getch(&pos); if (c < 0) { break; } @@ -240,7 +242,7 @@ istream& istream::getline(char *str, streamsize n, char delim) { m_gcount++; break; } - if ((m_gcount + 1) >= n) { + if ((m_gcount + 1) >= n) { setpos(&pos); setstate(failbit); break; @@ -310,14 +312,14 @@ bool istream::getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num) { } setpos(&endPos); if (any > 0 || (have_zero && any >= 0)) { - *num = neg ? -val : val; + *num = neg ? -val : val; return true; } setstate(failbit); return false; } //------------------------------------------------------------------------------ -void istream::getStr(char *str) { +void istream::getStr(char* str) { pos_t pos; uint16_t i = 0; uint16_t m = width() ? width() - 1 : 0XFFFE; @@ -345,10 +347,9 @@ void istream::getStr(char *str) { } //------------------------------------------------------------------------------ istream& istream::ignore(streamsize n, int delim) { - int c; m_gcount = 0; while (m_gcount < n) { - c = getch(); + int c = getch(); if (c < 0) { break; } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/istream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/istream.h similarity index 89% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/istream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/istream.h index 5642f3cf..1a959c82 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/istream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/istream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -36,14 +36,12 @@ */ class istream : public virtual ios { public: - istream() {} + istream() = default; /** call manipulator * \param[in] pf function to call * \return the stream */ - istream& operator>>(istream& (*pf)(istream& str)) { - return pf(*this); - } + istream& operator>>(istream& (*pf)(istream& str)) { return pf(*this); } /** call manipulator * \param[in] pf function to call * \return the stream @@ -65,7 +63,7 @@ class istream : public virtual ios { * \param[out] str location to store the string. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>>(char *str) { + istream& operator>>(char* str) { getStr(str); return *this; } @@ -83,7 +81,7 @@ class istream : public virtual ios { * \param[out] str location to store the string. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>>(signed char *str) { + istream& operator>>(signed char* str) { getStr(reinterpret_cast(str)); return *this; } @@ -101,7 +99,7 @@ class istream : public virtual ios { * \param[out] str location to store the string. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>>(unsigned char *str) { + istream& operator>>(unsigned char* str) { getStr(reinterpret_cast(str)); return *this; } @@ -128,7 +126,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(short& arg) { // NOLINT + istream& operator>>(short& arg) { // NOLINT getNumber(&arg); return *this; } @@ -137,7 +135,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(unsigned short& arg) { // NOLINT + istream& operator>>(unsigned short& arg) { // NOLINT getNumber(&arg); return *this; } @@ -146,7 +144,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(int& arg) { + istream& operator>>(int& arg) { getNumber(&arg); return *this; } @@ -155,7 +153,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(unsigned int& arg) { + istream& operator>>(unsigned int& arg) { getNumber(&arg); return *this; } @@ -164,7 +162,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(long& arg) { // NOLINT + istream& operator>>(long& arg) { // NOLINT getNumber(&arg); return *this; } @@ -173,16 +171,16 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(unsigned long& arg) { // NOLINT + istream& operator>>(unsigned long& arg) { // NOLINT getNumber(&arg); return *this; } /** - * Extract a value of type double. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>> (double& arg) { + * Extract a value of type double. + * \param[out] arg location to store the value. + * \return Is always *this. Failure is indicated by the state of *this. + */ + istream& operator>>(double& arg) { getDouble(&arg); return *this; } @@ -191,7 +189,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>> (float& arg) { + istream& operator>>(float& arg) { double v; getDouble(&v); arg = v; @@ -202,7 +200,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>> (void*& arg) { + istream& operator>>(void*& arg) { uint32_t val; getNumber(&val); arg = reinterpret_cast(val); @@ -212,9 +210,7 @@ class istream : public virtual ios { * \return The number of characters extracted by the last unformatted * input function. */ - streamsize gcount() const { - return m_gcount; - } + streamsize gcount() const { return m_gcount; } /** * Extract a character if one is available. * @@ -244,7 +240,7 @@ class istream : public virtual ios { * * \return always returns *this. A failure is indicated by the stream state. */ - istream& get(char *str, streamsize n, char delim = '\n'); + istream& get(char* str, streamsize n, char delim = '\n'); /** * Extract characters * @@ -261,7 +257,7 @@ class istream : public virtual ios { * * \return always returns *this. A failure is indicated by the stream state. */ - istream& getline(char *str, streamsize n, char delim = '\n'); + istream& getline(char* str, streamsize n, char delim = '\n'); /** * Extract characters and discard them. * @@ -290,9 +286,7 @@ class istream : public virtual ios { /** * \return the stream position */ - pos_type tellg() { - return tellpos(); - } + pos_type tellg() { return tellpos(); } /** * Set the stream position * \param[in] pos The absolute position in which to move the read pointer. @@ -323,9 +317,9 @@ class istream : public virtual ios { protected: /// @cond SHOW_PROTECTED /** - * Internal - do not use - * \return - */ + * Internal - do not use + * \return + */ virtual int16_t getch() = 0; /** * Internal - do not use @@ -352,15 +346,16 @@ class istream : public virtual ios { /// @endcond private: - void getBool(bool *b); + void getBool(bool* b); void getChar(char* ch); bool getDouble(double* value); - template void getNumber(T* value); + template + void getNumber(T* value); bool getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num); - void getStr(char *str); + void getStr(char* str); int16_t readSkip(); - size_t m_gcount; + size_t m_gcount = 0; }; //------------------------------------------------------------------------------ template diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ostream.cpp b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ostream.cpp similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ostream.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ostream.cpp index c82c5a67..7f946bd5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ostream.cpp +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ostream.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,8 +22,11 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include #include "ostream.h" +#ifdef __AVR__ +#include +#endif // __AVR__ +#include #ifndef PSTR #define PSTR(x) x #endif // PSTR @@ -135,14 +138,20 @@ void ostream::putNum(int64_t n) { putNum((uint64_t)(neg ? -n : n), neg); } //------------------------------------------------------------------------------ -void ostream::putPgm(const char* str) { +void ostream::putPgm(const char *str) { +#ifndef __AVR__ + putStr(str); +#else // __AVR__ + uint8_t c; int n; - for (n = 0; pgm_read_byte(&str[n]); n++) {} + for (n = 0; pgm_read_byte(&str[n]); n++) { + } fill_not_left(n); - for (uint8_t c; (c = pgm_read_byte(str)); str++) { + for (n = 0; (c = pgm_read_byte(&str[n])); n++) { putch(c); } do_fill(n); +#endif // __AVR__ } //------------------------------------------------------------------------------ void ostream::putStr(const char *str) { diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ostream.h b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ostream.h similarity index 79% rename from extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ostream.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ostream.h index e57ff79e..7dc8eb0e 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/iostream/ostream.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/iostream/ostream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -42,14 +42,12 @@ class ostream : public virtual ios { * \param[in] pf function to call * \return the stream */ - ostream& operator<< (ostream& (*pf)(ostream& str)) { - return pf(*this); - } + ostream &operator<<(ostream &(*pf)(ostream &str)) { return pf(*this); } /** call manipulator * \param[in] pf function to call * \return the stream */ - ostream& operator<< (ios_base& (*pf)(ios_base& str)) { + ostream &operator<<(ios_base &(*pf)(ios_base &str)) { pf(*this); return *this; } @@ -57,7 +55,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (bool arg) { + ostream &operator<<(bool arg) { putBool(arg); return *this; } @@ -65,7 +63,7 @@ class ostream : public virtual ios { * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const char *arg) { + ostream &operator<<(const char *arg) { putStr(arg); return *this; } @@ -73,16 +71,16 @@ class ostream : public virtual ios { * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const signed char *arg) { - putStr((const char*)arg); + ostream &operator<<(const signed char *arg) { + putStr(reinterpret_cast(arg)); return *this; } /** Output string * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const unsigned char *arg) { - putStr((const char*)arg); + ostream &operator<<(const unsigned char *arg) { + putStr(reinterpret_cast(arg)); return *this; } #if ENABLE_ARDUINO_STRING @@ -90,7 +88,7 @@ class ostream : public virtual ios { * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const String& arg) { + ostream &operator<<(const String &arg) { putStr(arg.c_str()); return *this; } @@ -99,7 +97,7 @@ class ostream : public virtual ios { * \param[in] arg character to output * \return the stream */ - ostream &operator<< (char arg) { + ostream &operator<<(char arg) { putChar(arg); return *this; } @@ -107,7 +105,7 @@ class ostream : public virtual ios { * \param[in] arg character to output * \return the stream */ - ostream &operator<< (signed char arg) { + ostream &operator<<(signed char arg) { putChar(static_cast(arg)); return *this; } @@ -115,7 +113,7 @@ class ostream : public virtual ios { * \param[in] arg character to output * \return the stream */ - ostream &operator<< (unsigned char arg) { + ostream &operator<<(unsigned char arg) { putChar(static_cast(arg)); return *this; } @@ -123,7 +121,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (double arg) { + ostream &operator<<(double arg) { putDouble(arg); return *this; } @@ -131,7 +129,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (float arg) { + ostream &operator<<(float arg) { putDouble(arg); return *this; } @@ -139,7 +137,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (short arg) { // NOLINT + ostream &operator<<(short arg) { // NOLINT putNum((int32_t)arg); return *this; } @@ -147,7 +145,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned short arg) { // NOLINT + ostream &operator<<(unsigned short arg) { // NOLINT putNum((uint32_t)arg); return *this; } @@ -155,7 +153,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (int arg) { + ostream &operator<<(int arg) { putNum((int32_t)arg); return *this; } @@ -163,7 +161,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned int arg) { + ostream &operator<<(unsigned int arg) { putNum((uint32_t)arg); return *this; } @@ -171,7 +169,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (long arg) { // NOLINT + ostream &operator<<(long arg) { // NOLINT putNum((int32_t)arg); return *this; } @@ -179,7 +177,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned long arg) { // NOLINT + ostream &operator<<(unsigned long arg) { // NOLINT putNum((uint32_t)arg); return *this; } @@ -187,7 +185,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (long long arg) { // NOLINT + ostream &operator<<(long long arg) { // NOLINT putNum((int64_t)arg); return *this; } @@ -195,7 +193,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned long long arg) { // NOLINT + ostream &operator<<(unsigned long long arg) { // NOLINT putNum((uint64_t)arg); return *this; } @@ -203,7 +201,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream& operator<< (const void* arg) { + ostream &operator<<(const void *arg) { putNum(reinterpret_cast(arg)); return *this; } @@ -211,8 +209,8 @@ class ostream : public virtual ios { * \param[in] arg pointing to flash string * \return the stream */ - ostream &operator<< (const __FlashStringHelper *arg) { - putPgm(reinterpret_cast(arg)); + ostream &operator<<(const __FlashStringHelper *arg) { + putPgm(reinterpret_cast(arg)); return *this; } /** @@ -224,17 +222,17 @@ class ostream : public virtual ios { * \param[in] ch The character * \return A reference to the ostream object. */ - ostream& put(char ch) { + ostream &put(char ch) { putch(ch); return *this; } -// ostream& write(char *str, streamsize count); + // ostream& write(char *str, streamsize count); /** * Flushes the buffer associated with this stream. The flush function * calls the sync function of the associated file. * \return A reference to the ostream object. */ - ostream& flush() { + ostream &flush() { if (!sync()) { setstate(badbit); } @@ -243,15 +241,13 @@ class ostream : public virtual ios { /** * \return the stream position */ - pos_type tellp() { - return tellpos(); - } + pos_type tellp() { return tellpos(); } /** * Set the stream position * \param[in] pos The absolute position in which to move the write pointer. * \return Is always *this. Failure is indicated by the state of *this. */ - ostream& seekp(pos_type pos) { + ostream &seekp(pos_type pos) { if (!seekpos(pos)) { setstate(failbit); } @@ -265,7 +261,7 @@ class ostream : public virtual ios { * \param[in] way One of ios::beg, ios::cur, or ios::end. * \return Is always *this. Failure is indicated by the state of *this. */ - ostream& seekp(off_type off, seekdir way) { + ostream &seekp(off_type off, seekdir way) { if (!seekoff(off, way)) { setstate(failbit); } @@ -292,14 +288,14 @@ class ostream : public virtual ios { void putDouble(double n); void putNum(int32_t n); void putNum(int64_t n); - void putNum(uint32_t n) {putNum(n, false);} - void putNum(uint64_t n) {putNum(n, false);} - void putPgm(const char* str); - void putStr(const char* str); + void putNum(uint32_t n) { putNum(n, false); } + void putNum(uint64_t n) { putNum(n, false); } + void putPgm(const char *str); + void putStr(const char *str); - template - char* fmtNum(T n, char *ptr, uint8_t base) { - char a = flags() & uppercase ? 'A' - 10 : 'a' - 10; + template + char *fmtNum(T n, char *ptr, uint8_t base) { + char a = (flags() & uppercase) ? 'A' - 10 : 'a' - 10; do { T m = n; n /= base; @@ -309,12 +305,12 @@ class ostream : public virtual ios { return ptr; } - template + template void putNum(T n, bool neg) { - char buf[(8*sizeof(T) + 2)/3 + 2]; - char* ptr = buf + sizeof(buf) - 1; - char* num; - char* str; + char buf[(8 * sizeof(T) + 2) / 3 + 2]; + char *ptr = buf + sizeof(buf) - 1; + char *num; + char *str; uint8_t base = flagsToBase(); *ptr = '\0'; str = num = fmtNum(n, ptr, base); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/sdios.h b/extra-libraries/ESP32/SdFat-2.2.3/src/sdios.h similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/src/sdios.h rename to extra-libraries/ESP32/SdFat-2.2.3/src/sdios.h index 64c197ec..d86a0b01 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/sdios.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/src/sdios.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,6 +29,6 @@ * \brief C++ IO Streams features. */ #include "iostream/ArduinoStream.h" -#include "iostream/fstream.h" #include "iostream/StdioStream.h" +#include "iostream/fstream.h" #endif // sdios_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/.gitignore b/extra-libraries/ESP8266/ESP8266SdFat/.gitignore index b9d6bd92..6dae7474 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/.gitignore +++ b/extra-libraries/ESP8266/ESP8266SdFat/.gitignore @@ -1,215 +1,36 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + .DS_Store +.AppleDouble +.LSOverride +# Icon must ends with two \r. +Icon -############# -## Python -############# +# Thumbnails +._* -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg +# Files that might appear on external disk +.Spotlight-V100 +.Trashes diff --git a/extra-libraries/ESP8266/ESP8266SdFat/README.md b/extra-libraries/ESP8266/ESP8266SdFat/README.md index 425fb33d..1f97464b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/README.md +++ b/extra-libraries/ESP8266/ESP8266SdFat/README.md @@ -1,8 +1,20 @@ -### Warning: This is SdFat Version 2. +File copy constructors and file assignment operators have been made private by +default in 2.2.3 to prevent call by value and multiple copies of file instances. -Earlier releases of Version 1 are here: +SdFatConfig.h has options to make file constructors and assignment operators +public. -https://github.com/greiman/SdFat/releases +UTF-8 encoded filenames are supported in v2.1.0 or later. + +Try the UnicodeFilenames example. Here is output from ls: +

          +Type any character to begin
          +ls:
          +         0 😀/
          +          20 россиянин
          +          17 très élégant
          +           9 狗.txt
          +
          SdFat Version 2 supports FAT16/FAT32 and exFAT SD cards. It is mostly backward compatible with SdFat Version 1 for FAT16/FAT32 cards. diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/Doxyfile b/extra-libraries/ESP8266/ESP8266SdFat/doc/Doxyfile index 4e5760a2..54e8ce86 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/Doxyfile +++ b/extra-libraries/ESP8266/ESP8266SdFat/doc/Doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.8.14 +# Doxyfile 1.9.6 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -12,15 +12,25 @@ # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See # https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. @@ -38,20 +48,20 @@ PROJECT_NAME = SdFat # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = +PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = +PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is @@ -60,16 +70,28 @@ PROJECT_LOGO = OUTPUT_DIRECTORY = . -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes -# performance problems for the file system. +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode @@ -81,14 +103,14 @@ ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English @@ -171,7 +193,7 @@ STRIP_FROM_PATH = C:/Users/bill/Documents/ # specify the list of include paths that are normally passed to the compiler # using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't @@ -189,6 +211,16 @@ SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus @@ -209,6 +241,14 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. @@ -232,19 +272,18 @@ TAB_SIZE = 8 # the documentation. An alias has the form: # name=value # For example adding -# "sideeffect=@par Side Effects:\n" +# "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = +ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For @@ -274,28 +313,40 @@ OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. -EXTENSION_MAPPING = +EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. +# documentation. See https://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. @@ -307,7 +358,7 @@ MARKDOWN_SUPPORT = YES # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 0. +# Minimum value: 0, maximum value: 99, default value: 5. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 0 @@ -423,6 +474,19 @@ TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -443,6 +507,12 @@ EXTRACT_ALL = NO EXTRACT_PRIVATE = NO +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. @@ -480,6 +550,13 @@ EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation @@ -491,14 +568,15 @@ HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. +# declarations. If set to NO, these declarations will be included in the +# documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO @@ -517,12 +595,20 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. CASE_SENSE_NAMES = NO @@ -540,6 +626,12 @@ HIDE_SCOPE_NAMES = NO HIDE_COMPOUND_REFERENCE= NO +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -648,7 +740,7 @@ GENERATE_DEPRECATEDLIST= YES # sections, marked by \if ... \endif and \cond # ... \endcond blocks. -ENABLED_SECTIONS = +ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the @@ -690,20 +782,21 @@ SHOW_NAMESPACES = YES # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. -FILE_VERSION_FILTER = +FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. -LAYOUT_FILE = +LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib @@ -713,7 +806,7 @@ LAYOUT_FILE = # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. -CITE_BIB_FILES = +CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages @@ -743,23 +836,43 @@ WARNINGS = YES WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = YES +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. # The default value is: NO. WARN_AS_ERROR = NO @@ -770,15 +883,29 @@ WARN_AS_ERROR = NO # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard -# error (stderr). +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). -WARN_LOGFILE = +WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files @@ -804,12 +931,23 @@ INPUT = ../src \ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: https://www.gnu.org/software/libiconv/) for the list of -# possible encodings. +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING # The default value is: UTF-8. INPUT_ENCODING = UTF-8 +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. @@ -818,11 +956,15 @@ INPUT_ENCODING = UTF-8 # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.c \ *.cc \ @@ -890,24 +1032,24 @@ EXCLUDE_SYMLINKS = NO # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = +EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test +# ANamespace::AClass, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* -EXCLUDE_SYMBOLS = +EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = +EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -927,7 +1069,7 @@ EXAMPLE_RECURSIVE = NO # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = +IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program @@ -944,11 +1086,16 @@ IMAGE_PATH = # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. -INPUT_FILTER = +INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the @@ -961,7 +1108,7 @@ INPUT_FILTER = # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. -FILTER_PATTERNS = +FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for @@ -976,14 +1123,23 @@ FILTER_SOURCE_FILES = NO # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. -FILTER_SOURCE_PATTERNS = +FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = +USE_MDFILE_AS_MAINPAGE = + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 #--------------------------------------------------------------------------- # Configuration options related to source browsing @@ -1012,7 +1168,7 @@ INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. +# entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = NO @@ -1049,7 +1205,7 @@ SOURCE_TOOLTIPS = YES # # To use it do the following: # - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # @@ -1072,34 +1228,44 @@ USE_HTAGS = NO VERBATIM_HEADERS = NO # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. # Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse-libclang=ON option for CMake. +# generated with the -Duse_libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. -CLANG_OPTIONS = +CLANG_OPTIONS = # If clang assisted parsing is enabled you can provide the clang parser with the -# path to the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files -# were built. This is equivalent to specifying the "-p" option to a clang tool, -# such as clang-check. These options will then be pased to the parser. +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. # Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse-libclang=ON option for CMake. -# The default value is: 0. +# generated with the -Duse_libclang=ON option for CMake. -CLANG_COMPILATION_DATABASE_PATH= 0 +CLANG_DATABASE_PATH = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index @@ -1112,20 +1278,14 @@ CLANG_COMPILATION_DATABASE_PATH= 0 ALPHABETICAL_INDEX = NO -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = +IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output @@ -1169,7 +1329,7 @@ HTML_FILE_EXTENSION = .html # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = +HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard @@ -1179,7 +1339,7 @@ HTML_HEADER = # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FOOTER = +HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of @@ -1191,7 +1351,7 @@ HTML_FOOTER = # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_STYLESHEET = +HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets @@ -1201,10 +1361,15 @@ HTML_STYLESHEET = # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_STYLESHEET = +HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1214,11 +1379,24 @@ HTML_EXTRA_STYLESHEET = # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_FILES = +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see +# this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. @@ -1228,7 +1406,7 @@ HTML_EXTRA_FILES = HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A +# in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1257,9 +1435,9 @@ HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that -# are dynamically created via Javascript. If disabled, the navigation index will +# are dynamically created via JavaScript. If disabled, the navigation index will # consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have Javascript, +# page. Disable this option to support browsers that do not have JavaScript, # like the Qt help browser. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1289,13 +1467,14 @@ HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: https://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1309,6 +1488,13 @@ GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. @@ -1334,8 +1520,12 @@ DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML @@ -1354,7 +1544,7 @@ GENERATE_HTMLHELP = NO # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. -CHM_FILE = +CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, @@ -1362,10 +1552,10 @@ CHM_FILE = # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. -HHC_LOCATION = +HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). +# (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1375,7 +1565,7 @@ GENERATE_CHI = NO # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. -CHM_INDEX_ENCODING = +CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it @@ -1406,11 +1596,12 @@ GENERATE_QHP = NO # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. -QCH_FILE = +QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace). +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1418,7 +1609,8 @@ QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders). +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1426,31 +1618,33 @@ QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. -QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. -QHP_CUST_FILTER_ATTRS = +QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes). +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. -QHP_SECT_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. -QHG_LOCATION = +QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To @@ -1490,16 +1684,28 @@ DISABLE_INDEX = NO # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # @@ -1524,6 +1730,24 @@ TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML @@ -1533,19 +1757,14 @@ EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. -FORMULA_TRANSPARENT = YES +FORMULA_MACROFILE = # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side Javascript for the rendering +# https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path @@ -1555,11 +1774,29 @@ FORMULA_TRANSPARENT = YES USE_MATHJAX = NO +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + # When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -1572,26 +1809,33 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_EXTENSIONS = +MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_CODEFILE = +MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and @@ -1615,7 +1859,7 @@ MATHJAX_CODEFILE = SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a web server instead of a web client using Javascript. There +# implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH # setting. When disabled, doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing @@ -1634,7 +1878,8 @@ SERVER_BASED_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: https://xapian.org/). +# Xapian (see: +# https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1647,11 +1892,12 @@ EXTERNAL_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: https://xapian.org/). See the section "External Indexing and -# Searching" for details. +# Xapian (see: +# https://xapian.org/). See the section "External Indexing and Searching" for +# details. # This tag requires that the tag SEARCHENGINE is set to YES. -SEARCHENGINE_URL = +SEARCHENGINE_URL = # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed # search data is written to a file for indexing by an external tool. With the @@ -1667,7 +1913,7 @@ SEARCHDATA_FILE = searchdata.xml # projects and redirect the results back to the right project. # This tag requires that the tag SEARCHENGINE is set to YES. -EXTERNAL_SEARCH_ID = +EXTERNAL_SEARCH_ID = # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen # projects other than the one defined by this configuration file, but that are @@ -1677,7 +1923,7 @@ EXTERNAL_SEARCH_ID = # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... # This tag requires that the tag SEARCHENGINE is set to YES. -EXTRA_SEARCH_MAPPINGS = +EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # Configuration options related to the LaTeX output @@ -1699,21 +1945,35 @@ LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. # -# Note that when enabling USE_PDFLATEX this option is only used for generating -# bitmaps for formulas in the HTML output, but not in the Makefile that is -# written to the output directory. -# The default file is: latex. +# Note that when not enabling USE_PDFLATEX the default is latex when enabling +# USE_PDFLATEX the default is pdflatex and when in the later case latex is +# chosen this is overwritten by pdflatex. For specific output languages the +# default can have been set differently, this depends on the implementation of +# the output language. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate # index for LaTeX. +# Note: This tag is used in the Makefile / make.bat. +# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file +# (.tex). # The default file is: makeindex. # This tag requires that the tag GENERATE_LATEX is set to YES. MAKEINDEX_CMD_NAME = makeindex +# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to +# generate index for LaTeX. In case there is no backslash (\) as first character +# it will be automatically added in the LaTeX code. +# Note: This tag is used in the generated output file (.tex). +# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat. +# The default value is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_MAKEINDEX_CMD = makeindex + # If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. @@ -1729,7 +1989,7 @@ COMPACT_LATEX = NO # The default value is: a4. # This tag requires that the tag GENERATE_LATEX is set to YES. -PAPER_TYPE = a4wide +PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names # that should be included in the LaTeX output. The package can be specified just @@ -1741,34 +2001,36 @@ PAPER_TYPE = a4wide # If left blank no extra packages will be included. # This tag requires that the tag GENERATE_LATEX is set to YES. -EXTRA_PACKAGES = +EXTRA_PACKAGES = -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the -# generated LaTeX document. The header should contain everything until the first -# chapter. If it is left blank doxygen will generate a standard header. See -# section "Doxygen usage" for information on how to let doxygen write the -# default header to a separate file. +# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for +# the generated LaTeX document. The header should contain everything until the +# first chapter. If it is left blank doxygen will generate a standard header. It +# is highly recommended to start with a default header using +# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty +# and then modify the file new_header.tex. See also section "Doxygen usage" for +# information on how to generate the default header that doxygen normally uses. # -# Note: Only use a user-defined header if you know what you are doing! The -# following commands have a special meaning inside the header: $title, -# $datetime, $date, $doxygenversion, $projectname, $projectnumber, -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty -# string, for the replacement values of the other commands the user is referred -# to HTML_HEADER. +# Note: Only use a user-defined header if you know what you are doing! +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. The following +# commands have a special meaning inside the header (and footer): For a +# description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_HEADER = +LATEX_HEADER = -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the -# generated LaTeX document. The footer should contain everything after the last -# chapter. If it is left blank doxygen will generate a standard footer. See +# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for +# the generated LaTeX document. The footer should contain everything after the +# last chapter. If it is left blank doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what -# special commands can be used inside the footer. -# -# Note: Only use a user-defined footer if you know what you are doing! +# special commands can be used inside the footer. See also section "Doxygen +# usage" for information on how to generate the default footer that doxygen +# normally uses. Note: Only use a user-defined footer if you know what you are +# doing! # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_FOOTER = +LATEX_FOOTER = # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created @@ -1779,7 +2041,7 @@ LATEX_FOOTER = # list). # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_STYLESHEET = # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the LATEX_OUTPUT output @@ -1787,7 +2049,7 @@ LATEX_EXTRA_STYLESHEET = # markers available. # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_EXTRA_FILES = +LATEX_EXTRA_FILES = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is # prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will @@ -1798,9 +2060,11 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate -# the PDF file directly from the LaTeX files. Set this option to YES, to get a -# higher quality PDF documentation. +# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as +# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX +# files. Set this option to YES, to get a higher quality PDF documentation. +# +# See also section LATEX_CMD_NAME for selecting the engine. # The default value is: YES. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1808,8 +2072,7 @@ USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode # command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. This option is also used -# when generating formulas in HTML. +# if errors occur, instead of asking the user for help. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1822,16 +2085,6 @@ LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_SOURCE_CODE = NO - # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See # https://en.wikipedia.org/wiki/BibTeX and \cite for more info. @@ -1848,6 +2101,14 @@ LATEX_BIB_STYLE = plain LATEX_TIMESTAMP = NO +# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) +# path from which the emoji images will be read. If a relative path is entered, +# it will be relative to the LATEX_OUTPUT directory. If left blank the +# LATEX_OUTPUT directory will be used. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EMOJI_DIRECTORY = + #--------------------------------------------------------------------------- # Configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -1887,9 +2148,9 @@ COMPACT_RTF = NO RTF_HYPERLINKS = YES -# Load stylesheet definitions from file. Syntax is similar to doxygen's config -# file, i.e. a series of assignments. You only have to provide replacements, -# missing definitions are set to their default value. +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# configuration file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the # default style sheet that doxygen normally uses. @@ -1898,21 +2159,11 @@ RTF_HYPERLINKS = YES RTF_STYLESHEET_FILE = rtfstyle.cfg # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's config file. A template extensions file can be generated -# using doxygen -e rtf extensionFile. +# similar to doxygen's configuration file. A template extensions file can be +# generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. -RTF_EXTENSIONS_FILE = - -# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code -# with syntax highlighting in the RTF output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_RTF is set to YES. - -RTF_SOURCE_CODE = NO +RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # Configuration options related to the man page output @@ -1947,7 +2198,7 @@ MAN_EXTENSION = .3 # MAN_EXTENSION with the initial . removed. # This tag requires that the tag GENERATE_MAN is set to YES. -MAN_SUBDIR = +MAN_SUBDIR = # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it # will generate one additional man file for each entity documented in the real @@ -1985,6 +2236,13 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# namespace members in file scope as well, matching the HTML output. +# The default value is: NO. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_NS_MEMB_FILE_SCOPE = NO + #--------------------------------------------------------------------------- # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- @@ -2003,15 +2261,6 @@ GENERATE_DOCBOOK = NO DOCBOOK_OUTPUT = docbook -# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the -# program listings (including syntax highlighting and cross-referencing -# information) to the DOCBOOK output. Note that enabling this will significantly -# increase the size of the DOCBOOK output. -# The default value is: NO. -# This tag requires that the tag GENERATE_DOCBOOK is set to YES. - -DOCBOOK_PROGRAMLISTING = NO - #--------------------------------------------------------------------------- # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- @@ -2024,6 +2273,10 @@ DOCBOOK_PROGRAMLISTING = NO GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# Configuration options related to Sqlite3 output +#--------------------------------------------------------------------------- + #--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- @@ -2060,7 +2313,7 @@ PERLMOD_PRETTY = YES # overwrite each other's variables. # This tag requires that the tag GENERATE_PERLMOD is set to YES. -PERLMOD_MAKEVAR_PREFIX = +PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor @@ -2098,10 +2351,11 @@ SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by the -# preprocessor. +# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of +# RECURSIVE has no effect here. # This tag requires that the tag SEARCH_INCLUDES is set to YES. -INCLUDE_PATH = +INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the @@ -2109,7 +2363,7 @@ INCLUDE_PATH = # used. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -INCLUDE_FILE_PATTERNS = +INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that are # defined before the preprocessor is started (similar to the -D option of e.g. @@ -2132,7 +2386,7 @@ PREDEFINED = __attribute__(x)= \ # definition found in the source code. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -EXPAND_AS_DEFINED = +EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have @@ -2161,13 +2415,13 @@ SKIP_FUNCTION_MACROS = YES # the path). If a tag file is not located in the directory in which doxygen is # run, you must also specify the path to the tagfile here. -TAGFILES = +TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create a # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. -GENERATE_TAGFILE = +GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES, all external class will be listed in # the class index. If set to NO, only the inherited external classes will be @@ -2190,40 +2444,16 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of 'which perl'). -# The default file (with absolute path) is: /usr/bin/perl. - -PERL_PATH = /usr/bin/perl - #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to -# NO turns the diagrams off. Note that this option also works with HAVE_DOT -# disabled, but it is recommended to install and use dot, since it yields more -# powerful graphs. -# The default value is: YES. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see: -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - # You can include diagrams made with dia in doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. # If left empty dia is assumed to be found in the default search path. -DIA_PATH = +DIA_PATH = # If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. @@ -2250,35 +2480,50 @@ HAVE_DOT = YES DOT_NUM_THREADS = 0 -# When you want a differently looking font in the dot files that doxygen -# generates you can specify the font name using DOT_FONTNAME. You need to make -# sure dot is able to find the font, which can be done by putting it in a -# standard location or by setting the DOTFONTPATH environment variable or by -# setting DOT_FONTPATH to the directory containing the font. -# The default value is: Helvetica. +# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of +# subgraphs. When you want a differently looking font in the dot files that +# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# For details please see Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTNAME = Helvetica +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of -# dot graphs. -# Minimum value: 4, maximum value: 24, default value: 10. +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTSIZE = 10 +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" -# By default doxygen will tell dot to use the default font as specified with -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set -# the path where dot can find it using this tag. +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTPATH = +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a +# graph for each documented class showing the direct and indirect inheritance +# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, +# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set +# to TEXT the direct and indirect inheritance relations will be shown as texts / +# links. +# Possible values are: NO, YES, TEXT and GRAPH. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. CLASS_GRAPH = YES @@ -2292,7 +2537,8 @@ CLASS_GRAPH = YES COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for -# groups, showing the direct groups dependencies. +# groups, showing the direct groups dependencies. See also the chapter Grouping +# in the manual. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2315,10 +2561,32 @@ UML_LOOK = NO # but if the number exceeds 15, the total amount of fields shown is limited to # 10. # Minimum value: 0, maximum value: 100, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. +# This tag requires that the tag UML_LOOK is set to YES. UML_LIMIT_NUM_FIELDS = 10 +# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS +# tag is set to YES, doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# will not generate fields with class member information in the UML graphs. The +# class diagrams will look similar to the default class diagrams but using UML +# notation for the relationships. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will wrapped across multiple lines. Some heuristics are apply +# to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and # collaboration graphs will show the relations between templates and their # instances. @@ -2385,6 +2653,13 @@ GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: @@ -2416,44 +2691,44 @@ INTERACTIVE_SVG = NO # found. If left blank, it is assumed the dot tool can be found in the path. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_PATH = +DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the \dotfile # command). # This tag requires that the tag HAVE_DOT is set to YES. -DOTFILE_DIRS = +DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the \mscfile # command). -MSCFILE_DIRS = +MSCFILE_DIRS = # The DIAFILE_DIRS tag can be used to specify one or more directories that # contain dia files that are included in the documentation (see the \diafile # command). -DIAFILE_DIRS = +DIAFILE_DIRS = # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the -# path where java can find the plantuml.jar file. If left blank, it is assumed -# PlantUML is not used or called during a preprocessing step. Doxygen will -# generate a warning when it encounters a \startuml command in this case and -# will not generate output for the diagram. +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. -PLANTUML_JAR_PATH = +PLANTUML_JAR_PATH = # When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a # configuration file for plantuml. -PLANTUML_CFG_FILE = +PLANTUML_CFG_FILE = # When using plantuml, the specified paths are searched for files specified by # the !include statement in a plantuml block. -PLANTUML_INCLUDE_PATH = +PLANTUML_INCLUDE_PATH = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes @@ -2479,18 +2754,6 @@ DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 1000 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not seem -# to support this out of the box. -# -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_TRANSPARENT = YES - # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) support @@ -2503,14 +2766,18 @@ DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate # files that are used to generate the various graphs. +# +# Note: This setting is not only used for dot files but also for msc temporary +# files. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. DOT_CLEANUP = YES diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/SdErrorCodes.txt b/extra-libraries/ESP8266/ESP8266SdFat/doc/SdErrorCodes.txt index 133c0a2b..91802597 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/SdErrorCodes.txt +++ b/extra-libraries/ESP8266/ESP8266SdFat/doc/SdErrorCodes.txt @@ -1,8 +1,7 @@ -2019-12-10 +2022-07-01 Run the SdErrorCode example to produce an updated list. -C Code,Symbol - failed operation 0X00,SD_CARD_ERROR_NONE - No error 0X01,SD_CARD_ERROR_CMD0 - Card reset failed @@ -28,23 +27,25 @@ Code,Symbol - failed operation 0X15,SD_CARD_ERROR_ACMD13 - Read extended status 0X16,SD_CARD_ERROR_ACMD23 - Set pre-erased count 0X17,SD_CARD_ERROR_ACMD41 - Activate card initialization -0X18,SD_CARD_ERROR_READ_TOKEN - Bad read data token -0X19,SD_CARD_ERROR_READ_CRC - Read CRC error -0X1A,SD_CARD_ERROR_READ_FIFO - SDIO fifo read timeout -0X1B,SD_CARD_ERROR_READ_REG - Read CID or CSD failed. -0X1C,SD_CARD_ERROR_READ_START - Bad readStart argument -0X1D,SD_CARD_ERROR_READ_TIMEOUT - Read data timeout -0X1E,SD_CARD_ERROR_STOP_TRAN - Multiple block stop failed -0X1F,SD_CARD_ERROR_WRITE_DATA - Write data not accepted -0X20,SD_CARD_ERROR_WRITE_FIFO - SDIO fifo write timeout -0X21,SD_CARD_ERROR_WRITE_START - Bad writeStart argument -0X22,SD_CARD_ERROR_WRITE_PROGRAMMING - Flash programming -0X23,SD_CARD_ERROR_WRITE_TIMEOUT - Write timeout -0X24,SD_CARD_ERROR_DMA - DMA transfer failed -0X25,SD_CARD_ERROR_ERASE - Card did not accept erase commands -0X26,SD_CARD_ERROR_ERASE_SINGLE_SECTOR - Card does not support erase -0X27,SD_CARD_ERROR_ERASE_TIMEOUT - Erase command timeout -0X28,SD_CARD_ERROR_INIT_NOT_CALLED - Card has not been initialized -0X29,SD_CARD_ERROR_INVALID_CARD_CONFIG - Invalid card config -0X2A,SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED - Unsupported SDIO command -0X2B,SD_CARD_ERROR_UNKNOWN - Unknown error +0X18,SD_CARD_ERROR_ACMD51 - Read SCR data +0X19,SD_CARD_ERROR_READ_TOKEN - Bad read data token +0X1A,SD_CARD_ERROR_READ_CRC - Read CRC error +0X1B,SD_CARD_ERROR_READ_FIFO - SDIO fifo read timeout +0X1C,SD_CARD_ERROR_READ_REG - Read CID or CSD failed. +0X1D,SD_CARD_ERROR_READ_START - Bad readStart argument +0X1E,SD_CARD_ERROR_READ_TIMEOUT - Read data timeout +0X1F,SD_CARD_ERROR_STOP_TRAN - Multiple block stop failed +0X20,SD_CARD_ERROR_TRANSFER_COMPLETE - SDIO transfer complete +0X21,SD_CARD_ERROR_WRITE_DATA - Write data not accepted +0X22,SD_CARD_ERROR_WRITE_FIFO - SDIO fifo write timeout +0X23,SD_CARD_ERROR_WRITE_START - Bad writeStart argument +0X24,SD_CARD_ERROR_WRITE_PROGRAMMING - Flash programming +0X25,SD_CARD_ERROR_WRITE_TIMEOUT - Write timeout +0X26,SD_CARD_ERROR_DMA - DMA transfer failed +0X27,SD_CARD_ERROR_ERASE - Card did not accept erase commands +0X28,SD_CARD_ERROR_ERASE_SINGLE_SECTOR - Card does not support erase +0X29,SD_CARD_ERROR_ERASE_TIMEOUT - Erase command timeout +0X2A,SD_CARD_ERROR_INIT_NOT_CALLED - Card has not been initialized +0X2B,SD_CARD_ERROR_INVALID_CARD_CONFIG - Invalid card config +0X2C,SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED - Unsupported SDIO command +0X2D,SD_CARD_ERROR_UNKNOWN - Unknown error diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/ZipMsg/index.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/ZipMsg/index.html new file mode 100644 index 00000000..54887899 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/doc/ZipMsg/index.html @@ -0,0 +1,4 @@ +

          Replace the content of the html folder by unzipping html.zip.

          +

          I have zipped the documentation since Doxygen changes every file each time it runs.

          +

          This makes viewing changes on GitHub difficult.

          +

           

          \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html.zip b/extra-libraries/ESP8266/ESP8266SdFat/doc/html.zip new file mode 100644 index 0000000000000000000000000000000000000000..efbd384196b71b0daaa74b510e7f59ac94ff2dbc GIT binary patch literal 2552549 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

        1. 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

          SKQt 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

          JCN=IyA( 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�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%0A%vsPc|l<_6uHUYJ^UeBx}b zY4tE)L5$AS_>NyKv%QNnd&XQm2LZdRH#aXLk;iFRZQX16)8pZ5!Bx9a`6931nr~M< zL63x9hET+8Qaki4CrRnbw9)V5xaXx8W(-TjO?mEVGLVkjxN1VCd1A#{MO8mcoHx*v zuCdY|I{WuVnk~0m*4VM0$@@vCzqcVJ;mWl(>~+)UI`z+!POOeE0O56#9xydsejKV$dm;@edy3o)(2aBx_yhhsbdkti zpqqlbX0aDCeyo6{zynKwQCcFgEE&%j^W;H9Zt&41I+@S^dYqlMBt&x*6ky`*GoY z!DIh%%+ZDgvFz71zT}0M$Q|M~_~wv?cWLW}FJGp(&R3b94RZyxUpvIQ9=R`qdLqW7 z+EC8x`cJ|Tdk-OGL`|K(mpS2h)-1hVcmX=M6u0%sp4bY)ct<#F83u;}KIy{_EA}$x zA#nfuMgymbv=VtBG>czf(<#-UG9%K_aygMmAWgqXQz&OWv#it`DCpp4xv-g*uV&le z+%Ht;L?#!hLCvr_te5kqw(m9fC>Fu8HTn+aBRfEHSBL{nM8pS1F49bgb+*btO2K#) zB@ey3g4+DhQH9ETvMoKi*02@opbw>+dpo!j+}BR$LVhE0Zv2HCMO}FoGUS-VxT0VF zItyM<#xo>)-Ofq^URRtH2Te#6h0XKmVgna+Q3snW?@t|@9 z=X4tHUtCogPbJJ%elY7;04pLy;A^Sh8D zOkG21kl?|>Tl5EU!Nux5)!0~K;15)j$B(C&a_=@X5<{VDRr+%HVZG4!Z+bl)g>qI=O%aF zHSl0-SEiH?FvD@vu47O)o?9{bo2!v`O8F1wB8%+x+@Ui5OXffJnLzwwW9NUA;OsN@ zvjhsS@}RF;vXbNl{ub$@#M1)0De0r$rRt9?a^)&^qtTa>&t#J&JgMs^idJ`e=1VFi zC@O9Pg{sysV^N9u;5>9tkL2@5A=ndbB31YUNAc*pDwMO~%I`7Qc+)3}NqIRwDpn=a z7fMTW`Kz2JV&k#{z1k(0!U7ql`OZ2M<>;6MGhQ?kQw!GVLi>h?MT0?91M>00GRR8N zK!j|Szyq-{0zOeOJWjG7PB-Bg=$inZDroX#hn!(yye4{WX>KYkF0N zmi}XDz~nP1Vez$ZI+NJtM`-ytj3KO*G1w{E{@Tx^Uj$EmWt9d1x#LI2lb0(7Ig^^dEPly40eokTL9j=e^sA4Q}+XTWr4_mAW1aPWRJzc4IG&fLXJubjYbx#jt zx6p~b;3H+By084CW3I8g)=4u9tM|UR;mRbv-21ibIAL5L1k}rArJep;H>r8d{bdw0 zhy+fTz<1p1o%}zQ&?Y~NYD63H_B+#+#a+p@T=Ko$ed9QHV#6+8=vNWWK{-)%DXnZL zhoSxmnsK%~Bzm(LRxJA@0uR3i6cu$bUh>*0Z#CO^*2zD#w$`kTh1j`d?SX#RYD1oy zu|^KekM&^O6AXm_gvmX`hgOAI4S*T5oPUCTQ-;_U7i?8Tr94O^IEHa>9cA)Tw*PRb zD?|GeOQ7f&6c+xg#1vU~9sBWN_E_e%VPJXyibNS~_7yrliw@1t)A)a?lpkmmn{ord zlyX${qkV9c7-7}4$&Qvs;Nc(k9g7uW0NyPug5Vrz_{>#;Wj~Ef&ORfr?RfJw&v34K z-tJZH`Hb*?05d?$zwfJUkisL58_-8-3X=QM!yjm;r8@3yF1tj^(;-dCx20m~?xpcW z=(#M|Ur#X0DweORZ}^d=XucG?|74jyTIAT(Pulk9p)j2(bXr9Y^+l1<2+hW{*M(2_ zG~L)2AWpG(?Bt~!`-R5hp0{K8G&safGYGbm39J1Yt4*oaF(dBU0sM5utOm^$XocKj z_(UM7((etbRI^MLT9&)p>746t3Yzg`G10Tj>gSECN#d5AhH@1LGL%sgua*GhL?~l= zKs%yx4fb&^sa}kh{PqilO-G!YKBGvqoe%i>_P?_LwNF|T)~4x3PB>u)BKP4p_LN~F^ywxu4U^ZR(EaXx({t@l{?r#Vzzr;N#%TGd z=cD2PpZ6|Ud`=H3Uh!+P!m-OB=reFZ5$&S*ykV1$DlPjH{ZSk zRR~v=%DA*Fn>3jmo%IwYp#hgqOtkv}leuhSnZ0jf`Z~Z0dtQR|R2X`q%;D1nf9>swc*$Y!v#_PGMjO2@*#7Zh9cTzfM}EFGw145k zEE(6HCwqc{>8Tr%{sfJ?Pzmpgm($=AFXzU-xr+~#;XZeWdTyEKRP(hjNpPK8Qt7j1 za|Nj$C_C}9r-Mu*STbo+vumqp5P*$FQ#L`{^>oKGpz-VQk&Z@w%?&-Qr|#QVO)mDN zrCOgz^w_tu^^j#X@7*Rg*ZWM7ApS zkj&pVUTcyOAs1IMkvEY_|n9!!?QF?y;TU4fQmYGbD4LmE4D+w|F8Q{uS z9lyjCtgr%rAyU$mI!mks0%?pJJ9FQ}D(NoY>O642KfcR)HK26J1NN?@SfdGuDV?HL za-X$?oD+#hD^xkg-h~cUZ5;dlvoUPbq3 zq0JFf6zGy2_0sR=rS*z6xD_ZpO5^*cA(uP&#IcFGX1V(29Ppy8f{Xr!Bu=FS_xvykTQhyz z3DLJu=lj*6_fXSF5jBW7vc~(Ns_|#&n`=~ZG0(g~Jro8y4j&jEX&{`51|1Nt`y_qk zzb#09qH@-s5O*v?N^_(tBmubgJde*M)a3tJB zpDjew9bgw^`14cE@`s5Wb@3m`H>U&06F%f$Z|c!Qm>j2VZ?kyG$luB6LdZYLBupO) zXeod{ji_OG6r;wAVM8a>Xj!vXG9&muCQ+kAUPV@*>hN`bs)ZS0tJ@yJ27Ff2JmT12!5VVB`xxey1-+3ao7jv@GKpj`NF4l?v=%4k>jPWTX z#N2t-Wj}{tk&mmnXP&mjI$jr>ZdWFyTGal(%w`4qUr1@{m#d-KGq;`_XZ94>Yxf!F z`QiiQY_$8_Mdq0$tAGiD>9(J>S8;;o(TjzD?r%+TbeV`8lpnThEfKEX4v_m+c`I1C z_UQq6lESUXs@X9>98Z%Fd&VCY43YBPSOOua07mzk-@z}=lI_zAH*MW=VSijWxfS{& zmFqxwy5a$R4(PgEvUWNkM#+3&nC7ys2&KWXma6i%+Jpzd0sjkl$ubX{n{SXLyQpc5 z20#UY*>f0BGL<9H{Z;m(Uc=a97|HsrgX7?1)coR3ehVTPN`|N*oa6DHh*ayY zs;qFZv@R}OnRIQWD)Y_TSDCXIbYjK?~GFYrs=OeoYo^5UK z8%z)vD~4EUr&63HH)qzrYLRFN6WHGPIM9rAU7CD`xpdTa+8K?ZyJkF;B_A}QB7D{Y z=uo|9+9fEvIhzTC+vU5p7Mn~@?_45Q*B9d^I9m*M*AjIx?u@G)+Te>l_5C=Oy;Y4N z{;lrK?vteyjDV+>7LU&9C)N>K{axa*NJYO;2}42%oy1u>KcqesJ2dfqflZjp4wwJa z(pqCD)O%lR#E2mgI;rU`9^ek3BmotS{anF=(M61>B=*S79N6s4YL^#|)aZ#S@k5sk zV``1isuBQ^OBz}52Zq_W>h;cwyF2%6=^WJBZ;(ya3VT@0he=B~SL_>#=T)rws zRRCY7pUn{qQYG|T=m+NB$s(n@;D#pzUx7qWub^7n>|==Ra3mTVgbvI_6NAL^usVu_ zV~kzsl*4zteJs1*N_Ygynhh3LW9w!Fe?=fEWYbpg#^T>uE@^uzK?Q`N4J?YL5is3) zN*dTK;%?p~u&a>^ueOvtB?ofJ+zk8fDyY!T3}fyrKYYh{5%B!0;6QF_$=eJx^s3e! zmy0gO1C}$t6Xv1CEa((49xIb3YVE_xK$E)>J23fq1Aa+;(- z_Jo7IA-rM{Add*gsxChp_EGIU61jH$)-FV$TzKz}MwwkafA?G$ezHn8xP6P$Ui5+RA{*0X zR?n}4kyl{ns z(rwS|&;nLP&c)8FTm2TDem_a0W@%l{MzqEM!U5Za58R~jm>1hNSh{7dCFy0f5d9*6 zn|EePAg=nAyLqDAAUTl0nXzxB-_l!%7T%d=l3vJ% z2JZ+0x?Y9`1AQ%+ri+TK+^t8L%vfXKYx+eKgr16t7VJ?kR1o^)6JKkSgF%2SWI->= z>L`$TR8!KQ>MR94=fMc3IXy;&nY;=*3z7;tlz8Xx_Pr8Ec_<&SUijx}7MZHvgc_fb zykTl_uC}q3nu>Go?9MdBWJk34gcoOTTi!yXBbOs7U5bzLs#{R@ikGur7PwZ*5Uvo7x?s$bV{405(zLfE_OI&nhY)aXyC{yw&{+$%gEIa&2v zr4AAtAJ$D2iFP}h9FA2`V(t@8dSJyDb%8QGd7TOC%-AnWrdYukUkI(WK|fa*LW4Wy zI^`mrK^fcUzI-npM9D0l&zU$9ojWm5P=d8o*%M>zz5<^<@*@T zW6Aipmljp$uc&o~@{uSWi37um%19%eZs;4|(_FwCfj9J&Cop{c7!1l2N37A0o*DUY zr?frHY91-A%QQ}wuYQ2@4~{f+=AFpb+Fn$v(GhWpP%({?nCAey{2Gk02QrQkf(o%r zZ82RQQpCzzG53i~OT$O9Q0{PF1$D)w9Bz$%O3pSqXn%;yaSnu#%;3xs_4ik0<AONe;PU=95M#Co0zv~i=vG*~GPxYs?JS`+ai2v!Q0;nK{3_pke zhCT`PR!CfM;WsE1H6PNp`im1$k9!6h4(BoR(oHH*;pY~_LlWva#)*RjOR<63#h*T(-c{#U+P5!IgVMiT;%lD!`lQbu{0? z-%%b3HjyHU_ne_yQ205UAT5|DDP`N!)LXKA707S-x?-|N;uiWv1SrQV`sL{N1`dZy zjO7(Bd(fK9#nB1H#@!Ls?3w6U+Q>A@TOm(=Q9YwJrS(4HOErvuaLt5-L0x9s%X}5_ z38rrs)AbTs!d>NM_6H>G;>Pa~El)*`;yL>VHq90ESYUm`V$={26BE?fp90Ro)tdP{ z9k5ikF)zrM@BKf4 z$Ee3yt&{lt7KMrK)V1sYT@e_qYONR7EoO*i9hJKGFEZ6-qAf``>vX6Z1RMLh7dd?| z*@M*S(dbIEGU`2+bb_SFcf4qja7x$JDRJB&Eby`eNUg zD=rw>h|NTIWItqC?q6YQ3`Or4YF4RLeMOeYM5~HC?sfe&d;YjQPC6fA->GI1(^t@< zWN8+bb^A0qON1h;&Stw(_U~KXFZ-$*@CkVHB>@9+P}90U=y{4RC|@`<5tBc zBm*M*^y)@EA3>A7mkuB2jlcR_pWk7xGGStsbrWNg?kXZaHT@|=3;Q7q6Ao8zw&A=RNVK1eCi|*fddB7;r3cV#bY$j+38EwAocZ` zR#l0!>CIV7l}yG?I@Ul6PK&NjC_3YY18Y%e*cd(-&(2Vc94t3Q_{el1Z6*oObmUS)ak(R(MF4S?qZp&Aj~DTY)b+>c(K z+>Bdzs|Bn*&m>km1kjD0;;j&yxO6EEFy0?_F*q|%n)4@^o^eKJ|Fi%T%+OU3!c8PQ zS!EC2MSKT)nHL>@IYYpDY;dT<;`IdB;=630mh+k#smBMQmp)r4J z_3oAgkTv({y-c1Np+0h4yUbcZ?CcH#zgD z#8fj9J!f(j*t)3b*|i`fx>odV2v&iyC`*L!J_W->8|B`|TH^?P#!D}@n)-rq)n(t| zRq^>v-R9Azr|&>}k!zf6c|!2m!mLJ^=2pm6Ds6wc+@7YkLLjOhn$lwK7({H7V_u_ zZBW%w0^_~qPSHLAuG@-7dM z_0?95nLc8B$Z*c&#Q*ReeF%jBAP2T~RLm6Gc@6tDOi|!f(Q7U{a>W`QQ%Y%s^h3M+ z9AOz*NZZSPx4V{W(!5y%%(We5@giHM6u}?6UkNqswYvFz-H=|1uS#;lN_+iYQ7k@l zcRId_oR?H$GbX90oyg#{D)V#;zkg#oga=M?wy;K7KIMYh#c}%kpb2YFYWC?=c{K~? zRI=5{$3)l6=Et&Zvy+3`!3mZIz;wWNfh>pj8;>{hw@~4dht^xa%P5|FGev(y z?g#w2)jpWG7-x)R8Zdx9?=*lKI#tLHppL2cjwpEE@1l^SE`e9GGmbakQU0Dy<}zn~ z|A9Q3n8b+-#t`D{;ekg^(-EW2mZh5&ptnR5XE+1dX{97iFpA6lU+PPk@y*9hmTX?vRqr}0~HDX}Go;RzBQX0y!B zw4VV3EP=Jw3EHFK-l6ZGO^G&SJ&|^;?|s!9cBVxxJW1Dxl8ZYD>2vA4r-vPg-&fy& zi~9Ht9w2K$j}%unsK}Jg*WVToVo2ZXVd5)~W8oQYiSc*_X)U4R_aSSjn%vhSL$uGR zOQi5+qC1Z5%Z8dE^(@;*B5#Z%7Q+BaGyR?+;5B?*05L8W+XCe-xz+TM3@N{P;1xkJ zj2EG(+IE44L6n+pFSSH7Dcv5@Z5MeWWq^mmoVk+q7Pa%4`OpT~_|vZ+Ec%s>VOkE8 zc=FB2da^s1_!;;=54p9%uNcwa?0EGF?o6Gi^2#no;vRogc|yU*^Y~6i=xD^DAQU@< z*X7_tt!U{~>tQ&5RIigJcD#&UpM+^aZcN;OW_I|=ugBI*zLR}|;EbBho=Wlx0YX`= z4U6g1JLSZ!b;!-H&6Yyp$!>C$(Y>(@r5IBQPb|0q>Lwm)TE==y`uD*l<=Am$zsEz) zf-ycQ)Dlg&tLqXkG+0H0zDs*`llWqpo(lL!0?M5#Wb_xUa!m-VQFgRuRm=98JhMdS zsgv1KsoKccN>O!7Us;IzNzbeAO!A$7%1+>U@`sHqkv#uky`vA2bhFAT4mx26A7ZRC z(JFr&QSLW3B~<62$WCFv+tNe#1+9ile8H6Qrw`RqWi;3BM9M>yjI!Pk#1VNKo3#ji zdE+Oa=HR;gfKqG#NCcxkTbA3cuOLozHI-Yba_^Uuy~W>+jB;D!sS%wIu##;^|(c+5M=ebgm&UPu3h2)fYo96cCGi5{{&jPj(})>HVic<0Z!2)rN#iyHKu3 z?Wk$i(78+B`sJ{=)h-d;L3!F?Sh2q5XBokIwQR`qaTn}c3)gw8lF~O1^2wcQVTaOA zWVP;j7nOv6eMB2`RO)8YFzMr4hN-#_0r0J_NuO%h(RYZg0dwIAR4zS(i9bh_<3r96 zSdU4P%#3(ZOfwaA=Hh#b0z~W6Qq*z!nx|3Xe4tBbtn`JM`-{&4wZ}(F!u8x-y%<#$ zGJ2$btGCa%gX0z(#oH?6c)!l;Xj<*m`YWdLPz5U?Bv$=gT=P=MVg0xvDJrp z^5f0@ykMAcS_y($1bzOIcG3WyKnhCHU@W?LucHya17)CjJk46*Sw+N&}nB9 z|KY2+1p7Y1ba4(C0;m@#<`hY1od``j{@k-BFcWe_kHGv;RdQ%$WNU|1QLPEF1SN85 zE{o+0>JT!dF@JnUEQ<4k^RQ7eA=+NC>X(a<8yTxVN`zfB4QKw7U5q)e+A`%AKADSH z(J-M!Da>ayVT95kYEUZYegJ+JSYUj1ql-{SXEbFY&I9`~2DiV@=0tXfaOOW%rPr9@ zr9s8@7ZUX+P)wA-{myKB zTfb|8b!C3|-6L;BVNkA-$Ig7(q#`M-;5V9HgM+QTDR%>dPXZrzHBy_TaZia4w*yA4kP-s@0^L_ob5PAV zV3tnLK5-T&JcAr6bTa8LsfNJwDnJ%YqjRB8&1-cp>8YN3WA${x0i;Nkl7#ApVS!igb#Zz6?)gkREoudFH zK0&G-+0AGIHfrPcszf=ji7#LFCNz#8iofaK@DQVbL+6`4KniQ3PU^>_G&_z2H09-y za22i-a&vdCw-gAy&&)OX>h$G=ga!2}MR=%jjFUBK^fr=ueemJt&SD|%&Z zP~^8(mU;CoS-qHQB!~qli}h<0Mkq--)(=;!6IKZ4u8|^|fZf+#olV4KBt8bjrtiDTCh1hu zN1V!XtWqiRuN{W3wB>5a`LtoArEiCxscIJLnZ6`~(Vas6K$$g=-@z*uy_b;ir3Y)lJ|w2SqE znPI~X`H^)ifoZ4ab0bz$X7P+d393(I5#F*^5I~3zJ=yGm?+A%L$fQVbk%~i*yD;Jz z5-Pql@iaj!>wc}<1w+PXmw8cPKfv>$ofTTH4h78nJO!k*0 zi_M{W`&c$7Liq!xF1w$9`hmJxlyz1`R$K}8v#o*(^Vr>lJb!EkP*ICUInTLesf3X{ zooV9SUHn*~&#mw7O+JSe0TU9<$q(0}R2f;X$dG)UB_0?6tiXpPf-0OTb#zrea+qvB zXQt7Abi%QbV<|N|=N7&16F48EP=t_r7Ln(In;v|3rHV@IxATfUn3+j90f%T6`PJug zksU1^c|^8d+H>sx&I0UXX7V(Z4gw055NRYcF#}v*J-s@ZU^YJBUMM{3cmTT3d>hDI z=iL@h)74mg^tL7{B{kY`8Z|=gY;T-fzI*YiSVvI5kBxi?_%|=DwINO|hkY%#wTrt^ z%pJzmlcJcR5iyz-A80^X(oIY7PR%~E?N(M1$jNi;Y?v(7davMDVpZoAX|U>AcOmpU zq8h6R9H1tITJhQ4#vyIC;u`cRW3Q7HBm2n+0uF^c@TrfzA|HV|E; zGarg8wV&dt9NYq5@;bi5sKRWe=cEEgJ;jk1bN#MK>_0OvLpo{t0C&G@Mhde+^Sn78 z_%T54#<~3Av8O9iV%(sk=*r)}Wq{vc;39smcMcd1tsPzu@8vEx5nn^w0ul-1Olk|F zcw(-a1r>dHk;KlP@V#v$^=;R%!J#)>Ut`)cIF!A`7wGuvn2si`rSE(1`iodChaEH3 zpCh}Z^BP%u>}~tNSWdu4U6B|&W!0KTsM~0?h$uVh`5Mbh3_`L-)nO3HgE4?A&RL5a zVY34x1zHNwcRv8Id{BkDCp&MVn|sZVlm++c*NY9G@Wf$Y`i#O4aTg;$;~M!+WrSFa zbPQx;HU@;52d_;mU(60a#JR&vQ@u~_lQ#0zWTfRPoPON4k%VpF?rC6*q+*aWVh0*k zWi3|8zF2ZLkI7DknsScbs(lU`Bv^=DwzQ7ouobLP71rFvy14mE5Kn!DDSp|EDl91m zU&KtHdL!#tW@p}tzpvK}sS8DeIUaC+FjhD@PMq|19)?j~@oK2^&vH6PmxYjn(CKJ# z{J|qgzMbTuDfuEqx-${o5lB6N1Uyw_4B;&$0<$Inn|-{pxwEdChmR1q2BF6#qAOZ! ziDVs+&2P-PUoq>m;FNOn15G!56-xHj#h>P4TZlPslaILR-xZl%`@p=|krQmgD3n(8 zfc^;#Q$6bo;vL#c$3po$2)Y8hCi`zPc9~&YDyT6}z98d9)@mE&ofHk6EEVy8E%dGi z5H?5Iry@{7Z%)EwK}}9NbArt0MvE0b`wIgK^vV(`B``rG8YV%O3g95V&P7fSko#GJ zkR8G^b7h>yJcVmLE@rKb%6MV_hpDfOi?R*&CIvx2N>|qx*1cy4(?gR=+5H#y##@wvsJET)fTn41JY-`5Z9>^cKm!#=Tc7Tm zD(W?uY%b zLC0=E?Jz3=XaO;{gI`hY(ZvGr>zV-CqWWvGuynLZD89Zy`Z&J(-1F4z8dShS8o^em zp&>-_Jq0ATyhBa+R;5~^{db=jqL{*&EU=~*vTf8)4g&4V#i*kB@;|ORq4h*JX;K@1 z+!Ku)26ZT;4To*SdwD}*C6142vP^A(=$HTw(ol>D0Y??Yd)T&GzH^uc3|Z@@_`PFkeq8X%rfE5E zmru_r2XDA31>i7$-D1G6CNLZH7CM)12fey1?C@X%G+f+4UU$`98k)Z9=Uvu+rTh+; zYd#|O0+Wynbq1x4m4h&o*%U~y$i6)BxE%3NT%vD=QOR=Fss|E+=ErW_h>2{gMewFmSUwa5U8V$S+B)rPy`S&&6fB^uMXaVw-Cgtr_ zOs{`wO7&9>3J>ranX;okaJE)$Dmg&2e9~Z^wv11E&5^~%?N9YJi{OANs)B2dI@)pk zE3Z46n$BU|t67gRn}7{OUb#Iq9Zj35Sp87fEs%0z?(oao+3o*uwr9q9wxUUAtbz+~ zA;mL>4JCz_ke+0S{QdmBomYMk2wEBlS_?)L=gI8Ri9HAVbN&II>@~d_$hmytAtXmJ zL6$&8;Mq|>!5w-Hpq5$G@S%%DgdS!s zRP59+YZVajt+rtJ4K_`4%0Qaz*Nez7SdP8c^&e=k;E60wuox|&2x zzOh#~_D_ZzMmO|5)&Dcf{rB**klj4ObNj4$x5p(Ew6`M2c)t4dC~@2yDC~!(nX(7m z==mjovFjIUB0QevG7AAvRs*DKS`YGO!rv>Ndg0kT8mQy6Gf{k7*0hdD81?b9RhM2a z$56;hBtp4jFp|HU}9U6=((mqAvqtKIVb)!1|1PLkDU}hyfZ&?zqWkY zSp-zv6~%O84*3!&uZP!P+A?CP=Yec4`V)r2#0i;3r` zXM}~M{-%-TA_BerQG%`f3@4s8*6PxbjG3pIj}JYlCj2*38T#UT|A82l;eJ<*pHh<@ z4>5)TfZ+alw5SF+64ZXTqkxBDFuSvU0`LturLppv&F8#ZB2IH7D>YR>M_KTuHPE!G{G z@xw|auYBkr<%dfS$`NW$?O6v)=%Cfe0_T0J@4MhlPt(*#d-31e;SQQUk>1)fjJ!>b z7Mre{glV=olShwaQfvPKHw{uCQFFoLy~>8jbx2gypHzKe_|l>myQarx(mUgnprQdd zsK(C@iE+ai3`pfn*Fg4EDF7UG3AN?@HrAE%dg;T=lcGnQN*x-5%tL<@-sEBW8sw=k z=W31n*h1CN{S;GAEEWeX!dzX4MA!Bw_~k2_OH?8c1{ep%!VN$-{9LVqsQQa6XsM1} zi66Z;w|6BpxU048Pgjn<8EI-o#lqC-zW($O`GP7@Kj9TgD&(hkf*m~{@P|V)raO;) zA^>|Ir6gPfji9sPNpyKm)j2_Z^Yc_3Byvsh;3z_*!CX(bo<|X5Dx?!A#8jO{6Mk9T zXfhZjcgM&)9PEho@?|&?%R`|;zX|&XScQt|8NSi2@&Q{707^hU-lh)-SW2DMD$A@> zz>c%;tuI)!^8uB-iIMwD`M{F#?8jpIR6{Om53e|E2h3`)6+iHGz?n@VOzpS>d_Q7N zmg+cU1rdUdk9VX&0yf-0WwKPy?yi`PA+VMp=-e+0q`dcJf(@7MzIQ4>TAUXgN=8Mh zYJ*CKw)LJ@>=vbcyw)Nr>950IN2v^asuQNB=V5R=9MDdbQc6EK_$Orqzd-{VEWl@OY&?j79Evkx;;J zNh>wBtH-?}wPWkRwUDOBH%UazojYAWi9QFlOQJmJSyvuMtY|RP<2=P;iS0WUt(UQ1 zHRzX(9uNoTb?|`cP0+#t4Yi^=QRYSXMR+PI*k3L(tLx+Fdz-R1&j4SBoOh@+8(sb; zR1z^LG9-dD5}>uAU^2WCxTiD!_}*7%CTj|?#@C*{=d6TG4o&=ztOL#mbagRgD}om~(`ZQX0<&>&3GEc`y)xke>O)7B ziGEgMsuV*CU8W7~$uF7oFe!hLk8L#{dU>7)9qDg|D0QBGNakq%{PRe^Px+1Ym7N4W zG3m_E9!Dg7xX4)oOH$VmJ$>X@4V&r}E>L$-6cKhyY zHw$9E2(xU2aN&L2g*wyPB?Szg>Ul$~je$Xr8XE{5w~+>V?pG#+t4vE#-CbvIvN+Gk zj7}>EIu>lGsGg*~hn9A}>v!iD&WPP=(*Cp>`qC9C3%dcAM&{Q^zK1*DIADU^TDHmQ(0x0 zW$}+v4q`#v?HQE1bI7C8YRp228kqk>n8ev)e9l8_GmS=>QI@ zNh^C55W(5u0HgeR{BKr~fr@n(oM$Yk*yax%|HaXwKrlR}XeO4^_Cf&G)M0j0@}5p8 zyAtT>k)2?n+de4E5Q6KTFmpKvh5e~cJ%7%xjxM9?<)sOVM7~%B(cb28x->j&b_GLx z0sXr@+xq65@LZF6Me#_L?M=9X(%j<#%}w5@!0?geu$~{D>Zv>b@RYTSubkFZ4~Ew$T=aaJK)1wO%gFB>fMA#=U%F122dH)?V#w zC*5<$K`0p3tE$OjX@LNhttEdQ4T~&ZeS4;{X>T3hF{7HBHP~>QHf3qFuNw#!I2db* zXdO6=DfqlRvOXouUT#gj=Z!W;I)k}PLWAbyxEInLv1(InbQzeZl~puE7G4r=0QT2T z@BWUp`?&rh`JXusa?FNXW>;T4XbJNw-NwC}nV*Il4|`p`+tj8Ivcd{!=|8 zR_pJ0QmMnQ$f_+vM*{TL;*Q=<6%4btl9o^{ubn&)Un@3^6ScNt>z78P5Y!bV{>hP zAQdNwjdQUK-Y*vcEL8gTa|gk%sQbda9yibqv8CPNL~S62-Z@Jh#cSmJ3q5)cB+4vm zKWD_C8q<#|fGZ#>l>ydBhWBVVJz^7e-xP>CK-)*54--U-*P&_Yq?wj6+E3wSIzFe2lLQ=J(-k$$EZT4hbgOU?H1xKE4`YgpFjQ9&(# z>wi~$mSmXF^W3Yt-q`P4rXac&gKOt3)zH5Y4|r;Yrv3c!r^CLCY{{UjCxo|ucs}wQ zDHDi1UuvZA?b(5($yUK&&zss3-bh``%Mu#52sgcHhO0EagN5|f&wTYTgub`ejrPiG z^Lm@Ef7dWEF>%zD8uBs!2hAP*=@P^!mEyM;0l4m~+%;!;;=_Z~VMe4w66mAm5zFqnGdnl%zR(mAB zm7Y&5)2ztz!twq-b+Ca?o*I49bD?Q$TwJdoda;e@o#8W0*_(X!GOrGQL{QIGBQ&G` zVn#fgEr&PXsM!wh;`=n^`SId@GX+jnU&WA>r~N!aeQe8J_v7cVCHY*AyQzH1Ts~8bk#c2ps&xjo)*v=clkfhY#@uP<n9>c>y^9O^FZLNxh*rGPD+!i_;?bQ3=h zJ^JK$C;UL2tR(XW%02=kRMDd_)~1n_Z{^%z+a?M_Y>u85b0xA{7Gf4GH!mu;$0IE& zW=`?j5)Sk^=b8VGFDFtnQ$BZ_fRlL|7O!)K_8g4eHi+(rWfRoZPT}$eHw>3_rk(rM zXqM08SC%|}xrjZtHq}pqu#Z}rj(DYAJ+zXvH3FA(r?|-X^-Q2(GpxRQl zl=QHcm@z|#%CnLJ$m&9z2_Qmpik@s6O&?u3`znML6 z=cnu>*O@eEMZ~4B^2ZXj<}zWr0gpQXJN-`SbUI3=Opb$Ohq2iB*qJ$n3eW0Xp-Exe zdc5E?y10vW;}w zx`I!zdaU*L{W?>#A+qxkre90%l486YyG)Bbndn?}x3r|J9(tWv2v_M+P=~*@CdzeTp4#)ScH?#)I(o-a`P>A+HS6B?hE}M zp5e?MNh}I?7l*F=NOBQ<7krj3B4N^yiU@Cj2Q(#97oczWinV{GUGfUfAwX(lhRIT- z10b|Rg^%Lih8AT#7^TBc<4`7j!RPQ;VzNLpfva`_6tZd zo!RA^$@fFC;)9K{3sWiXp?g9Pdlnc0+VyXI%c|*-jNBS;0F6iib070H$h!#VN~9VhS&&Kay^P2LYf0FXx8da|p#$re5uS1DC= z=4>H;&7>rkB_Z$+%Lb+ajCqJU&Z__*?>(Dv)axDkD(N>7#&7qIJklIYAuXuUV>Q{YtB9-*2lQyZU8%-C}AH z%HPRMK2NN8%R6yhjSj#`{u&T2)MRRNk=F*O*Y}j;+(K<$iqYrRg)WQeyFB7j$2S7< z?4rVR&;ckZFLbjD6z5^m^PvF4I?y0|SgX4Hle780z`BtkhkGj3JPAGmT%SK)L0twa zQixRB@myvv{+(4VKqB&OMdMjEvhU3-UpDX{ZNygpQ!dgD36dS#*MUhQt0t0)`2dkq zQ2h%&Z#VcAS&Vj-M<4cI?J}midpp_Ko^3}Fa5A|!IE$7wL%28YYin|A_bg4Xpx0dE z+PYKCby~fi1*25p1pJR*_liFJFG1U`3hWNPvJv<@lr2dOLd_(c#;sc*LpqVuSbZbS z-MrX2GQ(--aYWu^?NAxTtfs^RvmoF(**&ux2~#RVU&J<8v?-oQ*O&9+!4B9_PToklKD(#6h{l$|MSmqq-zP{eC_Xgf%+duo2#pix=@7kn*)b$#=|1*$C5dn11fd8qIrx`SQ9gx-A&%{ z2L$5pd~L_H|9-Sb;UY?uJQcTf>lUwBWZU3tc=!(@QvANd5j=#HEyhaD8JZbCBF(qlg<$geq^R$+{K zJfFJK>+R+@;R?=rh#%{u_Ajw!5DtK19<9!<{61cNt!p**)t6I1gy zlF3J#LYr;K36UoY>ICNZTjQ$7f!u-WV$c$pk#YHUVFVDB_W zG~i3Sj~X-lgqdRgt06{>$zo!r!*;9$1*O!0}oqt<(F30e~+pmiXEtsHVk-3K? z!O6^{D*q57m74uMbHYRr)yR%TX9*MXJXY$;7gJK zA)v?F+-y0t%O~t!Y&+ZPvB0FEy$VTJVkNgclz?=g@Z!&f&|0utNWCNP{GVNb<;4j& z<|vLt=@4de701l(OzDXND`x)GN3S<;4r;gZ5??{wZCQNVA3!v78?M(a`QbuwdYsi? z;a7S_b$3EFHA*K)hx2oKmBqua)q>_y?6b_$|A8i+?{~J=it4BOdn;RZy(>(7THOC| zIs2t3Y^%+q`N7GWogbra*cQT4j#s=2qW&<}GvmNFw-&O5{|yxaoVc_;{URI}+(EQ= zS5zrQAc1nvOY~tr|D7Oh3dfrc3`5Vupt%_S@D{WpDO{L{OKOoEX z-Be9wKHUVB;~rn3eEJ;@m0RukgqVQLs6ObH;ANZj`KCgbj@7aioy@it{K zi~}hihV`rd&+Oy8ir5O!>+l4BJfaFY#g6aEvtBuZbs4T>xZy`%j@3g41L#0;L==)a zCUQDvFNUD=ApuK>yxR$}%miLXaG$bL!g?;QVkL-0f9rGr&sFYn4Rz@R(iaYM`NsQG zWQVZt6!Oek-Iv{>v_yc{Z>2u;})B(mU z^nkM93gr*Bzt#EUIf!~c^Sy|_S0zNhPWi!9TpYGTIsxwd27Ul&zyNg9%;q;u@QIja zOi*PUUi;V~hjgy7cw?*5G_iLC%aExXh2?YvRU|uDox&0E02TplJ=GVF8>2Ei8fDsmmv<*`pRaa`b zJoF@UT1BSp+SD6U1admP^YED-7~j$sN@uK%%cb2GGW{eV9pLe?mJ@D zvzf+fudUB)5%y2T>?)5Dh2idmx09)-h6X}M$Wwdmgb-2#tvKyW(bveI#EanT2Q8p$ zuuWYe&+q?oJJX&HwUe%ns{+ozsNq~1wM$~(BFW+oA;=X8xRHh&aKQ#Una-w}!{L;Qw;WPJ7$wGJ2~LghTd#Cv zQ|jt>zQUEqGp30jm6F)6P}nh5eAM^Kr?eu{or`(w{DdDR*m z+Eg~DT?==H-lZqP>CEb_v~KxqC6}B4)?qb$@1ZnLva}5-!ts4?wb1K&X~dPTm_@YD zksp%;^Dyg1QdJ*c1--nOv~ob0DVy-jTMV)2L{g75s}{5fzu!~&VK+18S(O%#00a@-o!2PIP> z{g1!40CCZBt#6lQ!RD@r=5?`98!VT`9qUynW6e^Y6#Y6-N2F$fHs#fo&2#JDB*EI( z_==Y~H+JR<9a>wQo}&D^bg6WVx+dcC+vfIEPH536xji#qi3w%Fezyl&!zC4adTVVe z_2GTb8W2H)<^@wt!((LwAyRwz_06Sp7N0r0SA4HGD!RD;h`x)K6Eh#H>sc>w$*3O# zS={B-U4OI8U#Y9tXv2vfQM`GNlbOjqt7E=D?sMxeQEpw(`@1fCdP#5G`km%h3xD3z*j{@%SzF{^Jz*Z)54Q-x<%EudTY2OmL=fYkTSWZ@z$PqRt7j$~!A z?6B@f=K%t+f0&5U0!C>~7f3%4>Yhcti|y`DU94ws%|MI?Zc|_1A5?~iT(;z^JBZ|R zr8$QMRimZw?x&pa-HJ4O$B)0tzJF-4X1k6_>JFD2OV~oIZ?-8`4{^5}{wcD$A=oV1 zJuU%-sw*l|Jqjkvdff9o;lPzt<2SGST((QAWz$i@&0e^2Y_Mm=q%4j%#ub_E_>ZqH zPey;WS%S2FiB*Ju0vQoL{-ij-%O((amJ8&q+Tlw>`V`ea*?&X_AQ4#Lhx^W14vuW( z-^*Ka6QBj?=61pL7kJ`e)GO5WpJJ+^KJGGjv-6nm~Wo&^#E^I4D zj@{^Qj%3B0%hpxPg=X=pe9A8A0?9vb3Qxm>CCGj;z>}&#eAg|t>r(Dr-0+QKpACIB#N@kc zXGmkuV-E118qfgxK>G203$T6%@O^MC>pC9fDyTc^ePe#=_U7tMpu-xk(RvcbZd);( z6l$lL;WJvGbRSW}!one-DH4eT!Q@SF7g8^o5R z0qL!BYerlMEskCJ<@Qp1a!!W%NV%g=e=FFh%j_6}g904ZK>+~2R85R|Pg<7#UO)LP zS}DD8<1WXJwhX>sId$mVVF{dlYpKQQYD5!sA70 zc{&7F2V z{JOk(utB(*RY|q=BaWwK_<#9{S8>4M&P(vC-?{dc`4vSIAK2y8e(_ks=pf=Gjkncp|X;6WczZ6*$04M6>n&l>OaUxV5 zM(OTtZRcJrFnIbuSmj@;cV3d%bcl>$A!D5UURx7$07lC1dhhSm$j!@n)LX}H4~8@9 zs269j_jX6Q04=844_QIvcsZ+M8XxV+f`#HIvy+LkNsyaQw|vPvPqDPm0OQOozjkwA zUS8DyZX16)cwu9|8DahC&bT~foa_0OOvjTB;gwf!mpd7SOMkCE*%hIId8^hnS;O{4 zr`3N~c}Nds|3}h%U@4j;`PR?FKh5}an{$s+I5PeC&pdTPFoT0mzalFT;*Dtiga~F5 zRzN#{{gHcvx;uqlKu74573}u2_52k}dHh=)&MPtNzC*s8pTq-xVcD*jv6@VXdqg%e z80PN_&N@6W12+jMnf62JP#{)f{bOY#NL9@*F$<=ZgIUxt?H`_LX_NeTdsjhsCR&V~ zkGg9?SE7{MAiUkyqw0GlEqX%V_V*yCP67p?zGw2REg)vJu}!Z`xKW_>euf!@M(@@? z-0{Wddg?pc@0UT$#7R{?P1h!;+w?JLE7W^(0RE$i)6CJYZ3y}?13|6=@GTA)d0#Ur zE*@I!QxE?>y7F`(gG80g6Wa^z2g*J2@KJ3L{835ZUfHGCGN7(2n^PStCcmOdKl*-S zy!15guoY=ZfPBOvW86Vb?BcTYPdxl}HiaTdHS>NF_M1upYOZG{6K{FlUVO9o=okrI z+|aMLbFGa6S?ABqGLNfJGgPCM+$SsU8vht+bv=O#-7RZ|KCExpVx^2f{~k7(83sw# zH9|nr9ss0LV^T3NDh=;RL>GMsG8vu0eC(_K#{c#~)%Ne~&(-fkcaTAwB_y6B2@e)5 zK{MC*IpVf%3EuVlV$o$HALmXA+KKd$fQi-0vsQEf?HSa!p0{g9WRy5@C#vKIsoFZ1 zDx3iQqd=$$wrw5IdL`CF5qD6$s}XOPgpS}+$Z3!xUgux&n z<;RVH8?oUj_Z~~ILO=7~Ogi*XV0d9LmCN)w2+EzyuwSrT{&rv9(hvUSz<9{YuZ+s~ z`WnQA12HSVYm)pE;Qv;zHwQ4*VEYz_b3eT4yV@ZwWpa1Vocw6;rZ-} z-)m7qmuKxAwfJ*!<>8lo!QI3H{GqI?)@5cL?)B!6Yhl5#-4Dg`@#^`Isu*^qB8j-O zZtb-BqDPV&2p6Vn&|O(sxx)9GU@E#HL6))2CJB;xK~mn@md{sP?UqeFWPr9d%cKYS zqf{>WKhlaW7Mn)6m?MR_m-@bP*;^rVl0D|S$&@ys#5jyyXF-Ru&vegJF#z^kuwvq z805+3k2pLJ(vkB&e@)9cxKRQx6MTw0{St6O9+9!IgrOovk~u}>Q$N712`k>8JACBk z-}W3uZ5NZ%HZ{k6)yhRa|GNHSFPE+VUUEB=0%yOfDG4!46z5c0tRnp#(zay>oXn=P z^V0a6e8p_CAS2({E4H%aCfUs$^D&-Ln`oOqdj~iKNT+4(rD(xeJH_=J^XP3V@92}{ zfRJ0YQU#`$rZHYAK4&fsvZpS)ysGR|zyd?DIu%yQV`U?xLjdAvT8U0Xr00I8d#3#q!G9`Gmp9;dxf z*FzF_sNwq{D8F~5>-ZjH_arAQ?>mk?%e`3?ApeCTivy3R>@I_6&U#)J10D$Byq{Wp zZyJ?r;k@U5%U3*wJPjXm3qn-)05grYszI3=Sy27RXM=!SWz!KtiO%HKEkI@_`!kpe z!#t1d1H{}O`Iei4Z(}$EN`w_b|E|t#zG~L|I1^S(m#DwRJdg=ZmY|GtiZWB;k$3E~ z&<9M5qr{Ae4&A_IpT5u|%3m{<5i~oHzF-|NlQ>{dpHOiRJqjPS1R?B3d}`oJ?^2K` z$cUsZz|3t-1%loD%rb5^i2-{!`ic!t(sL0dVbRY5|0hu5Ozde!D#+Idnya=EniGml z0zRKSmHQ-%;}m|g_m>oh)?hDWGx2Ll0AB~FA`m*g+lD!}TL9qo`hiym+XmSn_fVI% zI$2b4U=IBDToKTfukQIY(my|@I%WBcQS!UhlrtTf4I43}FmTzSs8Q@7u&RA_HV!nA z9_a_+p2SS<;4?azo`{m3nb!&9E~J-%EN3b@&yj!eGM)ax6q!Rj1rFsNvXdFAh{h*; z!b7uVwYAOL7>GQgq#1zewQ znhB=c>f%I>k&fgD!t@{`Rnl&BH_j3i&p4_vz=|E}A;wbhZ)4R!>i2t#2hzAhCeIsz z1`a49>%iZC+~T%2YSA;3GSNAb<uY)qTH&O7`-8uKF%vP}%8-X5mqE5+XYB7A9iL&~^A$)6%{t}Ld%zr+g0&9=s8 zQCG26$y~muV8e?za1|l7L!aAS_wxVkTG(?{LtoOOY)u6Ail1m7Gl<=WbVW~IBiH}x zFUlg2H4<(&_KU;d)?(8%yj&ztY=c|NA3E8fD)>hbA?&jF!E0v`N@O>-j@1|;7lVFC zcUX+Fjef9@fN+RvyH19hSnUUWYK~9l%$@DUWtv{~v@c{%qd)D7>uE*}*thlHw{_Uq zf(WFdg^v&HjB}^t=Loy!!wD0{jsM&R3o%(gcE*%?ZVJQNH)cJyoy=%-F)}{A<#Q}n z%8&24$9DL>@uNIiT_!09O?)GQ`t${D4=z+%d|lSp4HeRx=;$Q_h!zFNYnBN{?Dm`B z9>cGN(o0S6bNP$bEWJ!LVmYufq7N@^sQS3H`2z)z>S3~j?nJ{^A^W8+n2ozA(0oMK zuKIkA8h=hs2Tu{LX&K=XVJn=dVb`6|bI7Do-+9YE&s3nsBD^;C)enR$nCXt^vpJSUjv1T%p=s zAv?__r}Ks)i}vv+g8$08f7)f?O>k`wdK&Q29}yBv1eK~Rqm$d`QHQ!l2ar4vhP9YM z+6s!S0~XGgPz!GFaKCVP7#)O-Rpl*K6);+HI-xgQr0N#K;VTk{a z9Z>Y}YsqXo!^qdaSv@<=qdue8)7^Uf zJ`|Q$M3T##n@TL1DAhWB)U1Tvc-+Gvag zqbTVkbA?sTBOxqb$DN>^-l)C}ks=uSe-Gyhhl-zHs4) zkT8iCW+8lKCg}>O?}KuIc{o&7D-LPZSA;LdH3mghco$4hf4B@9`7{+uN2(Lv{NU znaS^oFH}D$vc2BxBvTXTXC%)k4#Sl7koAqL*K6 zr(*X#doRSypssp4&pZFKX!gZaws*lro~_kw1j4Xns}tW+UC>$Oz)geI>=5gQf8q{& z3zA@%t8D<~2tk@qe=Nv6M2}8_HSqji?0O065uEj$^7DUv!KrV^CS6;*eYbPV(V!Ff zH-F{ZFLohJ?JLyhibf~H^j`(Im2`g}Y%>d?`0x|^TkA3V!mEI5O({HM8S1O^&N_TS zQ-JwY#PLKGuVW^)+F!X2ZKl+(C2TNeKqS(0<-~<(E2S7ifV7H};co(FnaY+-xMuK4 z9Mh#e?yT56L`aXC=+HfU7ip`0*hhjoD#k?wW&Xy`WIUw!9#&} z#r610PI(IriN?WF$h%z2PuseWv@ebNz>Dqy5vw|-S>-7DQ)veC6|z?GKQ=@C2uEM~ zFW=eTv`#~7IA5#JCGC5Xdz``on&u(T00w&`v)R}euam%9xqx3Q8x*g0b0lDkqa>Or zK=<>5X_*I(JXu!Tc+9yB2TMPv50~C8(aQjqXDLQF&4gD310`S6%)2V(+r6RFpy->g z=jwDE6&S(m(Owm72JT1O$>pUXZB)24d#?kug+|{_J?eX8dUI5?8hGxsHVmmtZV-;< zRs7Z@>zq5gJUc(KGq5x;0)-w?;;QDpcQ&RWaU*3k{3K*7-cs&ZtC_@fndhJicRhNY z%0?NcN0P6oTx=um>FUQ0E>tk2A>Fz$?c2hMVdiMU8tN*UD3V!{PMagQR^NNN$4ko2 zl|2;X%igT*i!o5LVj#6IG8@Av*ThkQmP(|(wKAe&3sa9)hABhlE`z^h!MblJ~8UyY%<8+h=_kng;8iIBruWu^;w+!ZhPIE~0IfgHxfL zhhL7ny8OXg9~G2C4#biGeT4p0#n~{eH5^5}WjaNp?jmbqK5YT(cnl zp8u8}L)kPMJmpVMHh}~MK~udX;v0#onyMc{$5_z;?O_wwo|7OBuh%sWcA&qe^@dAE z6m`!JXG1yCwijWV?sTFG?f65&MY^ZH`CCS~qHQ`^*mVDS9BF0(YlE^XLej9t17(OC zb0!gUj}_iI^`phtVS1Fy9JI9(TgX9i?DdEwH4)7h&0M!b$+8#wxN%A1!|~+AeTybd zeGg2V{>#p=_x8_#pfmfu_;SI-bIi@!9XPHTMZt9~_T-!*fgOs2>fspp$5~Ww29|9J zLShuTbR|%Bib_LlWz4~H-92N?re__kS$VK+8>R9mq!tz|MwnqCjw|#iIZcS(RQ%J3 z8O7%Bu+NIFc;^a@&Dn=v(-tDW?W;x(hf$Wjs~0+L zJsaUs&9ap|MP^jdt&}Pzobt`Ng!RpdiWW2?WeVTNZ58)R}s1VpS#PUWb&${#F()ekWr=LUDF~%b8MJ8_si{}&dWrM=iyoo1flVzzv4M5TYR&O-jC-RMywL!PK;qnF*dZ*ZYDdZ zW-93Y76K|>hl52JH5x@Q-@{#?mKFka?<#Hf%zGJwJE!^} znACgcU)13!p%}i8oJjc4wBpa$!F>tmN_Y)Cye2{&GsdpPj%KlZQZ!9PkKgl-re!#& z(qg(LMDL2%HD^tbXdJpf9g>+2%j`l&^<~|ENs&9-rJY`V&|5k=Mo&aAp=E3`zv9nQ z@T%kKBGy)>Il=zY{C&B$u|9&K|6P5xhtOF~MP4Tdha!RiLZ@-R2NQK{G)2mQvi*oP5wvQ^WQGcv|>u1i8 zO6-RkALtmlb;1F6&aBWT^yh~uUu0~`x+Qd`YHj;(ubyRwRJE(%}Td@CU z7a&&~?Pr5&?lFX&FZ*?TX$y@ZT|*{IrUt0bnXDz}b$knAeRkM(;3u~8{QhKYgT$ej zL0N41FNe)Xo2Q4Krmx#1PQ{1~frRopsv>k?ruat$t6Ae`m!wLQ{igeTx9}!o=F4wh z9TihDB68{3*r;h0qzjK*k|w|O{UQ$-f#~Z=7OO}qIjPtL6*>!)x$A8O>u6$~d_buf zu^YFb{#b+a#_zr4kGo*YfQb8%f9s^>{pF=?Fb_Ei2HJlaR5o@evwgG_ulB;G^qpiA zb+bMlGMJoh-Ld)k#-|&?b#5^(h}92>XM z16dXas$7{z;#i#8XoB3u^EG(=7F}8=+OZ@>U(dEfz#@bzRl1hi_+nN6%Am}=(0ohT zQeq+%=NR?o&8rUm$P9n&kZrMg-iX+mImZ+$)}aSBj^lUU^#D%Qd4qHM#K-l0e4ExB z3d-z&A_Q_8WctL$oeCFtX}B z;%!7ELs}$u#4@Y6YHJTA{m3<7rms%v<@-o*Cp3UhNQr9yk!a%FL2*;aR-g{B(4>UE zDW4t2v-M(e-}za#3A#+5x`O^!!I1mQNkHlE zBx@>-gL)mNkzpdA%+;)|)_=sLiQX4+o-#nu*iZw3R;LJ*{dyf`eH`Zjq@#=_XF-&u ze~Hb-o-8{nIIjE`$7b}fdO7y>NCaOmdA90%(rk5J#o6c2_EatX(&EL1FWz+DOp};w zL}6_V$3ZbYM~$ifz6wL=NU;v>n>{9A49{|#Q}e#8e0_O1^yTK|U(cE9M3yV^60 z03BfatO5PZJyINVIo!lrHo&RjHg`7gEnB~KQdJq>LKUyPBOrz;3=^m~_sj&!`kyU6 z#~qKYYev3f4IN;n7hoZjyN~kc9SDhXF9qEkB9Xk1{Y+5S6Bk0pIrmw&%Nt9;|j3ZRiN^*8%mSL#$XLk1^*iIUui~Kfev)TQaiSi{}zP^_XrJAI6NNzD_l^Rp;&3tpDDWs?Q+icpG_lzKF4hTg@H{Brz{&Xe= zi*ZXV5&1Kr+8g6XoGceRR=1r%x|)nUS%v?+n>2ZHgu_7rAKoq-`@~+?oINosEN}?^ zh5sjX@LQ1K>wRwZM!||-=u!+}Nhk(BzUQvpp9H0IW|xa6bT{AnEBEP5wIL6W;%#u) z(Ixf_jSP*uFprpEk`2&eXV2k3#L;M!u1HhuP*2g;pWaYUto1eY+1Z~sX{UWaTXZ z!k}m9n&>6P$*ss}LM&u5SQIF0wCAg+t#jlGE1@lnDhfG4cap4GV|SPYpHA(PBwkc>;_uy&P&m@ z569$s%5MysIZ?||YN1e5TkDtmOkJ8u1NOb#N39YplxF+LSKc%M6(<`m*!UrM4)RQI zsis3fEMCl~yAHsK8Pu-uN#@)8hA$iT8W2bG3alF`>GIRB1Zy5Am$CtCNXDd7dBZIy zXPGmEnJaGOvQIn8mGZ3;ds4fPf?(1w{%bj)l2LQuKl(z#Xwj^qOq|g27KGIDA<)U5 zCBXQ(sgccm3| zJk+s!L523MSfc6+*O&b4fm-(eN7q}2McH?NDb26C5&`~z`n-&dEW2c`}p>Mz%g^3vDW&&iH@2&}?lQ{=Wam#f?34P&zDx00_snPr)cLDh~B}Qm7brZm=YO; ziL}WtK2g+J3Tm%EP4w_DZ2yo4m@}t|h4-x)Hl_^=0}Vyipwwyx7UJQwCX|u#c2?H({3{UsZ*&l4Eqwhlq5@( zFBOy7xUlT8C2WsLIh3G^(?s$09)IpHqIZeig3}oiJb4fA8bzp})Qx{NJ`O|dr1Cch zXLFGkTEkE_q{TPu&7)O`|0NXpp$W^q0!y4mvP6`le>139YJ8aFO006K{W94k72tdz zAbQN+Pa8RZjuhECZ{h-}G$w0ZXJ_JnUhE$5NE+EQxCXToB`SOX%-r0%GjC-o*2+F< z|K)y|y77m3h`nc0fKworu@Uo8N~b9HK5gycwb%VDQpA)7{e(`EA6+@v@ZD-jbPXr{ zi!;qlQi0~H4aI2*SVKAG&P_k(irv~0+L4W5P;Q^{byBNEX>{}T4`oZ;aZrt%>FR=Fvpv!QO8@U0X3f~f4i1y zgJlLq8Pj{ap7+NKAhB}#a@)CIEuz`{`n@^pEv7aC1cmk-H^A+&1MQLg@pZP(BjS%6 zWIocJ8!|zj_~vMb=l~zWBwCo=W`1|KO>rrJ)KtYwyT7C#4Vb-eLJD+jrj+TZY!F*_ z%kj0rC^~ytJ?cG@eRhuj>HhRJ+NBZsW?LUl{^9p-wa%;{GPjkNKt4YO9QCwc^5c0g z#yCvS^xOcR=15!_08=M3(CHlYYtBlR!I=%3`QIkGYOHM5=S!qfss3$*N|lF8ITLO% zW0a^Q{Sr>b?FrVsuhl*Q*469aZHjsm&erPyZWCi2gpk&2ok~r&YiMHjw%+qq5WZ^QR(u@)t{x) zt58v!$(N=IOhBeEPEQ?UbTe+e*VzX|7DyB11YTon-k2tXW57|ckwJ~)!q z2J)1T;XOtb2|e0%SGk`7!trfwbE;X|mTl$nHp`;wi`81Imrjh;N(Em>sikIxiJ=9c zzlwB;^ig2XJd-q)A9c2jL!r0l3-Q4Sp4S{pT6b^v2thvmBX1vFwEYHj@k zS7IOCd9K%oBd3v~npV->prKtob9k+qC+3u6r2aZ(d#3aK5-){=ep{=^^aowX0caaw zw!0PvA7`gwEbia3f|g(T0r&~3E1i}Vt)pO9iQ+X;?-4#*R&Klg;^AyGJkhcXh)Kb~)~zAl6DP$q9feLF+MnY^dl)swBbk&&+!1tS|M zZX(1Qd-1U`xm1kZ6{y18<+|x?U|{~trRCl$&~2&HITiyeh?NF`!!8O&5EY+37+ z9Kx{>>a)e&Ho{SYT#B-``z^1oB#)y-#OAl$J%&FkbdBg2y-1CnCp+?ZxwgOV>@Gsj zsAp{H0B|2t^ebB0e$9uN=~Hr)RHIyFV^@SaXnyq25@9`z4B6b&R+%rAgyV7aJnmc` zwOe}%*uo775qf}G2|fxCUp4L=Tkzz8>*}p~Df~j;KAzna3PB#J=j>?A^&qcF9M>tv z9k|Psqc7)l%R#L(QsLCumUo2+oBZ&v7OZbu#UH+=9$_ggct~>M}-MUZ-I1Ji_xD?EZTq z1TrO3+-p#B`pS>Gr(A=7DP zgCzkKhRyahy0!)WnR%gG&!xYd%nsi@gM()l=G+uU4++L{V;)uv+)T{T2?i)|0NKy% z-BCr#NM_b*Ve4hq@p7+;9vmp0ltpI4qs#v=V88jPzi3qP6>;g5zDQKR`qg{dHzY_V zuvV14tK?uMN-CEtmA}>%6!+(j9Upoe86L8!@~@d)JA<9wUejmDUVw1a-T<}C5d)om z`bQO9YIGiV;&zg3&|LdPnkHlOiI>IoU;n{gQ&CRVctTQ5 zEYFiS6mWCAF?X1fd@?VyQ;}qBsjy|a|1-rxZj>OS12qI~O-g24+qmfRi%`mBQ%tS_ zx#F(cc+U$|c~N8gRc4JyoZrI>CN#-JcmwO&DhCbSvE)d%4DHSKu6v!=(u7=5RplQh z{LjJNsQ8hotH&1fd5k%_2_&spe5~ofa!%H|Cj4inyf{-h`=YUAy}*o^+1^hDrcyf% z=`2NyKvAO+UVxbM>y>npSULKY@rcS&Ztobtr9p^~ia|!MH^G{np$vb;1R4m;OtQr5 zO_cPrF6dO6yTeB%DRvU6aE(ci3_cNGDy)tZahru9K;>yE(+zI7-U_1Tp-$)y&wrx* zw~snhF2<@DK`BJ@vv&u3blK5yGg8g`uP;dfrWnz z3dc-fp@3oyNCNU!O)h2JGrEG6NZ?&i-iyBDk+H?deF>g2>mv_Ns)UdKrWi;{tyw3Y zgQ1(i4ZvFl0B<{f>E4BUf?hj>GJj3ig}42+TEJ3dbbGQvPs3jbye5uK)dzFM7acC1 zkOf_qj1D`s_)i5*Yo7Bd?Vtomo6-n6(w`zpFZ{9fxoNsI`H?F=JaWWbrw(TenV8n` zJ?MXJpWI<(yq}s`+dHq!V2Ewa_h18NtzrU2XZ~;0c#fazS{ot;G?12y@?#uxA_|Pw z8vuh;&<>drPoC`RwYyCAzm2V?(EKy}Aj8)ZC$>o2SG}$pq!KTaa@}c$in7{WbXl2O zr{O&_rr;rDSvDO(!u}$QbS?kj(bF;uOKcja8as{+*|5sQ9Y^=SZS8zjKz6-Qzkb|( zPuH{opm$%>U+(TU!A~KYb{BhUihGiV00m9XXYr2On)zw$J>DY{!w#49P|ecMq+H|k zS~WJ)i5^E2ZB&N#X=~d#!1|L^Cu7H#xGG;>wRV#k3Yr2I-4$jHSc`JB^sgbg|MCU{ z$ryB*cCe(X(t8;~td?BbsIEgM?1E{}LK5nf(v5~%09c?5AbY$&sF4xSzqN)rhSX zcEs-8&j0D!j!8_5J!RZAuz%yd;M9Moo@)@SLX9^d4fxskfp7BhMIJD!Rd6Hr+S}E> zcl?I+;GLwgJ+~~6r`^SlOKH`AJK*eUI!Xp*UX#;Kct`GF#x9N1&m{H-arc^?oh&T_$5s12DOKDB$nCjKI%SwkU|&PlEeBdn=xczu!-Oh0p<|1R1ZRg|q0el=29n#5GW z(CvinfHN3g#w+qt*0K!ep`4ucP>dusPn+Qop2Wfl>=re*GP;ElU8hdQY{nDJll5pS-vlI7UR4A)Qbaeux~BDVLg@!AdMBYS`_JG2SxrgF94j~VAi$wdJ3xM zp$<@HuScnX+_(7GyFULkqoZhPX{%wsk+oRV-8cfHsJBZ03<7iIQ=H-E-Ow3Hul|86 zl{>XPNU3=yV&l>ONePTH{+q%VuSt$|_a# z2xWknQ0n!L3s(#17gL!ML@X#J8HSR_C%xn`K)66>tYH)h=_ey&}Yqm z&tF%t0KZDKN^$S5#c-%GWR z^ZBy;NBp0}071@~-^vC^ZMA-G%B#NmtkTqRPbiQ#BE3D;a#mN5jxsxK0pb+~FcOGQ zJPmOIHO(J|pp5iZ-Ae~pfjXeS>;j11IS*l!QQCR7I1do2yOjB&M**fp?XM|u^NIH; zS5ibQwD^eSt8jGVtlquDJ9_@J{AYVpobbM}gL!R=s%KR<>H6utD(U)AlGE5>yWnWn&2kPQAw&Tuq^L!!1RCP`1Y*ZANR>ec{UiDGb+oe(_G4%hBIl6 z)%p@`4IM}SK49))DoArmI=ofWud~PQe{fmg*xYULeRFB}-~}+uJ)2&=&5w=c{9Iqn zAeKk(uT4Z)#W_@KW5*X4MMfdPP6aLPevG0=PYbvlL+}QBO4?sX)h#%;4QD#tEzdN5 z6eq-Tz^kOEinS-C(bf6J01@rx22h%3(#4*MotK|~^hJyzA$v*@LvxS8kNk*CGd`ik z@04TBOEHPmA?YVC*|jy4DGpxQ*8(f2fYrV@$<~x zjK0m|?1Prb$RQrvX+((<)NFZ>kfx-jYJL6jgngbbC@;?KV>4gkh?^xhm#wXBPvk$f zN5o52ES-6@JUM@8xdVcb&Dh=_TFkn-x`V%^w7(L(UpY43H1uQca1P5a{CLvFkur@n z$Q79Ess(aYwA3#gG}8;x5Am#395LbmdF|H)$(n}`w5TZw=Dpe1?l2l&wGrpZKO?m6 z;OR?p;x-n!bb*X*FiE4r*$o7bI?>81`0^EOW-9~Ch7z`T_L2R}Rj7=dmIoCJs{S7U zuwWgn?+@PC42}bPJzQ%!0qTF7zaDX>4b-3%fKyUBd~SJEl~(D03f_$kYBKaFruWC{ zX3TX~V5Y)ZOc;>;7o=q96L1|-@K9Wf^0jvycxj4Fiy!N1&w}{~&z*`grq)2vEicj; zHuTbT(iH#bqFD&;2FoL4vyUbTxD|=Y2}yx}lmGWI07{)Vsa3AWa^_dgZ~u@#j`o(z z`UI6(x>#Il{dfrho}spc-1i`7{|Z)_-GK5_D7{%3Gj8ECA&O$6#Q#nwiTTBIJ4~_3 z#*Zs&NSHWzE#U-Xo_PKp@93SH9AFndhZos>eKo_p$T(5nGqrgf8YmRY0U(RS;8O-JZ&L~{Zxlo$I zsJB5QNS=h|&80RJjO-3T%2iG77Ji+6wq{)DI32iYI7z@7@_fZK=oUhDUq)63hf)Qt z;PQq$8HCBx{!>isQlL7;$ziGo4-lstfZ5)I7N}&&gEYhW6d*OeG!6CA;~%qhI#fJt z#D~lFV`@KH)KilI)s3O7Q}VXO?8|gBoQuHKCQfgGZcHJc>c4jZEOUPTp6$aS#2X+p z6nNx572=gGdlwF9k4n&Y zb1nes9q#pav?6z^k^rU~TIr@p6YSAQTZJMWDrkgS|LLbytH2BZQkNFvg~kB+<6G*- zZCYhhFA^F}xaKmWBNy=o59Lq?FwbUQZ5F+GU3QAYnzmF|Eo*jQ3M)anrZOiZMxF#c zu9`ZSEjdm@cvnKIZF83$2c^}#O~sD27a2DNf~3^&?ZKR{#cdXlS9?TH2h}>Mxw^lW z*KCGSF3eU%FmaS|=P?54^NIpzM{fAl1ooWSR8|01aD?SS-P?L! z+avt0jHYK!r=ov6XoO<6;8s8IEZmDu>xp9ODLt&u>Ed zyvwa0W`gxD117d(g%i!l;v&wU&h6Csb`i$yhX6kyGbMcYb)^7DK)Ao^Y9sgbp8JfB z6Obvu-%ZKY4%XjauY~v0V597=Ma4jU=OOtfHTP_{t}tX_Q9y9pFyq~JHr(Hf8N`Ee7pXL`G)*W^1o?`sjxnLo*jH~4Y&88j5Z z+EZnk+Ti3vVbssZu%bB(Wdj6Co}3gke^`ET8t@Q+1LQ%hEDu5qjqdc$KW&*CHEiq6 ztw0h8PU*W_s@tL)gcC6|Q{|g(bbnF0ui8fT@+Dk^v{-f8E%DG9-*u-Z+TZ=-*mcpv z&#`hLiIj{bW}TeK0~N$8I9b_a0I$N%@0Iv@U=KtVbvW8Qm@X1Zv|0 zUG^KqbBXdCD1n9n!7S5)^#`AARX@ok?4+m#bWC>B)yCvI!y&Vjv3gk97xH}}+yqGO z{tnlQ!$JV60v_-{ctHRQf;R?|@$45Pu(*due#3Qi}4<^XI0Ch`LacyNvbiGzxDiBL%@luX%O)_AA1A_B73vyZi4 zFv_Q2-tgqvB0i?ISD_is%!SO!R`uy+26(l#$2P9(UUagaO!iiCBo%S-*8I&h$7e9G zB@7FAH8p?BfHcqnw^D2Ag5pp}jt@X47%-XQSJ}tWti*X#S5jrwS+C0uohexiOZ|r6 zH~bqCof{RMn-Q4YQ;-DJtU>Ee*Exe4?6m(7$xF4Zbs7&)ydj#Q8?skX{WWOIl_>v- zi#gPbPF55SVK7xN+okF^d{i5J351ZDu-X3@c))t>e;;6q)p_|m|AVT~1kzFrn0u)3 zDVREB9h?)0y7b%{~sQE$qh9#zD9EpcBtQY1N>I_ z8h4xsPqs!P2McVM24@?CwvRyAfhjzn-ITvDUM-H{`0SrzQ=x-o;r~3O4H}024T&k+q;oTvQ!S2UXL6qGlr!sOUkw;oC{&IlJ>CUIB(XQiX zv4=S8%;?P6cFm|XFuo}f-jHpl?Gs22=TI-M zI(vL^=}@41+2i!bdnCw549RAM%7U0{NBOyYjc_igl}P z;;d!W2}!?~yLPUnh_tO{D~ayk*-Bf2CTg70zrY*dSHFg0F;3f#F0nQ28I(Im1fJUm zY5cy=hCZaD=@{OaV++%@ZVE{YzS-kW#5hnfZF2jv_6afS2+ltAKxh9;#i9-M8J&;CWKp(#&G0WH z;<3MTH1_5~Zk};Dcr?|Ek6(6L7?RugFkjCy<0q^XI=$)6RS3pav=kkL+TI1J zM*Me?ll23TdG8Le^i9Jr`$E2xI@^yEAq&3R9=FCc+;}tQO#eyfCab4|EB@5Xphlyz zgLNTgzA1N`xF`q}+@c0=MpFAvlL#)&QiPP>JH8rr`{Nk-_ke?8)D#M8?Xz&7q^eULF z{Pf2~%e{DyqIj&0Bpb_&Wr*HRS2f;iLxc!H59}owbH>m)`4x)b+e3#TmdOhWTk_r? zYBtjxI30^w;e0(Z3j=2DpqnpatZuavB*lKU09iAeiL*A0&QxvwyR2)%U)!igH9L-9 z5v%}R&T&PV!$P>{H-Z8>ICg$t|A-yEIE~Lsi7X@NAKaD-_2|?J2m@5z+@D${Wbf3qsXn!pVklJ6eal&REA~HCd)U7dx zxaK`hjrDGG<}5+maE+>I`&G=(^%sN2UK-p85@xOP1?R#JzxI2o3pdJ?{g5`fJ0Fvb zD4Y-7(d(*ND^d&JNWQ>$Na3Aw_MEmu zVkuvOs!E-!po2H@Ll?yi(;VuFRW_sE2OT}I&lP<2)a@EYeg?BUIRMnon7qFZ>Mq0j z+Qb6MMu^;LY*Z;`O*cI_J%zNYz~`h*cvjx`#V)j;;viodp%I%v=d%pDQRaZcn;LoMThvd?3SlgI^;N&a7q;29An=(J7R$TA zEVOc-ygyV&?yoZ#uoIRkGOMS5@U)h$hMPZsGjqEI?i*77anIABOlcMdqW z&(ZI**dD4IvAr8nnZQfv*;=WYY)~w+)+vkg_tXGPfGRt-)6RJ30$s!1ncqaj7V+Ty zsks*&UR`Uz{$E@;kDJ`;}9z5exr%_iJJ(B2c6EnQANbrU5vb5 zd@0#&P*y(W{w!oWBHF|t4!#THDsi5f5nxP}gh)t6Q`+mMJ6{9lK9*s6VWrpRp@y-`(+vIym z7KPqTfBY)<`BV0d`!&DF2W~cpbD_CwHB@H_7Gbswo8B#~BI1U8(`}QR>{?=gk3t5f zFDzzk3ujo27s6fVdb0q^#l3MAgkatJ{(l+-;RCX?Z)8`Uf~;womR6A0 zxJkqQzpOaMdm~=%ocz1kL!f_cww|=@+7cE%zTTz5Vm?Sb<1zU4e<`fEnxc(shQT{j z@xOqbq*YfoP2_8YtBW$a%1+38{3jAp8#Fql-JHxkpRIIOk|y1nBLTr#VIe1p zefr_LSk&6m#R|jAxF;C5ci5OY997wVDW+kjweNGq0)!%t5g?FqJ<QUl|~N%G$(=yQas{i;0NViuRjg$_4dT!hD`J;n<=+ zbkeRbI;G!b$)i0|IP;u^FYIxdD5ZO!$j;z@W5lx`$h;@sKUOK%M2dv=v^0t0J+P_@DcB_ z^2kf3(#ZU?P6CpVBSuv(p^5iP}nW)VWaY9)1xBRnKcNyXxu0z{~r9Rt+El?QOhfFUj zo0TP;N4$ECazSLPI5Rqf$@&T=*vu)DTUZg;qydk9zIG_+PVtYn1M~<8%)_9?ST@!C zRiX`>#^~A6vrO{B5AK=`M_u2ms^@G6PbRA0TXSlxjHq@s|7F)6AEN|6U&6?-WLLkotSYJI?W)Mz&=-LB{BJvQ4TP z$8W|5axm=%(V15~?YluByETGlG^!Tl#kQb9@Ja4v+Z|-pWR)bqE@ff+2YI<^@*;2E z84q=PG}Zu3dCkj)l)rBZsS7aRLvs-#dF-*{9;h9mA)9O&R+=EL$Gm^f-9_lTA1qd2 zPS|_z^A8_5(5ydc{`aj9TNBg2_XOneoTUVxtzj8rg^uHf-yTYRt9VNXNXr&^-TQ1N z(Wi~shw|D=qv(XQJY(P)fB-aRUHU$gDDJMP&skSj=d|Gg+Eu+JVXE0#na#~Z!p)YS zy5`VriV?8uw2OJ&Q3US=hal-D-|}6=ettY`ihM7Py~l{QNQNidnAxRZ@Ij3X)fZbN z?o*^5enJ7IG?!o~ech)(^yqq@@@C$Ga|grS=Z$ZOW1s5pFkwm(B{~UtfQK!Ry*(e} zbnJ&VYJ+!Y56@~{QI*hr+v|c8vzdI}q>RhcF_qcRW!5Q4q!!l~N;ZV$LzF(3)qhaC z;n-b!5;&wTpqllOFw4*Q3D^3uEemUez6iY*sx+Mq{>%F=4T*+sY~d_>&{uj0#*qO& zgB`xu!QUHz8@fmU(&{e$U0WAy$m{wGeI{AK@oPUA1zjnnrTQ>SLW7nn7J=3+?a%mQ z>lVkqvN$tKVYyc_7WEm5)lGWO*^`;%;h(fjFh+^A5EMFnud$0|lLskD8)X zvOJPwo4XydTWwcNZLAH&XVDd*FH#8J#d`So@&?6Lu570&TVNpEgJpC>-SalU&QPH5 z-*v#$bgU}}_(34YCipp|r-qCT2&Lj-G^<-*v3&s~ zRjP5B7+=2-lSTQbjnUm9eEQlcFFx`-bYjNJTQ>~WIeu1#Ec^f<8GCWosq z`;DsJP)2I3r=*%{lszEIK%2Zd&LavQY+|V|0#5zI=$P(`?r`Phd5SWQf~L;WABgww zJdhWMy?sW5{yh9%^6=J&z#figb{2D=$m>D>d8>+{o`(N(4247`ZTBZ1f0ps57w;_; zohSU|-`_nETioD76Dka)&237Y|MsriO3ryAXb+2Sqn4c;ZG$UY74$Q^_Jc*r;_3C> z7@_>Ya_Vi{(CxMR+51?pgiG1oopfjMomq5Y9a; z27j6_${K@T#PhCP*emzbSIfe+s7-MS+MEMKRg*r)=hckWQ$jbW1MH}GeZ~6&lBcHr zFvp+Q6^Yr8>sP7DXnbj1`mHlsE+RB_$cXuro|abi^EmFsmzTsZTNyYzVM1Cge)z2; zmvFIFb#fkl$nE<8)5meL^UNkn&hF4VGKH8JG%>3_qAJdX2)%Vu8|x8Id+X`M+KS6L zW7VPDBo84=EtD{v*e0t3d&K32WIut${^bo$;A)wDk?>jTjfAi5@pcs5}r0R=%x#G^e?pEgGE2-C!LGZR- z9gBN;t@6+r9RpV}f{~WCx`I6J!Y9n~k&+*CwjOT&$yD`#wd3+B$%1sie2`7Sz&|k>eFx@*2T_i3wsF=r{b|BmxOQgk$05_H3>j|v^N!SLdyy2Uxp(T`ri zaX$j{Zdy}Aoi9spA32&tleqBB*T3qLl9KwSUA&^)x9fHVnR%*)uy-PYCh5 ze*&h%FtDV02SV}g%WAQTu7`j0Vs@@~slA3K)fv!j9SP;Ay79J^68}v4b~6^*ey6235YqSzDaauvet1 z28ssy4|1AmknLdyi=QE4c@=e|YUYcbSZXS3-|ZGtW#|9tW@Ir`TuM(8jGG9x;M!5_ z^~c@LWhu&`N*D&y4dS@>q**3B56~ zXCpaxgy}OMQ>l7J##hJG9!V`ngWd+8AA zsMbh7E^XA-IUHy04JB}XWJL3$IL`g#^>yP5o;T8`laZ7n6$NvyByZwFLuCeZnx~^e z3A|tI-Jq8#);25)5=Z-0}-bI9Vqq9 z6JUI6f{?hW9j3Kfo0Ius6g!8;=T}EZ+(ECSbZ=XOLOGJSU(n4T&NYs{y>iqVH_-g$ zt@_f|$G3?50sD-CV#3q*3vM7>ogG+ucAah%4|!z{_$`=?+>AWXuI(_XKfG>YtM<1Afn`jU<; zJ{K{jXSR2~(!bNJO=04Kf~)eoo?eD)vB)IOk9-zIB^tr9YCaONZoPCL$2aCA!yr%DVEk-=2S6wcyy$2#B{q^g2@>AO|MAtv-_lMNfuIw;m zin)^E#+u{w!9QjeFn2A%p4xZ;3pTp)=yXHvPj-B-1uMgY6{X=sJ-<~&jda_%nr-Ti zs2Sl5DdCp&^7|DYOI=jjP_?rijA^>T<{935_Q_dxuy5Sg&vvs^vwwB-zjpyJo;mNV zE3_?<3dKPqpU&Krl5IGf*P@kJTe%k;OvaAYg71D&@TA5#?QC^Qb`}dTs(R=e6%t~72Kyu>m8)KBc83!}#qCSYD8SFXLiG$L zo6isradWq3uw2Tj`SByc=BTG6Sm3Dzmo^r?16Aj*fvrZ!md-`XPtu_|=ky-+elV{U zH{OK^-R1k$dzbNq{X0iy1P978_{d0Wyq$nOb5ruxGeZ=*QG&74;^*p&&&D0GIg-T zPTbr1n?I=hnt5@WqW9wf2XUp>*ZC??IEHkEiLU=MEJ1#$6Qb%p31VhrOZ`*%ot@Z- z2X&_k9C(lRQk2-)OY4g$nUHDI{H35m3*9`A)oEw##r2%|B2j;ux9JyALZPV5m1?ny zun6`?A+M8jZLwiR1c1~wV~Rhgk4ACr=d|yr>T0J1vM=MVK)v*zyuUIPq?)43=V5C? z5@B8|oc81ou{JDBrUGOk{uHK+UBZhP!YP+y+`rDM2?c5_Y;DJ^^wF|aUw_m!`$P6v zXWoaAyz!~Yeaw-R5$`mHRU0F|qi8`<&c(E%h79ybZPyE*XK`A`3=#8b&Fa$~`;~Nn zy!xp_-=WKQZTuCb93ugBsZ)4D_SSS&n@AGS%X;!NH~62V7#$+XXQ*N~zFCvoymDb@ zdbWRe-ypbyFi-mh$DDw8%L1P@4Bi>^C3kq@KvCHn4tFQv2g9pi#uKtMxi@!h0*CU9 zwsyZ*fo(X!z~Ml0L*$@0UWnIUxK9 zX`^M@7iW$9WEl5FLWrFc#E7aq=7jvret`%K057qbHX=aP-^vWDwVu?D^=__$*XPH% zPAy`(SM{K-(zvxhpE?25T8mzd7`5Bd_fLJpf|Kt@ZC~KyCu1b%`izB7j0ndM z9mRvm=Ei~+jL?7x|CpRJ6Lvk4aDzLTqT$;f*eIFZtxfxO|n}qGVVn?D(BYblj9Svlz3wDxdDnpT@vr-c{ar z{fn4aY5B^9B8g|WF<&_KUxJ&C%|vIFv5U;&s5R?S&7*YwIrdxyZ+n|!X_l8Z7zV=` zuj2=A;swC@i2bR56Q;zi^mu2#oED9hE64QKwfwhbJ?IyRODF=w>^D^H8!N16mxlKT zw{i+57N*VZhT-GMzCVd89sN!bzsP4D4pUmHd93$78+w{Hl9(_!YD#%b9ujX0$# zKZ-&bnvfj|hHDJ)u%)Yq1Mpwp9=X*CrsPxWH5t*;6AY&Q?M7EgZYtXhzh`q{C;|bw z_4U(tf{;86XPkow<8wIW*%{BmMAqp*fc3~tBCe7gqpiW;oG}|gN?mNw6C1c-7-U1~ zSk<|x`uBu|E_xcO$g|SkUvpJ3-=*Jz9%VWi_6|>v3jc>N%**b4BLsJb%hq07*(B5h z5#zq1^-7u6+OoPzj6b!}`UQ$t8hKqLz;<~x^x}yoT7RmehZYP1K*vM@QhW=hvW)0N zI_lYB?6d65y~uL@`iKW|8?IARghsrPhAFbE463GWId-x9* z(OYF^JbL9v@&>1-5Bpo3`IKJt?RL6`pC6PKm90f0wv+Rr>6vRQTa=xkw1#|yt?4g? zUJG{@1i&yO^!s61r#~ifIy(G_1)lyI`T(kT%DQ89VV?tPtw@F~wUv+a9i~H*up5qs z^FZd*O$_yK35o`( zv%TV`t^JvdWSjc1hmkt4czqHp??njW4wjzIioZ@?W;B+qR2B z4I5AE6xw{=x=)!%e^DX&Nkp#m+B7nX}{31 z)bg6BU^q~@ssjLKON8m5P@uO;tC@x5#mIAgQe5)=Svoh|Z;1*=F-O5mo_NtSlI(da zyBhi-&!?ff1Lmhpbw2z?0!+XJO;GgJ zp0Z03HGk5F2*^l2jiAwPs$TXb6*7D+Z+7R_Spaal(_bj9me%XYScgM8OBSz~TdqPs z`jaGlWFH8y+PnBZoSgPiN)6rKbtkBkWAWGPe8#v<-(e9KxY0%Ud=u&wINbjCtdf^< zjVPs%CJmssKXSVk#A#9sg^6h0npaTG_dUj-#xVHD(F;{jZAhNC} z$JWMj3XYjg$d(!(xicMwlDn;)QR($G2yM@){7R##J@@!R&W|FlOz*C?gX%@^k}qK~ zadV|!P>ziEJ;6Mlwn(@$Swp;QG}iaf39uh~tFsDpJn zJMZttX!vExK^Lh%o0ylXOEU<26g!X2LCZizWpRHc4Ez7H7V()t8J1O;{s`YL7iwX1 zp~A<<_bC5sv;P@IB|*7l2zNu2@9q|C$0`(<>4*=&82E`%3LY)^i-o6CF6 zazCqPAVAGo_A_e2#jQ0RnAagmm;}7H5C56WJf6O`l!&T@vZDN*^}wbwBP8;*YU$tZ zQObx+)2Y)cjgbaL+!#gQM8UaTh9&RsM|*#HpAHB~j`h$D>9ZLW4$ht8EZuUD;HYa5 zT%#PYni7^vs~pudWR59sl`zvgXIJ4V^JE8&cIl#|LZ&o0hN-2fdjW0*annRX6E2o| zh<^9)J=?XeQwuYaJ4G%<{$+r%|sCi?aLL z9YsZ71zto2$yX2%X@?xjpi@a{5Tu4?=+;+3C8WEgq`On;m>~uj8WflTh8{Z4Gl0L3 z?|kQ+>+I|D59eXWTKiu2y4T*jY-j%mkX^_fB8|rRjJ|$psBS;L1JOu-J-X_^fPpsN zM|+qYD2fguEvtH~#APM$=e2F6V~Gp&7SuyAB^K7~&gzS*q{z3GSvyqDi1vXo&lDVx z6WfPJ`Q05?>^PeC1lFRP{GK>&&gbtO0$zJ=roY;TwvRV0Z2v_ErwB+0eA@H0TbG}A zIH>o2=AdYgp?xM4qZk=A^C(|+sDN)KZ>$3M&0e@(nfuVAsmtf4j}?0SZ=&@%gya|i zsM#a{P+{SnZnxV(H8ar_Q^N*R#0gpB>HD=eX59Ryq*^6nN9Bwc|7TqQ&7V1>Nc8%h z`KmcbovoDaY!k@99;gE`0`kjo@V%!Rb)KxYxy9emq5lp|VjVtan}cF+-MehPM&rk; z-ombnTP_0DEO%P*5g%%BNFh5*mYh?-b6p>xp6XW33=~O|#YR}f(nE3bW zdeb}xUz(z_(Y6klEItZIk~|%6lz4{0f|eNl=hv6wms`vHW-EV>UZc96kTb4RIb=FW zkpwo15n{c@Fj)bpKWa#nbQJ|H>F)nL7Gu@TDm#8mUr!SMRdMv>!>K`GC9u3C3dZ?H z^C!c9Hywaw4qnac%smCl6QomAh4c>+tdC*SSIixXiL1B``qH^5D^a#~~_6m~_?R{Mvj7YF+7?oDYATAu)7( zp?jd{mC8?f#99f}F?-a^ynQv*OQ2NlPuo9~2a96YWCO+=xHWQ5#kpE15EXAO)N0hz zFQ*C7xkb@7xdL5Ylmc%i(~6HhrteMPa-Iyys)+Dqp!teFwjOKkv9ne{jm@RtRNr}K zOf+1lfXzVFNHv@}3ZC(VHT*b>#%4s5sKmiOD^$lTTMH14wIW9GC zl?rAP_-}9{;rK!>J5Kn$AASvAc^d9%73`I)bAUx}H8)}`EGiZG zL*;{F<&-UAt3|jSm@-NGj1k&C4L@Cn8HWBwhRN7_v-E6!UBuzI`y0^~sSEp%1J8N+ zFhI1Ca2+%2ntpj<$|AHf6g#)o`1{eDBBA#y<8KgK3)c>w&AZ%A#G5f-AKV}uGL3Dt z`;!tPt~f)r+nzX!uCBeLZMx|T@bl1p=7jjda7-Y;z$oaG}J zqC=}3p?|+^{Kms>fr9Y-^;2cGz>HoUTxw6kC!XxbTI1#fdP{4o0<75|=T|ICGoNF^ zey5;Ar4xafN1H)3jdLsG+^TTK9Q4>sio@L;x&5Q|3B}QWZs;ULH%ZAkJ}Q@HH0#;# z6Ex#vm_u~=`uV8Y$)j7Z9lV(LXh|-cii*Rf!1{xT6C?ngo6#0ZhpBC;F{v}U&*6^RH;`^#!u^tJPQ2kvmM_zw0|^fHh-h^9(}`rNO5(=zbt)C zJ~l`}uguX$sU$Pe)2WSEbo?|iNrHvldxL#G!upF-aN*zZho`PICm=RH7qBf?E9A@G z{!4b}{CLxv=ceJmGl0CuW1+uV;vkrRmBZe&#i02>_Se5}ssR{11DiUe3r1be@$_+i zizrF}3fA@k{CRjY2PNFhS%7Spy%0hkqIW80^i$G{kIkoZVf}h{Pffbh3ef)0vm22$ zI6Z@pLi%*l)>4_O{g?A1__XH0a3derwC7b?(&VQ36SyDE|8DQ{1XeyDr zdF->JxQX^q1A1*|0iyS+v#0K_6sx+1fCrO{g%mRqw|b;QyVlDhOh;A$T=nB|b?KJa z_>o&YvvlFZy51F%1eS2sA$cwx)R7UP8BrZ{C~N}jkW%&B^022P1fdd3zS9nx442*+Zf!Q++5~Q0k1$$)9(B=MPAIZ?v|6(yu3T0|L)rM z1<_FJ%l4E%F5S+h6EUuB0dmY%qvEuagE}3K?oeCGuf>-^_7k9I(!P%8S7fFGaH%pQ(Mj$F^V*(rQOXE5Z^#KGr(TQTVr z>?6~D8bo&Y+$FmhM@+R^pUpUlt|l!@OUB)T`z@uUD9Oe)^%| zqaW*Fs8M&MF)vSl8}WZAFht_n#o^|@`0M`iUA2dF&8;XReU zEc0@3O3B^N0I~Pr@AJuOG^e@0a3OdFZo9O{C&nXnZ>dC=QU318U8oP@&dtMUsS6RToFAcgQII zy-QM+AnqAf|ZdQHyxb-a{r7LQ;V%A^u~LsZt4ziLt( zq+K=3Ej1nHZ}of^O^c06a+mcO=s1yH#+@K4Y;==`cNgU6U+?{$v^5fp+uWA=<}T)7 zG|x6?+4A}B{!3YL@m93}RMzpku;4W^D(rHh(MiY2p&xr+b+9fKL?xx!W~Fw}YcGLw zG;*+dh~;vG+k~bnO5$LBar6qO5cXk^@Oqio{Hp?{S0ZDyhiK-dHt0M4XqOR9Z>kf8 zrh{)%wC!t0gCzg@Prowe@mjwryf;i@Ib&LXkNyRBC;L81X)NFcW;D!u*XwZj{ZydW z_|6NeVNrJE)kTQ>HUOGgc=6k=SoqRVub?aL9BnFmbV(_qL%|eG++t^0VND#Tn2?YF(YQ+*Vs{tkn5{AR22A`h^RdbF zZLfA}O9SRxME?fStFAbj7U_|TME!`5YNYeNWEV1?BQ#?$e5BfYUC*6D@>Y%075FRp z!(N78Sz?Ckn?2>(SgsM&Yj}G0-@a*^6Shr6DGdJMrND;xvTK+B8}#6<#Ypknc(=u@ z6eEB65i~qbv*?Y)JO%#B2$t}8!!p8aA`43&($VJ_Ew6qD;^Tjzg%bm^`a(1Q3D6Dc zf3=VsK=5At115Pui#-Cz4Q*vqABB{coFsi(aZYn2;XzGq?M(GZ>tm2GD-H3_VHTSM zxPa26ka`63pcydGVXt8Ce|||I=zysxM7t%1Y=iqzdug%%+*VYZ2Pq47-*WawHy|I- zjnS}A8QUxINFH<@+iSAd3*$G>3mkN1`m=Nxucs^XH#tFHEH=*os@D<-q zk4=vKhrTDnd_C=-?qhqxCbOn5J4YkO`WT~zR8JAD`npys6XB3B|Gw?A)g3~}lH0d7 z{vjxXr&!1wQ#BDOi(+$7<0f2tRGBw6PV8Vu1!abcP^tM$xb zHn~TNOi1I&d8X=~_424-e)T%RFX429^B85kg)H6>LN|^C0vSdX1s9IND_jyOL$INbiGFkB+pW11&`%-Q6d9{Fq=&?X;wz-U@mVO*!@pFDm zL*eg`5b+cOX;-S8mvrr4f7x>nt&{&&Sb2)Mf@pIRe@HzzUvxGn0D(XS%u{7^RkGF$ zz=^4S?Tjq4Ms=>3nLy9nl)_XiZ~88Irzr+2(`=h=GMZ7L$z$f?$>W3G-Zvqg-zf7a z*#Urmf)NAz8seG7^qt9H6~Y^3tQDy7eWzZu-=2)76*Ahhqi<5X%Dg{n{6yY(;**C+ z#9LfZg2xF$JgxG(WN<_N>2~h*3HI({7Xd3iS^V6^W;6M>OY^WNUW^m@Xn>F}v?qoZ z9G@;f)=+4jEZjlEzQE8-PfbG#H-G$EG|CVsJ0>4J6W*9-)A(rV@js! zTr4@JQGZ;|6jt`NO&|niy#Jj^)kGn>bDyk(Z)92CQJ>6J!5H$r>fu#>t&}+VOYs&d zw=|7OU=1Gx&;%W?U1%D4PTl2el4NPb z(#$RUI{Su7mr6G8gDGAK#}}QSo)K|z^+RLtDgE^=`it3vmBU9;b6y_w5oysUA{rKf z9NQlFGAKEE%0})NwOMK0>(kp!mH{^I9oQyrLh~*;9rc$=1w(!+ur~{Pd zoxqUlLlyQ~chrRQQJsEp1w3Sk#_FgqGQk2}RG-wouOfmj+SXKTNzsj-|_ZTesb4Kv2!@mBOQ*Sgw$*9XNkP zPo*k_|=VDx5(Dso_S5TDe$msG)^zcEDO|Dg7gme?3OE z5Zwlzv{QoVKPXmGtq-z$JQjKQN`Yc;tEgPVn%9sXi@{E%Eq)9SkJiGIw=%L%A!$)& zMtoH@nuDzB#akYv@ZaYHcK{>qlk!%^%B}Iaiu`#Cp!_i7z}O}&B`u75QkNQOzIwdDeXD`u z?!o%P3Nh*6e8?U5v(*dQ0%+sWZ4;gh*V&tty8c1n6dc~NDNJ|1Wqh}m&MJ-`v0kEB zDEr=Pm{xqJ>BiLSg5{*;r=RyG9lz{Fdg zalhc;CV+?&OqgcI9bjTqk~|aO2nJ4ngC=QCGcDl@8J~1y>Skd`X3PJU_Y;de@=&0X z`*SgJ|Bd+qo~v}rFpip26TL?4PDmHz{C67c@xNVr=O247zTemnfeaVFv~<7G`^!=e zkh=_Z`RLG#WGmbh9|bvtm7)g!yB0BRZk4kNKr5>~Xp-I=u61>ozfRA%{E0d7I?c1r z;U*F>YRJ3xOMNFz0Gr*dR*ZNP?qJluGd?CF{f>gb?~)S8_9ahqO5ck4h;zEW^J2WR zvHhlv?ayNp!@fY*ca367AS|aZObv1B`g7`^HYq^&V(jfc7#+X9ja>5hbumZqH8N5u{KIHugi_k@ zyqjzq4;yv|X@v1A_}vn-$M?ICPvmrWjNd^Z!cS)C!5oY8wh2=BZBeZ}eX?jH=gZj0 zVQ@XVeR*6kKG1?qhOuueTzX+GTE$n)1TjmV%AV@oe43~>=b^5tLQ>TZv#AAhfv4xv z{?c~R%vO#+UGAHv6Hl1~w-vi429$8Kc(QvHYCr0eyU zvjqR-5~+?E>3jDEer7)h!*==8b=LM1Z4=N<-=%Oa?s@1+e8WNAX;9OY$vp7A8a0hj z6o?|Xea=OA5VHeR&6-^zUaExze|Iq8;StonM>wsaOSC=zy371D4nyql59v$<#(YMP z^eDe)86q5UOC5h#;Y~{8Dc#yjr_iVg0hOm=mj)TwQN)wUKzL%EiM$h|4LaZygm9+F1l*Ay3@d};}$}23W%c0 zDUwTiFS=XTBh}7ONsZPqmaIMLp&2){^FQ;D7Jzr!HRni!E%C_JvrA2(aWlwx0(g9Q zy0t|RmKJvsqlX+l36-4$ikKyktO7 zn36R%#ea7GFBvC9r}XxS+EVeDkPukbCUg;w*eatC z5h_PcAuVfOVD6HJ^s#sC%W%iPK^!pGD9f3RP2* zQT|bg$z7@zSbD>-`H$T}?vo!43QoEgJU8nD8yw;Ef%-s4Q3pj;)R>r(>(Z-}@U1+} zsq34njFmMGzE&i0>f+)MKG(saOB}HI#rZ;)V(dj3;fkzkq&2ij%|c;rsUbl;_W?GY zx9r+?rXG5Iw*m&QXuI5Ymo!T{_?B(ZkDK%}ty#GR7X*d;7lh>4wcN|pVk#(esKp&4;JYU$a)Djc^nU(m6(9(%r1*+ z>cYtZ#%hmGq_9Q|j4A!hxJ$~S-&O3Tyj0uA5UMiq@q!1HUy8uDd3tYda_D1uy@Lea zi!j7;aPRI;;@=?ZI+ioq>X3#MhdOZZ&YT1tIrGUoQeBu|nhV7@3@W@d+&i$m8h7>{ zKNX%3oLPK)li%&rLdU}@IxtCsrg)kv{_4ik=jOz&fs|j1%EZMOP`=|9%T72>IF9Q3 zwd%RaqbDKHV0)=GJ{UCSG$IDXpNLg6=IJCHHAHNy&wUmN0{zrhZ zK$@HfZ0;W;i`cNtRmdxBmpLXNjpeFC2V8DWmYEHiBTj@wZ1l>rvDKa*@2~RCFX|YK zkr-=VG^S5Gq?FK?&^Ks^=$M}BTZjl8kEq|DR2yt;O%<$&oOSqn5^qs!h^NhW$G436 zl8fJ{w@n^XzMw{BWlicuZs`!{AnPZC;d25#@e)tncC7Pl;QNxNHwJN(mQur|^z^@Y z9o>IU+fPFiZZ3roOk9j9<>HTG4=0dji(7&(26;dV*H|qWAY;YH|8-^EXeS~5E?Oka z#E)D;@ZOw}`$a1>=PgUE8Xp@B3JvYzu4S7wzy23@pYHdfYLb{wA6TH>Du;3zm4f^1 zf9KyCSFxy>P5gapY_LN11z5kuRk&*8`P$^oPM zf@8lTtl8iwz6*Ldq<9EvsYFos)TWE6An=+Cfn;iv5ZjNoQ&7^+k#3 zr@s5IP=)E@vee$_#mH9XR!5ZRHeNG$p;FOcgO*oh_;%y?En$snwqgBIO@# z@buIhBO%U|jhA}meZLAH*EJsVCyl9J97qpksv;$W8g7h)vjhHTQ?hBuXc1OIsnQEkCsZPvB#Nes;n zj4LQ8nIa5grN8?fNa!=RSJyi7_qK;&OD`^t!Sa8ASIjfa8N6mlMNXdrxk{uxX(mnL z#T30yfM!7HE|z7~$psw6V%+0q7I;&^0%QPXnR6!rNrw=fdtcTT+4*6+q|jUtwKS;SPQ5^!(zN&&i%&Uw$NqB;LM+r5{h<9TK|{Rr zg_NI^_VP)E^Xjuu-7U|?hD=ip)&NG|_jG9wsfC*FQe|Gh{MWO>chtQI3q~V?+uVOY z6)Fkke(=;k@3DU$rR_+ouw~)15^zoE)!}DP9{+7tL4N7C;X|&_nWxgP1pNKDKi#-y z{`RJNPE43sbK{fEZdea&XL)7MBfESc*r8`{lJ>|>>1h8L(x4Buh6w0R3bvQsi2@n? z3r8Rl^<-Ujkb=AU={3hI0S`xNoL40jOn=o_%Q}r9c_%D>aqM?rjsR%f5~sFz|G6FyutkZ z&T>dWid@d52+Tv**?whO?)kI%Ba~@1WL@3y(`S)1pz8^bIa1LJGWq6^DpT>iGiYzspVP(v?Qn zR!1K8snv94UaL#|eH#?uTUAw+!O+-Vz1c4p7X$(|Qb2IsU|qRl#%?%#u6)cI3b{s5 zUMbQLHM?7`t|uC>1+49~wGMQLxH(xQs#qkJpUBK140A^)Tj|ffZK6J)2EvpbBto}; z=G#vc4mo0OpMC&_Umnm=5A!qTuK8G%|NH#c=omp|@A9GA+=ran!@BhX-DPDh1U@&^ zW$(}1Q6)4Wg;`G=YpgSk_~W2^yAfEJ+qlyESaJ|(p3^-q5VKIKnAvt@T+s4x)LCUh z9ZJl!*CiB;-tnue2kIw-=Ml=v&?AI5VG12CKe8ZdoC?kz!0QJ51A%IG5mm04?)~O70%Af-4Wf8##MJpD; z8eJ8Zb>&18mYwR_*k(+el~LdFUfz~oCT1c4>qHC!B{$%QOE%XRjhvF-;H+Su`=wCY zq@7WD1*AP-LEg^F|Ibl$Nz_avYK3u13%ebf6&3iR0-DdSFUI$nPY49!f-IHQC)M5C zY_qI6)=}Wd>A-C#X^5hX@3k<3qPd_G+hWAztvQ}Xmf%=x)54g0WC<`Fk@(rn_>Q-F z9Bi^lzPD`*Dcc|UCcLd*5dJI&;__9m+489Hxe`kvR3O(Q%s%RQsGVu9@w;B)!#G7b;^u^qSDxn(01t)^gqS}cH*=@DoiT<_*J zs8Y>}g1uoVv+hyz#*P9;1^}f`?!zo^K&J*3?b zH=~}PqDBBjETKEQJNt0%7m~pwmJTcwoL5)i0vw9`Fru8no8np4m& z$P2A&m1hT^guBZ}-Ym#c*^!@XNH;zx4>i?uf2C;&L0aG`>1Uo3>1bEWf+XjgxLOdc zBpMz+Cg7C;Y>cy2OP#tH!gX%gFriDp)D$Z)H*jbjTB6Nss?V)kKMG4MGy6gaA~Or; zwDnt8sD8!c?*W~-%Db3E2sk74RXu{%uTDL)YG@R7>rI^(g13FiQUtub9}rrb_OJoc zkmK=fK^P0T!G}E?nRi50_ef84yLl#xu7KY((?~VL$_?j8Su%ibv=V?CE5|;&=fM+k7HvDBo~f-YHJ-@X(SynTg0ODXY}rlZTxSLj_Ci}2 z6m84eAXBDCdpA^*bv1dz(Jc>!p%Q5zbFkUA z8SJvrxCCl^Gz`q)6_0b{i}kE4YZW}uYI|~QGNs`STbQh6?T}i9#CF9ZknE@Nl)&*s zL$5pE!)k80j87n;)rM(I%fV5|sm?*qCc$fAu1zDZy+X4tzR3iA73A~ExL|Pas0=+O zJyyAes2RhLE{Qe~)^$;+)2}Nigt2urG;Dt>9)@LD0~l+(2llstSY!UlB0E2xk|E&joiK*3#tM@ACQ)+5Q7{>~R zPAP7bDnAivsPQOY5U#V}r2%G3%2?IX#Qv;ODTnKrCG8r0j}yc^(_bQCoq9A;RvJol z7szP&3(#e|aj0W|*3p<2)^bz0RZvK~$+AW-eij9NQd3ysk-Q*G^$P)b&o*bvT6F!g z3qxI+5X~62#fdYIa(`qf1=Wr9^h#(Y0_$_)@*=FjCv>nHJ!G6cu!1PS-o-Y-f{IBu z%!ERsU61t?&xlFz0P|pMRc!6zG_0x`7(E@JOETlUz?QwK5U;v5Y zPcQ|SwwwhvMe+#47PD3dk&JbnK3rb*KK60Sp9JWmv$3+DtmPokp^=%fA!j38Kn;Z; zP0WFq!8a~YRBg?1*&i%dV7A9>Y#`S>i#PpE=U$i!GvzfLiEr!$r+FOV6r|qVj5SA1$!z?L6*lrR zbyY&TUd!U4Ia?&(j7HD^T~#J}J9J!3#$qETyw<#Jy><(ZiL&8I2=3r_uUyGtYQH$}< z?s6;+y5YyNS4JSz1&u|3*?`1|Z}R`fFl@aW&}rx#JDpqWiALerJZegWAm^>rB`yeuxQ7&8es&r5`25Wqv&BnVPTGk zy~~Z5D_wbOvi5sFVXkk1<>n2-&U`cz`f)mBkFaMt`o1kSXj(`Y%;o4{IEgSLa&rd zS8oiKnDOW=wQ;?2Vna7X&aS{Xs3ziO<;GUwdw4igSwCr2&wHDps~HiyWWipteE2MsoT+NJ5n*2l^inzR z^*i3neo{580pWQyJuNLVG9lVGm;$I7DZ+KTcnWv9s51~&O96jKMlQ#xT);k6FyX~GBD4xJUThz>K?A1T!{ zE9&_&8@P1zyAQf^?}1e?j{ZI$qkORTdt|L)Rblu;dtTCoY?2iOLq+sL%>HZT>+lqInGnfUwNaxKNMH`Gmc_Bl7S9-URc3J@{F# z-SQYGPs31DL@2BF$-|zplkfJm3-Y%R-67S?ybdz?qDE326V8fN6$|n+PtO7mq{!uv zcKpU-GIBO`N~;q&>7*w(3S-*O9eOf`m@Au|OGn?mS<_jc!4ODxzP8tftH1W=(?gx3 zLJP{Z1gC7)H24{@S<<#9PRW=()QpLzQSy8~ooA7B1UW&C0d5#{Mf8IV^fD|SCYY{X=M?UF=RbHp@P;5A{wg=)CjJ>5An1=CobKa#hxQjkmc zcwMw_2n4zwfPV|Hvu@>TDO+Fs+5rayLxUBBtRvA$By&8jL3#r|(}pwqkpAQ4xeJLZ z_dm_8dK<7P$-_g`SyvN8bdm;P8SFU#7V61xJMjiP&;=*bj z7oSxbpQLuK1GZNK_%&mx${!N03>P*sG_5LHkk|GtcRBMSAz?<>bE~(`p_y!6?0!k^ zDxOb~F-#-!H7kl6p9ZM)b6rb+_OG22%hM!k;fh*kJMLhm4HcEP4GfrnfDS-qb5>b* zDfX>QzS71DP}{DbRt*A!k>AcCu{n~sGvuumxsmvgBtK8bc5U1q3e55YOfsmVWIea| z5GlhU1UNYvSXsz#rgc!h=D1DW-a%Hhp>FmSV5~ksl&nagEWx*H zmZw;CEHnA_fElxQfMD6-OE9PQs3Dp>eyGICTTl(uF&m>_I^Q6x$|2_ z+7@uX#UdTpTE|>IKr_XFfC?!?FY^kft8L^0BBd3;79CK4CV#O$DV{S41FmP9p zhw=7Hk-7!>REurty0oEj9cX=JX|x|JTj0HOLTvnd*;W6jV?2&Zi!n1i6o=_y_Xc3| z$_`JuE$Q8vXqI%eTBf&f!SHE(eOXOES6eUmkojV&viUi@rbD5bbmN-D{0Uj+_=t@R z6;pVk2KCyT&fmZQVGRDWwsvCqsDddQZXr4NRyuk=rfI7`1I#=36S_DcUsGQj?jg`| z5)Vm~dc+pUcfP)-D)_voqbJ8vz-Z&r&hEOdZb88B@ZxA)evVy+HoH6cdbRCy9L3zVDa9}62|u?TVJb2uAZ>88#< z;b2_--jRt__FC`6b)Epa^B-Z{OOdVFtix9piJDM!#Y7zWYD4n)1dO9P^V|mvZ)|Er zEm^7_bgU1(aq3y+NCM=h7@RiSbWnX#D@;YU7z1e3lm+=s#XnMsPe{n!jb+YG0W%-9 zk(}f<-EWlStXYSlJI;5U<=2~nCD!kyBnen8+=x0dTshun#uXhouwWsB{}$U~%@UTA&cgDmxxIJUslMfT3U< zizPno1v=v5=SRV=Fm;cQ>sZ$;muDCS#H%CE>T(dpAMyji&eb8vC;v~?-pl)+Jg40G zGlZl-1q8zA&*=U~+n9PzMKA_crn|e0iR+}@2W!#Z; zxMdWmcgu)q2#q)!Et&Z}TPyeeABuTDI9l&$(N(@twx!jQ$E(E2j#awwhF&QHM@c3=J!;?qG3gLg$L2kTJn!2X2wKt_YNsGhVqhqcejW?Aiqqdi+-l z2Ztc*dnVe~oZP*jb*Keb{+a58_mk(QH9l5nmCR+^-ZVn!1!?QmM0r5-#^f@*j;*FTi+z6nm)ue6xh#w(e@}b=xS>%iCmA5h(CaTXn`cj-R6boYu_8p2G^HJ2rGKmnq(!?Vd~e z+zy}pl3UwOXkL=!Uc69VlkK0xO0LdovZ*{fY{s3I^}JJE*mNlKoRf3kgx{oYs)XM7 zbAIEa@LJQKB|UeP*jl8kEz#w0V`dAz1Y5FbE8r{FPPIqG>Ba^2ofBvEOXyJ|eXHB@ zZ^&I?^?Ik@)U2x%T3+?F))fs7rIWa=*8Fb%Y)tK>E4RQO0(h4Brls?FdnZagNH?dj z-~7;|IFDDO!boZ_p3qL1>U{q|R9yZ-CVa>Y>pG!;eZz1>4Ej&@A-^`^l&A8gQV%w^ zXbq0pw<^KNga1q1AU9Wca@C9%!mYp(F?0A~@3WtmkUku+eUX$o6p9Lo#fL@CE>cdr z79Ow+>n=o8E&L{*`a_?rxoXY#hl(bIC+Djt>dS|)?**Lla7$Z)?^Dkm2hu&4N1$Zr z|4%qx+|F{|^Kx+i*O0c2734A*8mLRnAU~!5lp6HiJw5z1=kfl3Z$5UolS}g7=?3}= zj=AtZ$Ve!P=RY@i_rCy8O9KQH000080Awv_SQA7$7GM?t0GJj402TlM0AF)?b6;a& zY;0dRXkTAxZewgNaBgR1n0HhYZL`2bZ_*4^svr=m6e&_gqkur@y>|!@K@&xK5$Pa= zUKOMhdNUM54NZ`aLIfd*NDqP(ft&Zd-~Ho$clMm!*`3+hIrHp3&u=!)5TZp-dxI7L z0MP4bgN*?I5=NpvKut;9KNf#sNjy+G>uP}kSO08pyULLO0GqxJSkp8he+L(mZtE68 zwZFGF?tWP8^Yofy%}Xnv3;|1$9&pXi`(t{Tx5n4|J#Tg7(L+P#18ZiRT4&Sdj%Tu< ziXBZguN)V^5K2vc0Bck0WPCcXJscC?XqZ))eY3Vm(53ieP0Kwl<778XfvtOsPbw_d!MCt z=8%w(i7UR>{39r~qP+I5LFR`%Ft8Do5POHD47+=y5J8Y_xWu|?sq%~MsdZObFzV?N zTvSX06N(muAXIju0^Ll-=e@e1cGcEf%94!GFk`~QDPPg6C$fcW3I+4auk}p+=dMz^VeD489-yBk(4iDGs(;ZC00; z9eIOH)WN*2lVAO}9`~o4zwt)ZH2JTPHDBAR`O5N+H64zi?^_;i0(C}9tmTxFdm&JW z{$J2(<;Tf6edBJ9p&~;nJ?{cAF;_36tqZLKlHV$YEa1E8whf$zAPeyZ@>DofzNtE6 zc}N+y^;`_=J>}WFXjpgosI|H#3YYl@0}4p?xAM zHZ5j2Dpu9$e=Cn1@|cCF)tY+0>P}spy-3`TL0H{E{ZTo&n`!@xU<^YoZd9YRcEO>Q z3Zf?8D!ciUOY;aX|E>z9!F2N(m2G%-!AITszrH6$A6(CqNom)6`2>y*L?LkLi=G9L zqd>cP-2&JQ`U1E4ArDU4kzmTx&jz;GRw-i0iKYmzZvR94T+6c)! z4DzU4hUpmMavv?&a7hm4Z zT-Q+$9)s2}xG7~E*>_Zm^z@H|;Nwxn$M_+?gFM8U$QS8RD_cwq8kkfI@MX?HIW zcRN10LG;w90wH^M;Kv4DoX^t-Pxj_cXtG<2lrHLG<@uoh^*>%yoP5%fVO`&pVWTgC zNYP%8s9I{{YK;vM3Qr|2`oFusEZIohyxn}~dwOs@I9H=NKg|G)k36WBOotsw4VXNY zd1+XYeP=2G$0k5{^?ynaG$1R}O6I0fW+?8@&CZtQiDWKJ!y*mTIpN&;4?J2mtv3KM zMf(S7AE zjQDe0mtMRX@b|{hh`VJwIGoPI!_Q#@781RgJ;W`X@&?X+bRl-qNxH{3HeA0M5Siw1 zQ-g(zy&}m)HiAlp4!s1|bEQOTQKPkvZkPqzk%y^gBSWVT$bDC2zc}PZE0VOEgx|N& z)bLdnj^{;cVU+36wiJr7t3{NJPrEh)dSz#BY8_g2GGaVPf-8eepIEEaH0fg>PC5~& zKc5v#v92fp`pE7E_rq1+0VjhY3Y9CqV(pzM`sFRrpQCy)4<{W7)Y=wC6AdgXB*9N6 z_2Box`dF5Xo|?o=iB4Wj=k@v*Ax2rb$#K0{JahOs?u-_+OSp8Mukfk{R8-_95@;pepuChQBGl%;5?kTHyE9q`@uVgM$M%{4|D|8_Gw5jYup&bq+^u6X zAPow2EJ< z{t_sO>}WGewZ1lOD45Ka-xeOYWXL%1uN zF41Wp@g;MW1X80*Da=Tf|C3FPsPYP@(B}ViXAqeaqC;wNLf{GiI9wA>(IGnA&bMR_ z)8kzMx3#bKqXS$BM9p%oAAJHni^9ag4zO{EgY+}}q+D_NeY5;b|6-d)KWDqn_v$Yf zP$$@NfirVP@3OxL2wYbfQj?HkDw5*8H$wraWgB>H0_izs+?mM%h@gcEs^bu5)&+Qn zDr8JX4;70cHGibp$ENz~XQp+;C*r+bo$V&1?3T>>si`dcQok0Qy(>^QVc~n_{EK0L z4e*3%rNeNkCl0o0=u32r9T&~;6A2&XbBL#RFVQQX5l#_|^ahMo2YjF)z32DstfT(( zJxi8IV%6t&r`$@}uF?1j1Mcm=m}fnL_c@h8pvV|%b=r+@wG=(qbq`9$jnw2;>p{03 zh~qa(bK0pf-HAzj6)R!`hp2HYpu%O3Yp_@P2!8TzRoJzamWty`7CC+;eexi5!WmjS zs^s%E#E|Cb;QU)p=KSBYG7l)cI}!rp8di)!8N(0A`N*X0J>)5*wR~%0`ESMF+o&kC zYOJ?ofrJH>zQ>-I2g>#+u?U%6tBkh5TZ}A&xo$=~?Ld5i zbbKW zLA5VN9ZK_X4dqK$|ypHVT2*2u|-#+gV>c#CK&EdYP ze?IqXZ_lBkiam#VFeQfF_Nd4FeCTrd>eHVW;~+JQJz12unwnalX4a;btqm^@hogIV zD|Ex4Y<8;2q9BSQ4Bl{2oF&CN3XSd^G-wSS4E$XvGyQ$QE-dV-`7rEjcx9FS`>HlD z(AdxZqW?weBn=?og|D|40EGdoG~0`96L5~W>G^pNEXJFEd(P?g; z($XBO$e;}`I4O3EYFJdtjQ)sALyAxNJBK4?b^hRZ${)co1h$N}T zr;CxDa$ZGa_ZCaBHp$yf=5~<94{;)iQfB33*|Ln7Aw|VuV%u#TaeVgRlKwR#K<<_j(Ue~ORMg^NK2$%UtBfn*ijzBi< zn(8x)rd;Q1wB{2iXVg7ChPY`B8-yhJaLt|5ykD0&+Hts4y|(@Q4N|(>EYE4Iw+>U= zYPyw69w$jn+RLYk_+@?~DVRjM*_!RiT+ceitrteUCB#rJE^ajF(-_U7(^lFkWc&d} zWb2vlrtCsdi|4nh>}VyI2Pf922)C|Z}Qgj>;f2GanudTcM%7>i%gpt$;f+X{JML$>&fS1#gLgZh(XP=clN4(^^Ff~ z^UGC9O|yN<=jk8X?OFJYd*&H55)6DD1hHM|0~Zr{{S`Vspr2n9>gnSt0Os`W>yT*~ zAs#9{(IX-~j8leQTd6$o&(E8X@h6XvWPFS&v{Rm!a%v(C6Nvv9dMtejJ-;EElPoTo ztqRIO)1I9f(<}nU!dKEF^8aGsdR~1ny3&LyIO}ggz;4uP>H!-ul&t@&e?lb@m;JK< z=4Dd9N>F$6zSha;H~R*CY=*fWZ#u1AN#JI?GhMig^V({}D4t|mrj!RsC1kya``UN~ zy1Y+OWHNv{mhj>D^(Lxpjrd{krdtxZ;9yP5zsXXGFFu8_HoY!8xiUxkrJ(?V^@ykR zI)O=5Mkb>4LDr~&K6b{3n6Oc8myL%Nwt*&|k!&H26N@-CBdARK%L@uKK29twzI58; zXeCi1i}xlj@_C!txtx24Z^1t$exlQy>qxP33gaHD(kYUR@h#(vM=UwfPwq9$?de(4 zvLUGk=FTDuZ;QD1j+^wXM_F;o^8mZTacuEL!!~1*E1`h%+1?L&+y{Ml&4xx;+xVW? z%5#7N+rUu*FNQ#z)^(@-C*j+zhCVg7e;Ip|F7gjm6bpVd-j(A4nqf1kaujFvjh5&f z`NE%3UH5?`KjK&K3n#m}j7Hs8ln0uNc=Ylrze-x1A9_aQ-7sQZO>rH+CDdeq z&*Mlf7=O4f!1Y+JJ+}efDWI?`7gD8Osh}QrS=DB5RR#HZzkn`E&@GeuCDC@z$?_E~ z1xF<2B_~7<;58$Db?V+`;#xL;s~tDq{XP=sK|F>b`OI&6fW5?U6Pm}#SOeg zSs(5F38?}Vqu%KCy2@2~0TCEnJPb#gOpnKZ^Ax-jH7rOn$BsxX<%sIzFtgA!Kxf!Q zoKrm`3|2Ukg%>ibwV3uZh1Y<(vs?LWpkA88g%}>OY_+4@A^a7lmVodbU;yZ+swz3= z0u)`>{h7BT-X7;OM$qo>#P*T`;3>asw#`+^SLEyWGl?9USJqDgK)(2x49Ko%DWsi= z54g(f$EPwuUFcX^G}38ptn1Z=0y`cZO?|U3cwSh;JE!-j;<(CDF`TarvaB)@LGNx|TMP6etUu+i5UcCbbr8i2UAmq4oNnP% z5KcB+mu3`2l>2cJHMXap+J@ycXSuW_%bi#-@2bS92U$5_WqHfls@DaIkmY6#Hc-Wa zHgdD&UrwJag?uQaO<22d6d^zWoE4E_9iSaC&1#uBA&;$V*0+c9QmzCKe;K@{>-X%v zCg&hNm0zq~r)5M2m~JiGu2zBm3h61L*;i(@WU8S5r%w_F!N}^L+4}W3LXIiS9IpS2 z!%LTpta`AuuI_@?WRfgwuDf!#qs;ucF*WfIfq+K}AI%Esiwo%~)D|hb!`ZuSWl6`_ zSJqk`agOG#ltufUwL=I@O#(g1fq$tCLXK-w<9ck3T)jaHB;m~fv9jWQ9x8wlH#2_|tW9D4MC%dc7y7SJUamV{TzPz*6sEdV7oqEGRx$?;ZSrtd*O1uZ7(v--h`)7OVL+SO_d+(THNyWnHF~$Req}%lpOFcyo zm2$qe8(rR@!9a&uukJ5SgMoFlncT?$~s+bv<$NPhU^lN|Sex7w3a zxR-*|_;z0YW*BXFldZ3Yg2L+uF;x?+bdOb!pUK}=MkR1p2iaXz!Zz#wefIzV_aK(q^U0GJ!Q7@fUh79{3TQiyb7>uH^spf1 zQogi{i%UdS&ZC{39S$xoI)uiZK#8gNe*?rC1_hlTUX3`2UwwRPS1z01>id4oT1FmN zelb0C`TXl(x~E_nJI zDiGVqVB2g}0lfR0+Ej%2ycgU`Z~|E|+2f{o-Z3YualW|s+#ds@`){oIFVg9p=!JNfV31t^K~8KmT7+QBDL#9~1_++92ifVlat_qqG@uZQHZ^W)KAHipo!#)rwNUH|NSSAcw?n9dFA`_`Mf@F)>AR^ zpC0`MDr;cv{IaGBRqK(8yw1UmZgDY*6WP{!w$(H)FE34PkHjJmM}q8Dhh(Vbg_i{fZ1ie^}NE2vw4;ZRgjf{{cXy`vi?{c;aCX$8t>gDs=h3A!wig4_kpFj1%w=_po(O2|g`|0exh|HVc?fD6Iz|W0&kVZ@R ziTI502!zrM+W4+kBT-6{RDrTdI%7nQxg;P22BHXDhH)xcLqo>3EvNxtNkkANCP+qwGX2AXzZ=&x-QV&# zBUAcbI|u%cTe6xo{HpZp!oPIYDSmzlC~}`FD}j+!^>8yMK9Rp zc^JNFo%)4|!+9Y9f60H6o zdFvwYgscqAJ2|XlpgKIhEOKA4lWTbw=`;feN*}9 z_?r9StDW;CO6Nq5Q@9#|Lo+huu>$K(GaV$i z9r)gKAYd`L)6crDhpt3OnoQEEWDpfZ+Y?Ly(i?NDe@==O18D8&_*uoNs;u{cN32lq zSGI)qlgeuUV9O&mL!7;}FPq-;p@5LE)qA4^0-T)2N|K{ONMl0^_l{pg;Q8k75jj|t8ijmXnN=bgbWo|G3Y^gM%)Wq>`ZtLL!dR-{UZx!i=HtgqCZWOHFR9-vh zIL}`LhL1sJpwf{SUQeS(7HaZn|OG-MK-NR7!ra5e-Z zF}{dmSNY=GFyvzzJAQ_wd^5{P34X>+~9e2Gq*y=K46`L%nbB0p2U|{D-a|0r;>X z8~R3{ifGD{w9k`1fX3*gZaA}|VgyXrgNPOnz0O-Bc9#TN=*FiVJqQ;%he&#zyCj<` zVpNe~Do9?Fn2IDF;J_};5N-zWB6^JtdTA870v^P|UC{eHRaNkThy}j~0R~(J-4>qJXcqFQ-?xB-WhLNr z!BELv1fAkT9#RZ;;1oguzt;UnKw-LKyTu zbjc9J#$*Bss8|wgN|G6;Wc3Inc(@}tqhUj~<(3Kdff)3&R9fw@$HfB_mzd%mGL?kJ zI$6?#0O-@RUqE8Wns^}bx5l==I%SV+(H~OP#}2&=+WW;VRku)VN9`SzJT#c-`!;0W zxMEM+(4=BQ71%`?J}a4$VN#2La}u_=efvaaX$%>y4XR5QjRpk_S27RXl-w!*VL^)Zz?xa8_tg969@#h z(>J4Jf4zQZMIEJkTKH}y``R~9+VJ{yywG6r)mWaV;x##zx5$1-!?E?Hbg|I>76Lt$ zNwf+pBCh2uvNSmSKLW$vG1;*cNLD6^a-SSg&yD)knc|siX^zxWG&YEk8QRhL0O<@^ zk>2~dnV7N1F;|ioePdX*e4iJV7!IPrap!}dZY|*3uyHLbk>zAsR&nV)RIfssQCSFR zn>Nf%E4WT&Dts_4wY^Qb9o+}ql@4JGx2L1!;np|{I8C>b5?+o?B{CbwtnkRDQ%ML< zr3H~xmMlXE0aOborKG}zcb=F*6BAraZD}0mC|P~0=~fQGaWV=?lNBvpS~{)1no!>r zA*bj&AW-ICX_bHJ-G2V(UBQObZ)^v+?rxhc7y2A*+&P;Y0;+-PiX*o94$lwUS6X|ZcMY>BP zb7f%8Lvlp~a*8RNO~NHpD|(0UYiC!!Rc;cIwNg{D{;ZiiepvuMcZ+TJF|6RG?3eL< zgwl7@p&eZm$oF9Dh>l;6kvJWVm@uDU=o|W5-U-L47&~yT&~dZ!DMMjhvBR>G<+`Bz zSh=_O+%4AKmr)7n4x)F}lso8|878>|Tqc{1{N>)}6!k`wa5r>+NcC=B8(O&S`qqe) zO{1%62J`^;QlnCW%f7w4&*qN}FSi)^8nB9mAOqPBD?o1t;JtwC=F2dX(JpF%R>Q-O*kB zP!FrCvNBh$T+%es*_^TPMo6HtBW(35(YC>z2P(IL-scje)P`&eY=KshV|0s2PKgFo zD3Os-rs^Rw<+EuLJV3KtP1iU%0Z2$3?_lb(Y?hniYeWvDv0`s?irSnEFC*P01Xa-a z{!YNVcm07F2igiT&fX?SBNOJM8jwp%)7*`u#*kg~-c5of9zF9g*-Z*JJvPpJ58iuLBZdCjZ){VM1}n?fI!^=Ndgn)a{WM-lY^o zL(ZX_xa$7uM|)q98(Qn;Y?Zrvl!fjprOaLL|w6Q*Ai~BTzkV zWdj~WYff2ra0*>IB?eILucfI%^C-YADO;Ai&`FfB_}gR|ecGyt=om6t2RH!&-O=p( ztB||~TiNm^=gukowCX=yBQWg-Y|)F%5R3TEh?+7A^=~Vg!L_1(q=i=Kr97R~vQ{hN@jZYn7iU8zMa6d2j5Emq<4B5ZueH}QnNMG? zpYbA9Q=#Rzli1M{^6>H}`-EfRd7t#-Utz9bdfrnj=eYtEPpwmWsnzA#OoIk*7v+QZ znH&lv4rwbifcafsyHh>qIdc10&E8Qi)I(@?PHs-pVpP@R$?|!~yONweKPJs1yM&WP zWEo0bti>>MC}-}MxxvNO-T0a2=lgq$2Ph}DhX}U(rge5M@Kto&$lXpRY}}ki4QYdL zco|pT5N zkBLx_6NiPug8KIgR#HMl>EHdoVLS-1e^*3*eOLehAZtkxK^1qv>zqkzWJQ#b*_@8? zsbWd8q*8d>Ofp7RHY&TJkYuo}_IM>47HDdT77A7D8l&V&6vn{F@Hi=Sx=sqwHe1Bq zxDSgubZB1X7d*c&)4q-GJQ^jN1w#y zJOF_R+YJ{210Wc(0r(j@Lz?pn+xs z3|B6ZoDVYJR{m!AZ0)2~fXw1%$xFmbPPRAz6u30#?}OG<6Nybym7pPY-9P|RK$C^` zM`)qR-KZ}5zK{U*j=H3z;I?RXI4-)LaQ_}zwWmkwt2Q1|00A^iTM|Ph-+9K)=7!Ay z1SFR>cJ^8>nFG1#c|ZZAMsX776e%I^J3^eXH+Ek^04QWXb=a8Ch0SdUzk#l~f7@Bs zEe`H^U$rioIBVPzw-=h*P{P%?CuA^~gRIEdE804HUJVH)Ljfr-FG*-$M$r~O0GhI} zqu8A#)q2(T?w7ud%*r|73&w(kcy6m&EN$(6v&T@vf?;iTi{5d8!Zt;q(}>3*Sd(hV zM_Bl;svF;Af$$QMGqOQ|Xu?795Gb^_80X{t7hOOZFa<{6imrq^O)ot&l!ACgV}|3X>l|AcZMH}g2jIm;rC85x=7qXW`L@oh2fGGDV1wG^#J zu#f`6KnOe(pbK&5pOQCr6sV9uJLhAyc#MX^_IQECK-$b&s6WKvfv1tk%#Zvqr|hTP z=5TH|9dSMBIU0h#Csatl=6f$6h>^#({WNs! zK<-~PdVqJk8lEPW*-F3h{$-xxEqw#=2_pd8Ba(g>jPf1TJ`uB$F~HtYf;i+fSo9UO zBIFQ2e?-^`1C7*;zKnD?AJW436yv zUQX>sUpweF87dxWw;;Q9l*aKNZin$mw8&?6uZOa%;vkUO7JrKIHp@4+``#q$LXttq z-&t20?xtA~%S1?|>@UFb-)LAy#46waFN8w;ueJ8Ppg=qE-*D1D`(JCViJRSj0KJ5{ zb2>dvJTNja*n56*fCO5&5||no03(sr%ndB3kVhYlhZ<>fl7D2QfM}nBPd9sG6!+A- z0lX=UiPp?|Qu5Gi?hx7K=(s(3r-t!rrSs}O#xtIt{K$x!#`bxHMIRlsQh2?t7$A-rvtVRFS8qdi|rXQOW2VU(s+;?i1?T? z5GH}nZF$V~#D=yJM_a_dTTgwv#N%Y40*zg5Jv%b4^?2tVe)GhZ^t;caJ?mv%fDi9P zB5tqh!d+p_iH6?QFEB;?mqojFW^KYIsniy!dlazl{X{reBL>BU)2BRgv#`c3S}E$w zOwuPKHby*`PG2;z^eVnqwzDnv>$ zd**_iVn7WdzZzh1wl$+fa>RO>HO7^M|Hx}tW%4?Toen>@y+ULF6 z7Y(A(9(%!}Trc^ynX?jzdULI8Wr(s2=8}endAv1%aBS8o*j*5DfV#sp`ytO&{tkVz zXU2OAi8yBz;r&`1G$nL!mf8)+fbf>)Qnify;@iPALE+;Gh+uMoN&cmwSY;8`AT-C2 z!_b48o)=YDMVAD{7DBw4b7LiGp+p|em|*j_WAf$TCx7L%To+Y@Az?SQCRPb$eWV19 z;6kUbDA6D?l-MDS^s?Wh@f!lIAdW1o^L{lJOmu&;t#YJ=r@b+WG{q@hMCXdT)<8X! zBav6xmuB5iy`z{0aQuScHWzSL0?X6incfo=`o|Xf4NYMAN!&#M14L=S@NT6@MKB^U zz>T0^BoJSNPzHz~Xk+&lVKt>79akufzu{7(M7fBV7=mNQIKm;rvC~2gv5eUf)-~pj zI7Wg^4rdTMkEF2PBuG*?4D$v;Ahjbb0g{L?!UlK}ku3(Tv;!KS34z{mr8 z2aunWD(oc?hr@IzUAoLgK3sax4N) z5sy!Qy$`NUk#e~IrFSJ$njN6oFKRrunR?WU=KEbXDm(0&v7tO_yge0@>qu+> zQ2OXB&{?#6jk}?j>V!V=(;r8X?J>u>933NnU9lfg`O(b35!zh>InrLFa z-!%Buz|dbr&PI{{Zjqji$WO*2ne>P%E_f-7k(Z&L$@jlM%JLrp_Vo*@MBWuKtUF!R z28P$8O8J24JB{f@b`u;SOwgpF{^8cPPia=h61wqDZqFRU4%TQkm`oOel-SS`;!J<$ zY@IkP59a{2BQN6)m;NE!krl82ymjjY`@RRlu1*z2R zgz<=!gL;ng#4srHqGeLNWKP1#o;BY>D4UCwA$N0^i<&G$<|cZw#BLUx;cXK&nqbry zYCy9NgNb6QaA}Nl?D!&!MN%-bSWeu{R5rli!ngIZC zq@liJO4e34gzN4AAl}0fDKMXGZ6WY*kXWuz&umw-<}#;+KWx%!3ZT7G-RjgHOs&?| zDqEY=!NRb?0?Vn}7oO2MSgBaFP@Tyh!F0(g-ZxyWGFY`z%Uq70Emi*@BU_GCFG6jS zl3lb~>Xw?eYCnoz;b}V1SdL6$e0Qbgfp5zuW5cfDs@1MNZnla^z078vt!xLIVg^&N z>5K3#5!H%yGfVJ%oN}aT+bCC`Wgx3nuJTwS!F=!b*t$dDu5qI)fj(&D2jqoD#yo5BRhR0i3M6W; z5?;xTT5xd2yk#v10Ri=$aK-jl0TMpu51(>PSZ8xILkosNBX&rK5Q@J{B~?KK*)MX} z_H3BuB6RWtNA8H8n}HWR3Y8X`|BTlM09TaxdUf*sV>$LNO`c$TJafRG3X^(;$R8IU zR@#TmY^pDjY-oq9PR37Q1_+b$`_JQ&K@l=u6B&rHW|4QeB90?1H|Txj4M99JvD>1& ztEY4l{ASXaQax-e0DVwp#D^-UQO>l`hZ0I z`rtWKb0YV^WzUjkGsZ4NA3vXQE(h*RzQ@HW+=SN86`DEMF3ovJTw5)z-HWkLY8Nk6 z1fXJQ4&7{XB^!S>fUu>*zhDD8+2uhU@I|9G6!f1*j!!?}O^O`~NBVQ=HbtD#POf|L zcci@6f}{|#+qk445|wkD1O*!TN0&nfu6O|oz3l)=yi`J2BW`&npIL_Mwm0ZZCH*2> zt9|v)EP3;-fAcAxf4eq!IAp(6?SjO-1Kuxvjs5y|+0=*Lm1XFHrcPr7loEkEcGIFL z1br%R?t#$8oB7;dKDyvzFAOl;JZbbMDMZL`Ckz=13c+Z5z(V;Vo*`9p4&it=gZ1H_01Xp zx(aV2c0=YtJS3<`5@{#&eX(T&{p7XSv+2|)ijIbsA{7cx4*CSX^LK|zSzYIzumiGk zWfoYxf4(wyV-k2l*_IvY+xQm5x7?Tg z`f_E*lqs{|5q!Dcp2Gu}!g~&V_3?TF)CJtJfFZON-UFIn$AApQr1WAy9kK&Y+JS}X zQh%At^;wv2;l+l`Toq`Jy6H^H*zUr2B|p3Ib!5+l^Y_6Yi@lnE25E<}1259VYzKmY z^$h{c+;I*Q9C*3$+^=`~mP+2ad1yV#T3Q%U7{qYq57(y4`W* zhap+PD3>{El=em%)s$dvwXs*=pHLRMbG1I{Undqz#QV7INNK9nm^mpT4AhWth7~) zwdsaUn-ZR0q32k;*qtU(3P6IA(k89X4QeH)==XoP@&DCD5&tn=to`T4ll)6SWB{Fo3?K^c5}ZOC_r*ce%E z`@XUytG;4xSCRp#85kI7n;Z|nq)H%o-FkpLFC-YEQOEtdld;Y1cB}uI$L%z0@7u@R zH#(KUdHTioIQ{hExV&E6C;5*_IeHzPG+U{!ms6yLt){-pN>8M=9ZG#uD~Cnh7Xu!h z`B_B|zMYNZ-A9=Oms7>;T{ZioQ?!L%4ZZ_mIlXp%m$U~sXUL0j;AQfgg0p>VWE*55 zs9<(;y29EpsNZzm)+VppiJ~b%&Vf5V)II*6|7LVp;6`3s1m%C(d z8aA=;Hm&r;%e8Un!0{y7XfSN;@asg*gLfO3Z}6(?kBu#TB=zY^)F0M)KiB_mnDYFtx3#w zJ{(O!n4~N;eb6KEtcj(-X^)!;Qoz!ZQ)4u%RtIzT7cqoP!wB#hK1U$c9No@uCvN+8 zLkn!;qNf^MZ|RR{!w!`m!@&LzTk2g!`;MzETI8JLETCk{A(y=pg{YJ6_=zu!cd0C#kAiT<#e1W?oO4sg_p=iI z$=CU`6sg==psC%8683t1^Dy$aB;|{PpiORkWcgcaR{m^kY}Br6=YX>CRnL|yrtB#^ ze$AGrZv`aG)5O0rx4Oc&V?}!%3tlU$BE1mSB5c4S{%=zd@lFjX>YcY$Y+?dx^4!&{ zquWk8&NpGQII}#hI^n*d#qJ~Ojb7(xYseYz=RsAqy^9|Wipkhx5zlCIXrzZ zN;rbGd+QC5#Z`6e8KsJGcXH$pW9D z*&aEq1NuYL1EQI{aAwQlD%vdT+?|$GAos7D)S?%A#)RwJ>8DLwd^el=52kyBhuc4x zE6uHD=(PF|dp2`8x%ENk;4n@>%}z}nY^avmXWsGF+VL=$!329)ymTC{&^@K~!Sjx( zx|+Y1w9&8RwZt5niX)C+PJB1yUn4`*j`zlJVgtr}?>y0NXXv$>sfT4ICKUUmH~pgq z5fAfh-OA;h`s!BMKu5Yul!osr-nO=Y(7%tx?AypG-@)rRFuI0=Gg z)~5=M#-tofefn1^dy6v&yuZSrn53Exi$+s{YqRS{er#Q;aeuqgn#}L`DN!QVT#fov zQ-zf<7+92OFZUdKiuvB*zDGC5d|fOo8gLoNim6$Or5RTC&sKWEXYxtuN3>#Rp((vE zA3$8}#4;c%91Z|3zAwyH{9I1BNbhuO0h@{ZqdtXoifMKUjzmeC6ZY(hWowldE4%_h z@KF~?Oz;YWz$?u58$fE}v;FH+OsCMC3bNaf8`iuou7Dg;yyYADsa7NU-0LQ#a09W7 zTwEi$QY>c`7uYxAMB%_joBueTSHK2`lM=T23c0k#2_@2eHnu&VhOsjr%8xmN6%3;& zOcxv6_xy%YnW5$uX$p|JwKXI~vca__kj0Om&$>dft7OUUo7Dfp@M4Tj{~59>NLKwo zj;;JvNbnPqV*}v_@gUH{DKbpW|Ap#F>KwBtfrPcOMKe`uFTAYBo@Myc>Y>CQk>pV* zfOWzk?5V}540viTCCX!Gukw*f*AR##k0ks3KogXq^07*$Zjhup4eFaw8fgejMU-+{x&D zkgjP=|6?dk*l-ArU;FMPq9TBxzPr6xEQB@<3jY(oRseY)ClD>8!8QZs?ONVrAlhQ8 z`Yo>YrZI7or^{Om`_RQa?D7ozbROavp|r$eUXgiI$KjXAuEj?6=jW%Wv7Ss!GUc&) zNK(lm_<<~cho*M=yk*^;0|tdfFgWxxjR_LzOXqcM97|Y!aY2R8^)I@gZm>)+sQUmap}^7A_CuXGFAX~ZWLHe z8R;Pdnn0So`i#7@A*Ii&+P(A`O2A+6yI(5*66=i+Vq(cH-G--j-Ue7t&_i$NhpDM4 zfTK!1$!Dejq;fc$4s#FKCwMSrlA)_VDZ^O>Y^b)Y-rXz?Jn4TZ*N5B>O8Xmqz;c~~ zkj8?%m+z-;31~f+L_L>GmrmdjiTQ&HuKh4$y95zLF-dB~}S1PwWxD8g_<ZmRe%pM#iWNG zFCI#7Et^e5-~9+eo}d=SC*+lz_|&As+XQg3vJ}(tFhLJ!%7{f|2*4 z-T{nRI$1d7zn|GWnJU9xE>ok>Vme9z_i^49##}9L53xsUTk6vZ7ZWWlTv~3!_$*3D zrvAR0H2A6rT4`CYk+9%;n$vAfn4+>QT3Cyt|I?_K^LBbCdR6w9-zbsI(I0Pm%*($=WEwQKG2{C}gic2jdd#0xh@sBc7iSC2VZaGD9 zR5SWbOXY}fH2_711!LeS3c#4zxbJd2N$*S&3pM& zs!Q>L!|siC$I{ZQLWa`4f_!t-fk(ckH%N14dr3z|d?ua$1QZ`B9QnsmD|eJj?b$@z z#>Mf%xJ$^zWXdZh${`R?h9M@Gx_tjx1$8D9loG!Op)-dog6M1CZu#!051qSVOn($! zu`5tt-4BhwSZWWqVa}fl2e}qjLvCfTfm00Y8l58K6deNj=x4*5$v@Ki^Pg1nB`aVca<*9PjP}2dPnVmDvf?UVdhm{5=TmIBiltHsb&q5Mm8@ry9x*ORu^R$n06;<8 z9Fc^5;X+q9K>-NE6I0r24(nqU>+aMSyCG?{OXF?F=~dIKZ|-S!mb2j zqm0f*J_rynV0#okx;ZAw32FGRL7$R>Qkc%3&(As4TsWYHz+6gxRv3ykZ8$i_SK4mg z?CpiG+=7I5F(tH`xbLi-&c9iXlKJNu8FVR_oG(sxw5XSK11S)*#&2hEU)bcw!-H2A zSkS!WcG;;pZHThMR7ah&lPWw#eTzH}$j=Fv3G$QfI_cbI?1U|u)T-U6lw~&zfAGli za=mn%9rTV4{fnD?$ax%I_lMU{?>DAv;!}JO2DsymUl3QC+M0|*g-FVNNX|Vfvt@ER zE#yqAGDt#98>7Odw@Jf9$R=@M?+b(Z{A$_ke{ZDo9c|>Szh|sf5Hpe%CFq8}!|*?K zy}6afKTa;XLFgJB4i;%VO;!EAN2^^R1Gpy}3xVlli#_M>InUazkPALXwUc7?cMfQF z>WAv-qOrAk?_@0{PkQ!L3!tVk|D5#~n&E!FtOYQ$Y87~Ga@bMy}p;z&qAa%DVEhW;ji|9HNKlzy|JeGqh>))nDTjnOOAITR@7?FM6SDV#KmRSM*~yxP zWxORLBSW$??O!Mr{*C%A3GZ*M1L;jz{C?JZ$|YQ%*Z+yfB&nK<{+*nJIF91BJs>Wj zD6x5<@B)7wNEZ`K(eshgL~D{~X7JuN#05_>D%DqjQ#)!6!mgz$vvze*WmD~=1hsh+TnqgM`TDjw`9j^t;Q{)&!F?1^;_*)0z9#WaocP7 zTY;!g_0%Jb>C1cLGu}oT?N-ad$Nl($gukr!?KPLe8yCxXrsTt7Ojyn2MJ|2BxR|RT z9T3{KF)96g=WJgoom4d87u1C=X>5dx>BM>DWU3GDXuxK(l4)G}=A6vO5+6_pI*<7G zZ|twQaz0#)W>uGHD18p?Ap@|9(#sOh;H&jcFNb??t?8+f#RjDsih9*J4aVch*mrxt zeOa;?qM)Tz{x2NIRgHIGS>>N|q$aA#Qvzl0adz?#8D21ZkLVvhWb7N1PUoF0GzLcr ztQV2bhiJ9+?6pCpmhe0twBG}Jjq&(iyX7{1Pj4_y?i@au$}W_Q8+DP=nPgC2yoB*| z72a$Oq*jDDZlwsjaiiXqoUWPehVyjpzvQV89>Dso`i$nw zqu+Si!O?r{3-M;r{xr8UF)L=g9y(Z4a%i!t%}7)9zatg|WaHUq7nVgHP&T(a0)ov# z$(r%V&z|_)r$+BhfW%}m{1^0V5Ezec9Y231V9(rWHP)@a6c>zqXqLibzjh-WP&B@o zPm~1pQ=R+5X}4C1hO6XJg&0Y}M;lBuRL%r4_8oPb6>XKmob3rM*b<9S>ld@PP)I3P z`5VuQ!`cRLUBK~K5UQz#TsVRlRhlrkAl3cUxZ85=Lt=WF?smpZX>Vy%;$NGRt{vD$ zhV3ON~E z$Yl(MW1D=bHfrtUbLmoLz(^|$>Tc>kIQN66e4=PJJgyuOTYSgPBq^HBX7zBW5sIDLAS!wWSzJGrTEnm|GW+ZwfK;p00&D$jLxeF*36SDo~j~eie=T?Rp zX)+(Pyqj`*ZjvCRkop^%j~LX1s2gMWt6^a|RI_mg6s?b_>7hx2G$clSlnMH+>>sLZ zuZDQM$zBw=^Ff)S76j_hX$oR(w7D0wmK2E}{`%s2(3ethYGjrpze(47kfXTd6UPd3 zqv7z*!ys;nw#Y*a9r$bIRvd ziXM46VOG?MlWPk_Z0V(djWn?}Uia=sOyDWS%w{qQG#CwDZcz6?94v8aKwbCF1U+h9 z-QIS6=Tbn~x8qj!m?&p0EA`afdRc}EmgNVA5dn`{dL?|hKHAM2!Ux?#W%iN5bY$V0 zgT>?Acx;!y16J=WiRPRgG;UsTjF_Wssn`c8`w<*SUx~xzKS}l=*pK32D=#BH34qJe zeooo`JT7_sa9pP7WK$Js-ba(gK3i6uxJ5wuM6Ns`7WJ#rrKhW!T;$N+H^SVo$=wPR zZWRJq>=(~nKAGlfLe&6|c1XCBlbSa-?RI&+QWV{<`tz6}hRu#}9_3qeoS+3J}sGG~_a)Z1p}lU0jG z;^HUI_M;Eh+Tnp{$$jL-r8DX>en>BOi4BgsJ&DB8FFx1f!4}X@b^Biz`ee`N%C}ps z7>G4l9gZrHT{5oCGrY@K<%!)s2h2keSpg3MJ4wFQ7?U@k7>D$hXe=UcLXPV|6GOI` zEa&;JybVf`Q7*x{OVN{(2|}jwEu=PB~pw9bL`x)fy9-Me5O&SNsatLF(Qi5lvOsElNu9Gs0jdhZ$`DZ zAdvc#3kubq)#IRAA;}rF!Y*<==;zNtx~US}8x^HSA?;n%;~G$zg3oayb5{A;BUf*_ z(|%mo!Bfvl zqFwT1I67TcHmc4s9|%hK?u_xBCNo|`y2G2U@SQ^!3#plDqEO8Jp0Mkm+ILcAvYR@ZToS%wN=}=j^keWZDQHj z_wR><6-ky&g~ak@X{j+&@zh4(4$tjWC4c9UDN%x5kJ&smIUrQ+hX9 zrz2rD`H!>?Q3f&xKxY4I85Bp*?Eyf2owWHhCptO;m*{ z|8CLws&rEzqHHzh?yl6sC@e?(MtQ!`d+|~YBVB#C!Mk7n>foiH5hv~PBJ$#G5tk1O zPVUK)!}EX1#lrOrQ*U^p>@rY#kU06T`po^IoMw6@Bl7lgV4Qoe6G4|>8(+Wt5`MQA zXWJsI?jXB93qw~=2wW?z!^1Gr+D9L^r=_wbNbk#nP+1|yG|KQc=eB!M;>=l@d&$Ur z*NcOo2a718*Wv3+T6r5H(rrmto1p-2zuzkQnx?jgI1{$W-R2F1yh7D<%TP^(GM#su zM+C_vV%0{?rAJx*_ebP+3IAlSYcD~s0cDbJcF1RCYvFL$w~yn$7hQ$U4`7BeD08N= zrwyj+PG#Lz_RM5cyc=YBm2p*O}n3M6N)B{XQ{INDrJ1&6bN8y>A2r>CDT1w zn>h~!4R>QXDUB5Vxy1zVE!i2LwcM&A%ERI5*<7wiDn*wfo$>nRg@jO-zAaX! zw8MKG#ID*ydNo|2&BcaX8U!SCx)9FQ4qIqPcgaw=Fw|4KH~!a_2aNr2jpP-KDFr^} zB1gxb12;iYMj#P=o20YiNy9N1z0virjIvsT+2n)oF7pd0fwlCpO!hk)aolw? zu3D!-WL}b(4g-=-l>=_l(3(Zs)y3xlZZz{-_Kq@=k8!%*^`lTw=O0X)c(Rwq>)s>z z3CO-r0urT@OAnA@h0T%&RM?}(OG9bRyLIv2gT6ZEiD~nO9qzLC1N#7tt(Ve>DRbCF zo$mydEc+VQ7yUw@dRe8MMc?$<$jq+dW|e|#a`sm8v$z8V!TL868`++y9JWacQ))8y z_Q`r5`(lq{35(aGI_~)1rtsMORcnP!PYnUBxrS-XwOi`Vouy0-o-0ZPa#_dad;KKv z?hfX%YC~g<^s{_Lfp1V5YxvUAq3W*m_~003dPEP`+6sb|syeKE zYd1^gWFzO&m*It{FF1Q*nnl8xBEh9fQ4pATvZ|xZSTvA3C9gSPWqN2_rm#msQL}R0 z>pa-*Z8YE5Ty6l3XJS4<$nlZ14F>#ca5QDnq{HL#(?=<6 zTxZ~>0SmvjVyC$dO5wFw-XO@Dc2&=e_@v)01G(#0HDYN*Tziwj@5bGby}9O~JlGRX zdY&7OCT_LE3*mc_1~LAswUTBiUmxT5HfHFfCfu^>Ek?qtVY8PYN{5C3LDf4&-Iu={~- z^PN(cv|VSSVlzrD^ZxcY*Td@h&Vu}!Z$_IM&I{(bZ=7NNwn05P^d620WQW4PKE?B^ zBE)t%g@y79YrIh`B6FxuTOE`Om^2H;1mJj+kZzxE_$uDzX%~aYGl;Pd65ni2F#TGB z_tmq1BCEQ*Y{ST0)<_OUmsJ0J13a=8)+pb$R(h4V+H_*8I3AqExYagt(dIGaZHW6+ zCB(%`!5o~4ucy1-&Mj0K>5V2LWNc-ihnniJ4vX2UtpqA=D~h8u^;X)j_=MQb%qpnN zA*G&7F}*XRRU_NZ_}>k%2T*JEW{?`OHld1h%r{IVYI;>U4__D!k~*9Y1(VpEiuzvK z?rUFN((iW@Q!E|`zanB(ZBbg|z#qCl7~yBh-(@vRV07_j-B^SMC=QpW!I|{LzY;P? zPVe@LA(H#1vy{=9uKSGjBpf;5m6sMCeJ%DcfjvO=)TCg+U${J1%)}zV)Y%3@J4kAX zId$c^Ui%K_t$yy=rD)&3j`mz}a9v_ouxKOBLrK=p-%j|aGFfTDtr+|!W=NS1o!n$H zN+XU$qRnrY%A^rW=RTEG%>t!{p=ZkdAwBd1ni&M*)%L7x|tmS9Z)je?r`5c>q z%_&y*KUk?Gqb`fK%m~ka%|ZiCRMm={wG7kv<%PKa4k?M4@Y*wCw7n|k-|5fjT_3)L z_k9q146>^}9kcsQ0#v5hEKiT4uFmJabHRNCO%*CtoG0)xT!3s5<@N(iBWRz$@{0F2 zU*(4fgGv1jkia-3SgAM?CN#bGLZu=O+T1q~XCPbB-IjB#=vo@I)2uS2U`r&TS>fH? zs}ro*C2>Ob2&vEd-9`20L9izGyKOR^Z_I?PeBZT|t^eR!MCZyGPFC4A9&10vogo^+DRKK(gQP zS7QF>Ojo+FJ?MT5RFhL(Ox3c&wt7>Fi8AH1&K)nIpSVlYYw#>0B0@z=$i#e)@pJbf z!>Z{dc<*~(VU}+g9&zxTr?8hh)J+XFa;z}9LQyN6WA?WmSXeH%leo)(ZHK2kkvRja zCf^{PLN^G-9=pJH8|#BUs~=zJGYJr7>QJWGPm;%k(8c zYfK)rAl;3>MeGxsw$80C&aUU_*ZKTA{H#s1>V{*qC@oGUPJ7q(ZS9Z1{qA>DQE&64 z)|@Xvx*1y=uT(<|YcZ5z5p+WSFMJ=D3mAl2V0ETAFy~Jb5?dBH#ez)Qs$6A~Xo(^1 z!jZjZ)U41}^aoPa!imq%A7%s*O+TtX6!-KhA_=Y@*&b=CCL^!KO1iB~p$*=ml7Kno ztI8A4kJ$F`Ox(X=j7}(HY|M_W9jmeKs61e<7w?9b5D7y(p>Ap?4~7 zQMYUe6RJl4F|tE(VrIg?<@gX7!3jD*cqQ{TBex)JH4Lp;pi`T{7FVvQ5#n#PxMwWe zIJW0=y`&e?6#(Y-mYhKa6P~(be?qeN`Ovt?zSd^=`wr*?)IDx!Bi`D`Kef(SPR(X1 zL~#r-(@y{7nB~bH0yFZ_mXR8fu@Yxdu0P-itioZ0Fl#<+k zpSLjJny`b^8#k8`<3GsktK8If3{Cv7e-M9V7m~&%91(&o$9pD28^G1 zE$KPcPHQ|b>+GabcC(K{A;Jo;k5jT_6^&4HCdx-fRuDXy!5eA0GeI>;x$LCCIbN5J7Dvpgfm_2^f;pB1$V6y$ZM=R5xP<%zO%+Vfv1 zh+M;?Y7=C844VwxP!POQe&D{I!-h05a8xDbV^E2BuDA0y0i~hML7<)eoY-jR;ZAKl zG3y1cByYkHhS=johu=^Qf~-z?UO!aGC;Hb;qD-OYv?=R!`;UZs2VXxf0vxfKC$x%V zMwjv6lU#>7<640$Br)tT^O-|ELa7hn(1f=8dKf5TQ^lcW@vP&}uaXIu_$ zsP}z}Pv)Wi%+$tabRU#MBAmbN2=LU}?6->+jS8?9s|SNFR5R(Wpl3r1!^Vwz%=-`S ztx?kpG8c&3W4^BQ1~t2620$8!w#(dI-K<|n+LN`xMOmT=U<8sTL&g(V zZRSHFV~eYG)`*n>m`)78Q8SITNgjrXwhzsi^Nc5?!|27K!EW3!lRdAlfoIn_X5|Xb zp0n|xn6Fh5gnSh7^|7G-`p>GG!)}~(uzD|c`}U@Qm`0N(ax9OSwBl5^KDI-uv#k?B z=J2Y_@XI)sbPB^SJ-!cAxL?@W2t?yH8W{E7iOr~>EDFGR>GSeLYM*h76DT5lE<48L zC>|rGrG1yV?nrGdor*44hAY|Wjy8v_J?)@|Gjxl}IVx@Hma75O;|gVdmHklYxoxQn zvMy&0^1?$e3-uCF3l3-*dvmd*&N$WwpLz>g;fnzncHYDXY~Ep z$RwVkh*AY*QK4la)OXwrMf@XHFCm>79!pl`O0(w%Nz5A8X=0DV5q*~y|3SUFICQId zaIXD0PMQhKkg-e(9_v;G6nE2CIFp2{YNn%qFx`4s8~PKq4Dd+E^rR{7X=y4wRsC3) zdzF5&h6#fR1Q3!LtD}A(3dYqV7(JZd9px3b4g?fvz}Tm}>4RsRIe7>S!(o$ZWXRk3 z#5GD*M<~w2P)Svy%aITjoxl>KG)he%*gEiTEUf7%;P!V!7Jt0O5 zz+`E7!n>iqGs3V8E!x7*6xd^Rgo4%pNdjcdM)}yMIbml!GonR7*eoJ{4AG&y*aE)E z0ltgVR48Gvk`n@(f-#FR-g>?nm|{AoJ%HK&39DHnd5s6*hXZ{~?S_P-+_0sv>aA!p zW=}qJ?s9L5|yuS(N>a&wXX2DkYKg<6-&Z9EPW3s>{zkRSBjQp|= zT-tz6AY7q=(Q|JjMBb=j!vXuwg&*b!%ryELE!CqalmD4^@_xC8QZucb-tA;J#;nBb zBnt55`zb(<-~Wk`rr$>AM+c6y!%Mdgbey7WX9(n_3unaH%m3KGWyR{Xe>d_=5$TU* zOSJ0Y+oM>zPG8jGrv8_i&hGgm*)iW%ATYZph19&x)-f=L0@Y5vn)G?2nI&JQt9HfF zpN#4NzL+B|c2$B@P#K7(GYmfvlQe+){*}L@&W8ZreONQTITJKF5It;iP5y}ni@vQ~ z@Ys+&!Lw1&z|>}4Ma=3mnnUwN=Caa|1SPcUFSIS1tGAguwO;zgq5Gnb>d_%^MYwqf zM;ys_pBoWl3R$GhI}J8300eli;m~+x|7_m)25?_%*tv?v@0Y#j$5A<<7(NJRpXf=> zmkU$PSyiwhiyR_&uIoRs;5rmA^_0pYkrofGyiU@#5%eXiRoof!mnz`_@F-l!(_m5cDSf4CcH zADIM^=Ire_k@p*k!<;0Wsw|C#>QZFU5U>YbrJ58f~EaN85lNWjCIrRE!$avt$sQ9Dd+sCJWs zsj5+mKKXff7M_AAg&zpv8&MZd(z#?O8j}b`6GX_2qCe?S`(>rKzM@ARjEo#cLm;7W zT>O{pkIu3~`6@gnj@W{vIFd<3e{#oohxpf7dt0&YBp6X}M0Cc|fPV|0VId41B`GD> z$9TP)s_G8C!NLTC(knh`%ffdVW*RO4!05*7DPRzjiZpnl0z)Ip*V5QD#yIE`<+J+F zJ9|#zMxkga%|zEtx2{THlA^o^dfgUOrSui9S4d-t8hx7&-97)u8pmYt!>-d+O}=mw!O8x_HB!3u$PLJL^87|+*cv&nY=kUu21kk8FP-zPETUEw*8 zsf>tm4?(rG5<@=l4NlkI6DS&~t`CY&)H)0ljBrJgD7^qcA&d-<#?7Ykx%Uga+d=d>%!q5la6)m;%j7URK; zyj91mCzdJW_TS%;pjE9xC;}B8!}m+tQl}0A14hYfdroPR@QX`3Cn#oTkb;5!0S&t*Bh)tzo4yP$o9XP%H zPy_XOpZ6Ysjkq3O>`Xo*kg9uxSjH+?Y(w!6m-3Z54kgit)>$M(WUtZ$bYvqeRrl>` zJO0mtU>BG!eypfv%*G5lYg%=RM@af5TLJoerMe*W8VNs$T1M zevmnC_j^jT+M1!$Bwo|3UH213E z0gRPExJS1y(Wu2uRPs!}&N+$k8jm68F;)Q-P95nmZV6&e`_kOp-$>DlaEPfW=NmT0 zi7E*fbhM<(TCBL8#Ee%Lk?(SUCJ}!e!I$K1@5AJyenVsce~Fb>@O|0<(Uri{52UST zqbks_C$>}K&9}kvJS(vq3;%xkJE)nGCs zPIRZ_zmjUXH$n+oDK<>qy8E}MSAWkeg*plvnzzTIYnan0Z0$b~ks}xG5z?QH+F7CqoW+Y`?Pt10OaFRlMs$R?4^XfcMK8vL9m4MVp zIEZi3GrUH$&b>Oc4~qahyiGeJ!q}ff?G3z)Kcyk6_fK-=yz4}lUsr7x%a=niya{Cy z&he^;4mewR_cMUK{^cJgZZk#lqnaTTu_O?9x&BKph{q#AP)jUMZ$oyg7Q+0AABtmv z0h1>CxeXEFMoz2cL)1^6i}xH?l^=TGk!S>w1)%mL4TDs{5<AeJ2l!G; zv=^BC-eS%1=d>| zs@ZzUTlA%=mV)^DBca?V5a#zNuSyW*l)( z7>$vw>1>+!Mr*e!Qn;w_m+f>r-CPqI@X>ZHva zk0phQl5ay7|LYy){#vUyM*R#Iapos3LF`NX~s@KFYI<=Cqjzc`fK}h_yEkTS=ttPWpb#h>;+K zPJKd%FFLpvZuXwO1laBC=}1U!HDlC{c!W}w!#}ZK2Fx~^MOrUXJjjzBT;2vaWsgvb zil{996mQbfsL{=y@y{*$nNg3qZx>p-Jq!9fOiV0h4P5MQsdnC`V5KlU*DVpgiWd$g z<5tdg2w(3U#M)g8K!0=2VLfn+)|%Zl?xvR)JERN2KlGD}TkD5YwumJ>uhzl@h23*|iO5lg#t&XT(9 zSxrehxaF#qdE*X})GWeWG#)~(cK1m$cfTPEQkcd6CNxBU%Ce=GqZF9DaT=+~I)db9 zHFAFntc)$8QoH)KTUJsVQpZCSK#~A0*Hr=Gmq$z+4X2me=E_!5K#!XkJ6xZusOcv# zX)i}i&nLv82GVy*)>OEb^QqzH0EfhZ?JkW7f}tN$XHJOtB70Gi#@N>V7U}+KP6If* zU459+^eYUKoVDZn{{@4$6)Q>>nfa}+@ZkFkCkQe9Fv^=KM-+7Yxz6=D0L0MUO){hZ z9~v7-MF6?@Q3k;Z+QC{rx@~LcdX~v|FtOW^*>9+Mv~t()QrcZeJv}T_x9FfN%{LU= z@%Ut_j7ixDFPVIe8UhTt!V00wJb{fi*W=zmzX{X0)y5&e5+)IxeRa&5sIGzssUje@)bqT&4ES}ftfPQV{aSegkbq_Muk8j ztYvrW<|PDK$L6Lf@$J=lvr}Y8ah+}5^Abwu2v}b@@+dDA4i0yyE z`ZvbgrSmmz)94(SnRwoD-W%dJZC_%DfG2`}nHkx)Ns``llxkjx$0rYHQ4^T5myes< z*0olJuGh^k70&GpkD{4B6^{EbQP#tzd*3r%|t-9dOCfJFKG`zffyp#NR9xYp!T|nuh1WAowna>dm^~2mx-9ECi zg4h_|*03e}rIi|CBjZ`Nxf#eSG7-j!Yf>07f9~#j4GY6M!u~xa3?psc(z(PaddDe_$dZs% zQ;_+-Y`L2=XVP-fupgDg{|FBH$}bw zUkd1d>HuBnc-Y~Hr+#nu_=X|yhF=OGpYvJ&X^2R=z{D{F8SkAibo;$P=_2jwG*V)6 zY2EeSbyi}mn4lxmRt((;+E4gi=Jv6raE;dfXS)04X_|iPV_0q*&1}+H@#Ep1oxj6d zA^K@}zk3E_{}y1^Mf>$u%3kYBaRW@XH6hbPkyT$aVa)S&HLSqMWtF+Qck1r#>+5ST zi+J{W`Z9Tb`z``kI$K%$KDjmny8SXc8+1%N{5&t @7Eo!F~+Zu?M{o__XVk6Q7W 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�)-WBEg`sHpBbu+9_|!u(zA;Fq0N@)6xK{@?tmUA~ z64$ok@V0_qQ@blH*2d%^H?BU*Hc#BeC3=|TW*%5oDdMuh^sRp2>&mpZeA*7{n4eZM)YM{5 ziU$O;8~6zCK0Q?Mg*qfN(}#*$VwD{0f)-vPtyoRXe`EV(c<3M-A3*D|FISF0qiKYWw#*!o(Fe8rUPe)sNwS%Lv}^60;4g=6AWu>2)nmq z<@zTi>|J&xR+BspHNBsP7S|fe;?|*Hh_VuS-(p3ZlFwYD^{I{fFLI0@g&XkS1T<@l zg^B2tcEqX+^;=L2AN{UbBhiL21>cr}jbEWcEAE+b95)M+{mPJ!hEGMONDeAXw{BNZ z14-=>nT|MDF4oP33ZT12NdK}1x7z@m8HzLsmNIEt#R%~mlub`E28vzD*c?YnlLX>e z(S|`KY&GrHL7efzXk|Z&iKLcW$xq~TGm#?cG*lCaZnKYj^UWp2I2~`wX1qIYfI$YD zjkzdAmYOUwm9{QodO-z@%WAV78;>^BF=i;1H5IHlH$G{~fNRiO4vK?^MB-$3_sg%) zc+;_8+&-m>ZHmtj-`Buw)zPap*(mO|_H`&|4lnl+GI-E91RDXs6u7mf;XdN)|2d}o zhq?%DtM^L`0ssKR1OTA^-;XK(gU7h7Ve<=0BmIZRNT01aBThuw6W&CsL+9%Fq@86- zWU}#b2pCX26ilQH+?C{kTJi#<$lQkNc{{7?}`rXetUUdIyv6E(@n(0 zGCST0Pq(YBhg4~_$>){Y;=|HT)ceWa?jf{QBSc0@V_d?hFt^pB*WDb>qGU-pYva|e z>$a+^mZao$zq4a*P;*?9iMy0+Ol}SW9;yWzxhDn>w&{&DKrmcOw*APU)Fx zPlw{DVg|`BTO?NTH<|CmM<3HOTdI^eV*Guxs+bvvokFG<&y=nRu%RFi;-=z_*MOv~ z$slW(ENT*me49(K%nZr`%rgvmU8*~U)NC>~X_1$i5bG!~T_S2Q7P|OXD@D<|9lL-9 zYc2G~DcVCrLf`#z&+9g*3)y7MwCNpV`5Is>i~1GHf}{Cz`=@RFy|yv;6m+ebjXcoq zZmgiFC0%mLwXiy3Y(4h-QVS|n%C z0?9)HBiP}SC!3DeogoulWJT?_rLdn z(r;C4|I#tstY)-CNg2GKMSB-*0t8q=o=44|DbNpR6&1==_4Xu66MOYgWzWnJbK>Z| z57njN*q!>senaN@QLJxEbOUwoqdfmZilp$QDJtBAq5=}&jzj=;j0~YxtTve=n*y3H zmXIZzmd1L?GI$z&{l)m27WJMbY)SJRBRepYlG$WUCfk*R>sRJ;57mO3C`YZ_@S`1C z7*Jt^*s*Q?{KqQ0=1&e2W*HzpNAKKrfq{2}-3XsAw(x9{^N$sX#ROgPiz-gF*wPQF zGM*wRsVGA>)>(@{EHRA$79>ZDjT5t~21Oc+o=nAY)?oo;t^PNM{J#r*Ze3-wA2G=9 zwn>~8SRb-e?ihk&m>INsv_~s>T+ZKecRJKk1bX26ciT*-5A>lqn??eMkAh)u4g;76 zSVJi8YmK7sRk&*Niu-NCkh(Xjh#G&JBk;oOegdVQNced>ausKbeX!ot2^>z}YEIbW z@x2&|1Hg08*%(q{gSN;RKVa*W#>fL+?y@&PrQ0MfM{W5Wc}9Hro)VKd1O9-qKxq z_@}!k{DpFB9M#2p1qv?D7iaww{gf!tKAsezy+`xNfhP58#B=^Qe!2^vo~qxMh^G5h z$9<^o{-bvOL9UJpe;(E_qGRV)*x`krD9M*vELav)+PKc^3^U$<2sv{nNqd7hSH__m zE=ul3XH!5>I|)-;NE#tNd-gU2IpcG)1zB;S@w5=u`gW7sneP+;fUTVQL$<~fe=hbd ztv6yN4ZiN}Dd+d)tIagFyhLMnjus$f z8jsbz?Nq4B!}$jP-`V_sev`p9xjs3_001vp006%i03&MyCnr5qCp{wrBlG`TqUHH5 z(Y7`3eo@s)n*F;JM%pF9m8xEq?Z_FC7X@=m5Tlkv#&PSs;cJ$+8e3!MJ9V|Qv*T(tC7-V8Og-7=f|EXJj+$hxRJlSB z)ePzunm^d4kiGBmUj!-i$|1LEm5)xm@Qot7%B2$)iG=+8OEDO(X1(|$U6AQ}!7lU5 zvirFAmDZw&bNfOobdwhJM2B%mQCj(VyBFHDaXA5e6Z<$Re0Jc(GD3TEz@0h!=&6yT zB6S!3sJ6`MS3J|uJ<`^r!LqVQEiDlxn!ACsr;}JSuc@2kwKeiY)TP1E4}nd=PlbG=g9t@N8D^ZEWrZ^4N%F#UG%RoEV-j}f=nDz$0X{s) z#~#oo%(v{0E_qAd;uQG<0c)Yq?tr?|xyK3^Dtq5hclFZo?BRO7eEIbhrH4jY@TUXM}C`s=8ETqE6q8T(=E_=S)=hm{e^!7BG-*#Wl&8^4ma z2Js_o<%RR)IYU`{tXdHz6cQK#SS9T!3)nap+f5Hye zQf>wsU}XvNQFF%C^3P-U-~21C#QP)Mr&!oFgR`q=gzxF~_8yGH-#3PCA)llee#lx|PjU-0NoDUJtd=+G!5}gjJ;tL>V&dbFSJB)n;)0licS)38K%jZ|uk3 zJmD?99KeE)TD@MA_23>@hpffcT4*X<_|e+ko)nmqPvKL!4-!~1er&Hrz(j%<*l?ho zZf{Rwh3IA%P?Q?J0b5y##<}WrTRB~yJo6_((&FTPE z;RW!^q1E)3ZE0h8x2Y#2i89V+k*ew zFy)dWJ5pQ$@Jv*)x|Ba=jg2*Mx1&`?CS*iV&=dW};tVhwK0gmwBD^YH(aBq!X32Az zu89D$bVn@*JwQN#P-B@bSRKn8oJPusV6Qy?gm7&esTD6IQxM#)2J;1gb!>h^0;Lzg zVYl+AG_nv+&_yAZFV&zPNR>w``NIw=&>38F-J3r9H%l;KkPH3d;a@@3hNXD3?5p6; z2gy*$kw!OOz4Rud_8>I1VP}uU=3ZL%U-z3*i%*&Lni0*Uo<2ezaGjLs6D$L)JR~YM zqmLX>m&q39zw)aNUPI6_ldQOUY&6@!SsdtKv-`aw$s_Su9%DdEivWAn?pBm0T(>7gq8K**&&~3NAo}OZIBBR4S{3JAXl=7y5@*{^!;HVB{y6= z=Y}$czI$AR^T29;Sww0^IuW0#Fc3Z%=|XW~U4;qU&PhuRs!9!98Xq~>9W6$nJli8V zwe1~O&p^;hsc9+g2A`kD4XQ?8?8eEL+5(MjSmt(>XG@+s!=L z>X{tRVdGg#W#HZbR?Atxn%QpJ@HV$wF(zD`tl_m@8T*zzqr@pjXC2EAYzOZ$Sn+lf z_ADzT6Kh`;Fls@YxP!pkqps#bFOPz|g&8}8tVI%l;#{||K8++#nT%S09p=-ulD94W zJB?be9$_ZQbMWL>A-G5VABX0dfvqFVIT_dtU)WadSXR8VS3P zqfw0D@$d2fF~433Pi;X^@VyQLH$N`5UCDa>QcNy6W&L4cbRy>%9KTSh@1wVfv*=W30wN&JJ$6ymH;-4Uy{yhxq`f+wx4d>E+Y^eY z84A75;XJ7=ZqDC|6O`6HH_)Z^Eq+uv!Z{(gGJd=S;5O>WHs{e|Ye1Zb#oC`>Gf2-v zyu^Kw)^B?DFzBqgR2IuLlMa4fl_EUJA<~?*e0n20VJXR)#AtTPhT4GjP!6M7Ps7r+ z?XcZkRvJbN*n8GFXXFo~)abMO2prZywp~^FIGxDHvch3vrjSy+enKC7f%zagEYwW0 zbag3<#EOxQ{hneGm$Ta_0P5{qXc71Kyrxxy{5%sJjb-J{2dS#+P0}3uzEhp{5#S+* zDRI5|YeHT~ylZbU2I>9W45}Xk#i@WJONPqeih-Zg@y%hkC!L`4L z5RwsDPT|YJ*X^x0W_Sd~eUPEv$jsAZO+0s*gQz|?>xw(;#*MDl(9_1<@%eUee)#x# zpX(SOB)DQZuuL8 zTAmV~<#Bsl$mU2+0MGKz@y8!}cpXYOmfP)!!57@!dYIA6bY5|6PG?bg@KEra`TM)j z?GteHu#Cu1_L&&k@0J9Evi)mWB)pO(VxH-I%~O3of4C3<%ERWSuzqf~OdlV6iL!EY z$%DsF9PQ<>!pQ+nm}2QA8f%I~%T@mN{Ss{j%7qt8k7D^O(DLsH3Smgjd`AnnBr+lm zJL-qS%AH|rcz{fuBT6;>36}zBERN%WDYAkT_2U^WD*P-IsYQosi}fFQxp!3KO6Z9l z30OXTr*_5^rZ#Wxl68m&9~!}cqLnJf%(pM9*)xk9Nkj*sBmGGY*&VgRV3st^H3cjB z59h36YE+#z(HGhgUQ`{f9z;^AmqO;<79(3d;Pxb3pJl$JO~uGo)U-32w+d^4zJ7sr zP4!c~#sz)9nZd}yya~{%1%Gh6V?YbuL@Zq$DW2Nr*{MQpPUJmJogCD~W9}m*O9D&H z@QT;UW(Ff;#o^2XB8$FEoS?{$Vo`K5hE7SJ0GlipbQn4&@S~2k1)L<%Rwi(kSCL}^ z?NDu)PiL6|EK9Luhow_bhByx}!2=8JBu`qlRsPOk*qLFL-NXL99GIfgJ5oLdLdD=ENNlAP|1|9v$D7;drq{t%jmu`>1%E(uNB=I zMii4b5;-P88tL&61K+&`hr6UqC*n;@BY~Uvix(7q4go}ll=q~^xDr1}KT+7yyi3gs4}y-BEF`QPv=~^g^u)I6|9%e}`JEBZpKs$?#xt_oNeSy{75=URnwe zPN&J^bPqWKC*$l~P~nA6TcsI0B(>#jxhehyHte}N2*CPow&`~bg`~F8v(bL$j7=WN zT^Q1;N_7u4(HL%+BQ=`iEE3rs&a$@9*wx7w6?DrX&+mghqiC;Jjq};Ft6X3G87%*O z(!MgRE~f18Oa-4YpOpMJI9wSM_V!8%5wx!0B3S;JYMD-T?^AFf(rEU)@n3>`^Tdld zB2j?SiM%?LC^0mmq)h(Gcy^WkE5Tr_&lSRhH`jJu!68|}p&N+-so4uRC_A~I{0 ztz-476>x8)dX@I&-stLyz|CP*me-K_pM1>$dW5xsP$WkjtZ|LPEO%MjU6-K_ywmcZn zMCw9FD&WSw)j$)GkWeZ)bqW^k-& za>B+wa~mVFCxB1#?UrDO|MlNw=gEo4+v`D~jz8Rs6i~nk*3z3!P`k`y^qgDAS;FY4 z*mL>igY~ZI-IDHpawnbqW08zxeZZaNW6hD}P!1JOCquJxO9>S}s;5kzsD!dDzn8p) zR_S4HI*esDP+90om$4W6f#6^Yc2R)U0mbp- z|CcIxz=R2RqweOJ<=;^0dQcit zAVHkN>#|I1;Qw;BB;}uXRky!-dQcVLMyiTZ#tW4)a;{=1T3y+bLk`4mRZb)()M6>M z3mh>-EW^Z9?77;?|Bi;8)MR@MiZ3K6pIxf{HcK?UIp))I2;wrCreT>hcIZ>1QUN34 z5owZ4R|aKkM)4a4Y_UVe$zpTb@#ip%MrQi7tA>~+PHY8Ez0X7n`6|S1OesmLHXJZn z5*a~kp_G9-F(LH#^0XM@htzzX=w+@V{jhKITo*-j#f*0KK-up+c7CJIcWaXioYodB z-_hE1X|$R`+?YypLjg|34$>~+Z8Ro>x~Mc=fl=M0Th{hnn}yUn={U^8KT@b&hLZc; zFwW|~k-*L7ICS>V@`c{6Yyrrx3njLl-|mF{CA-h+$`(%iw}H|zciX_$;!dmM!EaNZ z|GRB0%CNdLg`$+ia?2y3&hakg|D6~C8EAUEbXOY_g|)u&CVfZ zkf@6B@@cqq?@?lQM>&GM`INVO2NNa~keJ+qga_}`G|@|Xq&d3O04-=wr`a~(uyVL!PmiZnrivEoEiB3=K$0j#2rI# zdyo2n-6!!i?AvY;ZTZ`4e*MXby-$7akL;{XlgsdChh{(rSzQ5mSnI#FXehtzUl#}n zqqshi2e}~82mdMHzC1RF}1~p)Vn8=S5kiOB=6`cxQt( zB9VK^%1vb5tlO$!F<7;}&CQ*#l&;BgO0s6z<+~F5Mv&5rVz&R%YwlCe4_g51p$gfe ziY@P_k298?_6;Shk~4Vn2_VPnkE{VH2hVjHGa>HAeM_Qb&&Lb)_q?_I0Y^us2oeF4DEHJ1_r(hW|jx09u9lAe) z@{iisEk|25NPoI|IsGd-$6D0%i7|!z+^l{1cv{6@8B8i?i`X~5-{RNittBHf z3|OIw*}C(#8*#(+ZX$lHQXYMUE!dI9U+wHdKtLwi9xgS4IS&bbfkV#z4N(zen1!Ds z`<7MKk%eOdQi8Ob0H5JvBq1*VqS!-y`$TgVZhnqJw&Ou8rZjg3S1l_J1|+Ql7OrYZ zN|P5OE^0zI;B=Au_UTr@Yo>cJ*F7=n=-4px{()fRQ>zQhOjQA;R!f&*%1Bl10gM79 zosQ*UCDOic1wk`-#vxS4#3D3=<)e=YfkpdPdpG9uW57z<3!jN?2BBkXV`Bpz5H}Kp z&td7j7K6%n0}FyLoO_b_fW(-!Px*bHb%E9q1Bv~t-C+h?OSy9BJGuCFlBl7Yh%$8W zcl(YDzD@!eIF2MC+uB#^`io{6;!Z9Cy*^^?Rifee z0~M=f!b8;pr`H*xxye)!*X5t<>+5y5Cf#KA9K&8``xFl~Pu~qd>65K#^1=pZg?bmh zxyMrVQ&r_%B8g=YZsOf%$%VkSCvO>80CiV%zk?B&_U$N3_Z1hps2u@&^`6Zy_ypO? z3ye1Qn37Vbp-E_&m#5pV-`qJblyB8f?`S@7-v zu9M?mB}gE2w(x&AXx#l3 zH6|HyQ|DvazLQycVJgL!T=qZdLY&sU)!EyMrI>F#f~=F&@y~1OamDJF)&6Nti{$9oK&x7nHx;uB)Q%nAi3o&Ju`iE!$JobZ}wThKvsXsn`|-)Qo* z>9ubu+uZgdiZu{{`cPo7P2TN1%lBG9FS}Q*qo3^pt25ubju&?h`C%GtD^5dF^qVaF z@vZ$!2{-M7u;Kh%egV}Ul(`{tXiq812nGTnR8e$!Wm|Z;0ikqa-kbZq%8_o{X!;!6 zOQ?<>?0C}53@yFnV7mD*?^zj279hrb?b{r%V8X>wvoTR~gk z4pHQU{8!~da&zpBJ0rCDX4Y8NJ}WV|+uzFf>Fj>{crt;9>u`9s!X#I zA}{JY7?#nVuNR_u`{RFvZ@aHXB4%9!6-Kju!}bO)?|=OgsN3{!w4mv8H!~vx_RJ#t z*Jpeb9k9uAwm(a@?EI8U80%8CwtZtaC-)PvIe#@>m~kTzcyyaYuK6^ z_?wg^qh>~5uu>I7CF0zLfcHt&jW@WAHrLb?vzEiBOM}F5b(v3+XUJZm5b;dbu?8|V zM;O&$&gJnO4vKY4Ns~A$&Ky(L=+s1Qib*h>&~iB$oBNcQ@;k{}$}?6NmlT)4^1$0o z1*LZq3jKyDb#nsfBVWFMR`_iJiVm9T7NPDdS9F9Age&U6$IyKaqG1+SE93pkhi*fS zo%_i|Ykw(GG$Y|bm)!uvSXMPh6Jcs9wB2+-lbp!Z?%$R8G4gD<3b2`l8%QE5$oLYj z5XGW`oYx0O5=8R;Lpc4FP^mr`RSCF2S=$4XD=@H0Ad_sM?8dZ0cNoV(x-C8<7!>^3Fov&ZwbeqI7_aqtV*(-de+|Q3II|8Icd_0z8W+Q57B&@r*5fN`vf#t7 z!t1|8RLv^)){}WRLx6~(9q{gfDlycsCT>TML#~~23MfG)isPXQk*IkH zWw?g?hXdn1Hq{5Db@*M0Q_K9pa?wRJDEB(+GHm$~v6Y291H-t6c9Sd;{4Yd#hN8(6 zh?QRPw3+=n>sOOe38Ov*%7&5pN|=s2_^#oPJR`N3m6Q)0^mr$s->#d!4McOp zJ&Y^&*3zk<3j2&lNM1OX#WEFZR52v4MioWM8(cT8u!#2i9R4;j!YG1W{~*E;y(VvX#uuOwVgr)kqRqWyJVDIr40 zB)%GYVN~(F4@#Y8l{#rJmI6T^cU+38#y3XW6Ud8WR2I#<@Hc9pD#sp!cF!_28y>4% z1xoeF0w@9hf#%|h2Pcfe$w{x|FfomUtmgt^2o3?n^EC8{y!o929H}wS?=k%Y)yEzO zVD@H?Q6qVy;^(Nd&7ZOs40-K-E0P_Ef8Amsm-6Pa1s{I3k> zrLML8hFID+p1}`DWse2jt?Bh4Nxj=f(HeMGkzlr6rv^=Qdv^VrRDoWC)4p!kkI%pO zMA}g~abycs4VwfZiHuGcqqdOzR0JO1sT^c?m=!{_fb{OvB^1UNwJGQT5w zcm#c4?~JeKh0#`fCQpHeIA!LV$&#uOGk5pb13<%g4*N{WugBZlg;IHlyjMY1UhdD= zy<2Bgv4hjMl`k{P(*XO=-PisH*O7mPdu@DHN1Ld^&C6S-f@~}YjfKF`FMgbs5P^5E zjDaI2j=OxHK5BY6aC#~S;3L!DqmxjuOeL0_qw{(QP zS3mb(-%(a9jIx$tlTLa+?jmPTf9o;(=XPO77+7Ulb-8X$pWcvL3uhh!-kthHq4LO< znl!n-mCv#sh!N0>gT9_e_0(b&wawb}xtW6t?bb_dLLI#K^)rqwpDTP-;R(GMSzK~_ z{DG7)xZQnMaUXZz>Tm#Z!19EDe??a#=;$IeP{PK6yEt;&cbMf-}3Egl&n} z_Ss83moQ>y56b@0=ZD$R?6-PtbpI9RJlK-bJA|OGXHq;GQ~^lEPk;L!SK8>XQrM{I z3M^-*xr9RG1Fr7-x(rr;=dDfJ@IA4weSbG(TVR?&lf5IZgKEVE?bYRCsEhp&1wFqE zx%2<{d=hwV|FO88Y)WCuQ0pZQSvXhTjLG`CH)E#xH*ytwX|?@UWAPm{!*|y^$iu=3SdGPwt{#D;?D(~L&bN5#A znO^vjuW81{WM*WR=j-I(^qdWsuT|FlXZeX9wr%pF5))RF(uBn9KzksHy-k00qSVFB zl*Rp2T-+{mXk5^-b5gg@7o(Tc>+XO|l#zfR~blhTkc$}0nf(l_Q7m(sI6d*pBJjx0b4AOXZ9BYmLhDLJ<@4m7{W{D z8SHZ)=5pPO!*y}e!}wr#Sk6EpU*n~HocEELyWR8w$R8*_4`CzfnwVYe)o(&Hc)*uPSrDSG`bX5`>*rIo@`hdXQqqM8RU)j&Srn%ssVMoxB;lk%^b@}HL9pe@8 z8G8&_HdZ6$YC0iugHo^uL+t#|!Rw-1#_1lG1O0s)Twu z@U5*ZE$b6)sS$3Fj+Ftmp3{!y#0tM8#aPxTGY)H}{9l;P*B1~WCIR$I~y zL&H^?qu8r`yO49D^xe9lmrLtE zhNs(WbH)y6XJkITWSiyD3itQU&`)jpYgfueu&d=_5O&LNL^fOLwZ>{5qtQ?^L{nTi zjBh^kDC3!uC7Xs@B#|Xod+7*2J9Boc0LZI;b(lbB*Ue`)UAIFSSo3_omgxeO8eRWR0fEwS59gu70qHQW?%V+N9Br zR0~N1N)+}M2t+(dNJL%7fljMBpf*MoZ&H9HOCLi`+7ghF8#V@eDW-gHLrD<3IR<>F z+Z^nUo;79GUK5ytgKLE{tvb?ov(3MO(?6 z_vzD$^qg!jNQD^;+9&k?t;LnvIc?)hEhSGJ$7|`qR%!MG!ORzQF%ZUF<(<3Qcn9^& zvGj+&b32??w3Sg-8B4&AMbj1+E|hD!@I(_i*zqrc`H-~urWlJYDNAueroCx$a%Oqp?{HB2xNH>xTOi;Jm`~2ya&ASmt zW&MpFb0azF%UHl{C|bM0>ECT+%K(R{Cy<29vVr&*&Q&>&6p=WbuG)@HiDeQ($_{>H z8Z<|Ery~#rbEuU?Aq6GkD~;*9X|0Rugm^LhTB6>7J5A>vJP6D2FGqqhqY2b`$l{__ z8N^>0FX=^clqhT`2Gso&G23Yi&+A8?uti7DqXMz2O>^x^8dMnZzd-Z_;l?9?hDj2z z8S7F4sbg^X(p;43Pww5dHJ?q4G9UgZ$xYtGfgJ?Tl&{FRi$OKF#AhCFb8GGLw`;C- zrg&1t@MH@zmmjkPWA%;j|KE^WEvh#!GxCJ8@OX`D$38C-PBIHRMVH{jD%P_ZY=a1n_Ug$W>eEHuVIU^*< zY2ZO#M!~||z#yiSVSGnE5US4pF3;0SZ(kGuarq0q*k0+x((&s|M?)Ms0+$~&I+Y93 z{NBGYxKFU6YZWPHNA;F0ACOMCUh*#84#62#DFD7bC%ORj#T-mk>fkxxN zrCt+sUFs@JEOz|c>*Q~ZekM3yYGLt_ScMi_9e=Q0xnoa$f8ji6ap`p&L4+lKR~n~3 zLo7$$$>RB@hmr*%nrqr$7AKNZFz{yZcQOiI7e7!+W016EXL}z=w5+88WTQEA&Xjoj z<<_Yiur{~Y`Q3!Vqe*4zYI_25F#2rxRmzYU$koWOqJ+Zd z9km|VG#@Vs&+~7{`)G?RS_3Z?&=AK3@M+HFKU}R-=viB%3dV-LU=WhV;*r}KV2rvD zm^VBdlU%`Th$EI<^9zsSVL`i*0w4$j6Y0&#@n{#;(jka_?3LXu`}CHF5+l{r=hUH9 zO}F0^6sR0DSQyO`O$>a8qB9(6I?&KlR}N!R#Pk>VW=}^Ivf^5Lep={y)HGn>BffZ( zAmbF2Hg;gCP+A7H?VVckfalQF)0S5nKbkJTF(5}A&dPtyq^r$a?}H`fqN7fNWNvJk z62x>>>8DzUW;e}#tI)%kb|H#LIf!vsX%?kh+QO7Lj>eXKKU0ZgxmUiqCRiTTC84e7 z9pe_VsAnS+!b+4fbR6Na2LK5}uG#pM`%Ukp*e8wISNe)B$OB*u$XFE*gSJl6EfG3C z66t``MUF!H5#D@*<-Vb(W6sQUtF-vJ)XNGkl$qLg=5PG!=kIh=2fjxx>8j0?I_I$K zg)#1}A0FO}wPs;IEl)ojcX$qvMld#vfnC2E2RSs3T2#STUA+ToBKnIwsT;$t+~)vd;(Bo9ry6}M$4uH-+Uam<&w z#_yu`px?--^s*Q@5=^;mzAO(-aaY!s9O3sOEzntNxdEF<6PDxs2lL3GLUQXxF2 zI)`9biO_##dIou&vEF=`*K}i};+(?rIkopf<5&*A!-qLh=VF5kC^*o9@(nbe!TQ4w zL)MS5`R2#ahib~dn|AS*?45(6nM&Oi84$t5<6`4586YbNxV_taA{@a8Gym~8LRfO(G z80}DvmQ!Dhfav51Js(%?T)oGhlW+utsjyti#_d{SHA9xzHhH7Ed~e#_T>G@UEb(>R zia>DDE{u3vYlZD;gd!)$00r6%_a{%W@y9yVP}$o3jq4d@v~jWJs}0}kf1x{No5r{W9O+fFUq ziQ2SQR)->{fuF9MX`NfLeX5!wI7txNz6+AeVmNs#e3D;v11^TPX^Hz`5{bbh5@x=( z&8rE@_RQnGFlNZBY5xOAV&=e0(mS9&WjLf!!2b?+M%?l+AqGLUITGgEBR`>p2CjsE z0+m<_o3J1Ga|dI0`&P)EsCzNd_W4)6S1EN2)|r*+Je^dv2N(@y7ylE)evBFc6bjfo zg|?|5qIc2S>8KZpH;Vjsd~`I zbuF58_W9Q@K%tiQmE~RdQ+w{P+8uA~kHxuX`gs>Fm>3L@N zIi`IOJ@d*g8FF56KN$wnDn*q7_rAUpTkpz{=RnVYI8Rw`1F3lJ(#H0+t=mr)FFv|+ zvPoIsTlnofhx2VXRZ4+byV0zO8>FS}W6c|vz&*4HStHvO-!-EHKU_`=e?N%Tm9737 zAgf$E_X)sZ)HsJ06UM(X{naI7kLgzZszeTbV8zp)-rou8(==!B`%wZ}n0vxS#cXshFQ4igxc}9}4eiIo8tq3; z)fJ!Ny)Knn&?jByou-E+LrqX$OJ-eY9_7iLkV;+Ta5aI0&_rRv3dx-yy;-~aj(LAdU%=(8$rH$rTUX|~i+Yt9F z3IA<17J670wDd3i=bG+zTb%J9{=C4W>W;N7DITCZ0!H?O3L8B3@(B{ zkPGZkH-}t%7g|IVYH((vGVeInf_@pcHb?yzjL!_QPKTT=}eHE;XVD$HtgM9 zGP#N$c< zkS_8`+PNTN_vtb}a&(LKSGJ5y%Fy4@OeJ!OczY(&d3*D{=j=6ZVIyae(`A{Hj>Sdd zweW^z0kcbI5FuO|?=Jr@$B9q*PS2`a_V;zuF2>zmK<_y9iO_3^GLIx)MV@J;rMIKrBAxj-^YBX}VR+^2+=Tuy8PU3B8<%>(E2C$d|23+{cv|=w zC3-v}#5eECEKQkebz`Sm!!7ONzGF@gUr|J6m?A_HcUT1*0_{c-y&=X~PdCML z0SUjfML0uyJmW}&jWDh~T{YWTzp1z4=uOo8>I96&bLp$L>QWV* z6F==6WA9R(xVA%oW@N#4vLJh=2I{s~9gV=0O~F3-ZmS$!EY=CK7!^CrX&lKVJb+P_ zc|x@3C_mdv(LVdZlZm!-YOZbb0M(7$E%PlzZ<@j^!zH7R!WfZ`nKVH^z;B2(Yd@QQ z;%gbR^A7z|4i2*5K&6sKcu`#>2$5@2$yQO0g(Am>J-@AV`ikQw?OQ4Ih}02sY+ox} zc_$yO?+}Ty_yC-9n3;%DP{v}2(`6&~z6*wyCal46IW3vN8N#=8ac$hY@sX`IX0)qO z!VW}Myt9s5b}||z3&ost+IcT7>(^lL-%Z0n#)LSr1?pS06CcSX?VIq?oo4PF0y>RM zA{mQZCYoTP0gbFu_!A|=&aK#2-BS~=_kyYy6{f+Q$S8g}H|aY+^hmb>h>Ta=2K>0_ zYE#CF*u;T9z1i-eejL)~_ODEs^7J!REUr#}?x|QB$UID`c`4~K2PMrZ5m|><*76pg zTeV_F-qi_Q9kU#LlNUvKf6a7UwH@2XrMaGd?vSL3`lNQHW5i!`yrHuE$^N|E3b~=V zZEV5j-*7f1AIFCL?TwJAZp_QuYD(+%l^{r^WHN#*6w)86K-8zjNs`UT(zuC~fZN;< z%?=y*RWgcvO7{o7=T0k&x2G=286)+m){ukk{(TVq@aF&_(EOC&+!KP-_hdYGtRoi{ z`gjq>9@DQmX-*@vFv)NCX5O#aHmir8qA}!rZv3efJ;{;xIc~5n(~mK6;@$93Ht};e zEa%6t#^=NPknpni;im?v?nJNP!T!XgLw{OHTR?ptF8-$1{(Y0gn*RH29ABL$I||Q# zQ7L;ZW;slkxZ$;`f92CTsKMm>`S+K771~%$ZDRYW8qbq%Fr%Tlr`Fc~lxLLj@dPZt zXS7Zu2%H#Nv(*S!ndhQr2{dqUuoz`$>#PJ(_SJqDQvA5^?w(tg&nZ;mydJ%o0xttq4Xy?} zVFcs{j1?TbeH>1g{-c+Z=kNKNJc+B-?|T2-`|9lFzu^5myQ);L-FeCLe*Y+4SmA%k z>w0~?FKzw#dT&FA)Lm%0u`>==)97~6*$|Vu8Rbj0K5~u%gw0oYnNbNF+G)fJhXm7? zFyv;7|2g^a(TS@|?j^ogHP?xzydo3jtA?|nN1xNuw$ayi7?kZ5CT(kU-j-v?lDnc* z;zsIQ>bE3GmA41^rSqvJgam)EuFMUIIKMflH2$xKka*LD8y7NZ$ zex0>pfAi!Tu2ji{HMcv|!Q+g|TyMO^3a`3a&!#Of!2Pa1PB z#gL&aonzso!Sb}@0P9&Mmh%mNS_NpCTMoFq>|R|#;S+qi6He8+!0zK_VC%;#8jh<( zDo14~XC(ZA-vf+5j7^FYN>|2DAsLkcJk~y>)wAv_2&Sp$RM@*r!~As1?ko!lct<5K}SnQ!#aizD$XQa)7pb+%>i5Ecz>~5 zA+9FZLA{$tXEGQni(j+i>FO50FVwEHs-oj3;Qh)1Yg7la$;aY zJGd|-j9UBvZ+dK+47Xcm`#Swm0G&Bb&&K#{oqu)r^m|CQYkNj5CE8iSpb&CT1Boi) zV2HD_%z$h9&q;9sT-Y9?oG&fjsHv`ZMr`SlxTfzKwF%v`4R^FF^-n&-Po91E>re3~ zD!A(^u)Awa1YfTGxe390Wj7a>=28R(yYPpB^uonpMQ`krG3my|)m9K@kC*G0x!MmF zjU2lQH}~3VZBZFvDxedhJQ@oSz99wuS{L^^E2jJfcB^bh{T5aA8c4dzQ?#z-)X;|d z&iER5zaw$AT(LIuEOt6C_}{hZ8-4e$0gL+vt4p6w?Irao316r`+g%*PpWLtflI9B; za>wKCUH5#I*|B2iPltxxNyt*hORIDa#Q;7yy=ACa)Z8@g6hsSGQ1 zzrr;I(f|g-c(dy2YLvuzWJvgDTIkd!MY$Er0$r?o#g@G8t9eS6hoMktpQn&=Y9v}n zMpGnt0@mo)TNET$(J&Ugh*t6^oWw`5?xWATg7*5K)2B=SW{AOcZ*fDQ3Dku47R@#V zO==NPwPi=LzAS@diL?YvTMk%LfEy|tuk>$+6dHJeH`EwIL~qfLj5OnrHguB@H9^2- zVVcyh#c~ew95I>C@64L2NFg;a09vswXG^d2Q>{B-RP7(G3{<3dJ*ivr*(%V2MKs#s z61ddHXQtsx_c?~-K+pD*2~4y#DVbz*n-`m+nsITaQV1{JClj(kC^hXd5CDt~lK53! zc7A>~U}5R}_iWY`=)88AB`nOovuwZeFW<6g%E!>o@OU{G;f$JjkdjS#^*>Qdt`wvu72ldhjO< zNKc0XaD=74j0wkWNTVSy&b}J>tqig~_NR+IUVjAVyP}!J;j_^PAcEYUd4(a95N&4ng zTj<(@MaO6B6UC|*E#kt_#g+bjY+iA<=GYh$JCbcqj=wTBvKiS=2)pdAjjOpD@X?c( z&Y>`}&eyet8R%MGt+;#G8N;oogyDZ^*t85xPzx7#N{gK&F~t3q)^qkF*l^77_7Clu z5ad@mbpF*MY+)KI&5EvdqF=-dDzV*4S7*m-SO; zsRZMnoaJ8H7!S52CXk7dHtgeWytPOS#%ztKjLD%>zet=E{Wct1MX{RfNl2pVd0@}y(9sKdP*8_V3dt%p!X zNcBmDm=U3egF}`gZ1A~$^*%?;>p1F(x+1g+@3HuEB#aJ(1R?zDoA=4Me~I=#oNv#X zX@xrs=NaI7hTx1j0-X+A>Ou?m8?jFnD|{kIKg!8w-cWH@_R~;TRP8*}kD5#&t6xW> zZng!z-H*m@maex9{bCA6Q3v`1keMVfgXhQwCLg?D^{<q#*7fL6;H7hKDIRI9vf=5OuCST!<-E2Pk=VH0$d4 zXzc7b`Rr&naoJ?)@*|<65wdTwEi4~`N(Sg;Qu{?^sYWUZr!SV1ShlX?1F%93fE9+U z<>zFL&z8j2mM2v!jUa8;zjf%>Wo-Hug+e(#+1)G|{Ld?69K{A)YEzj78K*_5H0ekO zX`IoNS1M1D0h5>mfX|UFQ%#;@kC+Cv7QqAWuZlF{=@zip4WW&xE3vL3vXe_u4TdI8?At zHJBh&h-O2d5cGjkX%UhKx)8u(jmUt_R)J1!>IaKPsW-Hg4!@z~7SJ8d&^+0OAEoP4 zIC&Ks4!A%gbmcJl`}r+Q>`7e7U70s->>VW8SBkJzhWe(H7?J}W`h0Sr)o#>pP#vR} z``Jbku38^C2^H+oqPZE@+JM2gH5OLG2I;benl3AqC$MRTri?WS zw%4hw>9N*I3>xAQ$$f((+#!2=*}g0Y(>!1861MFB>=Irt3!gGbAmAC{^Ma;LAeF!} zPH>c_E4B+s^z-Bym^IQRu>e3REIg^VUzq1^!m)9~wB{|8y9Ucm!%x5Yn-8m5d#Gpq ziwvlNO*E6Jpqf>La3H1$b3(EvWKgQz&WmFi&_@k`G(fZejFsCezhLXpK3Z^d!NVxR z5HH>vg~OK+>N5pBA?u$RhnOgl2Ph^}CU8g5sL3H2+ka-Q zbr$9dKD}%E^iUv^sk1Rmv+eu4zeT;(0fybaCIo41r=q1!syQWLG()6qMQ4UD;E1CE9C3q6ieIK$yn9ml(gapq zf80*jyfz;vse=r@03yyp{jVYc25Et@vVE+T4!cmB4OPIbfz}7L=S0xjgG$j(DU=gT z)Mco;xP1Ud3K^B8A6J+5pf%9Cc)idQY%opeGX@JAwzb~~fC&|`FC7P3Yg-DD> zEu|RMb6#Pp;0a}5{Xded^`V2esN{acxtTpTFSPBz9&zWFqVkV!=0MMQ?>+Ds2CK4@ zn78yJNgbJQ$*`z?De=@!yE^o#8SnknS)KV%(r7o z)JQ^rdjNp_v;a7H`qgR>x0AZpRcGk+&5#?vCXnK&@2aNTk;HA#o) zU%>M~u}S&}2K?DCRGH8G2=O?O;~RpOoY~j94xLc(b%_iQ$}*b>(oID z^F_r4ZZZr2Rks8{LBg}LVYJVHdSz9g#zHYj2Ofs5c?{OC4!c(PWUldhn&NpADXJXq zQPzeTB+3{mQTDVbHk{B(j<=__cZYiOvU^-EgL6a1B{jpB_;D0fx){VbhAcj3>s=g0{p3%SErhzN|}cswj*P4U|@(1h02aqGG#ux z4?>cI1A55k3K9_QF3zcpWWxck1+4J)p0nEv{Q>vS z8#w!Vx9INZ;C;2KS%6;%HLR)|CNN8L`ZQ;tW+JXC=mGv4WSIS_#vp^hkUdz(soGAZ zdg<(<>hsKw=KAt!k;^4lP5^3cUO!bQ9nt_$Z0%PoC`^iyR9w!xh!=Lf04YIF5>A=T zvKipbDT-Esy3(E8Psxd1>J6AXIJT^e1ylXx_gZ=1XsbTzz0oK96R`1oJ(NNbk+{AF z11f38D8S7uF)!y<-{-$ijC8J{IhiYS9rn>mk09B-4`DkQfj<}Kx*yC(M47weam!;s zWzQ~2vWb;z7&zb`K{CS8uOUJd5lE4Wj0Y1dsWRH50pU8x%>5Q~J9TqslXqv6c6MJP zw9vtfF6^ZIi21-Dw`0|Z2^CBQt8vCdL8~u5Q$^3AZGH9HrCQn$uAsuyZ=we7FX-GAUNp_QbPg+|ing}J zIx{XOTJ3hF4Vu4eyqMaz-hS=ER`K4sAwRFvmH?yb35uWELbvRU>Ej4hz6le5nbQ|# z8qqXPmy#vgL768>236vQbpE{Mm|R6$jTeQ&k@O}>4qs-NU^5kTRV=DXyD!a2rS$&N zly69Q|5&iiv>8mD!_lZ&42UzWJ*`!eV<5+Sop~FrY@k_x#VjrGn3xh>Idr>jDDY2h zal$DoU?pkocuwV6@%`KYgC23<<|8c z2CR$44qm)675qkx3ma*GUUda7MqAgi6O6F6}dA@frg2cpNPqf!lQpuZ+x(KWa_%x0h-T4Ij>qrz}mI6jkLpx-&!t%&7hgS=Zj?aos8JD8Paqk0@#4^iL1zVl19YH*( z*38wDg-L`P{?Cu|}a!-B%)J1I+j-D4*zMSAIV;UA1K;U`S7%19pR;4Zvy0BBGP%J~dc3)<0!W9B-= zBKU)&1_Da@X5mxKoust4F=M`y1?y$RR5W`gksJQSijwN&I=y(5<1)SB86cI!kIOtx z-(EP$G|1|z==fsv|t{B|JEx4zu4UNQk)BUX+OG%<$T{eku9H;e!MJyQNf;J5Nrb3mVjzmeqAIm-h) zZ$0ME`de|FG^IApG5^t{d?vYM$xiq-7&{oxoYBQ6)hNZ_8X3p&oQVGJiz{b@t1heO zKQ7;c^7uXz4W#S2+~YW7boaZI*xISnlY~GhA~*j(0!@1BL|U%!@GBkr`@hz|Lt4_>XLO zFHT;NukMWR3ec5r(CIRe!}Pw3280n|zHgWsu}rdSJjh;kLxNs9Lvc+ks8D1%(W!Y3 z6UBX}Y^evWzy4%Zb_yogtFo(WT}V5T};`t(zFdN4f``pnaBstB>OkF}`Sc{ptf^ z;JoL+(O4~S)^flW(72p0CV}qpTYY(PT@l^w{d{Y*S2)kcawkEB&eh^e2y^I4qqze> zr9dgSZCLkT1`pWPZdRo;iqfZsMChEp3fpz(f;B>KfS-3!p*;Ww`fb2aQ`?Mgpk3S_ zYjeeZT3fBgw-#L;9IVl}#pvWD5bqaLevk%y#6CF;?8XL2M0|BG7TM~sS=Ptt14bAV zvaW#!aOn8>0!BO~v-S?CuItq2qj&Z8hPtWjohGBI945YU1e;Pc=~0flL&?~+LRNw& zB?3K83kXuxBIF~aLj)2Ca&I~qtw4n|!Cennx!**)T>ri4hfNwOjMzoADQKB4(9L_A zSz>?La=e-5AogJLr^90n^`}J~d|sK|PyXW{bmhbM>ispc+@+Z%eOQ_7eV$zuhk~n} zB~K20QsPEX(Ks%~g8)=OA=MKWTylpopiq>`5cnr4V$eC?3n<6Ew+aYUPiE8K1835& zeAMT9lqZ@;L^H8uu{xv%a3&DcCFw(g9&8@Y%8c&n000v3&g_d_F8tf9zg&>+PV^migOAzY1Jx!>TYVq?SCvNB&E8rP{6 z2lV6jD8g$Xy{(Yoh&@&pSmb=t!sCPa@|!blaaUvZE)UU}Hq-OqT^O$RtTve8dq*nR zj7zzUkY4}j;^)dmZmY9zOW*H*@mIV6=~Z2tWy-@q47Bz6LG)0+d3&Uj#a%W1Tree9 z%S1B*JpW??jbQR~2pbufw2uCg+T-}a@1g{j>tuTOnl0T`GyUSo0Fp5!tSDAtX0MT@7@?H#Q(wgiFU5+&K7p_ij zgUb-*N0p=uU43-aT=TihD%1JOQRl4!K`)ZtG@z;s%ymu*nQRj`Z~8vF68rd;+~4bm z3*%pZda(!Jh@hcj+#?-#Q3NHWID*mUhY$*aM}AKLY%R>m{Z>p-3gd@QKheChQn;B= zkWB@l+ERVyXcxti=8m_=2+bL*F~n%dL%<UQRfjzT0G8o)H%$D7Vmzy# z*&MYf0tMP`nEQHfs*@HvrSj;KoKZVrvhNP&w7(9m4-xjOV^_XYmfRZ1-GTlOTVuI% zk90>=c*-m3%Iyw9j@UT)Hbwi;**@Wt>{AxoNNomFhb|6@15gs8Hj)L?_@$g>cTH=$ zZ@Q5MH$QHV-HGDnX*0DqEzf_ZL5|PxAGw_O>Mp^diI53P_ZZ|FxmAyqYCbhTDPv?) z5!8LLRehWX#0jG1d46*+F`#Q;0{N=bU-KY19&14?%`;{upF<^)2u~{mJ2pzpZg4pBW5eW8(R@<2cV3r1EQjjI7I8OJ6*`*el5_e(SHzc@(iHA@LF(Qoi(+gFaFD8k2H;bK{8D~9EQb^~ zCA&RxU=F;vbtAkf)bZiG{P7IJU5HU6uExkrJEh^niV8c*0DlPL2l&J7i}noDoqN~I z-PO~Rf_ssId#RqYA9nB6hC6*^gt+p5vG)!^qIE&LX4$rF+cr+wb;@Mc6lr51rGvI0f>@mHNW<@Q{oh0B#Se$L zxv$(^gj-Q00QMZQlG{IzAnsh=*I=)MPn_f!@d*;1XtIFdSC;?Z?>L7rChvjh%YE3i zJ83umNXDs2|FR0K1Y6PJPSx%QQ!Trr^3rZnC!MOyenQyO28J1yv%hij{w$r=BGfzN zJU2i2igbal9c)BjGNTiSo&CFXq=3kGr|O4>*N|H5mx)9S30?R3heH;@0T@YdyOhHM zdlgpm@{m0+nRv7k)YObhHp8KLIj#E`^RMoRWQoCv8o6eKmdi0qPBhuq)!1{NLJ7`t zD#a2Nld5*M4DcZnc$*ZzH=&jMx#Ps5pi|;h$2&;M$vYINaU~Ny;4pcMJuDTl{Ul|` z`{%8Ry4_zDEw-p5sWQ%FW4xX?o3*V+>*I9cY3SE4&c}sf7ENs@4N=&|)Jha&UO=Vz zhq3j={!FEXQGJL9dD{4mKOe&iyhzG3Hn*37 zK3fi)#+r(^=BeysdZW7*&n>Q-Uc?_4T3YT-KNw&T0>x^{$3S#;TY%>`c6%3o%jLZQ zeNBLLziAiz*8m6D;xRYb-$vxRfU%Y_muW*jE7{XAnn^W!K3(0^zQnB0VFo9Vr{zfp!7ZY|pHVtIxX> z9g0h3iqP2*0ATuX*T@8r^7gkp<;I0U=(v+0Cqa#kUTdMg-w!A6i`mV!rIJ;G3mJsy z^SU?@Bt=)MrtnfqQ+$?<+F7%m;-&(iSB_er?uLBlV?ON(+PH&g-UbP|nc9&^o^2bz z0JDjL$R17VEiZeKtMWTbN{z^S7|n4@s5VfW+Be~=VI3^t(?@>`p*>oDsQW#ZO-WsJ z*a6u%_?b?7nn=P5km(`9QX@DZFrPOG;xs8)H8Br+@C=58F<5>{$ zMi73j{v-o8Dlh(Fu12w59;P&ifkuE&6IbXKbxCxpSXg*iU-ed{VBLd~pkGWo?pV9UDy z{`yuk@*WuWnc|Vcz;sk6z#7;(YV`cw1ibEScZ2X`VB=xR2YgxNSMX?&Zl}Pto&z>V4c7MD6HSDOt2v9lgYG`;~)HkmTBke;!r28Y2~~brX>&=dwkagHS!KQQm(c zp-oXTJ2s(B-Bab=#lNf*+LWLRR(ITpi#Q0x@8Y|E5mpY{3MZo`Te!@2A% z$K8yMo#MN>u~Co$(#?w54VNIlgsG-ywPG?VJx>v}mqQ|L(Sb;V~*f3Vz#Y+AjUkR$HDN$2%*Za2rtT3#nun z^EQ&PQ-UdsB_4(SN9#RxYK)rGT+FK^Ydcz(12L^6RC+ZuAvZ;;87nB-t<~ta_V3wLJRfS{Cly_hPy39F zTldrR&3pT0ky$X~kl*YmfsU-Njk9gqUM-0tSKU9oXSd?1yt#^(8 z=FJ3>$Gi?Tz@NSR!;17k0~Rk}+BJJi>l|G7i8Ea%CetmoI3B7^(rB(!U}oyqoa^qq z)MZ}@;PRVM;?<~KN*XJ1Tm-n75W8_S8AzVSNbwq}`@Te_ty@4WkIb|<{!b3m)PRn9 z_9Cw=s1;Gakw9$ZOR#>}fLUP$-vo>mKJtrRAIEz3t3&kl48yhqdz+Y#VdG^I)`{&& zqN^_@&DxXZSBKoS zr-+-KmT96LL;f&tr^Piojj~Ry-mI=1ux4J#o zj(IC+gmff2>b0~g1VsN*YiWynAl5o0Fo>{35wVAA{XvQoLCoKb@}gn|?1{$u1#vKE z=lh6Xr=tMrq`2MLIBVGy@}_e-ft4Z%dB!trX3D~k%55OOZt-0;1%Z+Qbszdh7chZc z$H_wVG2AU;$+)!`2JI)jDQZu}THP867ozSxHj7A_fQ1aN-=0Zfvr}Ar1r*tH#qt*h>fx)%%QoJT9!&jf&Vd+P&&F zdUbsFg)#)smloCxr$|4Wrxe^70zYK{FbVvvScC3z%e${E;3$~)BJZUloJ1qIE51xe zE(N-_xay}`mdt^;(k$AEsvE2zqLR|T_AuMOx#ug9_+(2?-Bi^rn?HZt-rCQ*EH@xB zW`rG5(}qIUve}`!vj+&=R$@mhfSZ3Sx*!qldHF*XPDv%t$s->yAnD1YWPHAKk?5TD&Hp=JF!WDQUp2up7|>TW$}9wdv9KYct_Rx$`+ z26tX4xwi9iTRHOi>QkrDm2Ebf7 z+}ACMv!!GgMP-mK^2=8basX5^lbLlDDAT;Fwm49+Aur-&si4Nd&}Aer!%)XUD~chB zOduofIgKE@VA?ST454Z0KBzQ>($hquXg{cn_>;${&nR}z$@AT(W;59~T4i23WwR#Z znlrQ0p%{ZNvl2G!SX*J=81zF?NLpgA*NLv2gMLH7aIwAWxESRZo3_(H@ntdknR8zQ zWB}B_|HH$o6Qs@CJ)}hXCrfrcNPbOoTjIyPa6UiZH(ZJ%0*jiah>a<)nOrmwzJ<4V zib7PxV=`8aWY@Q|fd2?tYG$^i8=F%mDmAU#+{m*6ZbWK&FKuzI;d@<<83vU1^N{Ir z0;l{h(3gyu#GICH6;C(r@%$M2f9YTRk73^+-;bUL900)P?}hh&>R;&U8roP|>gt-< z>)V>r*;<=askz86Of7#a0EJ30EBg_I&kF`gK+^)oQLril#u)@agdzwjm=6;4`O*`F z2V%jb%98*J3WQT^3Hd`((1sEyvQPlIyX~aeTyNSOf4k&lZ80~T#PE7N^O$6J9bLK_ z#FXY!004N%t`lpySkCMyiI|#Xu?AOPV&n-NLW10$+z7ghO@jj1?Mnu-Qa$(0i|kt! znS$;m9U0!yXb5!^h)<-o(&dqvyz=Kd!bH zlOCws%LAN@+VjhU_YC!6aDv|WAhN)JoAakd@fnk^!sCAI4P;jG?bGwdkdhht*O`-< zxyhYU%3bm&jM&%`w>_o6HD{lmC+#kU$aKWUrsdGn<(6(xF|=wb+0C5lil}Id zBNA2Nh*U;kesa7Amzs4P%o7rW+^^Q_p!l^xeK&4!9znzLz-Yf+z6~n*tHaJ^GR~mS z!f4G?uy`*=AX@8DnAR?}hl4K9M`0FrS(KCx;COt zunQhY1b_S~yv^tt+eDs90Wk;zrQO!{XvzfKQcr7dh3y>cx(KQ!1xB&BJQG{GrAT*q4eVVY_XI#kb>^W}PLI?Ckg+gi%aoQ^?7@`*z!2F4rK+%7s5La39h@wLJjh6IrGYv zX5{k+3|C3FjP92YhQtD(aLKr}7mGty+zZkN(wTj5aN zyOk|$2Z}_&F)?ONUc?PYM-2W0_^sUVKEXZ3vE(8^pI*@B{6wbflQ=I|82kkn08o*& zt)f1qW!aG2s!w9r-sVW&P)l|uo%#x($~7N${+cqfZ)3B$e1C;Ku!1bCXoKWNqgMR@ z2>x;DuP(dCDRGYCmDsm|3iT6>Vr0`HZYkLA_aNDQpLPJd zSP}oUbuq8gzo4U_E^duLnZ&^aKvKYYQ^ymk7|`o2i=YNhgKNo?m?Bz;X&O>M8D<&5 zij`@!oE(czjq)YWLa}ymS|8ONAI4DD{+;v_oPLJ*bKE4vB&dXcJdgH(M3wOaDX8xA9m&hnHBqWC zFKLyuDVAEa3$aU@egMsHH3+%0TIYI4WscZKSTi2R8c=eU7ai3SnIA9kkx8O_N( zj=hw9Mj4|?&LwO2FnGv2x#y}xJI?3A=ZA{tcU!&g$A@W-e*WUBCgs2x;67bv5n5qD zY_yNXP6EZDnqg`C0Df@NnL6DoHZkfs2(%2j;q2fds^?9?%AU%!$lVbJyn>P1)KR*B zL$E&mp=#{hLI7qa=hHqvzu!WW(*cnU*%8z}Howl;K|(yRLzA(r(oKdRk=55`+Fvy1 zG#>Umfp4ODe67lQ;Jp^VrY$Ot_c*X;h}>9H-kU_Dixjt6CYUN!F_m(gmZ8o@=)G7q zoob_#+rE@M1gH>vRE9B{)F!?hbmfWp-zw~9diC4Xx*Q9Ij|B=6dP26fk811D=Qg=) zL+E#s1XS$M&V8#~fCq|9T^0T~%;VNRmNmRfy*L}12Xv9b*R0Vk#}WU73{|~_P>i%$#XgC%R(&^U?lTM zCcO=#7Sm@}Rx8h6QhO#g-F83Ly%(aKw!A6nhcTY-^$986?s9WuPRL^D**%+EX?`!P z&IUb+b48dg#!QH!?te@A<=ipmU~&s$-d$?nx5|%`+oZX}n z#qEVS2E)>WNPDg5Fe1bvg~);0TW#NrEP!;bqR*8|d|wEW1hkXDr9Ty$PXc+|K_(*Q zJozQs3#~ab=Nh3+x&Jk~#PX=akqUGFtmP41^%7O=1@*rObm6tjD=mw-i|V7hYXNQI zslCwlae9CpFaqk3nQOnMy6R|(uT^M9DJk_7Lb*5Iq(Pov8e|#v5xFcV+VLhy5R|5 zIe->OupI&MG?R%QfZhg8slV4(Yci@U5mkOwT|Q>@ey26Y0enzN{8x8|0K)@x!gdjs zd1fmMZ91wM>*F=!mRVEs?e?BNlJRYuR|RfLYr)LLPoNI1L;oqOz>^Ntgs9vTH((RkEDY9+CsLAauUzG1e^%O7mO#DkSn$Ke@IITo%-vhP~|X2?cox^X{>aCwTWOe7aF8A(ilnr4zX zOtUz#X1tCn%PQUW@}VW=^4PcJ|9i^$x9fUH24hAk^$A;D*;qxm0P27*-SWcJ=WW?& z4>9~`38x3YbtC!WbgQ{>d$6v;;N6An`7R-BV#I{vv851qY)=bhw2Z>#+{TmT}?C7I~D5E z=>!D+%!hHuy9Gd-&3KuX){UTq9;Kv`mOvPrl(+}?BPf<|@C`wEZjH>eh{@tP3@G!A z3~K9Q(I|O}sbZrwpJiQBb=M8tqq8TRBN=C4>$~C!xCRw{LC=FJnmVw%v9_wvnb864 zpk;4m!UEa+$GMyu6PaSNyV}3)M?bA5+sTA;eUfiN^HcbIoDt%R!*4N%(F>t2fkRhR zDnA{VfAd`dZkqH8f2ubHj5?Os`D;4*19o|+j1==QWDB=if+9XcdkS}Y-6GgkR)xQPZ?JJU{GlNl4_k+H1yJvXH^IF zrZWWe365)@NB5`DAMXUXsqJz|CE(r|DKm%OL_Z)7CkEd^Qkr)xVhAd5&R421P2Y2@ z+Ibg$8U5+#jt`-E4vhd86Ty)8g0c}4WjT%*rYU!C?vtjd#IyM@tidj=eYStn__5L< z<8|y2=4wi6pKU1}3hOp>*4FsYn!EMfQlNzBN!p$g2ioy(NP#*bo)pJ{mUZfQ;77!? zTS{}@y%h_+e`T3kFSdBl4D@P$v+c_2uY@vpj8ryHl1BwAGv~N;R;FD1R=R1CYfC6K zwj#X$Z_xDA^2|3)g*_aPj7Ef=fwdL7xdfy$TqkQlC}nOepE)L70v^ zy~PS{YVXT9IxZ@YfvBI92vk^;2lzK`{4_l~s?+-k6|6Y}ipo|r43HV2xIPa@ApA?) z1M)CgDWORJ(eVnsf1#&!S+14S^fzM;^W#&m{LO#*!*3Vu*`qH+mLM0%HFnys>H-Y# zJY(9XrD|_)e>BoIoMg!*uZLANWZY2XRdV8^*-eUH>_To`EmtI^z8a$6V4VU${D;iC zrr_=YBdBBkIO)gEoJMkulP9yewJX3>8Z4l1U)we|NP4YzvRp#}igE?Wxw?HpOX(vw zo&N7S??)dae4mtU8H#19gM)P*W>$lvTk6R}tWotDu`#s)t|9)>gVU}<4Rd~R*A~-E zz+`txl$xJ(5!MFQ9TZMl;l+n3w(M{T?Q{Se`62jg+`fB0nsm(~HI6|G15k6nzIr zY@vzVl5yGBywr7O-B8)iFCz*zK}x)#|9@jE;r|m`&8$t0?9CkiBiH}P^*?g`k6iyF z*Z;`%KXUz#T>m52|H$<}a{Z57|0CD`$o2mZa{V7qbz_V00i$0t^#C^j0IdI$T>m!@ zrpqidhmGOn;GPdPg3P~lm-F)<27l8fFJ0rYHYC@kNggPj+CLfx14&#VB_t$lA-DadhkM!X z-u6)AIw*QNzmV-%c4TidbF{sYY#DJ`7^_^nd2d^Vec67g5?=x_4*4L?yz=}hwg`F#y{5WMDO5^3w8cF`( zK38q!!z6n(=iPr`H<)!j;>?K?Y>8*x6=YL;{P zWO2=#7HQI>EDk;CxQvj#waQXp?w9bTu#hcV%PCZd+cIbpRAedNZoO~7W3#gI2{STF zkE=38bRFaU{egsD(!tMO5J2wnmCnD+kTs1Jd9==+^0x-pCZIM{+~aE`7u-AV1cY{T zABPTat0qVEoc;@+`@1}|cUx*IPqySSZg^ygV@~WT^Z9OVS~lt2T(xC!t&wlIoEM87 z)k*})jQSmm+$o?8s$|K0B}avu`{E15s23;?1J2CAUuAHtFijW-y}+R0`UOW(^NX)l zjo0j>AdfzxI^`|@JB@BHpO3P_%uZ7mCgE;UR z3-qs%^T(HVVH(|bSZ)9gX%#;a^PGYFtC^b0*O~3-_k|uk$1k=XH*NUqE8fa)Lm@Kp z^U7jdj)CX7o*s*rl!�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,vKDe^6hz9tQ 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

            jn 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�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%0AvtvKm(!0iSCiPjeEfd2oi}&9g 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 z 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∨l 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�p8hgdQc+UXOiLa1b9At3 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%0A8KTv0}rNp_=+Hy*hc>#LwaZGWT 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 -
            - -
            -
            ArduinoStream.h File Reference
            -
            -
            - -

            ArduinoInStream and ArduinoOutStream classes. -More...

            -
            #include "SdFatConfig.h"
            -#include "bufstream.h"
            -
            -Include dependency graph for ArduinoStream.h:
            -
            -
            - - - - - - - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - -
            -
            - - - - - - - -

            -Classes

            class  ArduinoInStream
             Input stream for Arduino Stream objects. More...
             
            class  ArduinoOutStream
             Output stream for Arduino Print objects. More...
             
            -

            Detailed Description

            -

            ArduinoInStream and ArduinoOutStream classes.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h__dep__incl.png deleted file mode 100644 index 9242d2ff3964c900b8a5d656b78124148d301cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2150 zcmb_dc{Cg77Eh;?(iFvXq1u?DTB?esv}n^P(W1m!M4J>v)f8ze)`!?KQDd*A8e%7E zFKMF2HWh>*#!fZTN|SCRh~?>f^X8m)&ipy|p8MVN-S0c+yXU*Vdw+>Ht<8Z_N2CA% z01##YwcGJSJ4TS)v$JYGDnRYHJ;>|kP{8(geNHV+0{|qIV9+b}kMnrb{di?F;zr9e>;(`CMWsMn%k6XT0dKuq5HJ zoD4)vyk4Ex?(Wl5u~f0;fOcYpnZEdV!^Xw|&A8+`s*_={^Z1VJHc0lQq>^E`ewq65 z_I{JhWd}@q398szjT*Sv_f+?YSYP-2Jn_U)O;uWo*VMvf? z9wJ5;YtGe0co@QkpBuwV;7TjmWv3NhD9_jL!?hym?^#*Qt(zC&P3=zJWv>*%C&B0! zrSEdmF;|!x+}5jrf=Z{FrMbB|IP4&WJ|;k(PLT%v@Qb9}ZD<0Zs0wt-7=3%xy1IJ` zi_)amA#NB3<({{#Ak;4<2IlEjt#$CN)il+{OfIzqkVW!A1V2SjY1?wHSS5DzjzhEG zQAKVdvQ#{lh0Zt(kN;%gF|El<96#ga;z)e7&O#dt{X=`3*0p9q2yVoH@rG7lPxPmz zkg;zxbo|JCs5Uz3ny+itSjO7`F&+&evQMR5)Lg792qNsMo9@aFR0>a4Is<=~Q<8Ga znxAXt_tdg(gT~gWYb3jg#+h*nX4pbEVYQV*Pt%n8psh92?Ts%z z9+8`GbIT`p!6)alB#@rB< z+FX#`p!r!9nlUj=T_%lO3fovNX?S>txu+d3>rmk{A#E4*ZS_MF3C|RTAr#+UEoZji zMri7dlliz(3?|@`o=e)CS;DF1!K5`7t%@jaHJig1 z8*2#D>alW#>u%}6^cBePy-J^8!SV-8KBz-q($l-{Cb=YKePK}>id8oti^`G@og+|H!h5Y|7-9L0hSTkk& zTVi2MWT%nSZ^t6TMCqiW@=0AikL&9`OV{2#au_lZcCzp z+%e-{7nE1lRVdF~={D6mk6s!CD_ILdgdt_*Y*U2pBpkc?tX~5%ca5?O1#ti5fc$T<*kmw9z5m|;AOj+qD>OW!nWo+T7L#& zkX-@*@pAfBjORG*)X3k?K-i2=UP{a8%#$A()~Y=9zLaGHY>0? z`VnCee^L-N(KwT`dwj4xZ1!8WXRU^`7Q3@Suj$zzfq`vcHpx=aS7l&V{pG*7CPB8V z+-C{WSMG~XQzJjxi}{sl@bE0V@cupbS*rq~ zt5=w3XM>u(My70`zUJ@&yAq|&OnD>3o6$^~5V^Ob=5P7iS&* z-07SuG@@KWc(ug5Q_CjACh?r4vrJsj-y<9DreOrWlJBg;IT3E+=!uGZPg$5PAUJEV i#$@2&??ep%JRh5VQj(;g@XC1c`xa(q4JAWvNB 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 X;@A#WzB}L>E}+M9s>u9@&tCsup4U~x diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h.html deleted file mode 100644 index 34bff9c9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/common/BlockDeviceInterface.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            BlockDeviceInterface.h File Reference
            -
            -
            - -

            BlockDeviceInterface include file. -More...

            -
            #include <stdint.h>
            -#include <stddef.h>
            -#include "../SdFatConfig.h"
            -
            -Include dependency graph for BlockDeviceInterface.h:
            -
            -
            - - - - - - - -
            -
            - - - - -

            -Classes

            class  BlockDeviceInterface
             BlockDeviceInterface class. More...
             
            -

            Detailed Description

            -

            BlockDeviceInterface include file.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_block_device_interface_8h__incl.png deleted file mode 100644 index 46f44782acfdeed6ce3b87cdfa468451eae560f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7659 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 - - - - - - -SdFat: Arduino/libraries/SdFat/src/BufferedPrint.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            BufferedPrint.h File Reference
            -
            -
            - -

            Fast buffered print. -More...

            -
            #include "common/FmtNumber.h"
            -
            - - - - -

            -Classes

            class  BufferedPrint< WriteClass, BUF_DIM >
             Fast buffered print template. More...
             
            -

            Detailed Description

            -

            Fast buffered print.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h.html deleted file mode 100644 index 487c5de6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/ExFatLib/ExFatFile.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            ExFatFile.h File Reference
            -
            -
            - -

            ExFatFile class. -More...

            -
            #include <limits.h>
            -#include <string.h>
            -#include "ExFatConfig.h"
            -#include "../common/FsDateTime.h"
            -#include "../common/FsStructs.h"
            -#include "../common/FsApiConstants.h"
            -#include "../common/FmtNumber.h"
            -#include "ExFatTypes.h"
            -#include "ExFatPartition.h"
            -#include "../common/ArduinoFiles.h"
            -
            -Include dependency graph for ExFatFile.h:
            -
            -
            - - - - - - - - - - - - -
            -
            - - - - - - - - - - - - - -

            -Classes

            class  ExFatFile
             Basic file class. More...
             
            struct  ExFatPos_t
             Internal type for file position - do not use in user apps. More...
             
            class  ExFile
             exFAT file with Arduino Stream. More...
             
            struct  ExName_t
             Internal type for file name - do not use in user apps. More...
             
            - - - -

            -Macros

            #define isDirSeparator(c)   ((c) == '/')
             
            - - - -

            -Functions

            bool lfnLegalChar (ExChar_t c)
             
            -

            Detailed Description

            -

            ExFatFile class.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ isDirSeparator

            - -
            -
            - - - - - - - - -
            #define isDirSeparator( c)   ((c) == '/')
            -
            -

            Expression for path name separator.

            - -
            -
            -

            Function Documentation

            - -

            ◆ lfnLegalChar()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool lfnLegalChar (ExChar_t c)
            -
            -inline
            -
            -

            test for legal character.

            -
            Parameters
            - - -
            [in]ccharacter to be tested.
            -
            -
            -
            Returns
            true for legal character else false.
            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_file_8h__incl.png deleted file mode 100644 index 3547cbe55bf21814067b37dce5c4d4c13c8af134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15345 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h.html deleted file mode 100644 index 2a5774d2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/ExFatLib/ExFatPartition.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            ExFatPartition.h File Reference
            -
            -
            - -

            ExFatPartition include file. -More...

            -
            #include "../common/SysCall.h"
            -#include "../common/BlockDevice.h"
            -#include "ExFatConfig.h"
            -#include "ExFatTypes.h"
            -
            -Include dependency graph for ExFatPartition.h:
            -
            -
            - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - -
            -
            - - - - - - - -

            -Classes

            class  ExFatPartition
             Access exFat partitions on raw file devices. More...
             
            class  FsCache
             Sector cache. More...
             
            - - - -

            -Variables

            const uint8_t FAT_TYPE_EXFAT = 64
             
            -

            Detailed Description

            -

            ExFatPartition include file.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Variable Documentation

            - -

            ◆ FAT_TYPE_EXFAT

            - -
            -
            - - - - -
            const uint8_t FAT_TYPE_EXFAT = 64
            -
            -

            Type for exFAT partition

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_ex_fat_partition_8h__dep__incl.png deleted file mode 100644 index 9a089b705cb062f60c71930014a7f089eb31746f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h.html deleted file mode 100644 index cc3fb90c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatFile.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            FatFile.h File Reference
            -
            -
            - -

            FatFile class. -More...

            -
            #include <string.h>
            -#include <stddef.h>
            -#include <limits.h>
            -#include "FatLibConfig.h"
            -#include "../common/FmtNumber.h"
            -#include "../common/FsApiConstants.h"
            -#include "../common/FsDateTime.h"
            -#include "../common/FsStructs.h"
            -#include "FatPartition.h"
            -#include "../common/ArduinoFiles.h"
            -
            -Include dependency graph for FatFile.h:
            -
            -
            - - - - - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - -
            -
            - - - - - - - - - - - - - -

            -Classes

            class  FatFile
             Basic file class. More...
             
            struct  FatPos_t
             Internal type for file position - do not use in user apps. More...
             
            class  File32
             FAT16/FAT32 file with Arduino Stream. More...
             
            struct  fname_t
             Internal type for Short File Name - do not use in user apps. More...
             
            - - - - - - - - - - - -

            -Macros

            #define isDirSeparator(c)   ((c) == '/')
             
            #define pgm_read_byte(addr)   (*(const unsigned char*)(addr))
             
            #define pgm_read_word(addr)   (*(const uint16_t*)(addr))
             
            #define PROGMEM
             
            #define PSTR(x)   (x)
             
            - - - - - - - - - - - -

            -Variables

            const uint8_t FNAME_FLAG_LC_BASE = FAT_CASE_LC_BASE
             
            const uint8_t FNAME_FLAG_LC_EXT = FAT_CASE_LC_EXT
             
            const uint8_t FNAME_FLAG_LOST_CHARS = 0X01
             
            const uint8_t FNAME_FLAG_MIXED_CASE = 0X02
             
            const uint8_t FNAME_FLAG_NEED_LFN
             
            -

            Detailed Description

            -

            FatFile class.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ isDirSeparator

            - -
            -
            - - - - - - - - -
            #define isDirSeparator( c)   ((c) == '/')
            -
            -

            Expression for path name separator.

            - -
            -
            - -

            ◆ pgm_read_byte

            - -
            -
            - - - - - - - - -
            #define pgm_read_byte( addr)   (*(const unsigned char*)(addr))
            -
            -

            read 8-bits from flash for ARM

            - -
            -
            - -

            ◆ pgm_read_word

            - -
            -
            - - - - - - - - -
            #define pgm_read_word( addr)   (*(const uint16_t*)(addr))
            -
            -

            read 16-bits from flash for ARM

            - -
            -
            - -

            ◆ PROGMEM

            - -
            -
            - - - - -
            #define PROGMEM
            -
            -

            store in flash for ARM

            - -
            -
            - -

            ◆ PSTR

            - -
            -
            - - - - - - - - -
            #define PSTR( x)   (x)
            -
            -

            store literal string in flash for ARM

            - -
            -
            -

            Variable Documentation

            - -

            ◆ FNAME_FLAG_LC_BASE

            - -
            -
            - - - - -
            const uint8_t FNAME_FLAG_LC_BASE = FAT_CASE_LC_BASE
            -
            -

            Filename base-name is all lower case

            - -
            -
            - -

            ◆ FNAME_FLAG_LC_EXT

            - -
            -
            - - - - -
            const uint8_t FNAME_FLAG_LC_EXT = FAT_CASE_LC_EXT
            -
            -

            Filename extension is all lower case.

            - -
            -
            - -

            ◆ FNAME_FLAG_LOST_CHARS

            - -
            -
            - - - - -
            const uint8_t FNAME_FLAG_LOST_CHARS = 0X01
            -
            -

            Derived from a LFN with loss or conversion of characters.

            - -
            -
            - -

            ◆ FNAME_FLAG_MIXED_CASE

            - -
            -
            - - - - -
            const uint8_t FNAME_FLAG_MIXED_CASE = 0X02
            -
            -

            Base-name or extension has mixed case.

            - -
            -
            - -

            ◆ FNAME_FLAG_NEED_LFN

            - -
            -
            - - - - -
            const uint8_t FNAME_FLAG_NEED_LFN
            -
            -Initial value:

            LFN entries are required for file name.

            - -
            -
            -
            -
            const uint8_t FNAME_FLAG_LOST_CHARS
            Definition: FatFile.h:96
            -
            const uint8_t FNAME_FLAG_MIXED_CASE
            Definition: FatFile.h:98
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h__dep__incl.png deleted file mode 100644 index f40953d8fe11461f6e87c61d8c4f901735aabcf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2113 zcmcJRc{Cg77QlnHVk`Ahql;~ZYKw@WsWP=hVx7`9mX?MJS|)-rb}Fr{mPEBxE!E(7 z(L|F}B|Iu9Z4GU06(!-(w3ZM{jYLE+={qy;y?@@H?|kRpd+s^+obTN4yZ3i*-dRr< zHRXfK002PE%@uxLW~nm41NX@EYXwQX%v6z|KV_A+%0d6bYys0lpf#_?-x>c7a32V>}t#3Mb>>USnP4yIwwbn=i zZ=(GBmjy|{r?(vv?lN)(S&c{(iY=s2g8J7LxMMY&tUT}_&zCggEWz*|~?m@SFWx(LX>Y*T?w zOl)cxH_SB8x&<55j6chO>wwJ8xx@}eVX;Om8a=&~+VZ{;>vorKNcP~!tigIUJ?Pl-$&QsNC9KYb{1qi95sbSwi z`BTn2quQ*up8Nx*>!-~Qei*r?tDyr~SooF8yzJlB;h8~#)C*Z9NSu_)Nzc08pqdwkLWVBd|Bj<%eASa3o zwes)(cglPJbXTr7$9#T+zjwWmu(dUNO)74G;Hh^n0iot%-!rU~AqC6T)g3Y(`Djjj zk+CCMv`xG&Wisr0H8#G!XqRg>=k?ur)^FmvYJWIVC7BBUJdMYD z1)9zG0;|HaANJE(dmemOl%S65NjR753`Cd|TCky)_YxBP;p~nKu>7$ z>|YkA$Qx-p@6lkqM!xTD%d1eRTtlF}uaC9WOtB@KkmWe2yt?u!^aUm6g8dcMD?VXh z1-(A^jT6wL{sw)Ix02L4j6zoKS>s>kZAeGCyT=b2fv6gZ%e2-I)yK?=)So22esP;t zzDNB}(Ev%|w!x}b-b{6pk;IFLGo6*;yRDN~f1kz8qpT+(Wo-W1%Z*4+ymr1XZcH#G zk7E+hB+5INQ_=&rAS!TXKN032bdL4Ak8_kxDlGn7D_&h0NJH8~A9`m1?qZ5`eeBH$ z)Tf69v+D#6FDTTG>Pc*S)0(*p@{|5w<@eWL{8^3vU$;v{?C=9TQiQx0yq)_;;&Ri+ z8#_DNx=J(O0W#wEw*V@6#!Hsvtg~m1^n=zzb`j}=9nc|NTM5Q=_LgyO?#{i0VAb)g zX}?VE5C3M7BEn<17{>77El4c>iH9w*Cv|O3he01FXmSd zn5J>=+8j>HA8&^(aX)E7QLe9(Nny6b1ap*p)Z;`pW+85}Q48VDphZMO@b7W|K~a~! z@81kvIF0=9i_gvw+r)$zupCKOAI&k&f0cQ`_0fr4v4z|97Ad6_LzWi?Q_E~g)X$oX ztkDqCh)o-GUYIRjUbU=I!^XD=vIp30kwJz^gAzO3Xs=L7ic+^nZQ6CG>Cw;vv6vrF zMAzYCoOEG`i!-Gv@MAK#e|u0z8S7mOpz+6vp^`@nHpDRFfaGI4Ei|RCWKhq%dGi-` z>0y4Hg;&?{p-rnFP7RUf*QzGpfwr4Rkh%ZV>v22qK|JM*xX5q!=97SY-d1_6&;iX+4ukOH%v2}r z_3|^Wo&Wn0_nMj4%BPw7u^T6A&NaFfn@?zTD)gNF-YT7DQt~fW8Hltt?WQF>N;HU^ zXV4u&XztCbQIw3%wb=Qj1Vt)e{khpYA*E|vq56OHMhx{s;JcaK1_@w!aaHob5zb`M r_I2X04ooU;U?_YWzOo7Yd`+q-33P4m4GN~nb^?GK!V^w|UB3AT3ll7s diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_file_8h__incl.png deleted file mode 100644 index 43acf104fd19d01858133c06db4f0a2a5a96313f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28107 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 UMi!jF*V&-E*!!5gTV^l*Klq^kGXMYp diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h.html deleted file mode 100644 index b9ae7099..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatLibConfig.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            FatLibConfig.h File Reference
            -
            -
            - -

            configuration definitions -More...

            -
            #include "SdFatConfig.h"
            -
            -Include dependency graph for FatLibConfig.h:
            -
            -
            - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - -
            -

            Detailed Description

            -

            configuration definitions

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h__dep__incl.png deleted file mode 100644 index 8e5856715e3ce9a5b63346326d44372c5abb3c58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10659 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 Hv%voWv2lv~ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_lib_config_8h__incl.png deleted file mode 100644 index 04aea878775e74fa0d7028cfee56ea1bbce6ff7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3592 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 - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatPartition.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            FatPartition.h File Reference
            -
            -
            - -

            FatPartition class. -More...

            -
            #include <stddef.h>
            -#include "FatLibConfig.h"
            -#include "../common/SysCall.h"
            -#include "../common/BlockDevice.h"
            -#include "../common/FsStructs.h"
            -
            -Include dependency graph for FatPartition.h:
            -
            -
            - - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - -
            -
            - - - - - - - - - - -

            -Classes

            union  cache_t
             Cache for an raw data sector. More...
             
            class  FatCache
             Sector cache. More...
             
            class  FatPartition
             Access FAT16 and FAT32 partitions on raw file devices. More...
             
            - - - - - - - -

            -Variables

            const uint8_t FAT_TYPE_FAT12 = 12
             
            const uint8_t FAT_TYPE_FAT16 = 16
             
            const uint8_t FAT_TYPE_FAT32 = 32
             
            -

            Detailed Description

            -

            FatPartition class.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Variable Documentation

            - -

            ◆ FAT_TYPE_FAT12

            - -
            -
            - - - - -
            const uint8_t FAT_TYPE_FAT12 = 12
            -
            -

            Type for FAT12 partition

            - -
            -
            - -

            ◆ FAT_TYPE_FAT16

            - -
            -
            - - - - -
            const uint8_t FAT_TYPE_FAT16 = 16
            -
            -

            Type for FAT12 partition

            - -
            -
            - -

            ◆ FAT_TYPE_FAT32

            - -
            -
            - - - - -
            const uint8_t FAT_TYPE_FAT32 = 32
            -
            -

            Type for FAT12 partition

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h__dep__incl.png deleted file mode 100644 index 551495a70820e9c6f98f8989eb5be660e465ba02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6596 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 UfyFcYZy7*W(-8bw-7eza0P*{=RR910 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_partition_8h__incl.png deleted file mode 100644 index 67854e22cdd4124540a0e7a6684cf592c164ec1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15133 zcmajG2{hF2-#-4HF_x4VYuOt@V=I)Mkr7$4&18?1l%0^>;3HdE60$R88?t6(Cu9pr z*0E;a_dWdHKHuN}JkS6CJm>s5XPh%<%=^Ay_v?P$*Xz2jJ51++Dh)L&H2?rK_tnsP z001Qi00<)$1^7<&sY)UEhr&`r6%Cx7|7O(Y!~y^}a38IN@km)6^YmexO;z0Jc{RgB zdENQ4ocNs=BiX_B3$z_Z9dUGPcQbJsP%~rWB_@`LK)Ss?F@;K$cUzUZ&Ln|x)9w=l$e;{dT2P^MtrK_b??{wiPtO>iB*2P_c^cc z?ho-E0R6xG1kv?DawqM8TL8RIDOBt$LxXa*GM#QZ^8D>c*v(f11xDE~>3kcKZrcJG zEJDas`Eki+?tCVBm>B6?nCx?D}D^HGL?wATHVCN)*$K7Ejmp}x$^;<9D zIS(qPs`f){_y-*}GDq6Kj9Qp&C<`Yq?)fOZKBZu$`S?OmKfaNZ0gk2MRLFR9nA@x*j6!G8Z#jjJire*A2Iic=$-L`jr3?Y_$;g1|dH(M9pZ zuTmN-jIgWMMV9T?+kf5L+RT(T4Y;|nmpPF9BH8-bFf7y^oUiOvf=SIg1~QP%(m!|D=UPD^}5#XC)l%{3?^utX1dI6U7;|U*IAvl z{Mu?=rE?7--s}n>zluXfTO>WGlLd=v=(XiGo5cX@#O}LjUylPExHiDQ3x$_pCI|BZ zhWmG+vNl)9STULRGWP3_Ecp)8`kiv~UPmN~n%mP1_}!Y9n;gD?o()rhT*bcWJdT`e z5==k5=Y3-)b4~L1C$+yDe0aOf4Tu$H;Za~QwYLHSf7enMWz@bW_6=NzqTM+!&j~xx zbUWmP(<+VK%VK+lp(^q6xK)|bE)Dc-KnU$~!%EY8QiB@o$zN+6MV?#=Pjr+ZRr=SN zerI{}l!M18K2)770y@&};Cf2U&{;IO7D3OGHjzBFegm?>F|jSOEse(80K4Rs0CtfM*o{Vl0; z%x!QueR1iiC24I<@=j7WS?CIpWDvEuI#yhgzud^8l>@=4JvHt6oo9ZW5^A-(=Uzx6 zuJ%h-IQS0hj}4eiVka(4WL3=l5)^R@eelXG|L z!xG*f9WBJfXVH?mRIj)8kY!|xLvZ%0Q7nyQfZxjTX6~XKYU0ZKrKP0UKwul~B!pwc zsRCxqVTScKj#2jFsWG9{5h_YyA8tKSTJ>I6d0@~&j*z<2(24u2N{3!sTB-3%UG#a3 zF`w{>wrZcooqpS|EepW5EVA^xvzL?%Yjc5Dc5GWlXwEM>j(pi(de@$$kF^rP4Fg1| z2ddvVMy=-fN`y9ks~OKd<34d>;vjal5{Q1OqC?q6rj#LhoqqFnc3H5IuWx6L&_(UM zCGl8(Z9A{S*#XYJL^0>F1p}<}MO=ihV%?Bynr8Nc+UCN-HTxw&x*ZFE4KkV^J{#8D zoD(q6;Cc_yLCZ{jt^X(87(Z1pUBgv`2U|l|jM~;*#duY(c&hLUE1Su)PkKje@ESWK z7t5jQS`L0z@?t~Sw!Elc#G;(Cb4rAQ&^sArrfp#5Begc{6=gu-!iwE77yz_{j1cuV z751FND<}~Pr}tE+>@b(6nRbTwklkd5Aqfeg=a&N8$`BjgUN({A#Zx1%G_5;c+pDsK zO;#hk;^)ghOQiC%6?*rkp==zgPzNyXB1q#Fck#m=wgq+c^?y{91ily($J~-aO)pQL zK|C(~Y^j^rv;F6(h3SprRdRh5L_J)o!m7PsZ_kjbTcRy(T0)d!28vBdQfubAlgiIh zSiRAQ>(=iV2QlK!%(81C1 zShTNQUCV5&g8$9czLWRJ?>Tz?A)n3t&Az#2!|7UI9KM(c5mYe1Pv2{H`@hYD$Kk0HU)tjl>ZY6L0 z+Nx44ODFw%-_fJVH9N*O{HsHg7|==)z#gmC{OD%t^O+<>;WFp20rw;ZsD>WAMLslq z_%v>QthmwjF5-xrnOvpcM!GxOlkl9WQ34KT=Hv((aay(bG|Oi0$3W6sHc9zQ7LIWF z0(R>By4K%rirkd2fFCzPrnkkP3FVGe^~>Dx4WFKe{DvNVMaI8+73Eo+zns*SElv-Q z2*f*&&GnGEWFZx91g29$jEye6d8ps)%(@0|w1fXxS_nPsb;bKQj~z~9T2H7O-l(CU z#q~KK9vwxrsv`1Y15tgkym?R$G*f3jp}_q0i5(p8@*SViu(ZtL$47s^1vASH>_ZRI z)?3dkWel#;wT6vfo|K50eBNWSm9mIBjOXOvyn<_wkCVZ(N409FbEXdU1?gj*DR9yN zakr}lUa+z)zycY4FTq$9@NnqK8nNv*Fu-6s$MqirW;(ocYB0W zJT*t>mo-N2LTFY}N}QUInWKz;<_gi|Wvx~FBH{z(WEoHejON$~Yw(VH$=HeO(Z}&H zlY8EATRN=9VEcV28}4FVL))_IxT+_>@BSmzWdPZ-M&j1*eeb>{6gh}9UYUT{Pt%eAZLl52^JCf7v37?cON#GYgs@rmG<2FCo9EO zpx#u{D-Y?HOEACBJF<2&HOJ7MWZ&3|h-qU5io)#VySE+2ZDjOIz)kfRjb!@4&|8UH zxiIMlbP9JG5BHWFXuqC@$1#B;o|NkKr|;#;>wx3Nh4gmK(j4OaBm1_rP>%Gy7v+mq z@AY|xcM(mVg)i8k%#$SY)@Ia&q}W*T$Dj1XDvD4IA&^5ZteGyBso=Sz`Bpf%&9fp^ z8U-Zo5Z`EJ?NkFI(2WVgQ5PD&s?t~45i^bMfjY_JRO-0uJ6t*S*>kM?;l8F!QHOr5 zqtpuBB8A>ljY<|-{P*eEq7yJBqop$rJtlwS7jfvUP?bii{z28KFG7_nXnx2+;k?@@ zrqS^yd7MJ(HYe&&8cX$WSI$1LzBr*cb^GJO(4;|~&DOzW1Px7h0e9#RGACpP10a`! z><{1?rmMhKNn z?XPpgQ0%WV0nYT(Z5~7wbZAfKI?VuY2XjQA&?oDJ2*^Pd)x#`3>_r*bB6DjQ1L^!C z$HVtlQ#Y`_&$ed5wBn?4Mc4}2P6$W`h*QaWD@$@W!$UW>i8LJ((g`{I2e}g?&K`Gq zx7k?NKypfV%^dA($atyAjm6LScKM~~Je*(CK56ZCYToGWJH#JqSv!&lkKxi8^aF2M ziPo@t5FzG9pPq;bOK`Bmdx3c*P&q+peNN8Y0u5WCZ>wvzo&~8_1#wUqn%2@}Jp6Jj zxSBG+uf&mAWsLSG%wkOVo$;clhTp}=$C=bkc#)IH%0D;7l{Z^%=qrnzFawCw>2ZQ87)kLk_-t38i>pk_Kx8 z4_gR#sTyML)d3?A%{l5GMO77q>K0mE9!`kdY4K0fYdOFWj*54ei!?rTV*;C zF`-4bIC3$!C4@$0sRG4;A7nQ<8q6^zV)P~PuUv&rtA}0D!A#2P&_@~W6GuYDoIt*cNX0NnKTTK=#~k~~p^nd_?9BH;D(a`A?Y z;?~3gyV0+Uj{)z9g~w@wdy;*L>ShynR;#$8$pTSxuI}GY?PT;lpN9|at%XFutf5j& zC=T2_rbLcvC(UhnM23cvm$f`xl=@$wKv+5<$3^A+(FjBTh4&>QRsXB1|8XY$y`O&X zSP&3Lz|W)Z-S3*cC01Wm=eJT4fBhvS@u}o%+pG0qN3j*t~ z0H3-t@jY7b8$+cY?6?CtVK7zi@pto@lt{@%XVxgl2RoxY9vPWT@)!8Ie&|Pv%ihMY4!(Uv2k3(L~Nx&$9?Y`5S{Q5OD7TxCdCHegp32bTZ02`f3YXc$9CkXwIEL-7au^K%JnWu|4}O`?zqHKVQRZ-tGv)|mY7&M z(LLKf&yGZUNkv`+e<(K-%;RH~j3-)Kd-rMQH+{m<4-hIROXUium`WaDv7^vQ%Zc^p zFH>G811T39pg(!&UsyOQN&V;G4P*eM85%YLgl{bGV^2rN9_8i1iJij5H<+W2QURxw zxqL_^8kXbz=r06(rjZx#?gRu5&?$*>vti1OVP{q#xcBz9OI}QokovdgKWw>(s8ZyH z13D^t=%UHI>M8LTzXHu{Z3^_!PYbCc^;C)or{7AS&VF^yQhbacxrATTpBP37{ z^DLDR@UxinN4be6;aO|Q7e1sq#(hGLGc@YfahaI>b$$Q#hQ7#&j+uWwft@5%tH$sUX@m9zy{&$O6TV$AqJI)raBd9&g_Y$Lihi)kG_1 zA^U@bm~)rTcMjd zasGQJ2fixdn%8ugRRX3>cOG-^;*oyIYOX0Ax@*CbFQ3_VeSe!Q18BBC^PEV((mrQG z%@j5LWfZzFSZef;smxQ|aZ$bJnY1?SC3f=`;Lj4nq!ewMs3vrh&e19TU`HKWi$N1M zPZyiK%GbRorjKo`1P<{Qzdn&yM_y$(qyg+E(qvpGJ-0Adh+{rPDhJZ7hMQ#M0KA4C z7RpDzsT!UTS^AjNyNGa+r%OR1?qi>>2-7J!(k*-hA=v$vZnZ;ek}zdB3`9u?90lMH zcAl=mRB6zgt3mre8FBo=g3?7Fr&S$U6mK! z-oWYh3D!`3)?V z;7p7VhN)B8?~wyW@qUBbOAeIAu`0BxJP*$s_|U&Purkc`VgJd;6Cr`)e?0Bki}d5? z3}m~%k|5GFKa-T0)$xugKL_n z_(F$2+8#*#7iFu#WdW0{aQ2Mw_ie{HH(bO%mYz3jd|V9UC{r*f)2z2H3# z}Q}gM6 z5B8i%cCt#6{Y)DlkEE=wdZ?J9UTb!trC}QwM_L?Hl06r)IOe%ty(TlCQSxM8s;|_> z4lt}(3CzMB_SdrG<&+~buLuVqvE8L1)^_6RL+3NQiXoGa{5A2O`&w27USGOPAjqEHZ zaSsi^GTL3U5tU301{a4;Uy|E-V~BR1P!pnD*yi+p%TP%=if%_lJheR|aFsF-vqTNQ zwWV-m#N|8lGA2`Ii~eXH z-8UzykQAdyx1S4)u8M|b&$`TP2MVT+8JSuvj!nMzX@4USke)o;$==@H_4YCsK{mSb zMq(4?BD^;T;>9isS4X4Y`)B>q=SFyO;8cC;S9SXygG^|L?)@D`5cp`K_I2ZGwXCm! ze4D}bpZY(I$tTr;3O@Rh1g)I*4AYRYC0sh?Y3F{`yq>?AgI1@!G5F(kPee7N^vZ?XAHS&#@e3Gse(1DAt!ZCN#uZs1c>S$~e4o zGpN?-UX@+pGP_;K(iy&)u9N237qgDTrFSCt3@l1$ZOe~1u74bkp+*>uBSl_DC4j~GB5WBvV`^ONzjOjC? zxHZZU-5DGEg8xTrX=TC7kjAQj;|YZgM`i4f;X+CCPL`_Fo9*-N-K{cOMEQ-k@)N5G z1a;r^j`Fdo@#)eRPd+Vkc9nWgX zTp=2&LhrX3zk>WG*-%qy0ZG&PDq4grNxl8KdqZYqHO;GZJMs5_?$88T+EtjQclu1% zm5A4A`)(*azJ+0)mR26o&&UBhhPNFK^4sa!K3lR8NUi7uow@<(p^_0hQl~qe_MHmr zm!nsx%x4|HIgx~u)Bb6s*r#znexAN;O0#=K(28sF`1itK?5ek^2w7>F*?xn2h%r&% z*wrv1P!w>fpQ2NyL0`3LZ6ns&4Tz6=y*%;#I(u*HYw4|#MzJ9KAUnVAxqZF&s~(Y4 zew>A$?e>oCNUTeHcKgS@Ytv0*MZY(EZ5Hm7n(+;u+!?$C3N!ci7k_dnJh!t;%na8K z%UuNd?r&Wl27}D67uNWYwwZ#|K&mj_Rx>9f zWuxnZ=2V^Pd(~^QK0g^DGfr?LdzlO1{>{381rd6;0&XBnZ|l>d5GYl|@nKXTbkZ1@ zpSAT0S9UB&wPTZ_naHcm=_XbBZh-q4sXG)NNCx<}yHX<%cy-34GTLm-${l4?4?kdQ z4@p|5aJq~WzxdN#;P>yZRDr8%e3ElM=AEpR09D{;=?Q~R%;n`=U|I6-Ijp-rH-IRZ zF5IctVaN-#X?gVSlf|(T9c&EY(haIqoqN9F-;}YL1liS|%p24;HdXr%neqwhXBgZZ z3q*jFFZ>|I<5$U(R=*v=+S+CR+Q&_$DHC7#v=vV70*3Xck=HB7Uw!+hiT0|j`&@AQ zOhA<5sK>f}-f!Z#DM|j0*8qt6vmDvIT%*N}Mp*<3~cjoIE@-H%dGQb=p1IT={?Ous;4xudOCp zsh)Y}69}@`Po@c`>(wv%p5%i(zpWd#|Glg`X_buuUC<}*=saw{j5zqb2s91*?mJfI zVX!82lZ*DGQz9%y_hwO~)Su8&pLF~$di*W&0ZyQ!j#kFp^wreb*jRGf!nn&NfenXt#!oY2C z==WFQd|btMbs53FKoeSgQL2sa<2mXiM0#ItxP|blnQtjlX^UDs@>@wH5Ptgs0}*Jy z`Km7K58dd>Vf%_XuTJWR5RY&BB$KY}Yj{g46a0POyFQSrxh^jx_>dGaGK;X6okMpbyez<$UxpSi;aFlL+wu?2W#}(A*7h zT%YvfF9Nl-wZT#xC77`3FMls))WbGH+Xj?nWF39FTysaqMwgFEp24LrHb}Bt_c7?_ zJhDuFprY)3yxJuR3>jb__@3+@@SV?73jDrYifYKh<>gyjmj9|%zYKx@#rzHr#9}syi|pATxVcYgyojr_HOf1o4;#|Y7M~?87qy;iIQkgpV5DVa zpG(eiHAB|LqN*O zUNV({`wh0~VQm+1oLsPJKhn^USd(im_bqnN3&8sQ+zZe#zz7c;rBVA;>LpzqoqIPJ zFQC&;mBA#PW^uH$fF2zCn}HM|+mV}yN6BsB&LSh@huN%kN5>%FS#3gffeMWfv;D8ewc4b zNbXifKMVdO5X~B+E)ACVlGTOVh*CZD`o_uUGD*A8<81xlfcX|j$czq3;VP`()=aXh zXi;o9?X4(4^JM{I@Ad`w?g5_1R8>*pEYT-~oCvG)coKa6%*)^Rz z*Aw25hT{ZvCr9zr8wKaQMBRilJFbOr#1+YK(*EY^MH{VoB!3}kLm3DG8uP-Mf9+;( z)9Fh61Flz#NPKW9hx58rZ&@JF6TVx=bv29fzYVVY&5SUIU11GRAwhantB&z)u9PxK|U_x@BVI0Fn?Ey!0!y z7Ab@R`{!SsA{RBY3hL@+^$}iz+!_pFL#yY*`1((lz)&{9QUmVEN(BYE6|IdY!V^{nw`p=h2b9&|+n$^7CW3 znbv$83&}xRhu2dS$Jtq`(D|}nRn)hnz!TIX>sgWrc z+I(7vcbb3aB@BTnu5vC*hN3xv4f9yO{@drfVu~dk5B%hWpF}S*R+g^DZ$k<$Lu-b{ zQe}SbPy63W&7=2x?2OKXS6T2DiG-s1iVRhg@k<(@hR! zp|1?S9Y^9df&fJ|-ak1`j5S87sU?bz6OX)c$VbrP5x0*QHLb&rllX2 znfO=KGPwm7(RRX-JgUy9-C%+jKN^hB0gCScLsmyS13KveI_6yRde{M|3?Kc4%TJZ) z)R&Go^U*sVz`2S#aR<~iZgLO|O)ETUQI3=|)}TW7Z@CxF6rk42Pvj?1TyMZ=!Ugn@?bSws1oK+?8ZDl7gsWn`(y{ppYAhs zOQwc|s%wLFqu)Y#;;elP#N%z?`CYa;H;eFkOC_>jGjw%vcvoP?=j^qljV(VXMO!W5 zC<8qDfaf$V3g&>=vmbjV5Ka2~soep=XbJjEkDvm=(gWIm-sv!r@9qk7VLA3wLfM58 zt)7qm8Ur>mELQ8ggC?L*wPFhYK^YjqVcl1BUast94C;p6cg!J&?A%%$92z98`D^%J zjNu?DL1&k26;?}fxTx@q)H}_QlQr!2Q8KY(MoPHVD87#Bc}Dn&yy)K7JRu3MG?seu z;>%frYVvPru4A9GWY4rTSOOv;@~> zL+|i~)*#d#W3LfG<{?_a>FTT+`g?grE0O6|5{MnFaDH43rE2Ip-I-mM)M<$ca-eR) zJ$_Lrcn;*xb+v@ac5cEeGu}Tte3_C9#UUSP^8TSELxJ{@H{3tVfwldb1L=EY^t$ch zF6x#?@AD{uV5Ap1&<2Hmn!`HV<>SvicwU^WuFI;-h=GS#@tM7Tw&_vk(oz};IH?I0 z*{LC3KQxt0ocENp1Ckxo2M;K9S z@4LF(4{8ZNBJ075%-P>BUr*+gOJHva%t-mH4ypjNh%It>%I3Itj5U~-BatQ?pe~B? zhdxhL6JtCMP@B=ju99>6l1mup=kx!)iW5ed3+#^zA&{4OR2q{VPrquQMJS`$?XJS_ zhfQYr6b?EkMKQ%x0vX}lR8FsaPbw5Z#XH>~js>WB@_&KHp{Zza?0gI7mx4(Ec!IUE zS8fV^d30G6Mhkrh1K=qj4c2otk{W(e+D2JOYY7@fSE|MY7>mimCc-nuknb#!kQeFC`Le%qm;)?W@hG``W zc|wxcNa<5#1{P($Nwpvhu8Pgd2s=nmWe_Buea)k$Gr7I{Zkd>3x?_RHxW8c{PfZ=H z=f_95`>0vd!}>i1sRJ!W@!UAFzZ0l?a17Z8>PZz4vB++G6~n$hhuDMr)7H>N24GL8 z<#?j)I9xSR58MB;JkJN=#m61gC96YjQ9w{Qm%as`i6D@Q_q6X9;9C<8j8JjsG)z1tK_VI6&OI^1BpubgFj3`cvb_t#BE0IB9~}(;;kPXZPUtgk zD+}=g8HDs3dIAWf{=JC61apVg3s4`HXoyMxfl&7$y<9>iklW4HTyi4=)<6SJ7wtE2 zKkHM;=C`Q)B{OBw>o>5=#H-@WznS^5=|@LeWx!R}((CXY!XGnKU5wh7t{avT2&D3N zeo=K^nKjr(J=fo#@sB#+)m##D9ecfvwOZG#g^?K|sDv3=HXAq`&k9`WLKgx z=T~!~J0DFd?uiKM-2`w{-FhnP4fX3DwJ^xqMQCbF-2vR11SavVM~pze9_|s}R)FM; z4N%Wz-&t7g^a^X*_sY~m=l)J@A_bueUt62{^1H$NMCyen4aZzxf+C$EydZ8G1$_d{ z*N1-$uma|qQNEt($anGNw9(U`06TiFEJnnHgm#!yg+m)afthT>{Dgu-oo+JfqrD`R z-dQ0*c9$*}5qAnKKxUMHoWX$y?CId7mj(55UA|C&rQyfkYB>W$p7Lia?aQ!N)n;kDuwI0Mhwiu)g)dCwM*B%7+YPU22J6HLGZ^Oo96*-Y|< zl@ZEBkmr*GF6+kSfPlXshA8gq3UMH3iq+YeB zRA}ejh~ajrvYOJw%EO`=f3>*MwYAE~J~=fh8I)>N?t3}jOL zpohQhcpy)nZ%{;pGy`b&M>WN#8zJa@x51OkTxSQ(+Ct`aM{6;}?FKUcI^XG{!y zza8XfqQ4tN%560{R<4B*AyTF56N}R2IfNok&zYDrv0ri$HlWwSnnCaZZ~WRpZxovE z)aCC%V)fv_+O1lG&0tvG`!hD6{zkKxq@$mcjoH|Iw5Eekb^dbZ1YfLK2vq6|-Ev2) zEJW_93=IDE!RzT&ucuzfNo>pI?L}>pW4g~4|7r2yBmFyXvQrrzeAxV6cRaG3t(Cm- zh|}_Rmgw(hd_zhlkYr(zz9Jeo^2N6^-r5|J=9@*Z`7?yEAw94rpV4@=Z|mqddN9c_ zHdbUW^jl^t_X0}PkdZE~MyZwYN1FU`M9U@mhuR8YXAJQurSSRq$+{Qhz%Djx# ze7@eX6Jw>p7*!u%y0|c%6kilb`OKC4FP>tm))^I9zSr%$M9oe_(^lmdrP=F!<-qF^ zmZNpSATw19iDSL9JKL4okwmk)d!bY)=kP$wnyC$~w-l^)>1|f#R~HrHUT~0|#TWU; zA1lCTX+Ya1)1z!!2S|~P8v0sn4<2=VvV10KF)vvk&^ha6a%Z_M%Z$LDSl1ZkT7RYM zR0Vapm`|B$EuWpy(qQ*YQJ)V@@ zoVtAd>CsL0gNn?mvzNnM;#b!;?q>UX3pfh$hA{cV*9!_tIB&@B z+@(BFD~sTH(dvvRLF5O)o;htk6piNjev2G!RJuA>7Ifa~u@UloRgLLB+3S|OcbP~b z@N$zgD(I$jawR)IUoaavAJ(>;Ht2k{7`OtMK4w-H6kOjx zO1fJWim?O>{*6wx=Ra2FsqR);z#yV}=-lW|ZixGQi)$!0iA5+n_#- zzG$wx0WaeC+}av!noe+_c>nKHgs5}Bl|QU>*pWd!44aH>kLB+MEx2xsUY`*I&)|>2 z#mxNHM2RUmFQ1)D#(79e$U*6R%lb~up8{Dbsq?weMnDN_ySo<^dFV&UEUK-hq9Y>@ zxFRb3Vk|B;q(KqXETC0C{0XUdTS(B5Cs1+Vx5b$y3#{RojKu*<~4XF z;MTbm~plimLYph3mF)h=OssP8 z0hT>0+!15~TeHP?_cLkT9R1d7se~fV!^ydFBcrqrH2daMRJeae?p=n;BVwowz=syq zRefPYNf!B|(2v1o>j<}(Oy_`kJVa0EXswclhxcUr5?>dq^n+%5bmsZcnV)sreO_Ez z3eW5CM7Y$>yO~lHs3&&cW`uWxmF;}#)gL{1qM>YHFep#hx{peh6ZHcbmtmcLVcdh8 zsX?L7DZ#M61Dg?}y!WS%uzaED%UdVJcLG#LRNnu|VVyjBQsg6{z*h839>}Spda9?2 zvXy7={y!!sh@ukr{4P#3&G*y5Oo5~j$=emScSGx6917ykkn!5ilmVnX{d zAxB(<++M#Si z!bfj;ZZ#YI>u$@tr_nqjggD=F65xf0yIn*U&GLf6ID!iuP876SJm?WmMJfj3wi!VR zrC1>2C!xsv;A+eyCqNRu7~<;Md0ep0Waqw^XNw`avh1 zpSgjfZUsO`_R04^<31zsM#UbZPTPMhA3GBepZnONjgu0$Q{EU=;=| zYtCOofNPbhYku}Q>XV)q7w!c?>Q>BiZ?L<+TPkFyOHRnwuMPxnWCR0X00f5izA*^p z+X!c{!rD(5!aR&vV1R{DDLD{`%ehXkD;2s3U`z{T{Y~lKDE5>Fp4OsY_MH_CZH90c zzXQ$ZhDTeSpXGzKe%lQ1Wv_=%dLzD;Wk35PY3^U^=KXl^#l7=X5DSYHzF18G;WLhZ zfNjwQPOk;pU^Ri_1Y`{wF>WCv3deGCD&*cIOz$)FE@R0N3lGjbRh>OlCd6`?bZbuB z2m63W>|IA-#}rjnRW&Ha#L}0YYLKAmP^HhLn)k<~j_Yjm`2dr9`_m0FxHKiIV#nTD zg9#4T?DLD2h{zCX)uGcp*xXPG-aOfx2YlHUjyJT=^6#JJV^zF(YwA+fJnFf+sz9f0 zDB-W$^mi>TGO+~52C{C{&^mk^2kfT4T_8VU=P=D(xd~T_xfsV$X?mh?YHLpgWk-DrYA!$s# zk{JEtbJ@Y+)AEh$V9TC{X;Hk{+>(sRl8O7)r1C}uy`umI1r-x2auModTTH@&w0dJ{ zZ^4u0fwo!1f!dJ)#K{-z<^1*H`mnQd@XGOR84)(EDcwK}Iv(&M!>P@w@b;cxx6svx z!?Q|qGN5j*&FL(?dyNj@3s?)cdF<=!PQTR#0tt^BD9z~%Y4eQFEg2bJg!V-zT;qscjE>8b@M?=9kekeAtyQtJs*8)m6_?GftPGzyB907t zY>#tdzRXLp_+C*vA#WI(if4-P1pT$QMqOq*oRbEjTQB~aKjzG})Iz}1pNO%*v3K^s zuUK~PKU@C3c063=JF|M-pFl980ZH9iR3CTHYDYRUekVN{#dHIHm{kcv1|e#s@kCzO z*ODO}~O;A`Gn* z%f;crY_wb$DNp&5sq^tTmT-W82fwh=CT68vxyl=T$*xN-uAzT3E2swY8^me8L%@ z1C`2Om&7)BJ;JV02TqQ=E&oaNq%nCm@Y&?39yA*|!hO`SoVP)mD>Q`mlJ}o5{>xv4 zIu|7B%}=*Pdr8UPO0D?keI{<(jyH5kp24ltPj0ZgMn_at-Qwwn!y1)d&i(Lw+)Q)n z+9i^7EQ|RLJfapya*&1JzCFeM%BXEVIP@EcDPD)Qz1cZ4mx!Ahv7LXTWjz$X>}%bV z7CBs&6D1Qw7*8E%CO_P`(B$4d(?Dh>WbPNfcqItAvwipcwBhD`)|FJ=;Ytzvu;`K5 z`(4bDdpEWujRiqXnf6ZYzYrhmzbFve@b87GUxthrPL7#*pK_zZdq-D5TzQT7__~}Z z`n{?Ub%(YH7i_p&Uw4s9B)rZZ+qT*utsL4W_3w=<@GhIujXuA#qcfVJL$=k1Sqc%w zjk@74(wJ=ZcQ1~gmeq=n@#`lCmB)4x3!A|S-owSR#AS1g4U_pNTyr38z9g<*?tezy z7p6Sn>a-wP7Pl%S(f-LCVP84y%HlxaQ;Tyll>3xN0eO(b8 z9nT))`|N+G*!O`e1o)msO0@VM)o3IbYxb&xfg)SvIB zr>UWz!n~=~`o*W!mus{V@OY2T#9w2ALFkJ}5{&7z*BZ1@5anKo{P%2>d_j C|H#My diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h.html deleted file mode 100644 index bfea1dc2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatVolume.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            FatVolume.h File Reference
            -
            -
            - -

            FatVolume class. -More...

            -
            #include "FatPartition.h"
            -#include "FatFile.h"
            -
            -Include dependency graph for FatVolume.h:
            -
            -
            - - - - - - - - - - - - - - -
            -
            - - - - -

            -Classes

            class  FatVolume
             Integration class for the FatLib library. More...
             
            -

            Detailed Description

            -

            FatVolume class.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fat_volume_8h__incl.png deleted file mode 100644 index 4642240abe19da3ab997009b1de4da23f6e3eed8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32084 zcmZ^~byQSu*fzR{7LZP5Kn6uhY7meXhEN2gduR})yBQT>2th0)3h-LK@|-s!iI3oDC4y@qB~gR}~F2*G#IXvQbCZ*`1Zg$J9e=5>1MJVZ!(! z#2)LIy)&DHs1zrkgvkuq%p+U}g_`*EmVkrT41#f^;W)}_w z20#_bfVaRJP>y{V)-A>>h4^L-u*iorc8MTF0*@wrhyMO00onnlUCCG)*5y4Z6bjRipvhA!fA|i{GbZ>Svwv^QQ;@IeZv6Gz!}y}&MSpq zOFW~F7g>DvHF|E_ecb6-NOnz)Yvq^FFS^{DO4t_P^Wm(rzL5)NMK3LbGP3wr;5f^U zD8{QZX?oE=E;VBVdK|K{ONBDb!F`FpmQB&tFfOPfLxG~-XMwP@TVcoV!P#;jX(fx+ z-)x)Sv1u~DR2$JOO1?%{Jv_M)P>+aTshJFx%Q&(MlxDhf;aJ=tAUk=N6S20i8%6VI z?9$v#>R;@YrfQ4qMMJ~YQSF7^nfl?bs>PNP)~5O5DzHIlGB~75Jg_%)wbxOR zfgaqKT8^!S@bHj5Y&C7U{9-xag%DJzr-|{FbcmdG%cShmuPH-LguU7jCxVX7T%0GL zx!9|0;*tG+_FdVxN&69IinOrG+!Y$wBiZZA%+Z^I^0)a%X~Pl3h0!99HZ5NyvU6^nH)O&U(w!8HvGTx0R;!+2Nwhi z4q*T;8~g%Y@-ABm&0u@VbL_?5lDUF=Z(Ni1E2t@0gD_#p^_M-r?fPXilDhI(y0kZNDt+Ihe-(iILc~_+GpKga*DofyxDw~Ffzss74dZrj3%-pz zJ%6*fHWD_33@NxccO$`5k9rUO@py^<-&->z?f?6X@y27!sT_en{0hbYKO?Hpir_Jz z1m?TqjwDrF+|7xj<^rHO&l=A*8=k#*L1>#rrF|RRYR8%baJVmpC}ov9|M1$ZwkfCX zWK{mJ_G?iQ$3^+q4f(fOq0PGqUbg&}pbr={CZo{qw!P`4T~c}^rBFI_Fh~u_?2MrY z8V9EjA3v^&0DooWu7VZ|9np8gcmUBaN@S2vNQflCjQ)7+e#6X470pbrckoiP<8v*t z_+`8bwF;Z`6K|W_7pWV5OkxZnZB<2iXxEQ1C@x5Vmc!$ruWz{i6C*)4%RWw3_Sh9y zMb^s7rGjBepYnM_bD{eThkcQW2L~y>f(BiOBUrJ=#&US zXQZ9$CA+U=pV|4O^5q+7>RMMt_7-q_cc$lA1dXyL{_Q#{N!^EGsgAVp{{1rt>K-=> zMKl{XC?aJZdUacRZHC2%z+%x2>3cUXu5o%KfG&t36(bnGk?A;9!`?a!#1k{KwkeYjmURqld4& z5k{Rc6iq$1!nR}ai+brK6t5B1ZBDlRBP8@$I@UOhX7moY4dVW2a8Y97{T7;Gq4eL@ zpYkE%XMQ~zkk)se4X@~WuSXm{gt9U_> z8wEuQTwrtVRLGh%h>sBsdLld)nrJ!@`0qxN)on$3i@~XA>W%1FhPz#TVYOXu#duMQvcid zZNublZfj#D3*z$d2jY`B0Yx+hFD8O`oVsnG!4^Rfhk`>KtFG>n_YF?O5`IMw3k-p< z_;yh4J16NDge*1Q#ap)jE#SWcPyi2LD{&lr`f${t_9K9_Oj4Q&@19gN4Xg>Ya2PcYc__1jQx`SiziTsh z!fAuLgx3ytZkdeTzn>}uc^1<#LV@3^nh<`qgos87_%V(n?ursVuV8;f*j{iC#k|%* zMZ3v0w`Z$ZNb^P+l-Mo`XMJ^Smze3cd@iuqGWzI)V^1(pB<}PqbKRSc6LE?cMSrm& zTDa!RfM^b(0tGyDTCBayLByytWvOuhy-i2^i_=Y!fd)UR`^(mRa|q?irYC0QDZ_b0 z>S5)^3P%Ooy>>rNR3vB%hGhw4oWGU8i9O5&Is*wUvIZdKN@0m|7UM5#pvDOsW~ugR zj6wv$j2(%4MqxZOc=61mp9uld?D|^-JvNDn?Xk!E!wqRo-HHAOBCzutpY~9z*OoxV z+{I@=3zGIzq{ltCb-3Gv?(v_`>ld$$H}xc5$E*bdDl4a`M@R=+#r>@RM#9FJcQVw> z?SH1M$_&Shal| zsgUc3ux=XnKi_G+Uq~v z3cd@j9=3e{{^TVGPzDhQ^dXDy!Uu|lYoLukGta7y#@lBw7k-$K(cc;e2$JGEb3leN z*^mTy?3}wl+o%9)ASe@bcrbaq!}AC*nT(ID2{`pF3T9x#>N7zGuiFgo;EyyH@4(+< zC;8%Ry$pfd&-q7vqBV7OkLiJ4J5bk79)VvYkXD_t7|FlFYd(i~rM{0Bu3V&GVy;IW z*O0SrQ`K-*ufhYz<87+}0we10%zofn;%|V8rH0HtVT&n4@~xiAY;60AI^S7qX^?wg z7yN^Pz1ZMSEqwR_^BqXZ56Dm@iJ8@8nv&VLOWr$i0AJ~h~yY)-NFgsdQ#{I9#+#kr} zN&ger*UnD=D}rq%TH6R6&|(>&*<^*g!4?YWa+=m1>8+sDS^T=KJ#=z-y!6b?Yd_9! zKa6T46`r^3I%y2p7(1KVlS)yGdr6pa$F!zk&qm}R2$1jt&uXahRbxMYlyTF*)^uZ5 zQGEn~t`lMo%>yI@7}ZZd6o9pqsn>yPT3wAXFaI8-O}MAxN(JbGKB{L^PNdM zz;%*AVCEi53DNBPWUnUFj}5+coxPF6XKeKob?U0V@(1)Dr;1PT3jQmI>A!|Zp_~!^*>yT?vt+2Bh$`dzkHz{VB&D z-}cJT!J@PCy|;i%bxF4dauEzSU@{#Kr{p@8wU@d!Ll0S34$}ZYORFq;EOcKiOd|g` z(%XA-6SK)+pGLX;5-@>;Eba|l2_Hubg@oGH?xf_sd4vBcf?D=F6-W; z7S6XfKTwgB+jUXLvKix!PFCEo9khrPGD~J4i+;!y?V8E*=t*>_x!g_y! zNHVs%02dLd%=AOnz2sLSi8Yc5ZGaQPnG)mo0;d<}FGeDACX?;E(3zH}_IS|JtY zzY7FWDg+Y#Bia6l*_S~jJ4sh?>o(y6wxOsr0sf%J`KO?u-!ed9{O6aWT#OwL63_!S zosz%{^!5kbZbA+8LMh7mI?N-M)Q^ugmbjc=fkSu?j;Sgs{za>@>xzV0(X-4En6UNncJONqBj=OvkQ#fQY3e5OuB+ueh@M21BG4r0r@00-^R zUTnLNq5kzV=O`|dYpVg~&!d{-7`WMwFDgk3pLbou^oXJ2h@XSj0~H4{q&CIktMUFgbUVgbWd&{i;dw^F>IOZ1BAZ206YsAtc@&>Ohw+EOCBHJ zQ4BTA{HdBXs227hpSAgc`RE&(3($k8Nw>(0#gYw29#aBJkdQa5)RgS&at#3ouWD?^ zSw*ZnXWqZBpiglpZ|#EcK*|YbIuOly`TpalF_V!*V)u^el^>?C4*ay^f!u&O8*sBRW(%( zwthowi`Wp;GSPbrI6F1kD0OZs3Q4KDY{IfVfy+8OWmiNRa!^#?%L^qqLl9-6nae_;k8=h3N2q7CZ0tkAtPhs{Esp6SRHwPDJZ%+Uo! zv@ICePxI>Qxo7H|qajC%up9kP21JLUHL_b8w@(OYg~X&ZZI>K@*i8YkB>Ele?0=#{ z6mJE0{I9JI0~@oFK?b_I`zKyCS*zKED*@WBC&aY&kn^-6K4x*Tu$%Bd7FQ$u;oo)? z6fy|5_3VS_6}V`VXzSE(-sGQNbJn6Ur@n|q-+Ti1FiBFR;0yrk@fG@(mQ4la*-=1? zv&{s>#7oY^eFiho_wLZVb7vy~NGI49LF9_=-9%IwX+JYA3iPmjZ-tRzd75e6X%EYE zN*fBzZ;8V&L(M@yL|P}vPEtf4mq`L_@*j(Rr9=;42Uxcn75v>6eG&vl^eO@M>ru zp-Vwpv%HRVHE%~P62kj@i_AEarQr)HDNaq*)(hYSdNipf) z)B3Wxrl$8_VhCM{gcDc?KtDN7|$jQGx`a9<&= zL2&7IC3SfIn@+kq2f&LPWuCGlq5OjjwVUGDeMO%w9`*lZLz=kov1lg}C`W;vCAoV_T6ctcVQo^cZu=J61n;4Ka)A=n0_Z511 zr%U*`kf%90Klv2Nwvv4ne9se*bs9Id&~TA^PXmL33jl!jf()X;>lhY_8Cq=KX@36p z-N{KGOiEhCJ=2kSh#bYIdEh(3k7`DhkB<+jxt#QORC{aqVCezy2K}tmQQR!!*Pcmz z0>82=map9)zQRsAgWwJac5$y|!jYjjb>~@NL#6F}C-KM1 zRB6!iLPaOsA7|Z~dyQU!4O7amDaV@eO97T61?v1#Qa#JQOvy*p)g5cQ2mazQGZ`4k zi3(WYC(r$_d+X_Nh*a?&VlGr<-U{o@ez03|gOfa!0jk_1Y_AXb2I9Y7u*;nJg3tN+ z{ua^(vS4{uUm8eK=^@y9MsQ9IllfHCuT;1$mKH5Fz->&Ra7RZ|w9h~EkWXEZ32IKs zCHaQcm+;x$If_%y@(e?%Xq-HJ*l(PwrFwq(IzEY#i$-fYgp+`}$L{2OFBqoVoBM`G zMaPRFBOoi^IZg8?mi{yJ(+dswInXS6l#LXL(TITW)d5+QPh-fmAe*q^^sB(QS6>qI z-)P>MvmiX?s)YB|FqiC!Y6&t!6%6CorhZ|*(9CWg9{%RXmSyeLVe520<9-}LF8@_z zI~)cTgE;{ax9FZRps8~1yFdpEXcdbP99XDu19tH-E3e|+p z3WL$TRDGFdHVDW`-6_o;%#Mw%=~$H<5s-MI>)mvk43t`TZq&$@l-6!kRdQmZV+Auh z#-KoOf6QL}&HLT@<~N&oAFFzcn&J%g%pO!VHeQI?%O#VMLXJO>QFmJRzxFs$MmNW2 z=aAuJIqd@p`W;H3tgy&*cu@GtW~O(3IdTOC(9>oa`L<;9P~+3@Z85*Jx9m{1zkkD3 zA#9q6F;USrtJnNj*gkmN zd(smk_mNBr6`qXWLj55Z-Ux5Q&jAr>1FOs+o}WsbDVCjR%~n*2f++6tbSUo zw$TW!PUbE9ofKsUkcbTHfwJB5&fi$n#k;(pMyb@>0m?rfynP$*+tfdD6D+bRTK#&X zHiv4N@(a^y_J*R`mPPk&qiP8J(5w_-9Ouh0e#3(R6`SfvTig6(PYtccq47cfYLwD1}>k8toH!t+$!Khx@`(j^!9|`>tE~wdkEluQIuR> z3~(WWr~OavBl=q)i*$fIK`X*9Dm7$s+M?bcCHD333qp_Da_G~;e$1a@<|=<^k@Sg) zmzPM)7)6RByTWy#|69p62e@H+bLvaTr%)q<<8`t7kJ1bz*xiJ<+ZX^-;5=Nd>C2#? zHu;bRxY-YQZLfccF0CCQN8t-_wNrQ&~9w- zzN(V#NuEbeIZ1`Q&PmBc2rs!aEBPY((GZYe}Z9=i<3ocH5mM(N1H zIwh$xA%2pyS=MPo(*YTU5^tV*dBHR&kcwe-fB`>wzq3=!c?a(4I8H!K165jC;wGjv z`OYc~w5dFRo3I?HkA6_ojawX5^n0`;g<6p}r-sf;o`+`aiS?wc-o$KbAfC5Yv^g;A z{s5CZ8)(E8ux+61e%KrFDyOyFS#{IH{8SLdWZzikSS?Su7K|jt(OGb7#zBI#NgAxc z#LC4uJ|WW25XC_viO3BB(*V*rQVMeIAlqE7xRZa?fM2%1WbnG7CL*w~cd@ zuSYemRLIrU^}%b_`@kXhTq3ICQ?~VrZk-?NWAu}E*<94b1l7~tY#8hOO0)vdGFRUp zlb=6+HSaAh^z(=_a#A%c0b&NO7L85S(N9rUHM=G3S!?vf{~g&h*Id@eeE%0U)FZgq zQfvq?IDL=bL-X*A>f#+*h|ujl&N?G|`~0^~y+dD`ntDwoS-ggh*TP%JqEbUGlBa~0 zGN_t=z(O#Pd4sp+l#Ke%=o5Z(ns&|0<(7HHo>Qe=4i%_tGs=5Y3$T z<{pwBM{b8E-Cw_DKS4CZWbW$kxzL^F8W3-X50$Aqw^2_tc{F-X4?N{+OVoZ=gums? zu8jOJ2`t8iYd4q;zv@y_$y0v$&UJxpxXxxy0G8fH`H^*Rd_3dL;^NvJ%=c8Z%l*F3 zhK#caZD8k@9|#SAh<^gQ?0(-0ThLEjbpect9mh9&~e;E?c75YAtJ>tE&l9X-YcD9ML62e z<;9ECp^2d0e5d_U<{fJHS2C@`{|Cg;qs=Ng_+*S^1>I>yyc; zo7SC^^~f`8P`Ue6rWY5_d4Laz)mf=;FHeg;TU~b5KxH{*L=b*2(aXU*Z%!jiNpbib zt+D?uLKO5L(R_TRY$nL5OM27`2qnqN)G^yz|Evu^Q*-KY2nNl}HtSH4^*7L_bL4~b zXm&rT8!a3=?z5lFgX-l4v8u`Cd8L{w7Fu>-McY2)pf`@!hnB79=>DHSKVF+LQv+hJ zMz4?g>`SC>>JC2-y*}7n108+w6V3Ws{qbW>n|$fi9j)=$Ac^6NBV~R4r$W3xoB(FR zf8>K2MNthmZ?ug!_H!e&Kyx8z2|ZL(jwFs0CInL4r7P(-W+_R2AI!)A;8CYJs$})K zj7`v7y?Lw!k%>k33+A?|V_&!utQ6V0yfBW>K4-m7q)5mX5lU>y4bSv7&usQ_uHx0b zVC}@bPW{6O$X~YUW? zb=j8J=2XM9zLj*VPUT`KH7KAeKV7-&ufsclBjxc}&3>Jd^pO*ziyN&^Vf7fX_P8Uj zajyPir|4C&sAlsBcpok|a?S<=mZg_L~Mz>~g3+X7_`sZR=k&l^DSTy9htq;z5 zJm@yFPbgz{Gy{}%u&#GTAF=rc_{uf+AS!zTJ1&H1Co}KBNYKoFP|R!>vHltJqsU}e z3nrSf>X}77jZ6Dt#qxPCv2vj>2P1|jmx9Twn<8+{>Wyw)sV>f5_V*w=#q z{^uiZIHnNy0}he-8I#3uN>0*F*5__cMf*cFj0$ztS=mDF~{9DM_{mSx$A4>*ji&y z<^9xQ5^E$hpUk*wt&sq?qP;U2PHU;pJ0l7@q@hB=bghgb|qi-4aoxIfx zxEXo8^pbE=xv=D8S!wCD@1>`AQK1gTLkZf0N}mp*@~caT%Bg9C#zVQ~erjmAFM5?ZDyMlE5{-$CHVxj(ESrB z1479+=rR_u?vs4b$7|)y2*<1vni~d(lWCNidWe(P&j4P*V2!rkVDke4>?9Jf?Vr8S z+J=2(PT2uyeb>-} z1b!+2xA?2>OLz*EBn5|R^cMY#OBEzK?tV{qu8w_;B_a6y>U$_mUTrA;6=;15!-|z- zW7{GM%6V)V4qENvDEUHI(j>;gNR3W^_kSoL#5OWM4F=;x$@L;TTI-V&XZ^0!d7aOC0mc z3QtTnSLsys#`f!?$I~Qka8xl{#FZV(kG&?D9YY4{6K?e$Fu!@VEKPOw8eK+OUQj}5 z<0S3z!a`zhsA`M@KF?;KK0Ly3dAskWXKeOUJ?-x$$scJ^4>6h#?}0sNB_+T6w3ksE zD&JGIi+DEa**kkE@E+XzL=Z*)mI_S3kfN$TO_Tf|ppxh4Kejy9pZt9BD=qp4=!OOO zJ#17-eMpb}?I&_@_xPo2bC_W^xhpGgtcbp>1kAW%zLU-{OG^oNR=}|P4!mDVNsn%2 zH>8MQL0BLc?kWgENnDX`W3gLnwOtbjy_s@^$LmgZdpF=A?Uc*CSCx)n=Ix)#%kkmE zj53T8Qh@b$MD+ZQisBFCWn+?#syNWIKfmbR>bTU!OVh zlJ)Zi0p;n^(VKC4EBFtYBi=I3AVW~$HmUBO@gwH zo>)Avi2-RV*d#WeJ_k$t1hU%tQtAGRwj2TeQ@6jb1AZrxvL?g@0bp@#5Dt7P_0CmuwPS<^2Y z-X;92fKewV%}MWgqE=kmpIv5Hjcm+&3u{Z-{&MAWJF6HEgVw}R^Mh4u@6wuo`~QFk)xza&N)ghKTbH4NPEQwde%Er zMmgjP^DQb{)7B>rmc0Xz5IiIOo{JNujNg?VPCr_nx-nce;|G*=s6Ji++ap4lXQym> z=Fo|8Z+B@FVWgX{BX21`2Kq`_{Lv8PofVOmLuVflEfFKfefy>aiIHz^035j^C)p!2g*@2OP%-hS9M zdQtHozk9pt>guZZ@5=kz?UpuBRl0tk6)w|E^kz`5TPkm-I@1atD_koS}}rcW6ZhaO#k}q2PaOt(=l$1j#dymt8;OpiVqZo zH!0_?I~X@n*B$EH+4a%bPXL1%NsOA_4_3Hg^-`~eNFKPJ>@ND!4HZ!O>W;+ift#tg z?-ar(!y}b4{>}Tvnr`^mnCSiO`MOe=Fz?&9zD|H!P5vKQm4zw7f?`T82C=?!%tJa} z-kQiE0{|1r! zl+{c8Ys6j5%16bx;3>l_UYGMno7#0zmaO}_1A)7s5gw6eM4yl3F@niTU7lqW6+X8& zrxxVSz6%Jvc;VRzx^~7bIt^V&CXt(o?|nu^^o0JFiNQVzii)&6R8@7<;{39nuu1cd zhw4KHXgIBuxwdsNunwl%#s&*>Z*MX?9f~GQTLiP9W{cJYc0QeLhR69wv^1OEv9(R9&LD@U;?vbiCu!Z(fk zwV$}|IjDQqbdV7%cj_@-f}8lZj{u_wK`R@Wx{eGD`CQg}`-aSVi_c~>LRUeYmWwfO zz6@0%Q7JkE>Z(WH3_3>%@bixCJPbHf{;;z5>zqy<>rDR0S6R7!{K>)I3ExmqY%>F+ z^yO&tTQk2H-Bm7*Oi%H?m3tV;_o-c=GV&J}<9v>!K5T2UGeN;t50_+eDiTuO`1M{* zEm$SbdKYbUV2k#Uh^pVOHyfrL7Z=Kl)zW0*emzWk%ieX=z^a$lYUy*0nzrV*>m#8Dzt$?s=u8S(IQ&*w}xk z;_h;EY*7)v4_HpNBlZE>&2J@NNhQQESO0Kkku+Am0CJ=6+kAPDFTLvUs4DlEkiodT zPh_U5f6P2xFb6@Qyk=8%^5Zkv;L_Txf#&^0U$FZq1cwq^zM9|u$faUd>Ywq*R#lT3 zimxYG><9w4p}lq+W4w*e0>( zVtQvqnP`vjjFdz8I+|EDm#toG|5?l=w(MN_7@^x5u+AiH4;)>^2GdC%mpJc zJ^n2q)HhpSMGw$uQwc8OU4z~DP#ut=_;YzR;J_14N?!2hjz>Pw_F4(p_>Adk0K_}3 z|CN0cnfr6ebYWodw}u|zAzvQcECBB`aDeFygB!I?ClWk>t>-3gRp9DR{gC))e*s9y z@kvjQRYaKu$FE8XK8rs?pOd<-eDD-1v|M?~NvMwgG5|oMUQM4}z>oH&64a=*qGON4 zI0Ig#E}0rEr2j`2#3X3SSvW>wS;3fMabH~U8JOwIGPJ5jWjE@ZLuJ4XWnVR>sXeY| zZ;WR(B+zphpDj>*Alm6Z;l&75O7$Q6=-ON-r?IgJwa-*RaM*tTm>rUy>i;aMK8?gu zcUQu&FgN!(7|L|tb4Bn$sBZPv2YNPQA@9G1T%-?l#S}hp>1A3J!RBGTWWA#Pr-WUR zrjCkTy%R11qB)ul`5dD@$G_Gcy3^m&efi`5TMA`Mn9_=&|2_Jw*=h;ILZY)n(^DTL zNMBsm?rq)XM)ULVkFzc=+B`)zgUz?U*7KbX0T)HTe*@u^4;V~qf>6%mmqRU8vbT00 zYLonM7w6LT?t8~c|A{B>crIH07E|vr?7MU7=BE~eGUOo1laKkhmw`Y?Cs^8~*)NEI zk+J#LT1A(L&GVibC+#G_OSn?>K2|eAgS5Q>+VSKH?BJFc@}6dbbjNPeorF|U_Kqia z2_@NQ$Wd36me(pPMrzuN15U>jESFqjm1+SmI*@;<=U^NkCmOE{BB1oMCx8D|SoQVQ z<_cRU$h4DPqFLpMx9`CM($JxQ{;`~>bD#FWa~*$tj1>Nu`rJu6=nM8GVy!~_w}_8Z z@M`DVd+LxNE&Y@7@NoaoUW4h;DreJ^{M}vgf};0dXPFE5ot=XSK0UEovVnXc zJQqaWG?S>QDqKAb%P|cXDJDl>w7EZ%Qn(^;1Hu!oW6>-kt z(B;=#z4ITeLq1LQd0jfic&(#A;5buOG+LKB653CpgzaLxF?4?CP(D(*3tWt}^ zlEtXcf-=J_MX94oh%?KNw}5;;?#JWau>hnT8wsB%((8%P=y&(w9DoWW^^^6c9UWl~ zlW(Fe31!-FY>Ix$*w=wT%GiSeYYX5WfCMBTS8d!GHv4`*@la~{u`krG0JVt6FjG!UfPvM34U3dj!x~wqN8&009+8eJNscCy?ubp%c9!o|RaKWC z?!Q6*K0W>qVeb8WgLObOSK2tc&HkVHFU93A*5BopNRm>oO)y2f7F%_U+SMb|-N`ZCPU3du5cU7am=kj(% zS!Q73TuX5L(ow|@ep9;@Y)mpqhM~0x+~`o+z+b?KWRR}+#%aT4ZbN1JSyzOptR$g#s zqxKk6h}`drY*&ZuIJ11mAL@~AukDn>13`uKiqe{MN>vLh1h^qA*Jii?b->qAYRZy` z;PZ3rqCW=Y$B8OjHvy?o8wV7Xx0u1ka>$k4^izgueW0JXoT=3rVam+ZOW_7m5Rs+0 zW|f~D1ml`KNoN_ZzmZ;GX?@#1;6`g*5~Kg^$&F=@qYjcYkoWkNI@0dPGl5jlAr7!r z_z(f@>bU#*_cg$WV1*Es#jTT^w&c7z78wm58#~;EtBnM!Z$Ea}$UHpaW3u2eH1t1w zrZoYuR~z&YG5h!Lzl@s_f;`6wWfzyJfqYTBB&blZN%K8F-?Y{*<57^lNi-Em7Sq%| zt_3#1n(+RrlXMn-k6p7Qup`p^2UkbPWm=eij*7X-&=gXxaPRjoZQwEFoas{@V)M6` z*4)T{9ZyAo9)i$MEPe5eYZ^#troMhaZ$*$%Fc1%ghr4ywJ~()v|0gIy z&75k+0t(IRDzlJRrJBZYI`T^u6}<|0bZv@sI~FV;5VV5xW0|F-AJNCjAiE2HZQ{1g za)uDx`rG?QAmPAL24HTzi7=XzY<2M6 zQ9{5WA82PcjbdEQ|0BuPJQ+HeVMqAAX3eUqe$d6(&ZE_=ranYFeO{dBx!L)*ebMB` zC)|(Z)S+kN@%W1c2rUr6EJes9qBRMQ6@CuP`9-3WYHB(&2Nr~IApF+pevAa<0l)rF z4>u2XJjFc>`hm;~UUp9O|v>`xhHv$1uNV_$PrvC~syV;&F`KTxkW{EGT4XtNK5ZQ%Yh7Joq$ zBnwRL=*_U^NaWPvbC7qW`e=5xDJ1T{L;|tTLQ91+lNa1xoF{OCa&yVI*(@Akp$b2B z0l8E%n-nX$ok~Q{aQ=h+KBtY1!Ma~qC4kDd^LkCw!BWuJBhf5XDW8!Cios0qQi5{+ zR;}-X(<38dS4w4-dBffD_owyry@_ct&f`6?{YT69rVol&@B|LvqR;z8WjwZD!>~Y+ zChI5T3mt|dbZ6&@D@fI5_~=*!mPjc@)_iboLNeeujHkKkj~Kt9eITj2Ikl$p`Ln=Y z?^RU|joHTW&)?rg#R_TYUgvVV0k^nrDS&bSj=~kkEO=?i-bQvD--DHKj|G%8((Y@9 zMp1!zbTLqCYOqhlaPo6#6HKL45&L0|Dr?}SA@XTF=(e%(G1klc2;?jiSxTa)BcENP z6*^e+^J-6#d*=`KbeIW)YK!>1>%NQLVSQulbxzHy;wB0&B`)Vc83Oe~6>VF7Pywje zJ+UOTA#nVu!sB1A^_a}P2 zz0ZROW0in_j((n~#q?<8gbhn&5paY+Y1uDD0*N%U_plvw`ret2PG*BM-YP$*?^|?Y zJb{2XwFl#3%fU$-ypEB zw`gazK+Yj}vmoAr03=e^32MA$zHuyv5=z<0&fflgcv!*g>HbBzoh&4dRUHtH548Wh z(QWF)1(jYia|ymqt3kMZjds#D&6K_W3!|F3R95dDV6&=3ts5uP0qe-N35YDEKBsAQ z#bebfbc`(cLUD$2I3{LCD!MxuY`0Ul>ZbVfp=2Q?4ok}^-)vh^QCK{0`#{P@3v3UQ zz^5r@`oQi1T>fIe)V>U!XZj5!ed5>JVf{bdTj5lZ+Qy)N!FA^sqfm|F45sNZluJd) zwpLTWE~O5il$4fMQ$5JG*gQGxTTJY?`gNq2c=Y@k`mzrv1H=9gZxxje%+P#f>M+qsAM_w92NRJZRkvtwW#%7DXBbU+en1t z)!iD2rk}zj(9ZSDCy0dkh7;@i3R>_6^^a-UTU=VDBBTVLA9u}mLD-)BWKOZ)zg7mf z1FvIG78jAP<>eLFblw5RfY=Wos;1+Ga?I11&acrj(OA_xs%#!eX>qDs!B$Z>?44># zqDbM)Uv7!OGjD?pwcHgRotFyFP`KS8jO4XX^r>|OpISh_)rV2vb!YBA_Ao+{D}cEg z>D#w^muueKvu_V@Tui9m;^I(`N?Z~NqzJdd115hjTpfJ4YMLxFu&ngoHo8IGy73F+ zdsAh@WH?3+=bf*ZIHIO{i{{3R`xmDWi85~+P=%rbDMh}Ntj?W%7^>bC^WY6_{ zCM2oi7>FqZI0!8P1^(1;VXWW*v}J*cUj`<-4Dl~9E)L+BnKo+))O%w*O{pFk7+*?iAt2;xO0i7{P!m7%Q6(ivV!V9m9O2qK z|LQfEKxu{Dg-pB{SBm3JdZl#R6;JH|@1F5zf6alIQCOzUZ?|~M`qkpE&dPw7$%mav ztU7TRzh7I_Z}&inJhslwK@NeOhgA1uXH}QJpxicFmd_T#dnZZvosylh{5eI7_h>2$ zfqX!cNI@E9nBr*c=!mO4@i1@j#WVQpBFG#>_LRX(0B^C86&fm1r}qED4*lQ>S$vH0 z2j*K5%{9V2nXVQ~lR1v_m|v2Jg|z-TX`*|3BFY z@!;n-9!U>HhQT}moZL&a^^DGH_^Q@-YeysTh@(}0dO7!=#OHe>OX&vrH<8@PC2IEq zzlW3gHd3^ywHH2~6_JYc3_>5}4VGQk7#ztpzj!iB*pX{`_4hWSYI$Ae8b!WTT(DFv z=e~NX@X7i8^4S?z;mG^kM`;TSyTL8U;A#zz%;k>@=?Six%MS+HF>#{99`*zCP$-4Z zcc_i{pFe#!W_R=i2v=BOX)fdUv>KoZH*c@9l-S2%8y16L_2jKD5&NXD=BcmVFXIB81*Wl_HISA8N@Id?#8`3aDn z;0-wzKv4q$DXGbE?B*9w3I%WJ8%hk|cEZ?+pSrS~FM2fZo4${Aax_40C9NX%34sXu z*>7ry3s=>yHhmY>zx*{5U7m=4Wa~1I4D$P8b00-ur5j?qpAjC%SX-=rp)pF@BDXiw zsH%MEGh;2>F5K5?1ISUdiUC;!XU@4q)%fluFtmds+ijz|yQT=C6iErj}8Y z5XSxJnEwiPzMX@EhgTmDk@w#C`+WS}q5ui6qk4p+xa?yDNVnSlD$}963ray6MeUQ` zN>pn@tDSV;lVxvk7)U1`Oor$YR^4cQ4G0PS{NYk(V6i2y$9r*GVawN7wYkE7Z_e4J zOOGr!kLyU_MZXB@6asIi+{OVRbCUOaC)rT0#u^U7!>g(-;jQYA7s2@+(!^Dbz6+J?ZUt z)64niD8Z;c{yheiVWf}d|I^od$5Z`=|KqPiMiLGx;zWl?$lfE>DG^!O*&Jk#tc=s! zI!8ukHrZR&vA4)xIrdIMlCp*0t?%de`2N=8_XmF%uXEq`>l)ANd0qE)MVGY9vafw+ z=}mlnLFkNT!5W$)Iq>Srucfx4s)wuCGQLZL9XNDd{JaBaRE&3x&pCUJVJR+X`~GT! zDCLl{;7dZz))qA9n%pAx+M%#8X|*_yT(?X@21SJ;Lj?_9@VE}o;rE9b!tz%1n5bX5 z@*K2mGRzW&`1c))cZHy4b$xxI;^$;tXvL`Tzi$n>9^ZowUO*eLBWt_Oy!o0k2fes6 z4zxXTL_^VzWW`${%Jrax%rSBKLilGhX^U3jq`O3Uv7Z?VV@g6$9yc%?kYh6DK|(0w z=ino+v)tGvA-LVJ_;tB!auLK04FwbtiVqs~E1w3Y!G2BsT8u0$F{rPZ-i)8Qnq;)f zfDGxcY7>E|OgoKmw?(l!5ipu}`4ujOO{XI#F~47sEa*eBkmIG{0jWRJv|{bQyqIpV zw+#o~@2ae-D%xzc{Cn`NhgV<^ zL)?(Nq7|v+G+0#_bVH@aq&-OAuG)+Ty}Ro|byIy5>v3I99;zf+xCdXnZ@d~kV(>9{ zLRxT;$RovSHR1R5M+rH6V|5|=aN_6cwGCW3oKy}H9xsNj^OMK2>o z_1Bh6Z=@KI zG4OE(QpaXUEPgaBp&$D+unPZ%<)RDubWLmxYmn6Z?CR~_)Xv9#57{&PI+W(MLJ|`0 zEJ-WT4U^z!osH&*c_f7>OWo6!VKQOlqmVGsjvvIw+2)ToI4M^WyZ3P}niKA@wSHaj zQ74zTI?ql0VD{p+K3g*X;;?u2YTBWQ*G|eRDl4|gmqe-x0cpYQ4GaF%dQzlQ_!4^p zHjK$(`VHk={dXNY-&pLO`1=zwB#+|BUF@Vjiq8u6-kI9r=il0na%#MmKOJm z50VTcHxBnZMP|@oeEwY5fisHPyN$`SFy=zyZ^0iqj}|=GWz$gk8hZtx{AxR{WAVtrK~R!_AAqHl{XACpBO}58Cto%3^vi``<0& znJ(QJf{HjpA`nT8L1JON``^w~9f9}g5fj~}Kb7GPaLT)<@{-eGj4q!HZ>a3& zL(21I#6}!#<$eNk2)Lgwsi^MZVMKhj9)? zu{G|J0M1v`zG0IMx^$iC>tafdQS9Bq#X-Vzn&>a zr^YER!IiawX2ZTOxEec{QXEq=Yjc5WRK|O%kM++JZII7hV$)LuFSH~3~$9QHR66f z%to3aI2~i`s!yNOhWF_bK59YHv2E9m!&|PsR`1b?%X1H8w2_k3o9l6Tg2VwiHE1u;lo}BX2XPL^Tb#}yB%c7*1Bq0 z)IhUv_*g4d6{oX>`T`m*gkAMOqp1$ddKzUmKk`%%RIgAffgc-%(!2q$eDC{QM&E%`g*q4 z({2mg_}QbU3gYFtO>^$F@Ma~lIFk6dc58TLaJ990}~Ro$o${nN=P|I zzU_+o_>(uU`T4HLzI@wtu-zY=1_x6Ar)>xZoW($(s0|0kLd z59b-PUi0Z5uYrLkCy__v83T33=cbYiB2Uikyg+EkI4E>=mlMkT?}?v+&5JC0LsiAJ zCGoL2moQF2_g6oEHA=YIwzciVB3tM<;nG|P!&Q1VrdYypooke&O%G6(w@H}NBL=Peo?A0qvAi|iG}ECh8DAENwfT)uk^mJe+oI@Y zdZ?5&(Ss)a-ioshS4B}myV9t;7~D6^YSd*Ufhhrw%&bqyc6O3~vQ96npe4qhD`fBt( z+lBP{>ZAbj8_49mUHAiV zT_|n&g7fbO#V=}qD?(!5GJcp6M(N%R?hA9M*moSRMz~8QXH}xTPd4hWjR}WZohp8j zO7w5(E1Q?ZUpB3V{aID%yiXQ3VENfyDM4`M_^@cmr@u#7N}J{bzP$V>kG`vqnMm$i z$`in3v4q}`K_C$Kf(e2bxNvuNj^ze3ihO-zW?xM zu6Jup(wcl2d?R3eU8Br;ls4eOBTu^)64AiVAxCrycISS|Ga$wX-Uv`7RtNC%KLBKYZmL%neH~$ z2z%+9V+s6q_3fE%KPhJ)$E02S9)Bo`ypyjmu5Oa3Z%MbvAm<|+cE7IC;Po}wJL}=& zwY5p8>tYS!@y#TPg(N5l>8>EZC7T#KNL}pyU?W8#ipc-Yopt%32Z-r+-=H4`^`|)S zC2_#|R;BHP)qVtyL!D;FsI&M43__pBgi9h)J(h62&d>3mBSPn!d++w58M=#g%1kLT zG>+egb#_V|%Yz%0gaZZs_~At1URH(RC-cux_iUXv)hL(#MyHZLxG8l{Gd4Wn`2LIl zB4~Km0fJ{sAFm4DxrutF%AWC)=sQd6!obEX)noFTUZ0dDP2YcM>@SMwaglz2y)URd zKMrHQglZz2VRTPnxf$U2u#Ln9Dne!`c)kTz-|G11Mj?vyj=#k~`NJGsW-aFI;?D>!1xYa! z#o-EpuilRB|Gg5gIA}bOwDu*k;6-EFNiXm1?oL+>c?8iX0V%Z7)?0&@io2dTo^7ua zPMSqZWFndH#+&NT_3E?1e|8&|#@KN3+jpk-T`*Y>Phc%KFJE?{9@LPYj4Q%%4f~wb z3mn~(9qmG^Tjq?|>21s&*3NHvRNo4b(VgwaD{~H*u2JxmK7o?3%3VA+1XnyS8Fu!f8kbBH&6UBkp+`Kdo9c<}s zI9OJUNGlLrMN})U?$?)|oh3+%&PtMb*>}5jqIOlIHodmCj_dsrh!vi@H#n1d$wb8( z*mJgLfr$4xL>DVq;w%+MAG=;AF|;l6&NTvO>%dZ)tS(6qlyKmXf8J9=*wpE`F(T7c?xgft zAXdV2^S5zJRwf9Sh2-{8WO=c+q%U4Zi5OgqvK1zIFX5y7rrJ3s+V)5L+6}tyIvi@9 zVx@}v@XrE9feci$e?>!NuN#{l7!ZlX3Xpv|K<7xtWt@oyB6WEJ=`Ga?O4FopL=FSCVobBa@UQ-YWGWAxz^hnmQ-gSP^*2V7Z3D=sHjsA{o3pMdU8go~) zQiIs-gj40%m?fXus8Y#M&pDiFx9i6lxxq*c@1kUWjr5qN7_2r3PhYG!-*&d`_Pez>?RcX6P zPuabMqD0Eh2Ept~lWo<5Py(z87(wAj==bt#$gSb`KmW}Ze3EdCs&ol z{4Cql7p+Bvf+8EX&8*B!vsNnftBZ20`dXvcoZ&GvNZHbHKj{`Sp%qbni-__mJ)5rZUsCEXl@OC@8A0A%u$N=X228e$3RYK0?`7Q8M(RZd$y$P z0ocKEG!>SP}gMl$<`cUQ7BkU6a!en>rs{*f9dSagn6&qoN z`=E~_o2;Y`2aFK)wuht9jXU}j#x^(ByO|<#-E_noJadx-7&<=}JTcd=P7?S!@kN@z zmc|muz3BVS=_wghS7^;h(RM73Lv!44%GEc~!`dxW#OE z_nkBP3g*`B4*~7V`HYfYI}%;tj4lJ+sMt>9p6h~Nh0NC1n_f|XeeP=jF5w6l)|}Aiydv{#=6_yUMrP z((3983P4jN>nU7<#o?gEHzVla_3Z!`Q9BB8f1Eu1-O(KbXaV3A5Dd@PBUC;xxZ)ep z$}WI-w1rp&Z+rx>jFcsgCWEhCb(MHROJ8bTt=f!>G;U0oAnc>U|HlA2yFTGLVN4fp z`*Abw7%+R7qaMW~d{IufeHVLq>4(;R3CNvj26?fI(;^$k$MB*dQdfoem+m(c>ZeOL zQTVkpj%F*-Jx)J7?YlIr$_b?t!)4#?(1}C~s^3f^2;)Yw()t#c)CT_H zJJ$>8D+RIa>l=KtgXM|fPOgBEuc4;qiNv(wPSmv1r;2lqE}TyME#p0+gR7%Eypb+w zu6PrE`8Y^bPkw+T?$Jzm-jMk#ehvPKa?%!hBy-;LueCuzlVOuQMp$RmSBYpwyd9s{ z@H3m+X}BUt^U|@Q$@PO zjXAPm%wRrop$?&Z8*F(9&R8WDTNwD*MbAybjcWWh>)Hea_qLMUZ(910}Rh)_&xH4 zv8gFFK}T0eA~hYY+X1k4!WfsH+3$BZXG?*vp>xsCrO6IxQba|R0wyrVvP?;>qD$E4 z9=o8S8L4$Kr}(ptGa~n(nQ)#YTd7~%7*65|qm7VprBT1EX#pGx&G12Wg%(LUJSCK= zqd)bVi?3pd#Q%~uQRE=ZBZZtBge~%Rn?E8C^FZfez_;66z(mI%!mG`k^v%phO>!m= zDO$#9Oq!OTvrM1MXZ3Q=l`h>%z5Jm_Xb!e>DQ?X51Na=71ax~9l+vLzDkXW1vZZr>GWv$=Wic*togm*^!-=%h{f#C@~g;SUWsJhhxjVMGfx*3pT7 z;3Gqxjo5$;KY2R_>mm4JdOE$W5A|Xlr2B?1auPaF3n_V`=^gN@}@Y(p&%>;+OuK0LLT?12-BBX>n~)iC#Xy8~OG1e?*}7f*R4w z7jnFRwJ!P9BD8OwLyIPLsR+^o1+>?U@X0;7t5-Matv`HtSifb_iB-i8#=Xg0eoVe0rsy~jC+VBf`wl7%m_7jJt@6wMkZDtE~v z|B}M*vbXIsb2`2R;rXiDi@-j-{xw*9TPW^fkn34-lkdPykeOKLDO{sO_mO!#`%to` zK}o@}_8kPu3;xFZ{J~Gc*xJ&t9*g0K&SsuoF@3GlD=Qy#Vctl%%(5GM?QwxfEWV988g{%Nn!V|pF?^wB)^yz9Y1*h4sKwxCPd#w+$%im5A?z+u|1VhsME3zp@~Z`xU1`QqJcAk{N*5J)0`;A zJkfK_i(5Gsf!{FeeA*Yeji2>uo_31OF#c$v?Cx%k6f%Ta1zI0j+`v%+Y8PC}U_+*^ ziu3Z-AXM^i<7^t3uA{|X7T<+^M>n24i!Bx1$AX7f#&U*F~??$;m&ZH}!&^=UuCFR2~K2Rn5`Q!2hd)5pMSaQa5 z4^6Y>B0>@O5z-9wUzR^{F1#)FQuTB`MC*68SQQqtr1HHm# zU9C|@plb`C`H{_}sw!E7FKuilSKQ>XbF!ksn{4Y}`S3H;4B&~6iM{_*585+hfgt9U ze=`EEE$9bPuDO9NMpz%I#J1*U{Q9K^l{!m>DE(-3*J!jpVqtAl$J|(3FSyP^dDpvd zv!*A-uDXOpR@#|ah}R+~7%H58E+A_lE}mIBK*_}RL-O%Fvih0wJpng+8) z@E|o$QFs%$ua4n`K>sxLX}oq!`;UkWM_odnNnbl&aJj*l{}*O@JF8vT=Ne>1@-YS5 zWC@blbqI~S^uzJtHNa#c(5H-Ye7CPimNuSPvVh-w_{ej1E#XiA^G)K})3?*xF$Lv{ zl1Cv_vb%l8-x!BE>}-h+sQWrcj2$29D&6Cycxx?+pdNBje6+_E*ZXI0a#fw1{`cQx za-*9|)33b>N~S8;a)8Rma(_w%!I||y0+dGv-NxidJ$tHKv=yxcfXJxgwh`>KV!6@~ zIMVDQ^LlMkT7>u12rVUPI4txe-ic0*4!c7!S~&&C_NDK^axRlikCDysVp=(@B$nJPK+YTOy5 z0~v#Eo7u;Vk3UI(o9IK?h7P&PUtb64o;ZDe7s*XHr>3P0)e^A>ju468Scrv4m<8xr zaCiyy;*#=Xpq#56-K;^aXUyIa%1K0<2??D6|1Gbr8CF-xJm}EZ{*!1Z@0EwCeDII1 zS}pu6cfOTva)lpz#z43s%pV82!48CkZorTc=Ln(>k$D>txAI!U#*2r+wzg+ehn98J zHu2(+GQ^BLNpaS6yd*BC3oFmRfW+Y2)_|vu0k4f%K~fzU zdr(iXlRTi5OSec5ft)ia*g&m+*xL)-ss*27xZK%aGF3Y|K{X@>C>Po4g5q?_1%g_rXI&BQkE zleS3hk&#G?%a<#d62deR)}CW>p*)h0R12KYuDQ1MN{G4?_L0}WC~x`0(|AwfiZU&( zA`8NMn0TiXk$f$Jh5tM;?St}0VBBNds;8%kN$$0Xuqf7MXY%#_Mih#~(V7Gkj*7y= zA34+`H1MEqL#*$hz+|WcWWB0@oZ5qOfPBWs41Ff`9Xj@bS3OW5- z@neFVPdq^)GNJFFLz2CZSv^FuveQO!Q3h@JG(ZH%gQ=|9A1_OmqL^)NG&AhitMH1A z+;XcW`;{nHsBwAX!BZIX{eT2K;-GO_0C@est3rPoQGY)*Eo<-;T2l$}ns=^&sK|i%w|z$0w>+@HCQr5I=n>`EiI4Yj$Mk~+#GWt>YrLseMI%?DEf@<%n*%v zfTem)Iy|sghTdYf*^B>1;D%DE7nF;4-4)lS?eH-gBk-{w0{sI?umh-4a$vyoHOB`b z%HEeXMej(zB;}ml$K=AYa0f4^sb*{eMuHEI_SF!ai0(N_bvoZt2!0DPXS(Rb40_N? zk_+mD4rp3jPz~xfRe~T4U3QK~k~J6_al&cu%03BrNAS4GK$$E(Q3vo7Gjt4WMcDRF z2U}Z79@-B^#NPbylh63VYefBvtpxp$9=i{bb z6}cy`57snpg`THpuUwH~f<6CaKho!sjEx}rPSSNT`7&eI;&sL+>lqW86kAZuWoT^t zm|Bg36DA#)0Pb(R9Nl@vzpRVYyPuU-u}N?@pwc%dX{7k2@Z{ZrP-#3H<*nO0ed`1IrT zjes%Gg-SwYLzsAMdM)r_X?2V?j~)#s^yQ_`%Euww-eaxg#hDKU*cTmRD_!Y}7=x@6 z)6BFq0J@Ru0=*99$S}>22Q2*>!t%?8yL%baeV*pwSD5J;Y;qaZfr^~3;5V_TM(VN;MFw%YqL?vNmt z#X-021ck#?$-rHK!uUfHv={tW!wAR^1=p8_yopDTx?aRRzj+mdi#RwVsIgrKsk;@v0B>aB-{2q0-Oq?*pT%oS zJX^R>Gn8Qr7z>l|3vX07n0>4;IL7`~@l@o*VhS$K4>uQJhUFo4Z#B!`StDh>p+zEG~v zR*66P6-b%vV|YU1f30!THCuTu;6>Dvk(Nj05{=D%aOaA5$#PCr7?#ajhB;mpF)>81hyg5%XPjQv5G4Ftxa)b7}eEI*C zKxqZZ4i<63huP7mEZJ6-)>Ip$e+ywJ6hektJvtWCm&9tAd?Yf)$}WD*ID1s8b2w{E zOI7ObmO?lnzI7`3Azt7PeE|goxaM8#Z*!pW#0`$=U0k0Y-nrw*gt7J{zXTcUy6l^T zGm~^oA4?Fu8%gxl)}8dJWuN&OnUxt}H|09&2B~!ULOajwitnjp{cEP2*k2@*vt~nP zb)}^cXCe3I8qzC!;NyKbaCa+CqR+g%Y9FiO`uL6#Sd{3CTVUCbO&MpI{FBv zKg$XpAj-JtJYU9q^6974Xt}rLl-t4wZ&c2!uP-o2)XBYZ@wU)csGUvYk1K)R9Z1^f ztjxX+jxA5>mMti~>Gby^Dv~XB1TYPMAfL2^ESV9LZ#~h{Fc)M4C4XjawywR0lqOv>y<+W{yj~kuwE`<1lRzCwV;&2+V6jW=tXT<% z;faad+TSv{L$FO3KMvPF6>=%Mlu*JXQ+JeGZm((rMhf+PDslC^yGP7Ag;M#N0R6fk zr}7TPE*8Hgg5-c$|Dy_gx6Ol#8`~j4CsI597vS#&m0-uJuC_#@YQ#p5P_-`!_^@lR z26ACBkVo#~eq?0U=?N8>X_t1;(rBUb7zML7a-pWQ-aKGd<v_~`C4??C#92OwjW!EoO4Q=GnQExE!6>F1kw}2~~e2(`#JzND| z=&Nm46zunqq&ll0zOvMY2H2y6y3HrciiqYU6u*5ar>QvKuP9t1wLx zD4gy!+Bbw!?UN3~&j0rEap%td##u+HV`Fe174ZyYySXPl z3I5f_tqXX+Et!Qi%6l)higcWq;9-b^$P98y+(`-Pf|q&+b8Csg*4KvA2-ze3fsM~m z`Os;A;OP(EY0kU9ISrA5zTPetmaF)|mk5cN1gcwYi_kL@j^5>qt-?M`32Vy86OKr) zw-Ue6nwp!5uQn3vWpyQ4is%F5)y6C@oRIV#d5`YQs%r)&5sELle%q*}0BH=RD5}Mf zi4_}%4qsUUAS}N-)+{+@e^*5^Qw%xv{gsisyz%pAC~z^ys2vWWIrgRMcx$AP_TDDf z4}{EMsORi#&4jSeIDw!w&+)$R;?011_B9%kTcQ)LkA85XgNBDb4q77NKJn_V3_?^S zzYypt>V=;NLNr8Wg<=ITo{92omlBJ^5@6_kJUy<1sZmSsvL4dEv54Gr+j;hKPj0KY z?8+@E_1i7RkBKp_K`Dsl;Js#(*^8W?X-Gj|2{8pp)Nlx@GXMF@3J0X99|@eQemT6E z@uuZC5iE7=mQQC6A50QQu)SxRYMgmw`}uD)Dr;O&n)<|F`w`hw+%aeREDu=}0@D z{o|sLl~N`9h>0@f8*45a!dl|=0Kg9l=hXq z!+O6_=d)@Kb+=4@+i$RHr^^IWl<` zEyFR{l>9Ow-~Ro}#)KF!1t1dRS_%f0-L@Rbj*=f40VB&Yl2xVQ zy8ks!4g`1S6U~r(;1kYAof!g4bv|CE0i4MBFFbE*mtxB^V<-gvd;xO=dv*`&Wft8a zBzK)@vy?$t26aU4b;ZrV)YQxN!Rk-i?8z3c0)d@WQ=HAK@*Un3r%(`QHr#ZhL~?5p z#gnGDZOWZ@bEe~@M0ibP>uvqrCu5m;Wx!$ah43s5&7fHY?pq#O;Fnz#$S??dvc-Q7 zlQ=zCMnJtY;SaIQL(mOpDRSc=lfKTyJRFnmQ|1nNOB7*wc7u|s@f^BmvxeQz=9wUb6)59w^48py?eaO;*gDidiy_wna*F}&LU9*E8TV(Pq$^tb2NzgKHK*nOwgAvFSrbNZplTR4`s9l(LbQz?_fSCuHit0*Y)B{W>wi0D2Qq^>TVn@D0u-7 zbA4xh1X@XQLej-mmg?uFo-SI9fq0l4JJMg_>6_4hON*MCnq(_12(8EQ$0po$Nsc4D z7`JAa$PqDS0MOyWzjtjaXISbd4Zp{L_|nZO@r;$P;^^m8pq-{BRB=;5{^GlzSHO}K z0AVJ9YM_vlSE1&ZaI=|oy|Qn5}o5`jPX@82Wh&;LNA0GH;+XH!2uM}KCA-p%UgBI`GElm4XY^>VD=n(oJE&>ejMkNbu@ z;0s~khOVZ?jB-GJpKHQ$Wn~>=)R>VJZ+)2|h?0ZX?cD01a3Hm?j5}!kp8ix8(DHnM zpcMV_zeO)H`dsvG!vH(~9;*%e{(Y_W!n8dvE`S&kbuetW44DsCFL9oWp4yj0nVd;a zA)({{#WJ*{+^o**5k=a@<`2D1`?v0_{}H`xDExm!Z(3l5LI^Jq{i0F*>$&m6BF+D| z?D@FLcV$%1hI4h{xo*vJe|pw=zTn6*kV}TNXcrwojVWC(>ms(w^~t_s8Cx|m`2Po0 zTTM;t2K9OPL1m4YrFtZMR{}XV_uA|cN%DD#b8UFn|Hvn10A|&+TsecGO}W|tD$dCx zEWcY7?>=eA{`gd+mjD8=pJv}86;0TM!bd<`v-66M>g6l>k>}^}B)y&~DaJJOY%}PC z(bjP@p$5@X^rCZQLfrD~oW{HG7OMiT7--ZM4Jz;Mo<59S5_>})LlmDG_8UcsR??zK zWQ>Kdw_W)$&9&D*K1ui|^$&I|vxcHtl(wkw8~{Nr?;aV#688@Tt#nUE+2Fg{$Q_#P z^Ru4>XCFkhavArN?E#5U0YoE&C-dL4@uXCyj5diCA9e#5%yV(T8!i)d3(UbCT zQA8plA}ZboCaZ242inT~Y!3or!4)pq&z0flaG!Xw9zsD3&|#zD*`4<9o{u*|Uc-Ed z;CIV6Tlj>EGa2Cd)A76RbhCq$Bzc^_8KW7b|Ea?TLXq{)n@h(DbiT_R=ozVa(8|EI zm|#wX4MUi4EX}_(*e1mc60L*v@fL#Z+P+?#hXKRaRiB2%O?pT-tKnLs&V6H)v8b;~ zK*)vt$6j7YYP25S`Y6I&%NO}`bX}=~lDI{+ScX&bS#M!NoDtF0TXp{ArPMir3N;VU zP5cui1M?v>Cd}z41>G=PKsymMYBm zKB}T>PPi{~>qBPd$~=^6{#e{iBc3s$LoXdntUNz7b-66x(doWHr7Mu7>sW~O5g*aP zcMpG!1PLwKvr8?zAo~?gmu~F1eUJ2tcjV~xYFeL}%h}j>YL}uN)A~k%C*m4@ina3H zaX1~qZ(do8`#323UT=|~50!?dLI%XE-4ED>eyS<*+Bp~mPg~T;Hcz%f>faz1qvX zd!_&SuX&1Jm-{^GL8)EEG#u9#vze{)0J~IS`YGfP<%-qco%h;UZ#VMF--Md|mU?h> z#mZ~8^}Z*BMQwxKAMarc-!qx!lB7M;F3U5krL6_8vg9ZwIQs=nQ+?hXmq-OQxtje6 zf4(x3A%yGfPXBiEfdU{R2_GZHH$bbf8D-8ZJ#(MN<7(B;2*om2RAdjg%7oC&JEcl^ zqk6Yq!{be{b+&d@f8B6jQcUc5JZMd0!M?J$k^EU|%l3NJyzdyxWyU40j$JM1)20}r zH89qeKDrp?x{KpX^{7v}KjW74`cY{v|2$P~y=G8lei|dw9J%lJ;;d_bUNlxP`qT4gOO3Mm4RhOgoHjbc zdBn50ciX3%JAqk=T&>3|>G=3eMd9bhiPV^LbZo*pK0AHOMPWye-Rr0SVY-SII%8if z#Tj+=9Cu|TXC2)a99ky*^XB;g3mTXD`esAw%HO81VU<7|6m`$;hy8AiV(P9d{3>#d zB^pSn+WLsK>9vHn`*l4Bu%cG7e=z&A)){Nb5d@WdzD5L%% z^#4EL{r`2;ARxSy0H*q?DLoeW6KV;%f<{ljsR>N5q#3r6D9QO@wCcLD=ELQ6uIM2O zG%fV#)Fn4od(&@cy-rttOIos0Z@oQ#f#*@c|NGmgwKJISL=?k7ZVU$)lMX37dWI@_ IVEo_z0SZMbumAu6 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h.html deleted file mode 100644 index 3877853a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FreeStack.h File Reference - - - - - - - - - - -
            - -
            -
            FreeStack.h File Reference
            -
            -
            - -

            FreeStack() function. -More...

            -
            #include <stdint.h>
            -#include <avr/io.h>
            -
            -Include dependency graph for FreeStack.h:
            -
            -
            - - - - - -
            -
            - - - -

            -Macros

            #define HAS_UNUSED_STACK   1
             
            - - - - - - - -

            -Functions

            void FillStack ()
             
            int FreeStack ()
             
            int UnusedStack ()
             
            - - - - - -

            -Variables

            char * __brkval
             
            char __bss_end
             
            -

            Detailed Description

            -

            FreeStack() function.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ HAS_UNUSED_STACK

            - -
            -
            - - - - -
            #define HAS_UNUSED_STACK   1
            -
            -

            Indicate FillStack() and UnusedStack() are available.

            - -
            -
            -

            Function Documentation

            - -

            ◆ FillStack()

            - -
            -
            - - - - - - - -
            void FillStack ()
            -
            -

            Fill stack with 0x55 pattern

            - -
            -
            - -

            ◆ FreeStack()

            - -
            -
            - - - - - -
            - - - - - - - -
            int FreeStack ()
            -
            -inline
            -
            -

            Amount of free stack space.

            Returns
            The number of free bytes.
            - -
            -
            - -

            ◆ UnusedStack()

            - -
            -
            - - - - - - - -
            int UnusedStack ()
            -
            -

            Determine the amount of unused stack.

            -

            FillStack() must be called to fill the stack with a 0x55 pattern.

            -

            UnusedStack() may fail if malloc() or new is use.

            -
            Returns
            number of bytes with 0x55 pattern.
            - -
            -
            -

            Variable Documentation

            - -

            ◆ __brkval

            - -
            -
            - - - - -
            char* __brkval
            -
            -

            boundary between stack and heap.

            - -
            -
            - -

            ◆ __bss_end

            - -
            -
            - - - - -
            char __bss_end
            -
            -

            End of bss section.

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_free_stack_8h__incl.png deleted file mode 100644 index 53c16e272decbd4e879cfc1e16d244718a13437e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3286 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 E2a;oER{#J2 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h.html deleted file mode 100644 index c9551165..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FsLib/FsFile.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            FsFile.h File Reference
            -
            -
            - -

            FsBaseFile include file. -More...

            -
            #include "FsNew.h"
            -#include "FatLib/FatLib.h"
            -#include "ExFatLib/ExFatLib.h"
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - - - - - - - - - -
            -
            - - - - - - - -

            -Classes

            class  FsBaseFile
             FsBaseFile class. More...
             
            class  FsFile
             FsBaseFile file with Arduino Stream. More...
             
            -

            Detailed Description

            -

            FsBaseFile include file.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_file_8h__dep__incl.png deleted file mode 100644 index fe89e04c39f33f9e6468c50969dbbcaae4ae34fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28344 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 T>fOOpbdX0XT8J_wi?II%01V*! diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h.html deleted file mode 100644 index 90829e76..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FsLib/FsLib.h File Reference - - - - - - - - - -

            -
            -
            -
            FsLib.h File Reference
            -
            -
            - -

            FsLib include file. -More...

            -
            #include "FsVolume.h"
            -#include "FsFile.h"
            -
            -Include dependency graph for FsLib.h:
            -
            -
            - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - - - - - - - - -
            -

            Detailed Description

            -

            FsLib include file.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_lib_8h__dep__incl.png deleted file mode 100644 index 841b9d7722c6d9b0f463f235bfe846c7646465f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26888 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 iA%qY@2qA - - - - - - -SdFat: Arduino/libraries/SdFat/src/FsLib/FsVolume.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            FsVolume.h File Reference
            -
            -
            - -

            FsVolume include file. -More...

            -
            #include "FsNew.h"
            -#include "../FatLib/FatLib.h"
            -#include "../ExFatLib/ExFatLib.h"
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - - - - - - - - - -
            -
            - - - - -

            -Classes

            class  FsVolume
             FsVolume class. More...
             
            -

            Detailed Description

            -

            FsVolume include file.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_volume_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_fs_volume_8h__dep__incl.png deleted file mode 100644 index b9af14cc3501eea3ff80d9fb04177a49864b73cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28380 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h.html deleted file mode 100644 index 1c2e8da7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/MinimumSerial.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            MinimumSerial.h File Reference
            -
            -
            - -

            Minimal AVR Serial driver. -More...

            -
            #include "common/SysCall.h"
            -
            -Include dependency graph for MinimumSerial.h:
            -
            -
            - - - - - - - - -
            -
            - - - - -

            -Classes

            class  MinimumSerial
             mini serial class for the SdFat library. More...
             
            -

            Detailed Description

            -

            Minimal AVR Serial driver.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_minimum_serial_8h__incl.png deleted file mode 100644 index e3b9b035b4f6e3149ceb84d206b150b96cf39827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8438 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h.html deleted file mode 100644 index a2a1af1e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/common/PrintTemplates.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            PrintTemplates.h File Reference
            -
            -
            - -

            templates for printf -More...

            -
            #include <stdarg.h>
            -#include "FmtNumber.h"
            -
            -Include dependency graph for PrintTemplates.h:
            -
            -
            - - - - -
            -
            - - - - - -

            -Macros

            #define isDigit(d)   ('0' <= (d) && (d) <= '9')
             
            #define PRINTF_USE_FLOAT   2
             
            - - - - - - - - - - - - - - - - -

            -Functions

            template<typename T >
            int fprintf (T *file, const char *fmt,...)
             
            template<typename F >
            int mprintf (F *file, const __FlashStringHelper *ifsh,...)
             
            template<typename T >
            int mprintf (T *file, const char *fmt,...)
             
            template<typename F >
            int vfprintf (F *file, const char *fmt, va_list ap)
             
            template<typename F >
            int vmprintf (F *file, const char *fmt, va_list ap)
             
            -

            Detailed Description

            -

            templates for printf

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ isDigit

            - -
            -
            - - - - - - - - -
            #define isDigit( d)   ('0' <= (d) && (d) <= '9')
            -
            -

            test for digit

            - -
            -
            - -

            ◆ PRINTF_USE_FLOAT

            - -
            -
            - - - - -
            #define PRINTF_USE_FLOAT   2
            -
            -

            control for supported floating formats

            - -
            -
            -

            Function Documentation

            - -

            ◆ fprintf()

            - -
            -
            -
            -template<typename T >
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int fprintf (T * file,
            const char * fmt,
             ... 
            )
            -
            -

            Formatted print.

            -
            Parameters
            - - - -
            [in]filedestination file or device.
            [in]fmtformat string.
            -
            -
            -
            Returns
            number of character printed for success else a negative value.
            - -
            -
            - -

            ◆ mprintf() [1/2]

            - -
            -
            -
            -template<typename F >
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int mprintf (Ffile,
            const __FlashStringHelper * ifsh,
             ... 
            )
            -
            -

            Minimal formatted print.

            -
            Parameters
            - - - -
            [in]filedestination file or device.
            [in]ifshformat string using F() macro.
            -
            -
            -
            Returns
            number of character printed for success else a negative value.
            - -
            -
            - -

            ◆ mprintf() [2/2]

            - -
            -
            -
            -template<typename T >
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int mprintf (T * file,
            const char * fmt,
             ... 
            )
            -
            -

            Minimal formatted print.

            -
            Parameters
            - - - -
            [in]filedestination file or device.
            [in]fmtformat string.
            -
            -
            -
            Returns
            number of character printed for success else a negative value.
            - -
            -
            - -

            ◆ vfprintf()

            - -
            -
            -
            -template<typename F >
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int vfprintf (Ffile,
            const char * fmt,
            va_list ap 
            )
            -
            -

            Formatted print.

            -
            Parameters
            - - - - -
            [in]filedestination file or device.
            [in]fmtformat string.
            [in]apargument list.
            -
            -
            -
            Returns
            number of character printed for success else a negative value.
            - -
            -
            - -

            ◆ vmprintf()

            - -
            -
            -
            -template<typename F >
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int vmprintf (Ffile,
            const char * fmt,
            va_list ap 
            )
            -
            -

            Minimal formatted print.

            -
            Parameters
            - - - - -
            [in]filedestination file or device.
            [in]fmtformat string.
            [in]apargument list.
            -
            -
            -
            Returns
            number of character printed for success else a negative value.
            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_print_templates_8h__incl.png deleted file mode 100644 index 0668771f1b8f7932bb74bc0dc21025124109d7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1827 zcmcJQ{Wlx-7su0Cl_+Vd!`Bpxw%Yk3J4!r7$wEAHJOvfsl8&t!S&&$1#E3R+sH!R& zq216XlX#9wNK3z{66PVEBJDaYtB4>ThH94eyM6zIoqIm_^*;C9A3mRR@8{lY!GS1U zpfL~t0OV006(05e6le zkOky<)38g&I z$m5-0Fc_fs%Luf5Q=EmCt;m%Qik@mBaXV}HR-Sxb^mHE-B!LEH=oHucy;<}$#G;-WCr4GoJTi~jy}39y=OPHm<;IlFl=n|^B9CyBgW2PDh?7Pb%C`Z{WP1GK zKAOYc?}yh3yoybib9Kzw#CM}F#zNM2m@Jzkrwa}Rj(M{Ea6bx#4jWe&FE;B6iC1Ql zEO_L0jo6PAd;WAG7En4+YFmi!nkr)E?Tr}x>{SLhPSp-ZsKJb}=i*{f*B8;#0xIv) zE%IUGep!-gKFd}RL*d;gxYo(#`m6&;<=y_yWQ}P)4$D8WP&oytr{F znin8o$dO>iN}3lwj`OmG9ufj{!G$X zU}_Xt)pL(E5ZKHt_Ljot-tyW|Y3(4%Y}T*rvoa%J4({*;bU|DD<^Rle4@J5}+qYnX zp37n+p9qeej6j)TyyO{tc6*^DF2>o(?i-9@o44;YY6fE_+Q{>Q`#HXF{#3-MDYAH1 zKfKj1hU<(hj-=HTpM}=F)yBPxv7P8sB#V$>Az%e(llO@DYT0#xW+;nZGC|=|a<8Yl@#O3IfCq%FlQ=rw- zLQy4IMnuH6w#(d2UY7sAM1NK4p9fcUMgL!%x{j29|GMJx-~AgB&sj1k>dP;B**6er zbs)c}^y*WkBGKxI%hGcU;I3v6EwV8}Z+s!zDpOX7vJlMTF|_*(bmgSyVCM>CLQm7L zYCTjh1YFyF5ig-bEEK9VJSQJHSn_IxS+!HAL!h#tZOKekkCC#ImLD_xDV9UqZdho# znGOA%W>hZ;rS)8xBbrNU<+hknosZCuVe9{-*#dX&i7PDzq+ z&NP=$&DE)|R-`VF++j|MT$Nz0t7+l23iK)iCdhxoV$W|q9$V{MTU&#*C*_#MeLf{( zq}xPUJ-$XWvM{X2WGWT2_FaWZN>?`9`6Q%pfjjrQA5ZBZ?=Cl^3f-JsvpSsb2u!hq z;-^~3h4Ws`DgJjQ0?M!mJH-0Uat^WR4z3QMl4j&`qN^}kDYWscrZvjA)*!&=2$hg^;O8q#C_ZJ0#K_j)Zz7@jxMYNeG}J6-FPLpueo zoknE?Jz$^@Q|RxfXa{$H9h?0{0yZ@@)gt|9O~b_XRuWt-ApWMkWro$+6w~(8xm~|p gST_E!VE_gbX9Rl{?|0k#TK)|9cm^W5h;uoA0O_@H5&!@I diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h.html deleted file mode 100644 index 0db11015..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdFat.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdFat.h File Reference
            -
            -
            - -

            main SdFs include file. -More...

            -
            #include "common/SysCall.h"
            -#include "SdCard/SdCard.h"
            -#include "ExFatLib/ExFatLib.h"
            -#include "FatLib/FatLib.h"
            -#include "FsLib/FsLib.h"
            -
            -Include dependency graph for SdFat.h:
            -
            -
            - - - - - - - - - - - -
            -
            - - - - - - - - - - - - - - - - -

            -Classes

            class  SdBase< Vol >
             base SD file system template class. More...
             
            class  SdExFat
             SD file system class for exFAT volumes. More...
             
            class  SdFat32
             SD file system class for FAT volumes. More...
             
            class  SdFile
             FAT16/FAT32 file with Print. More...
             
            class  SdFs
             SD file system class for FAT16, FAT32, and exFAT volumes. More...
             
            - - - -

            -Macros

            #define SD_FAT_VERSION   "2.0.2"
             
            - - - - - - - -

            -Typedefs

            typedef File32 File
             
            typedef FatFile SdBaseFile
             
            typedef SdFat32 SdFat
             
            -

            Detailed Description

            -

            main SdFs include file.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ SD_FAT_VERSION

            - -
            -
            - - - - -
            #define SD_FAT_VERSION   "2.0.2"
            -
            -

            SdFat version

            - -
            -
            -

            Typedef Documentation

            - -

            ◆ File

            - -
            -
            - - - - -
            typedef File32 File
            -
            -

            Select type for File.

            - -
            -
            - -

            ◆ SdBaseFile

            - -
            -
            - - - - -
            typedef FatFile SdBaseFile
            -
            -

            Select type for SdBaseFile.

            - -
            -
            - -

            ◆ SdFat

            - -
            -
            - - - - -
            typedef SdFat32 SdFat
            -
            -

            Select type for SdFat.

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_8h__incl.png deleted file mode 100644 index 6059fe4729122179ab17f2dce9bbf91b1224c536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13943 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 tgxOEDKQiiWy}J*p_W$sK|2n7i$M*}7+ - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdFatConfig.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdFatConfig.h File Reference
            -
            -
            - -

            configuration definitions -More...

            -
            #include <stdint.h>
            -#include "Arduino.h"
            -
            -Include dependency graph for SdFatConfig.h:
            -
            -
            - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - - - - - - - - - - - - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Macros

            #define CHECK_FLASH_PROGRAMMING   1
             
            #define DESTRUCTOR_CLOSES_FILE   0
             
            #define ENABLE_ARDUINO_FEATURES   1
             
            #define ENABLE_ARDUINO_SERIAL   1
             
            #define ENABLE_ARDUINO_STRING   1
             
            #define ENABLE_DEDICATED_SPI   1
             
            #define ENDL_CALLS_FLUSH   0
             
            #define FAT12_SUPPORT   0
             
            #define FS_DEFAULT_DATE   FS_DATE(compileYear(), 1, 1)
             
            #define FS_DEFAULT_TIME   FS_TIME(0, 0, 0)
             
            #define HAS_SDIO_CLASS   0
             
            #define INCLUDE_SDIOS   0
             
            #define MAINTAIN_FREE_CLUSTER_COUNT   0
             
            #define SD_CHIP_SELECT_MODE   0
             
            #define SD_HAS_CUSTOM_SPI   0
             
            #define SD_MAX_INIT_RATE_KHZ   400
             
            #define SDFAT_FILE_TYPE   1
             
            #define SPI_DRIVER_SELECT   0
             
            #define USE_BLOCK_DEVICE_INTERFACE   0
             
            #define USE_EXFAT_BITMAP_CACHE   0
             
            #define USE_FAT_FILE_FLAG_CONTIGUOUS   1
             
            #define USE_FCNTL_H   0
             
            #define USE_LONG_FILE_NAMES   1
             
            #define USE_MULTI_SECTOR_IO   1
             
            #define USE_SD_CRC   0
             
            #define USE_SEPARATE_FAT_CACHE   0
             
            #define USE_SIMPLE_LITTLE_ENDIAN   1
             
            #define WDT_YIELD_TIME_MILLIS   0
             
            - - - -

            -Typedefs

            typedef uint8_t SdCsPin_t
             
            -

            Detailed Description

            -

            configuration definitions

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ CHECK_FLASH_PROGRAMMING

            - -
            -
            - - - - -
            #define CHECK_FLASH_PROGRAMMING   1
            -
            -

            If CHECK_FLASH_PROGRAMMING is zero, overlap of single sector flash programming and other operations will be allowed for faster write performance.

            -

            Some cards will not sleep in low power mode unless CHECK_FLASH_PROGRAMMING is non-zero.

            - -
            -
            - -

            ◆ DESTRUCTOR_CLOSES_FILE

            - -
            -
            - - - - -
            #define DESTRUCTOR_CLOSES_FILE   0
            -
            -

            Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor.

            -

            Causes use of lots of heap in ARM.

            - -
            -
            - -

            ◆ ENABLE_ARDUINO_FEATURES

            - -
            -
            - - - - -
            #define ENABLE_ARDUINO_FEATURES   1
            -
            -

            For Debug - must be one

            - -
            -
            - -

            ◆ ENABLE_ARDUINO_SERIAL

            - -
            -
            - - - - -
            #define ENABLE_ARDUINO_SERIAL   1
            -
            -

            For Debug - must be one

            - -
            -
            - -

            ◆ ENABLE_ARDUINO_STRING

            - -
            -
            - - - - -
            #define ENABLE_ARDUINO_STRING   1
            -
            -

            For Debug - must be one

            - -
            -
            - -

            ◆ ENABLE_DEDICATED_SPI

            - -
            -
            - - - - -
            #define ENABLE_DEDICATED_SPI   1
            -
            -

            Set ENABLE_DEDICATED_SPI to enable dedicated use of the SPI bus. Selecting dedicated SPI in SdSpiConfig() will produce better performance by using very large multi-block transfers to and from the SD card.

            -

            Enabling dedicated SPI will cost some extra flash and RAM.

            - -
            -
            - -

            ◆ ENDL_CALLS_FLUSH

            - -
            -
            - - - - -
            #define ENDL_CALLS_FLUSH   0
            -
            -

            Call flush for endl if ENDL_CALLS_FLUSH is nonzero

            -

            The standard for iostreams is to call flush. This is very costly for SdFat. Each call to flush causes 2048 bytes of I/O to the SD.

            -

            SdFat has a single 512 byte buffer for SD I/O so it must write the current data sector to the SD, read the directory sector from the SD, update the directory entry, write the directory sector to the SD and read the data sector back into the buffer.

            -

            The SD flash memory controller is not designed for this many rewrites so performance may be reduced by more than a factor of 100.

            -

            If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force all data to be written to the SD.

            - -
            -
            - -

            ◆ FAT12_SUPPORT

            - -
            -
            - - - - -
            #define FAT12_SUPPORT   0
            -
            -

            Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. FAT12 has not been well tested and requires additional flash.

            - -
            -
            - -

            ◆ FS_DEFAULT_DATE

            - -
            -
            - - - - -
            #define FS_DEFAULT_DATE   FS_DATE(compileYear(), 1, 1)
            -
            -

            Set the default file time stamp when a RTC callback is not used. A valid date and time is required by the FAT/exFAT standard.

            -

            The default below is YYYY-01-01 00:00:00 midnight where YYYY is the compile year from the DATE macro. This is easy to recognize as a placeholder for a correct date/time.

            -

            The full compile date is: FS_DATE(compileYear(), compileMonth(), compileDay())

            -

            The full compile time is: FS_TIME(compileHour(), compileMinute(), compileSecond())

            - -
            -
            - -

            ◆ FS_DEFAULT_TIME

            - -
            -
            - - - - -
            #define FS_DEFAULT_TIME   FS_TIME(0, 0, 0)
            -
            -

            00:00:00 midnight

            - -
            -
            - -

            ◆ HAS_SDIO_CLASS

            - -
            -
            - - - - -
            #define HAS_SDIO_CLASS   0
            -
            -

            Default is no SDIO.

            - -
            -
            - -

            ◆ INCLUDE_SDIOS

            - -
            -
            - - - - -
            #define INCLUDE_SDIOS   0
            -
            -

            Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. sdios.h provides C++ style IO Streams.

            - -
            -
            - -

            ◆ MAINTAIN_FREE_CLUSTER_COUNT

            - -
            -
            - - - - -
            #define MAINTAIN_FREE_CLUSTER_COUNT   0
            -
            -

            Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters updated. This will increase the speed of the freeClusterCount() call after the first call. Extra flash will be required.

            - -
            -
            - -

            ◆ SD_CHIP_SELECT_MODE

            - -
            -
            - - - - -
            #define SD_CHIP_SELECT_MODE   0
            -
            -

            SD_CHIP_SELECT_MODE defines how the functions void sdCsInit(SdCsPin_t pin) {pinMode(pin, OUTPUT);} and void sdCsWrite(SdCsPin_t pin, bool level) {digitalWrite(pin, level);} are defined.

            -

            0 - Internal definition is a strong symbol and can't be replaced.

            -

            1 - Internal definition is a weak symbol and can be replaced.

            -

            2 - No internal definition and must be defined in the application.

            - -
            -
            - -

            ◆ SD_HAS_CUSTOM_SPI

            - -
            -
            - - - - -
            #define SD_HAS_CUSTOM_SPI   0
            -
            -

            Enable SDIO driver if available. Determine the default SPI configuration.

            - -
            -
            - -

            ◆ SD_MAX_INIT_RATE_KHZ

            - -
            -
            - - - - -
            #define SD_MAX_INIT_RATE_KHZ   400
            -
            -

            SD maximum initialization clock rate.

            - -
            -
            - -

            ◆ SDFAT_FILE_TYPE

            - -
            -
            - - - - -
            #define SDFAT_FILE_TYPE   1
            -
            -

            File types for SdFat, File, SdFile, SdBaseFile, fstream, ifstream, and ofstream.

            -

            Set SDFAT_FILE_TYPE to:

            -

            1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.

            - -
            -
            - -

            ◆ SPI_DRIVER_SELECT

            - -
            -
            - - - - -
            #define SPI_DRIVER_SELECT   0
            -
            -

            If the symbol SPI_DRIVER_SELECT is:

            -

            0 - An optimized custom SPI driver is used if it exists else the standard library driver is used.

            -

            1 - The standard library driver is always used.

            -

            2 - An external SPI driver of SoftSpiDriver template class is always used.

            -

            3 - An external SPI driver derived from SdSpiBaseClass is always used.

            - -
            -
            - -

            ◆ USE_BLOCK_DEVICE_INTERFACE

            - -
            -
            - - - - -
            #define USE_BLOCK_DEVICE_INTERFACE   0
            -
            -

            Set USE_BLOCK_DEVICE_INTERFACE nonzero to use generic block device

            - -
            -
            - -

            ◆ USE_EXFAT_BITMAP_CACHE

            - -
            -
            - - - - -
            #define USE_EXFAT_BITMAP_CACHE   0
            -
            -

            Set USE_EXFAT_BITMAP_CACHE nonzero to use a second 512 byte cache for exFAT bitmap entries. This improves performance for large writes that are not a multiple of 512 bytes.

            - -
            -
            - -

            ◆ USE_FAT_FILE_FLAG_CONTIGUOUS

            - -
            -
            - - - - -
            #define USE_FAT_FILE_FLAG_CONTIGUOUS   1
            -
            -

            Set USE_FAT_FILE_FLAG_CONTIGUOUS nonzero to optimize access to contiguous files.

            - -
            -
            - -

            ◆ USE_FCNTL_H

            - -
            -
            - - - - -
            #define USE_FCNTL_H   0
            -
            -

            If the symbol USE_FCNTL_H is nonzero, open flags for access modes O_RDONLY, O_WRONLY, O_RDWR and the open modifiers O_APPEND, O_CREAT, O_EXCL, O_SYNC will be defined by including the system file fcntl.h.

            - -
            -
            - -

            ◆ USE_LONG_FILE_NAMES

            - -
            -
            - - - - -
            #define USE_LONG_FILE_NAMES   1
            -
            -

            Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN) in FAT16/FAT32. exFAT always uses long file names.

            -

            Long File Name are limited to a maximum length of 255 characters.

            -

            This implementation allows 7-bit characters in the range 0X20 to 0X7E except the following characters are not allowed:

            -

            < (less than)

            -

            (greater than)

            -
            -

            : (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark)

              -
            • (asterisk)
            • -
            - -
            -
            - -

            ◆ USE_MULTI_SECTOR_IO

            - -
            -
            - - - - -
            #define USE_MULTI_SECTOR_IO   1
            -
            -

            Set USE_MULTI_SECTOR_IO nonzero to use multi-sector SD read/write.

            -

            Don't use mult-sector read/write on small AVR boards.

            - -
            -
            - -

            ◆ USE_SD_CRC

            - -
            -
            - - - - -
            #define USE_SD_CRC   0
            -
            -

            To enable SD card CRC checking for SPI, set USE_SD_CRC nonzero.

            -

            Set USE_SD_CRC to 1 to use a smaller CRC-CCITT function. This function is slower for AVR but may be fast for ARM and other processors.

            -

            Set USE_SD_CRC to 2 to used a larger table driven CRC-CCITT function. This function is faster for AVR but may be slower for ARM and other processors.

            - -
            -
            - -

            ◆ USE_SEPARATE_FAT_CACHE

            - -
            -
            - - - - -
            #define USE_SEPARATE_FAT_CACHE   0
            -
            -

            Set USE_SEPARATE_FAT_CACHE nonzero to use a second 512 byte cache for FAT16/FAT32 table entries. This improves performance for large writes that are not a multiple of 512 bytes.

            - -
            -
            - -

            ◆ USE_SIMPLE_LITTLE_ENDIAN

            - -
            -
            - - - - -
            #define USE_SIMPLE_LITTLE_ENDIAN   1
            -
            -

            Set USE_SIMPLE_LITTLE_ENDIAN nonzero for little endian processors with no memory alignment restrictions.

            - -
            -
            - -

            ◆ WDT_YIELD_TIME_MILLIS

            - -
            -
            - - - - -
            #define WDT_YIELD_TIME_MILLIS   0
            -
            -

            Handle Watchdog Timer for WiFi modules.

            -

            Yield will be called before accessing the SPI bus if it has been more than WDT_YIELD_TIME_MILLIS milliseconds since the last yield call by SdFat.

            - -
            -
            -

            Typedef Documentation

            - -

            ◆ SdCsPin_t

            - -
            -
            - - - - -
            typedef uint8_t SdCsPin_t
            -
            -

            Type for card chip select pin.

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_config_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_fat_config_8h__dep__incl.png deleted file mode 100644 index ebb2162db79c29dc352ebd7fb35d276314383c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35573 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 XPwgVNh0bq&EC6kF7_>(9`MduBTmn>! diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h.html deleted file mode 100644 index 72f413b4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver/SdSpiArduinoDriver.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdSpiArduinoDriver.h File Reference
            -
            -
            - -

            SpiDriver classes for Arduino compatible systems. -More...

            -
            #include "SdSpiLibDriver.h"
            -
            -Include dependency graph for SdSpiArduinoDriver.h:
            -
            -
            - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - -
            -
            - - - - -

            -Classes

            class  SdSpiArduinoDriver
             Optimized SPI class for access to SD and SDHC flash memory cards. More...
             
            - - - -

            -Typedefs

            typedef SdSpiArduinoDriver SdSpiDriver
             
            -

            Detailed Description

            -

            SpiDriver classes for Arduino compatible systems.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Typedef Documentation

            - -

            ◆ SdSpiDriver

            - -
            -
            - - - - -
            typedef SdSpiArduinoDriver SdSpiDriver
            -
            -

            Typedef for use of SdSpiArduinoDriver

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_arduino_driver_8h__dep__incl.png deleted file mode 100644 index ba454e225418a174eb7946c7fb2a49907a105d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3730 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 bY3F`FxRsYFIUrrkJPJ74qu?alfQ - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver/SdSpiBaseClass.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdSpiBaseClass.h File Reference
            -
            -
            - -

            Base class for external SPI driver. -More...

            - - - - - -

            -Classes

            class  SdSpiBaseClass
             Base class for external SPI drivers. More...
             
            -

            Detailed Description

            -

            Base class for external SPI driver.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h.html deleted file mode 100644 index c7d36e7d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdSpiCard.h File Reference
            -
            -
            - -

            SdSpiCard class for V2 SD/SDHC cards. -More...

            -
            #include <stddef.h>
            -#include "../common/SysCall.h"
            -#include "SdCardInfo.h"
            -#include "SdCardInterface.h"
            -#include "../SpiDriver/SdSpiDriver.h"
            -
            -Include dependency graph for SdSpiCard.h:
            -
            -
            - - - - - - - - - - - - -
            -
            - - - - -

            -Classes

            class  SdSpiCard
             Raw access to SD and SDHC flash memory cards via SPI protocol. More...
             
            -

            Detailed Description

            -

            SdSpiCard class for V2 SD/SDHC cards.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_card_8h__incl.png deleted file mode 100644 index f353d73a39c6290491556214ee65244d00410f51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17517 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 - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver/SdSpiDriver.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdSpiDriver.h File Reference
            -
            -
            - -

            SpiDriver classes. -More...

            -
            #include "../common/SysCall.h"
            -#include "SPI.h"
            -#include "SdSpiArduinoDriver.h"
            -
            -Include dependency graph for SdSpiDriver.h:
            -
            -
            - - - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - -
            -
            - - - - -

            -Classes

            class  SdSpiConfig
             SPI card configuration. More...
             
            - - - - - - - - - - - - - - - - - - - - - - - -

            -Macros

            #define DEDICATED_SPI   0X80
             
            #define SD_SCK_HZ(maxSpeed)   (maxSpeed)
             
            #define SD_SCK_MHZ(maxMhz)   (1000000UL*(maxMhz))
             
            #define SHARED_SPI   0
             
            #define SPI_DIV3_SPEED   SD_SCK_MHZ(16)
             
            #define SPI_DIV6_SPEED   SD_SCK_MHZ(8)
             
            #define SPI_EIGHTH_SPEED   SD_SCK_MHZ(1)
             
            #define SPI_FULL_SPEED   SD_SCK_MHZ(50)
             
            #define SPI_HALF_SPEED   SD_SCK_MHZ(4)
             
            #define SPI_QUARTER_SPEED   SD_SCK_MHZ(2)
             
            #define SPI_SIXTEENTH_SPEED   SD_SCK_HZ(500000)
             
            - - - -

            -Typedefs

            typedef SPIClass SpiPort_t
             
            - - - - - -

            -Functions

            void sdCsInit (SdCsPin_t pin)
             
            void sdCsWrite (SdCsPin_t pin, bool level)
             
            -

            Detailed Description

            -

            SpiDriver classes.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ DEDICATED_SPI

            - -
            -
            - - - - -
            #define DEDICATED_SPI   0X80
            -
            -

            The SD is the only device on the SPI bus.

            - -
            -
            - -

            ◆ SD_SCK_HZ

            - -
            -
            - - - - - - - - -
            #define SD_SCK_HZ( maxSpeed)   (maxSpeed)
            -
            -

            SPISettings for SCK frequency in Hz.

            - -
            -
            - -

            ◆ SD_SCK_MHZ

            - -
            -
            - - - - - - - - -
            #define SD_SCK_MHZ( maxMhz)   (1000000UL*(maxMhz))
            -
            -

            SPISettings for SCK frequency in MHz.

            - -
            -
            - -

            ◆ SHARED_SPI

            - -
            -
            - - - - -
            #define SHARED_SPI   0
            -
            -

            SPI bus is share with other devices.

            - -
            -
            - -

            ◆ SPI_DIV3_SPEED

            - -
            -
            - - - - -
            #define SPI_DIV3_SPEED   SD_SCK_MHZ(16)
            -
            -

            Set SCK rate to 16 MHz for Due

            - -
            -
            - -

            ◆ SPI_DIV6_SPEED

            - -
            -
            - - - - -
            #define SPI_DIV6_SPEED   SD_SCK_MHZ(8)
            -
            -

            Set SCK rate to 8 MHz for Due

            - -
            -
            - -

            ◆ SPI_EIGHTH_SPEED

            - -
            -
            - - - - -
            #define SPI_EIGHTH_SPEED   SD_SCK_MHZ(1)
            -
            -

            Set SCK rate to 1 MHz for AVR.

            - -
            -
            - -

            ◆ SPI_FULL_SPEED

            - -
            -
            - - - - -
            #define SPI_FULL_SPEED   SD_SCK_MHZ(50)
            -
            -

            Set SCK to max rate.

            - -
            -
            - -

            ◆ SPI_HALF_SPEED

            - -
            -
            - - - - -
            #define SPI_HALF_SPEED   SD_SCK_MHZ(4)
            -
            -

            Set SCK rate to 4 MHz for AVR.

            - -
            -
            - -

            ◆ SPI_QUARTER_SPEED

            - -
            -
            - - - - -
            #define SPI_QUARTER_SPEED   SD_SCK_MHZ(2)
            -
            -

            Set SCK rate to 2 MHz for AVR.

            - -
            -
            - -

            ◆ SPI_SIXTEENTH_SPEED

            - -
            -
            - - - - -
            #define SPI_SIXTEENTH_SPEED   SD_SCK_HZ(500000)
            -
            -

            Set SCK rate to 500 kHz for AVR.

            - -
            -
            -

            Typedef Documentation

            - -

            ◆ SpiPort_t

            - -
            -
            - - - - -
            typedef SPIClass SpiPort_t
            -
            -

            Port type for Arduino SPI hardware driver.

            - -
            -
            -

            Function Documentation

            - -

            ◆ sdCsInit()

            - -
            -
            - - - - - - - - -
            void sdCsInit (SdCsPin_t pin)
            -
            -

            Initialize SD chip select pin.

            -
            Parameters
            - - -
            [in]pinSD card chip select pin.
            -
            -
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ sdCsWrite()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            void sdCsWrite (SdCsPin_t pin,
            bool level 
            )
            -
            -

            Initialize SD chip select pin.

            -
            Parameters
            - - - -
            [in]pinSD card chip select pin.
            [in]levelSD card chip select level.
            -
            -
            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h__dep__incl.png deleted file mode 100644 index 418ee922455431f14cdb1c187dcc5d26782ce7d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2223 zcmcgt`8(SQ6aP}HUn+IfQM8q?iYn?VQFlX$b*$K`tBRtPhB&HQw^i4wI#Q&FBXxGE zIzq`dXjf8KP*(`G?oHkIk>b^T-uK!43*MP$uFo$s&&)hCi8fX@AiNU1002PD%@DT7 zw&hroLGEKcDe;hWY`EPmZXkf8Z(Q)M6bAs{U2}wy-Oss8gjQb>E#bHnzk+CGfuQSt zMVS?fqy^*yv$h(hnLKzKR-g~80wTH`Rbq6irte5~`1K|Sf zPH+H&!eT8{s_Ec#+-S;304A>9!uBP9DRbPKUQOCJxcG~8bljWjYNMV!J@#q?H)#<$ zQZ;CLuM0(QvuXCpTNy2bL}%_55!7P!>r8(D3b7xwx`R9Sji2KQ1LeA2G)P}1j!$3IJ`ZiCFDzdF@nW7&mtDLH@8niO~q#f3~Pi3JN8s~ zTq}hqyykFrpOS~==B~EJqCa3%+K%w~3gIA0yf(|&^~f7Dn9G2<))d-cRnp}e&i6~SJd-R3sF@&s|HY&y9MGf2^?R%|QoXs%n*X6oISZ7vd1qcPGbmaD? z^fxeGepETVqb9N0iMhF|89n_U>&Q)d!m>QN-MK3m?GdHm>C$5TT(ddG*^S9G|5+ zws`;$ySF}G<*m+^6zp?%qdeYQpIoU7{{#*J$@p$jr=d@Uq#*4arFuv9OA)XDLUnAy z@DViQ=#CZ*JhlF3pi$fvl^9n|Y6T%ei&{~6>|cu6WghJWHI9IB?}7*Zqx z8s@US6BaW`+qnMpX$<+{@BC(*9H4rBbE9u%pcVt(pS|J~Gpi%YQunVfQac$?=Ax4`r&HaOO4 z=g&K9KUuoA933Nf^^Yby+^cs}J<(lLFu^oZExFXQc4YCM-wMsZarb1D{KnokJ&f|M zf0Vx)%EkFA`kx7Ka{~XL@Zwfhdoz^iht?*h?X0+lKdxyU8A!XorYLye(7Ed&U9rsrPc_X z@g9&%ZWrFSAyk7igj+5Xhw0&17Vr18%$_WpeA5^^ zaOQKev0JLs(71A+?>**@-f)CZ=$L@#Jt-^N*ue#KQsDIDW@+%poa7ma0{-Q8MK^WR z^0y4Gdejn@b>{k`$O@MUd?35Y&J2WJC8;d6Knga`T%o(@A?}H`yVbc_@s*21HD-NU z#iX&5pC5aO1uo@SS{-HEh6?5iWj*6abWnI?+3#Jt)umG(DB<}78py(HBSAU2FznQkozBvFG*_5V!W)@ zvsRwjtBEDDy~tIS5|qGaDi2jNB;sN9NuS)gbB&>Vk0hp>MfNoz_XzH2O_5 z%3r^jyJpUPa6CA?s?RiO8pSNrJUvxs7EgyeEOY+0*~0#VvC|a-D&-$y#mGX_S9qxx zIA;g8&i89gZ<6Mhtw|y>!;k1|<00_r+dk*A4S0PsP7`eDN=X@|1Lh-AqgG1ObxiyC zP}uA~i)nE8T-Yp0bjc|76xZMH)es1|^`%sk^sl4$ZFj}jFWkW;L?|zTz;}%AiKPlB wi+KP1PLLo=%oj>IVfd?9<@x_TeZaImvSUPagCnFv_ZwzzVug5ZeCL<{0Ma5Cq5uE@ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_driver_8h__incl.png deleted file mode 100644 index 5acbd374ffc2f38dfa966090a555e7bd29074eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13258 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h.html deleted file mode 100644 index 5485a7a7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver/SdSpiLibDriver.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            SdSpiLibDriver.h File Reference
            -
            -
            - -

            Class using only simple SPI library functions. -More...

            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - -
            -

            Detailed Description

            -

            Class using only simple SPI library functions.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_lib_driver_8h__dep__incl.png deleted file mode 100644 index 0ab0d4e442da100f0a6909d56daba93ed5447fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5151 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 a`K_G?f+@suMBLQ(drLDLQ-aB@-~I#iBs5$A diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h.html deleted file mode 100644 index f86d3ee0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver/SdSpiSoftDriver.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SdSpiSoftDriver.h File Reference
            -
            -
            - -

            Class for software SPI. -More...

            -
            #include "../DigitalIO/SoftSPI.h"
            -
            -Include dependency graph for SdSpiSoftDriver.h:
            -
            -
            - - - - - - - -
            -
            - - - - - - - -

            -Classes

            class  SdSpiSoftDriver
             Base class for external soft SPI. More...
             
            class  SoftSpiDriver< MisoPin, MosiPin, SckPin >
             Class for external soft SPI. More...
             
            - - - -

            -Typedefs

            typedef SdSpiSoftDriver SdSpiDriver
             
            -

            Detailed Description

            -

            Class for software SPI.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Typedef Documentation

            - -

            ◆ SdSpiDriver

            - -
            -
            - - - - -
            typedef SdSpiSoftDriver SdSpiDriver
            -
            -

            Typedef for use of SdSoftSpiDriver

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sd_spi_soft_driver_8h__incl.png deleted file mode 100644 index eb28c458ecf1253825f2ecf94825806de824c6fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9376 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 ^G=Qk46_^$YS4zKKKVcz3C?S?%>rw+X0nF$6xz8 zYIi@G6#E&uOdF2;a-QTBIGWz5-K{SOvnkx)=CG5k{A4Y>c7336*3qJAZNPaY)as-@ zE^L~8Pw=63Khl2ulo{ zZ@PBxb=gpP%)njyINbV3nXOambG>8yiaxmJi!X;Fs?H?HOC9Yz8oVl8;!!@KpP6fD zB8o}91*vo+pbE0RT}-4=&~o4QSkAfpIfg{S*X0n*iH2L}noII5t{|q66Mfmnw?N;D z#ZGRxuL)A6j`t(9u|_HGNJS9{rz(gKgerRU#Y$#$=x5){=%jHkO@$JYtDaX9#oiL1 z>-0z~20JT#C=1u`E&q5efrb#ALddd*r<6u@Q1y!+G>7F$FO20T_!puaYHESMzRN!4 zS*m@xRB`L@w=_@IaG-Wht=+f3t?1D*NZNy&j|z9HCtOtg=PNJsyxv{-iF0r>z)QFU zg}=n|pf0hAWH`g=f+2f?r^#da!7GI%otojoN>$-CEA!Z-!#YcqeUH~l8nDc-dc~KU z-v5!EZ9@&XW95oFc=;foW^0hhgNOGBY?NeATCgq82D;|X@rTr-3B*x@Bai|71XXev z3O+4RV(OKSI{^rwn_qKM_2K&!6~Vq(Ej- zI|s|UN#agNSe~KErvN-zGc!lejr}DCp9Z@^VH2z>ezb*wRi>N133cX#5`0hf^U4b| zRna5g2FfjKj*eT6jH{;oK2PO8`b0spGG3=Z!nYtp7S4wnZU&lflP!srCnxTh&QCXfljb9}MReusy3rlGq+R_F1W8E=+1)7@Z|m{zzlxs42=S^K4F!2V+W+%#wmRcZ ZxMbP;@p2M3@W>J9iJA_g - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/StdioStream.h File Reference - - - - - - - - - - -
            - -
            -
            StdioStream.h File Reference
            -
            -
            - -

            StdioStream class. -More...

            -
            #include <limits.h>
            -#include "ios.h"
            -#include <stdio.h>
            -
            -Include dependency graph for StdioStream.h:
            -
            -
            - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - -
            -
            - - - - -

            -Classes

            class  StdioStream
             StdioStream implements a minimal stdio stream. More...
             
            - - - - - - - - - - - -

            -Macros

            #define EOF   (-1)
             
            #define NULL   0
             
            #define SEEK_CUR   1
             
            #define SEEK_END   2
             
            #define SEEK_SET   0
             
            - - - - - -

            -Variables

            const uint8_t STREAM_BUF_SIZE = 64
             
            const uint8_t UNGETC_BUF_SIZE = 2
             
            -

            Detailed Description

            -

            StdioStream class.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ EOF

            - -
            -
            - - - - -
            #define EOF   (-1)
            -
            -

            End-of-file return value.

            - -
            -
            - -

            ◆ NULL

            - -
            -
            - - - - -
            #define NULL   0
            -
            -

            Null pointer

            - -
            -
            - -

            ◆ SEEK_CUR

            - -
            -
            - - - - -
            #define SEEK_CUR   1
            -
            -

            Seek relative to current position.

            - -
            -
            - -

            ◆ SEEK_END

            - -
            -
            - - - - -
            #define SEEK_END   2
            -
            -

            Seek relative to end-of-file.

            - -
            -
            - -

            ◆ SEEK_SET

            - -
            -
            - - - - -
            #define SEEK_SET   0
            -
            -

            Seek relative to start-of-file.

            - -
            -
            -

            Variable Documentation

            - -

            ◆ STREAM_BUF_SIZE

            - -
            -
            - - - - -
            const uint8_t STREAM_BUF_SIZE = 64
            -
            -

            Total size of stream buffer. The entire buffer is used for output. During input UNGETC_BUF_SIZE of this space is reserved for ungetc.

            - -
            -
            - -

            ◆ UNGETC_BUF_SIZE

            - -
            -
            - - - - -
            const uint8_t UNGETC_BUF_SIZE = 2
            -
            -

            Amount of buffer allocated for ungetc during input.

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_stdio_stream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_stdio_stream_8h__dep__incl.png deleted file mode 100644 index 0e9a945b0b9c39ff2c3bab869b50808980345ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2075 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 - - - - - - -SdFat: Arduino/libraries/SdFat/src/common/SysCall.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            SysCall.h File Reference
            -
            -
            - -

            SysCall class. -More...

            -
            #include <stdint.h>
            -#include <stddef.h>
            -#include "../SdFatConfig.h"
            -
            -Include dependency graph for SysCall.h:
            -
            -
            - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - - - - - - - - -
            -
            - - - - -

            -Classes

            class  SysCall
             SysCall - Class to wrap system calls. More...
             
            - - - - - -

            -Macros

            #define F(str)   (str)
             
            #define nullptr   NULL
             
            - - - - - - - -

            -Typedefs

            typedef Print print_t
             
            typedef uint16_t SdMillis_t
             
            typedef Stream stream_t
             
            -

            Detailed Description

            -

            SysCall class.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Macro Definition Documentation

            - -

            ◆ F

            - -
            -
            - - - - - - - - -
            #define F( str)   (str)
            -
            -

            Define macro for strings stored in flash.

            - -
            -
            - -

            ◆ nullptr

            - -
            -
            - - - - -
            #define nullptr   NULL
            -
            -

            Define nullptr if not C++11

            - -
            -
            -

            Typedef Documentation

            - -

            ◆ print_t

            - -
            -
            - - - - -
            typedef Print print_t
            -
            -

            Use Arduino Print.

            - -
            -
            - -

            ◆ SdMillis_t

            - -
            -
            - - - - -
            typedef uint16_t SdMillis_t
            -
            -

            Type for millis.

            - -
            -
            - -

            ◆ stream_t

            - -
            -
            - - - - -
            typedef Stream stream_t
            -
            -

            Use Arduino Stream.

            - -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h__dep__incl.png deleted file mode 100644 index b3042180a5f6c7349f0d4c43101a89634d0f9a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22890 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_sys_call_8h__incl.png deleted file mode 100644 index 5457bad5638a4636ba75f862fdad1f8f3f0e2812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7688 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/annotated.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/annotated.html deleted file mode 100644 index dc2dcc39..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/annotated.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -SdFat: Class List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            -
            Class List
            -
            -
            -
            Here are the classes, structs, unions and interfaces with brief descriptions:
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
             CArduinoInStreamInput stream for Arduino Stream objects
             CArduinoOutStreamOutput stream for Arduino Print objects
             CBlockDeviceInterfaceBlockDeviceInterface class
             CBufferedPrintFast buffered print template
             Ccache_tCache for an raw data sector
             CCIDCard IDentification (CID) register
             CDirPos_tInternal type for position in directory file
             CExFatFileBasic file class
             CExFatFormatterFormat an exFAT volume
             CExFatPartitionAccess exFat partitions on raw file devices
             CExFatPos_tInternal type for file position - do not use in user apps
             CExFatVolumeExFAT volume
             CExFileExFAT file with Arduino Stream
             CExName_tInternal type for file name - do not use in user apps
             CFatCacheSector cache
             CFatFileBasic file class
             CFatFormatterFormat a FAT volume
             CFatPartitionAccess FAT16 and FAT32 partitions on raw file devices
             CFatPos_tInternal type for file position - do not use in user apps
             CFatVolumeIntegration class for the FatLib library
             CFile32FAT16/FAT32 file with Arduino Stream
             Cfname_tInternal type for Short File Name - do not use in user apps
             CFsBaseFileFsBaseFile class
             CFsCacheSector cache
             CFsFileFsBaseFile file with Arduino Stream
             CfstreamFile input/output stream
             CFsVolumeFsVolume class
             CibufstreamParse a char string
             CifstreamFile input stream
             CiosError and state information for all streams
             Cios_baseBase class for all streams
             CiostreamInput/Output stream
             CistreamInput Stream
             CMinimumSerialMini serial class for the SdFat library
             CobufstreamFormat a char string
             CofstreamFile output stream
             CostreamOutput Stream
             CPrintFilePrintFile class
             CSdBaseBase SD file system template class
             CSdCardFactorySetup a SPI card or SDIO card
             CSdCardInterfaceAbstract interface for an SD card
             CSdExFatSD file system class for exFAT volumes
             CSdFat32SD file system class for FAT volumes
             CSdFileFAT16/FAT32 file with Print
             CSdFsSD file system class for FAT16, FAT32, and exFAT volumes
             CSdioCardRaw SDIO access to SD and SDHC flash memory cards
             CSdioConfigSDIO card configuration
             CSdSpiArduinoDriverOptimized SPI class for access to SD and SDHC flash memory cards
             CSdSpiBaseClassBase class for external SPI drivers
             CSdSpiCardRaw access to SD and SDHC flash memory cards via SPI protocol
             CSdSpiConfigSPI card configuration
             CSdSpiSoftDriverBase class for external soft SPI
             CsetfillType for setfill manipulator
             CsetprecisionType for setprecision manipulator
             CsetwType for setw manipulator
             CSoftSpiDriverClass for external soft SPI
             CStdioStreamStdioStream implements a minimal stdio stream
             CStreamBaseClassBase type for FAT and exFAT streams
             CStreamFileStreamFile class
             CSysCallSysCall - Class to wrap system calls
            -
            -
            - -
            - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/bc_s.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/bdwn.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/bufstream.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            bufstream.h File Reference
            -
            -
            - -

            ibufstream and obufstream classes -More...

            -
            #include <string.h>
            -#include "iostream.h"
            -
            -Include dependency graph for bufstream.h:
            -
            -
            - - - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - - -
            -
            - - - - - - - -

            -Classes

            class  ibufstream
             parse a char string More...
             
            class  obufstream
             format a char string More...
             
            -

            Detailed Description

            -

            ibufstream and obufstream classes

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/bufstream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/bufstream_8h__dep__incl.png deleted file mode 100644 index 8656382ab7ef61f8884e55665784b6be9515bfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3445 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 KT7`<;v;PCwbEeJ! diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream-members.html deleted file mode 100644 index 6c523d29..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream-members.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ArduinoInStream Member List
            -
            -
            - -

            This is the complete list of members for ArduinoInStream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ArduinoInStream(Stream &hws, char *buf, size_t size)ArduinoInStreaminline
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            gcount() constistreaminline
            get()istream
            get(char &ch)istream
            get(char *str, streamsize n, char delim='\n')istream
            getline(char *str, streamsize n, char delim='\n')istream
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            ibufstream()ibufstreaminline
            ibufstream(const char *str)ibufstreaminlineexplicit
            ignore(streamsize n=1, int delim=-1)istream
            inios_basestatic
            init(const char *str)ibufstreaminline
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            istream() (defined in istream)istreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator>>(istream &(*pf)(istream &str))istreaminline
            operator>>(ios_base &(*pf)(ios_base &str))istreaminline
            operator>>(ios &(*pf)(ios &str))istreaminline
            operator>>(char *str)istreaminline
            operator>>(char &ch)istreaminline
            operator>>(signed char *str)istreaminline
            operator>>(signed char &ch)istreaminline
            operator>>(unsigned char *str)istreaminline
            operator>>(unsigned char &ch)istreaminline
            operator>>(bool &arg)istreaminline
            operator>>(short &arg)istreaminline
            operator>>(unsigned short &arg)istreaminline
            operator>>(int &arg)istreaminline
            operator>>(unsigned int &arg)istreaminline
            operator>>(long &arg)istreaminline
            operator>>(unsigned long &arg)istreaminline
            operator>>(double &arg)istreaminline
            operator>>(float &arg)istreaminline
            operator>>(void *&arg)istreaminline
            outios_basestatic
            peek()istream
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rdstate() constiosinline
            readline()ArduinoInStreaminline
            rightios_basestatic
            seekdir enum nameios_base
            seekg(pos_type pos)istreaminline
            seekg(off_type off, seekdir way)istreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipWhite()istream
            skipwsios_basestatic
            streamsize typedefios_base
            tellg()istreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream.html deleted file mode 100644 index 834ca9ff..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream.html +++ /dev/null @@ -1,2785 +0,0 @@ - - - - - - - -SdFat: ArduinoInStream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            ArduinoInStream Class Reference
            -
            -
            - -

            Input stream for Arduino Stream objects. - More...

            - -

            #include <ArduinoStream.h>

            -
            -Inheritance diagram for ArduinoInStream:
            -
            -
            Inheritance graph
            - - - - - - - -
            [legend]
            -
            -Collaboration diagram for ArduinoInStream:
            -
            -
            Collaboration graph
            - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

             ArduinoInStream (Stream &hws, char *buf, size_t size)
             
            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            streamsize gcount () const
             
            int get ()
             
            istreamget (char &ch)
             
            istreamget (char *str, streamsize n, char delim='\n')
             
            istreamgetline (char *str, streamsize n, char delim='\n')
             
            bool good () const
             
            istreamignore (streamsize n=1, int delim=-1)
             
            void init (const char *str)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            istreamoperator>> (bool &arg)
             
            istreamoperator>> (char &ch)
             
            istreamoperator>> (char *str)
             
            istreamoperator>> (double &arg)
             
            istreamoperator>> (float &arg)
             
            istreamoperator>> (int &arg)
             
            istreamoperator>> (ios &(*pf)(ios &str))
             
            istreamoperator>> (ios_base &(*pf)(ios_base &str))
             
            istreamoperator>> (istream &(*pf)(istream &str))
             
            istreamoperator>> (long &arg)
             
            istreamoperator>> (short &arg)
             
            istreamoperator>> (signed char &ch)
             
            istreamoperator>> (signed char *str)
             
            istreamoperator>> (unsigned char &ch)
             
            istreamoperator>> (unsigned char *str)
             
            istreamoperator>> (unsigned int &arg)
             
            istreamoperator>> (unsigned long &arg)
             
            istreamoperator>> (unsigned short &arg)
             
            istreamoperator>> (void *&arg)
             
            int peek ()
             
            int precision () const
             
            int precision (unsigned int n)
             
            iostate rdstate () const
             
            void readline ()
             
            istreamseekg (off_type off, seekdir way)
             
            istreamseekg (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void skipWhite ()
             
            pos_type tellg ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Input stream for Arduino Stream objects.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ ArduinoInStream()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            ArduinoInStream::ArduinoInStream (Stream & hws,
            char * buf,
            size_t size 
            )
            -
            -inline
            -
            -

            Constructor

            Parameters
            - - - - -
            [in]hwshardware stream
            [in]bufbuffer for input line
            [in]sizesize of input buffer
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ gcount()

            - -
            -
            - - - - - -
            - - - - - - - -
            streamsize istream::gcount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of characters extracted by the last unformatted input function.
            - -
            -
            - -

            ◆ get() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::get ()
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Returns
            The character or -1 if a failure occurs. A failure is indicated by the stream state.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ get() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream & istream::get (char & ch)
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Parameters
            - - -
            [out]chlocation to receive the extracted character.
            -
            -
            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ get() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::get (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters.

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ getline()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::getline (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

            -

            The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ ignore()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream & istream::ignore (streamsize n = 1,
            int delim = -1 
            )
            -
            -inherited
            -
            -

            Extract characters and discard them.

            -
            Parameters
            - - - -
            [in]nmaximum number of characters to ignore.
            [in]delimDelimiter.
            -
            -
            -

            Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

            -

            Failures are indicated by the state of the stream.

            -
            Returns
            *this
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ibufstream::init (const char * str)
            -
            -inlineinherited
            -
            -

            Initialize an ibufstream

            Parameters
            - - -
            [in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
            -
            -
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator>>() [1/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (bool & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type bool.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [2/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [3/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [4/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (double & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type double.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [5/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (float & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type float.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [6/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [7/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios &(*)(ios &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [8/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [9/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (istream &(*)(istream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [10/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [11/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [12/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [13/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [14/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [15/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [16/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [17/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [18/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [19/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (void *& arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type void*.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::peek ()
            -
            -inherited
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ readline()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ArduinoInStream::readline ()
            -
            -inline
            -
            -

            read a line.

            - -
            -
            - -

            ◆ seekg() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream& istream::seekg (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekg() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::seekg (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the read pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ skipWhite()

            - -
            -
            - - - - - -
            - - - - - - - -
            void istream::skipWhite ()
            -
            -inherited
            -
            -

            used to implement ws()

            - -
            -
            - -

            ◆ tellg()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type istream::tellg ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_in_stream__coll__graph.png deleted file mode 100644 index 0d8855beafa02af71c23b5b1f5eb06ab7c2978a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3290 zcmb`KXHZky7RLibLSl=7i}a#F1ichR1(A{%fdnOh2qGmYMd>OvltAbmgiwNn5|JWE z5dlR?xZVc}p-S&p1p*|1^v(;sH}Avyc<0WZS^MlWvuCea=lB1wvm^EOw2woCAOHa1 zI9dl~$exJ+0Ea#gH~T5AQq+Y#aX-@4MgjH@Ms{6(5&&>49*sg6d1tUF*e4?WqRko& zy&BSg@Y@K%hqs4&R}z-8()Be8xY>gBJE)WAyq35WoF&TkZNV zxnqy;s(MHeisX?DfpV6?n$tNfIkYe$745a$wfCAdV=r+JPDoA^!kUXNA0>S#)oK+g zh&{{ER4hE*B2rAhEg>5PhbC(3a3WTv7Sq>pN8iXH$jbs;{cCi(ZJ4qK67{VZu{B?wqXxtK(-yyE0-)ME0B~+2m{C%T7{9PkdYcMlSK6~FY=m`5cCAQXMfV1Waljj1}17kr~Z5@ zNlWvv=J2j4ZfqeNnVD*)kNhibOWca!;PbXWFwdn)L zC)$rscuyn*oq7vI|Dot*%t066%5tsL8x^`<0!7I*uBYqs-M+-Q=NBnCW^#5-Z8Zg+LrpiFyx0k>sX@Bw*>0`y&%!xBX~Kh3;T zu^YQ@`fC&VEEIkn+}G!QsiF5GnmMyXE#&S(0|?z}UU}~yHtqVZ)hgU|&>==*f{f=@ z)EBquQI^$GuU-{tw?@m}FhD233Bcmd(^Be?jNhfQqZF9?)*p^k{Jg6`-zaeYm8;s{ z)+Ze|LO!B?j5mh|S@H4b+rFho3}qzjo(gpEpu!<=s17Ib9|;C`=O6A8!u|2gA&>m{ z80NfL0F8{O-$3X$JMxPTY~XXnDgJw#4O?Ap=cWTyw+0^y_80`+!FuBLOK`zJZWeHmgAR;&mQJQmb;{{NSOlus>>^ z2tP175hduuA<=$YKP2b5guY5d=J{#fM|9vV8Qi2*1X`R<4Ho_v(N+6@P)Qt+#SW{P z(%xs?0fH9+rQs*2CR#{P*>QD_weIkXcAl;GD>lF3%jPazI9 z%Dk`IHq{ND@S5M5{1K1a)nj-gPi?C-q5+rd)l|2WhHrv+qn=2mWfJyUX(Ln1aKWsT z0($z?WSWx)F&2AlRBMa}~uk(<{cG zR+m1m{OHCd6m8qgm(GAI2%EaE3lBQSe3X`MiIY((M_bwL#gJd?BDQ6{lwN9V8{;KI zrDef+`PlI}7hl!lDwr8M0u!WV&5Df0m7c!QMEr)}JcgoZVCDtao5bmUBcns@;GOdW zS;T#SlF-*Di31H>q34mEPICC7N|Ae8Sl)jeu8;=9uj&#TQd1h+%!PGMvWe1#$Y@#? zXPh``{2k$iy&5O1M&x!GAs-sO@yxH;_gQ#Iilz|&Edgf}7370~uH5z!D0~GR9c#kA zb4QCxLH+aMV7cRenexhImb;9-tNof@dlg%m-(M=4lOO99RZ)4vNxeFzYGn&Q?CH?@ zAT`MO0#@`g;uOV`Pz}oOCpdU?e(O==b*ld{oVAWL*ebDg7(d~W3W)mVDL-75l)M+7 zQj;1?5X-2o4|@P82sp=JLwf0ER~5^7W;HDCI;N9_HoZ3YTXNiczR@+aPf35)q;hqE z4)Q%zfaZY=G+_}C=uWHjk00A3PG?q5V}sgt!ZJr8TUXvkMwaSf@2Ks~313skZ!b-{ zHGqEu5gWqzeTFtZ$7)0K^2GL!&=`!&UE0f>?>u*Urh)T2P+APv<;$%gu5jKMHlGxW zn${RDz&znIJwEi%1_r4L&++mVg1oE@9~s=L6tek)2rI&gO*srTB}OiwC& zFxvqZ0Wi7~RP6QG*rCHWb8oQT-?(tb&eYQWtK+hfug`9a!Rk?S*Sxir1^oSR=ONu& z#sQ;F!-c;)S}<51BuwumL^@%i*aa?x(n!9}uz!;Y_H3C_t>4AV^Sxfcd09Rbi%4|;OuaGmdZk!cAl>=41 zJ{OiBtRH|+i22!%jK*=MJu|CN*?h`KL$X`ANr^fB&zMob{D_q%ZmpQB3zGmBaeMq5 zEk<#1(|E4uZO#t}f&{yb)zGkS`fD|K|H!9Ao27Cq#1S|KtfkeL2@rP0O}RKGpiE&@ z5=~8oqkgi1NcZDocI|Gb*7M1h=(BBitgiL0RXEM1CMJ%2&Dhva9c3;VsTWjvC6n%Y zMHl8Ca8rzu|b8!9~9y{`QD(pUbQ5;#ZG0+EO%_`vN~tQjTwy1dla z)n8{XmuBh7)ZP_0egBw9O{U#VwJ7*}P@#@>X+FRM~m+h(*SBE;X+ts$tAdDd+ewOP= zd7f3e-a>`+b_=`wj{Cn zNj0pM7yTykt|4oyL&M1WhwoeY#T0(OvltAbmgiwNn5|JWE z5dlR?xZVc}p-S&p1p*|1^v(;sH}Avyc<0WZS^MlWvuCea=lB1wvm^EOw2woCAOHa1 zI9dl~$exJ+0Ea#gH~T5AQq+Y#aX-@4MgjH@Ms{6(5&&>49*sg6d1tUF*e4?WqRko& zy&BSg@Y@K%hqs4&R}z-8()Be8xY>gBJE)WAyq35WoF&TkZNV zxnqy;s(MHeisX?DfpV6?n$tNfIkYe$745a$wfCAdV=r+JPDoA^!kUXNA0>S#)oK+g zh&{{ER4hE*B2rAhEg>5PhbC(3a3WTv7Sq>pN8iXH$jbs;{cCi(ZJ4qK67{VZu{B?wqXxtK(-yyE0-)ME0B~+2m{C%T7{9PkdYcMlSK6~FY=m`5cCAQXMfV1Waljj1}17kr~Z5@ zNlWvv=J2j4ZfqeNnVD*)kNhibOWca!;PbXWFwdn)L zC)$rscuyn*oq7vI|Dot*%t066%5tsL8x^`<0!7I*uBYqs-M+-Q=NBnCW^#5-Z8Zg+LrpiFyx0k>sX@Bw*>0`y&%!xBX~Kh3;T zu^YQ@`fC&VEEIkn+}G!QsiF5GnmMyXE#&S(0|?z}UU}~yHtqVZ)hgU|&>==*f{f=@ z)EBquQI^$GuU-{tw?@m}FhD233Bcmd(^Be?jNhfQqZF9?)*p^k{Jg6`-zaeYm8;s{ z)+Ze|LO!B?j5mh|S@H4b+rFho3}qzjo(gpEpu!<=s17Ib9|;C`=O6A8!u|2gA&>m{ z80NfL0F8{O-$3X$JMxPTY~XXnDgJw#4O?Ap=cWTyw+0^y_80`+!FuBLOK`zJZWeHmgAR;&mQJQmb;{{NSOlus>>^ z2tP175hduuA<=$YKP2b5guY5d=J{#fM|9vV8Qi2*1X`R<4Ho_v(N+6@P)Qt+#SW{P z(%xs?0fH9+rQs*2CR#{P*>QD_weIkXcAl;GD>lF3%jPazI9 z%Dk`IHq{ND@S5M5{1K1a)nj-gPi?C-q5+rd)l|2WhHrv+qn=2mWfJyUX(Ln1aKWsT z0($z?WSWx)F&2AlRBMa}~uk(<{cG zR+m1m{OHCd6m8qgm(GAI2%EaE3lBQSe3X`MiIY((M_bwL#gJd?BDQ6{lwN9V8{;KI zrDef+`PlI}7hl!lDwr8M0u!WV&5Df0m7c!QMEr)}JcgoZVCDtao5bmUBcns@;GOdW zS;T#SlF-*Di31H>q34mEPICC7N|Ae8Sl)jeu8;=9uj&#TQd1h+%!PGMvWe1#$Y@#? zXPh``{2k$iy&5O1M&x!GAs-sO@yxH;_gQ#Iilz|&Edgf}7370~uH5z!D0~GR9c#kA zb4QCxLH+aMV7cRenexhImb;9-tNof@dlg%m-(M=4lOO99RZ)4vNxeFzYGn&Q?CH?@ zAT`MO0#@`g;uOV`Pz}oOCpdU?e(O==b*ld{oVAWL*ebDg7(d~W3W)mVDL-75l)M+7 zQj;1?5X-2o4|@P82sp=JLwf0ER~5^7W;HDCI;N9_HoZ3YTXNiczR@+aPf35)q;hqE z4)Q%zfaZY=G+_}C=uWHjk00A3PG?q5V}sgt!ZJr8TUXvkMwaSf@2Ks~313skZ!b-{ zHGqEu5gWqzeTFtZ$7)0K^2GL!&=`!&UE0f>?>u*Urh)T2P+APv<;$%gu5jKMHlGxW zn${RDz&znIJwEi%1_r4L&++mVg1oE@9~s=L6tek)2rI&gO*srTB}OiwC& zFxvqZ0Wi7~RP6QG*rCHWb8oQT-?(tb&eYQWtK+hfug`9a!Rk?S*Sxir1^oSR=ONu& z#sQ;F!-c;)S}<51BuwumL^@%i*aa?x(n!9}uz!;Y_H3C_t>4AV^Sxfcd09Rbi%4|;OuaGmdZk!cAl>=41 zJ{OiBtRH|+i22!%jK*=MJu|CN*?h`KL$X`ANr^fB&zMob{D_q%ZmpQB3zGmBaeMq5 zEk<#1(|E4uZO#t}f&{yb)zGkS`fD|K|H!9Ao27Cq#1S|KtfkeL2@rP0O}RKGpiE&@ z5=~8oqkgi1NcZDocI|Gb*7M1h=(BBitgiL0RXEM1CMJ%2&Dhva9c3;VsTWjvC6n%Y zMHl8Ca8rzu|b8!9~9y{`QD(pUbQ5;#ZG0+EO%_`vN~tQjTwy1dla z)n8{XmuBh7)ZP_0egBw9O{U#VwJ7*}P@#@>X+FRM~m+h(*SBE;X+ts$tAdDd+ewOP= zd7f3e-a>`+b_=`wj{Cn zNj0pM7yTykt|4oyL&M1WhwoeY#T0( - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ArduinoOutStream Member List
            -
            -
            - -

            This is the complete list of members for ArduinoOutStream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ArduinoOutStream(Print &pr)ArduinoOutStreaminlineexplicit
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            flush()ostreaminline
            fmtflags typedefios_base
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator<<(ostream &(*pf)(ostream &str))ostreaminline
            operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
            operator<<(bool arg)ostreaminline
            operator<<(const char *arg)ostreaminline
            operator<<(const signed char *arg)ostreaminline
            operator<<(const unsigned char *arg)ostreaminline
            operator<<(const String &arg)ostreaminline
            operator<<(char arg)ostreaminline
            operator<<(signed char arg)ostreaminline
            operator<<(unsigned char arg)ostreaminline
            operator<<(double arg)ostreaminline
            operator<<(float arg)ostreaminline
            operator<<(short arg)ostreaminline
            operator<<(unsigned short arg)ostreaminline
            operator<<(int arg)ostreaminline
            operator<<(unsigned int arg)ostreaminline
            operator<<(long arg)ostreaminline
            operator<<(unsigned long arg)ostreaminline
            operator<<(long long arg)ostreaminline
            operator<<(unsigned long long arg)ostreaminline
            operator<<(const void *arg)ostreaminline
            operator<<(const __FlashStringHelper *arg)ostreaminline
            ostream() (defined in ostream)ostreaminline
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            put(char ch)ostreaminline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekp(pos_type pos)ostreaminline
            seekp(off_type off, seekdir way)ostreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            tellp()ostreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream.html deleted file mode 100644 index 6e0d04e1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream.html +++ /dev/null @@ -1,2559 +0,0 @@ - - - - - - - -SdFat: ArduinoOutStream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            ArduinoOutStream Class Reference
            -
            -
            - -

            Output stream for Arduino Print objects. - More...

            - -

            #include <ArduinoStream.h>

            -
            -Inheritance diagram for ArduinoOutStream:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for ArduinoOutStream:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

             ArduinoOutStream (Print &pr)
             
            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            ostreamflush ()
             
            bool good () const
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            ostreamoperator<< (bool arg)
             
            ostreamoperator<< (char arg)
             
            ostreamoperator<< (const __FlashStringHelper *arg)
             
            ostreamoperator<< (const char *arg)
             
            ostreamoperator<< (const signed char *arg)
             
            ostreamoperator<< (const String &arg)
             
            ostreamoperator<< (const unsigned char *arg)
             
            ostreamoperator<< (const void *arg)
             
            ostreamoperator<< (double arg)
             
            ostreamoperator<< (float arg)
             
            ostreamoperator<< (int arg)
             
            ostreamoperator<< (ios_base &(*pf)(ios_base &str))
             
            ostreamoperator<< (long arg)
             
            ostreamoperator<< (long long arg)
             
            ostreamoperator<< (ostream &(*pf)(ostream &str))
             
            ostreamoperator<< (short arg)
             
            ostreamoperator<< (signed char arg)
             
            ostreamoperator<< (unsigned char arg)
             
            ostreamoperator<< (unsigned int arg)
             
            ostreamoperator<< (unsigned long arg)
             
            ostreamoperator<< (unsigned long long arg)
             
            ostreamoperator<< (unsigned short arg)
             
            int precision () const
             
            int precision (unsigned int n)
             
            ostreamput (char ch)
             
            iostate rdstate () const
             
            ostreamseekp (off_type off, seekdir way)
             
            ostreamseekp (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            pos_type tellp ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Output stream for Arduino Print objects.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ ArduinoOutStream()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ArduinoOutStream::ArduinoOutStream (Print & pr)
            -
            -inlineexplicit
            -
            -

            constructor

            -
            Parameters
            - - -
            [in]prPrint object for this ArduinoOutStream.
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            ostream& ostream::flush ()
            -
            -inlineinherited
            -
            -

            Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator<<() [1/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (bool arg)
            -
            -inlineinherited
            -
            -

            Output bool

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [2/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [3/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const __FlashStringHelper * arg)
            -
            -inlineinherited
            -
            -

            Output a string from flash using the Arduino F() macro.

            Parameters
            - - -
            [in]argpointing to flash string
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [4/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [5/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const signed char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [6/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const String & arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [7/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const unsigned char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [8/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const void * arg)
            -
            -inlineinherited
            -
            -

            Output pointer

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [9/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (double arg)
            -
            -inlineinherited
            -
            -

            Output double

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [10/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (float arg)
            -
            -inlineinherited
            -
            -

            Output float

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [11/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (int arg)
            -
            -inlineinherited
            -
            -

            Output signed int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [12/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [13/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long arg)
            -
            -inlineinherited
            -
            -

            Output signed long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [14/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long long arg)
            -
            -inlineinherited
            -
            -

            Output signed long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [15/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [16/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (short arg)
            -
            -inlineinherited
            -
            -

            Output signed short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [17/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (signed char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [18/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [19/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned int arg)
            -
            -inlineinherited
            -
            -

            Output unsigned int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [20/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [21/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [22/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned short arg)
            -
            -inlineinherited
            -
            -

            Output unsigned short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ put()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::put (char ch)
            -
            -inlineinherited
            -
            -

            Puts a character in a stream.

            -

            The unformatted output function inserts the element ch. It returns *this.

            -
            Parameters
            - - -
            [in]chThe character
            -
            -
            -
            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekp() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ostream& ostream::seekp (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::seekp (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the write pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ tellp()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type ostream::tellp ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_arduino_out_stream__coll__graph.png deleted file mode 100644 index 971f0527e1a3a7cddc7b9f55a9e698f77f1cee43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2700 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 YwhW - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            BlockDeviceInterface Member List
            -
            -
            - -

            This is the complete list of members for BlockDeviceInterface, including all inherited members.

            - - - - - - - - -
            readSector(uint32_t sector, uint8_t *dst)=0BlockDeviceInterfacepure virtual
            readSectors(uint32_t sector, uint8_t *dst, size_t ns)=0BlockDeviceInterfacepure virtual
            sectorCount()=0BlockDeviceInterfacepure virtual
            syncDevice()=0BlockDeviceInterfacepure virtual
            writeSector(uint32_t sector, const uint8_t *src)=0BlockDeviceInterfacepure virtual
            writeSectors(uint32_t sector, const uint8_t *src, size_t ns)=0BlockDeviceInterfacepure virtual
            ~BlockDeviceInterface() (defined in BlockDeviceInterface)BlockDeviceInterfaceinlinevirtual
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface.html deleted file mode 100644 index 42c6362a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - -SdFat: BlockDeviceInterface Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            BlockDeviceInterface Class Referenceabstract
            -
            -
            - -

            BlockDeviceInterface class. - More...

            - -

            #include <BlockDeviceInterface.h>

            -
            -Inheritance diagram for BlockDeviceInterface:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - -

            -Public Member Functions

            virtual bool readSector (uint32_t sector, uint8_t *dst)=0
             
            virtual bool readSectors (uint32_t sector, uint8_t *dst, size_t ns)=0
             
            virtual uint32_t sectorCount ()=0
             
            virtual bool syncDevice ()=0
             
            virtual bool writeSector (uint32_t sector, const uint8_t *src)=0
             
            virtual bool writeSectors (uint32_t sector, const uint8_t *src, size_t ns)=0
             
            -

            Detailed Description

            -

            Member Function Documentation

            - -

            ◆ readSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::readSector (uint32_t sector,
            uint8_t * dst 
            )
            -
            -pure virtual
            -
            -

            Read a sector.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ readSectors()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::readSectors (uint32_t sector,
            uint8_t * dst,
            size_t ns 
            )
            -
            -pure virtual
            -
            -

            Read multiple sectors.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be read.
            [in]nsNumber of sectors to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ sectorCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint32_t BlockDeviceInterface::sectorCount ()
            -
            -pure virtual
            -
            -
            Returns
            device size in sectors.
            - -

            Implemented in SdCardInterface, and SdioCard.

            - -
            -
            - -

            ◆ syncDevice()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual bool BlockDeviceInterface::syncDevice ()
            -
            -pure virtual
            -
            -

            End multi-sector transfer and go to idle state.

            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::writeSector (uint32_t sector,
            const uint8_t * src 
            )
            -
            -pure virtual
            -
            -

            Writes a sector.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeSectors()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::writeSectors (uint32_t sector,
            const uint8_t * src,
            size_t ns 
            )
            -
            -pure virtual
            -
            -

            Write multiple sectors.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be written.
            [in]nsNumber of sectors to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_block_device_interface__inherit__graph.png deleted file mode 100644 index e865fc79672418ea7ed8ec62dd9cc9652bc9dd95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2217 zcmcJRX;jlm62Si;0t4ZYTTwYwoI&MMaENGTfB;$Lkkb%CP!bRjCdi=?geU_M0s)OC z0!BcVAzZ=bh%pe5Ww?(3LBgRSTnYqm00AW+liA(3?%UmO`?mUZ*N1-fs=BIwU7hOY z;;5vsPXPb`C76@FyF_P8W}UpOWR3mah9FV0SI#@y13Q0=d`>YL0Ob8)_CI>we6sk~ zIa9++LsqyEy^$_&uumhHeMdgk;ZUlsCP)!;>Tr%ulfHh^D^dmu&uVR9QBe7*vRZ8H z#8Ag8C%@Z;1|54-8fLpmwx-R5XC$>2~_iTaLVP*Bj5E^RHXr7@#~#%qv}a8~H^h00#5 zc(GJ#Vz-v@H+zK%*qF0TA(rW5iL}~GkFdAgsEf3NCK4NWZk1$WAXu=v6DEaXX>sJ6_atMttzJwUV~uv zus6DR?5rZ1fVhORB*u2tWLs8N&vG57#*w7e`A)?v*PkJxN!~$7IA*kateDZJik{4i z57rnr38R%|l>3BVM~yQpLVMK{Z7^dO8scI&S;zH~h$6^|UTN0wG%;@QLR3`LZDnjJ9k~DEm=ELTPj!m;m3Qpah|!NEW!cQr z`IJ_{yDTAl()GJvin;a1&!|#c(c7EJw+loeioG2Qs;ML?ys^Kui}TNn;uAU+u4ir} zoGUSQ1b&do1QB%oRgfMCGxXC4LH*|xc`IqW@si>4`G7yQW#Q5c_j|RR1yq}4^5q;0 zJw$f=*Rr5&LP<%Ku01xu+HVJ;4b>GWczY7f&<8iSi?;C>TB#+SYO0a#A75qR+%ibJ zN|!N)U|_muam*F6uavocBImV9?uKrKTlmSq-^8bbGg(IIk-b}8owgpbZZIxlf{)Vbz1EBb)O9r1$Gol}-* z#>8_c?7+G!vmiCE;daZ$`K8=z+!s6LzJ6;Dkv?^O&6t&P^66*_ZeS&aSA(Ov_B{}P zleR|XH*#a4L%aKbKAA22vg=_Cw#x>N6aTrwv<`IVKW9CO{UURWH#&W)yOr`lyka}C@gmdH~WQ1yF_`pyw za^TxhZ}@V)xc+5FS<7n&-&~CNq&gUlA19kF9k#)#R;{mQ->bW86OjuY>$%n4l%&aD zpLpPlm%KRtQA(l+J-)XFwg#3Fx_f1;m4(W`f&k2C&B2cM2}e_!RaB&}2S+Yf<`#&| zKOUplts^uuEayA1JS9SL=B`f;nvii;pzLA^ z53aytI7bgkmfJ<)8H2Kq-j5?ZUuo3!G{8TV_j3<3Lw_L!&U{w;QKj!}VgE?@ov_f| zDc#N3Pjh6$;pE}fqESSe;o`?Ov{$mhs=nF*uNID&8q&z0%9=|uSXHBGG}&J%pih48 zpCt$1eK=?+fn{zk^Qp(9V5G=1QhT;%2*n`R*FC-Qc9I9i@Pe7;RkPp4s~X1_UQ*468YR zBC}fE7q|7FkxSKb$#Z*tU`T&b2X1k$szO&B^VLd-Da}0aKH9`@mjJ@~|06H|#%9hI zjJONt=}Dh6sNEO1sGy5MT%c~$0jtz;Ap9kocKpC|Dxy7=eG4&+VBricn`^%oZl|ES12#} OdjK$~i#@|O;O_4Or9epl diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print-members.html deleted file mode 100644 index 5beb7057..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            BufferedPrint< WriteClass, BUF_DIM > Member List
            -
            -
            - -

            This is the complete list of members for BufferedPrint< WriteClass, BUF_DIM >, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - -
            begin(WriteClass *wr)BufferedPrint< WriteClass, BUF_DIM >inline
            BufferedPrint() (defined in BufferedPrint< WriteClass, BUF_DIM >)BufferedPrint< WriteClass, BUF_DIM >inline
            BufferedPrint(WriteClass *wr)BufferedPrint< WriteClass, BUF_DIM >inlineexplicit
            flush()BufferedPrint< WriteClass, BUF_DIM >inline
            print(double d, uint8_t prec=2)BufferedPrint< WriteClass, BUF_DIM >inline
            print(float f, uint8_t prec=2)BufferedPrint< WriteClass, BUF_DIM >inline
            print(Type v)BufferedPrint< WriteClass, BUF_DIM >inline
            printField(char c, char term)BufferedPrint< WriteClass, BUF_DIM >inline
            printField(const __FlashStringHelper *fsh, char term)BufferedPrint< WriteClass, BUF_DIM >inline
            printField(const char *str, char term)BufferedPrint< WriteClass, BUF_DIM >inline
            printField(double d, char term, uint8_t prec=2)BufferedPrint< WriteClass, BUF_DIM >inline
            printField(float f, char term, uint8_t prec=2)BufferedPrint< WriteClass, BUF_DIM >inline
            printField(Type n, char term)BufferedPrint< WriteClass, BUF_DIM >inline
            println()BufferedPrint< WriteClass, BUF_DIM >inline
            println(double d, uint8_t prec=2)BufferedPrint< WriteClass, BUF_DIM >inline
            println(float f, uint8_t prec)BufferedPrint< WriteClass, BUF_DIM >inline
            println(Type v)BufferedPrint< WriteClass, BUF_DIM >inline
            sync()BufferedPrint< WriteClass, BUF_DIM >inline
            write(const void *src, size_t n)BufferedPrint< WriteClass, BUF_DIM >inline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print.html deleted file mode 100644 index 1cc8aaaf..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_buffered_print.html +++ /dev/null @@ -1,885 +0,0 @@ - - - - - - - -SdFat: BufferedPrint< WriteClass, BUF_DIM > Class Template Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            BufferedPrint< WriteClass, BUF_DIM > Class Template Reference
            -
            -
            - -

            Fast buffered print template. - More...

            - -

            #include <BufferedPrint.h>

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            void begin (WriteClass *wr)
             
             BufferedPrint (WriteClass *wr)
             
            void flush ()
             
            size_t print (double d, uint8_t prec=2)
             
            size_t print (float f, uint8_t prec=2)
             
            template<typename Type >
            size_t print (Type v)
             
            size_t printField (char c, char term)
             
            size_t printField (const __FlashStringHelper *fsh, char term)
             
            size_t printField (const char *str, char term)
             
            size_t printField (double d, char term, uint8_t prec=2)
             
            size_t printField (float f, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type n, char term)
             
            size_t println ()
             
            size_t println (double d, uint8_t prec=2)
             
            size_t println (float f, uint8_t prec)
             
            template<typename Type >
            size_t println (Type v)
             
            bool sync ()
             
            size_t write (const void *src, size_t n)
             
            -

            Detailed Description

            -

            template<typename WriteClass, uint8_t BUF_DIM>
            -class BufferedPrint< WriteClass, BUF_DIM >

            - -

            Fast buffered print template.

            -

            Constructor & Destructor Documentation

            - -

            ◆ BufferedPrint()

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - -
            BufferedPrint< WriteClass, BUF_DIM >::BufferedPrint (WriteClass * wr)
            -
            -inlineexplicit
            -
            -

            BufferedPrint constructor.

            Parameters
            - - -
            [in]wrPrint destination.
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ begin()

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - -
            void BufferedPrint< WriteClass, BUF_DIM >::begin (WriteClass * wr)
            -
            -inline
            -
            -

            Initialize the BuffedPrint class.

            Parameters
            - - -
            [in]wrPrint destination.
            -
            -
            - -
            -
            - -

            ◆ flush()

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - -
            void BufferedPrint< WriteClass, BUF_DIM >::flush ()
            -
            -inline
            -
            -

            Flush the buffer - same as sync() with no status return.

            - -
            -
            - -

            ◆ print() [1/3]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::print (double d,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a double.

            Parameters
            - - - -
            [in]dThe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ print() [2/3]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::print (float f,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a float.

            Parameters
            - - - -
            [in]fThe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ print() [3/3]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::print (Type v)
            -
            -inline
            -
            -

            Print character, string, or number.

            Parameters
            - - -
            [in]vitem to print.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ printField() [1/6]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::printField (char c,
            char term 
            )
            -
            -inline
            -
            -

            Print a character followed by a field terminator.

            Parameters
            - - - -
            [in]ccharacter to print.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/6]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::printField (const __FlashStringHelper * fsh,
            char term 
            )
            -
            -inline
            -
            -

            Print a string stored in AVR flash followed by a field terminator.

            Parameters
            - - - -
            [in]fshstring to print.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/6]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::printField (const char * str,
            char term 
            )
            -
            -inline
            -
            -

            Print a string followed by a field terminator.

            Parameters
            - - - -
            [in]strstring to print.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ printField() [4/6]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::printField (double d,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a double followed by a field terminator.

            Parameters
            - - - - -
            [in]dThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ printField() [5/6]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::printField (float f,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a float followed by a field terminator.

            Parameters
            - - - - -
            [in]fThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ printField() [6/6]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::printField (Type n,
            char term 
            )
            -
            -inline
            -
            -

            Print an integer value for 8, 16, and 32 bit signed and unsigned types.

            Parameters
            - - - -
            [in]nThe value to print.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ println() [1/4]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::println ()
            -
            -inline
            -
            -

            Print CR LF.

            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ println() [2/4]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::println (double d,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a double followed by CR LF.

            Parameters
            - - - -
            [in]dThe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ println() [3/4]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::println (float f,
            uint8_t prec 
            )
            -
            -inline
            -
            -

            Print a float followed by CR LF.

            Parameters
            - - - -
            [in]fThe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ println() [4/4]

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::println (Type v)
            -
            -inline
            -
            -

            Print character, string, or number followed by CR LF.

            Parameters
            - - -
            [in]vitem to print.
            -
            -
            -
            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - -
            bool BufferedPrint< WriteClass, BUF_DIM >::sync ()
            -
            -inline
            -
            -

            Flush the buffer.

            Returns
            true for success or false if an error occurs.
            - -
            -
            - -

            ◆ write()

            - -
            -
            -
            -template<typename WriteClass , uint8_t BUF_DIM>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t BufferedPrint< WriteClass, BUF_DIM >::write (const void * src,
            size_t n 
            )
            -
            -inline
            -
            -

            Write data to an open file.

            Parameters
            - - - -
            [in]srcPointer to the location of the data to be written.
            [in]nNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always n.
            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file-members.html deleted file mode 100644 index a9721ad9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file-members.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ExFatFile Member List
            -
            -
            - -

            This is the complete list of members for ExFatFile, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()ExFatFileinline
            available64()ExFatFileinline
            clearError()ExFatFileinline
            clearWriteError()ExFatFileinline
            close()ExFatFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)ExFatFile
            curPosition() constExFatFileinline
            dataLength()ExFatFileinline
            dirIndex()ExFatFileinline
            ExFatFile()ExFatFileinline
            ExFatVolume classExFatFilefriend
            exists(const ExChar_t *path)ExFatFileinline
            fgetpos(fspos_t *pos)ExFatFile
            fgets(char *str, int num, char *delim=NULL)ExFatFile
            fileSize()ExFatFileinline
            firstSector()ExFatFile
            flush()ExFatFileinline
            fsetpos(const fspos_t *pos)ExFatFile
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)ExFatFile
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)ExFatFile
            getError()ExFatFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)ExFatFile
            getName(ExChar_t *name, size_t size)ExFatFile
            getWriteError()ExFatFileinline
            isContiguous() constExFatFileinline
            isDir() constExFatFileinline
            isFile() constExFatFileinline
            isHidden() constExFatFileinline
            isOpen() constExFatFileinline
            isReadable() constExFatFileinline
            isReadOnly() constExFatFileinline
            isRoot() constExFatFileinline
            isSubDir() constExFatFileinline
            isWritable() constExFatFileinline
            ls(print_t *pr)ExFatFile
            ls(print_t *pr, uint8_t flags, uint8_t indent=0)ExFatFile
            mkdir(ExFatFile *parent, const ExChar_t *path, bool pFlag=true)ExFatFile
            open(ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)ExFatFile
            open(ExFatVolume *vol, const ExChar_t *path, int oflag)ExFatFile
            open(ExFatFile *dirFile, uint32_t index, oflag_t oflag)ExFatFile
            open(const ExChar_t *path, int oflag=0X00)ExFatFile
            openNext(ExFatFile *dirFile, oflag_t oflag=0X00)ExFatFile
            openRoot(ExFatVolume *vol)ExFatFile
            operator bool()ExFatFileinline
            peek()ExFatFile
            preAllocate(uint64_t length)ExFatFile
            printAccessDateTime(print_t *pr)ExFatFile
            printCreateDateTime(print_t *pr)ExFatFile
            printField(double value, char term, uint8_t prec=2)ExFatFileinline
            printField(float value, char term, uint8_t prec=2)ExFatFileinline
            printField(Type value, char term)ExFatFileinline
            printFileSize(print_t *pr)ExFatFile
            printModifyDateTime(print_t *pr)ExFatFile
            printName(print_t *pr)ExFatFile
            read()ExFatFileinline
            read(void *buf, size_t count)ExFatFile
            remove()ExFatFile
            remove(const ExChar_t *path)ExFatFile
            rename(const ExChar_t *newPath)ExFatFile
            rename(ExFatFile *dirFile, const ExChar_t *newPath)ExFatFile
            rewind()ExFatFileinline
            rmdir()ExFatFile
            seekCur(int64_t offset)ExFatFileinline
            seekEnd(int64_t offset=0)ExFatFileinline
            seekSet(uint64_t pos)ExFatFile
            sync()ExFatFile
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)ExFatFile
            truncate()ExFatFile
            truncate(uint64_t length)ExFatFileinline
            validLength()ExFatFileinline
            write(const char *str)ExFatFileinline
            write(uint8_t b)ExFatFileinline
            write(const void *buf, size_t count)ExFatFile
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file.html deleted file mode 100644 index 176155ea..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file.html +++ /dev/null @@ -1,2529 +0,0 @@ - - - - - - - -SdFat: ExFatFile Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            ExFatFile Class Reference
            -
            -
            - -

            Basic file class. - More...

            - -

            #include <ExFatFile.h>

            -
            -Inheritance diagram for ExFatFile:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            uint64_t available64 ()
             
            void clearError ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            uint64_t curPosition () const
             
            uint64_t dataLength ()
             
            uint32_t dirIndex ()
             
             ExFatFile ()
             
            bool exists (const ExChar_t *path)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=NULL)
             
            uint64_t fileSize ()
             
            uint32_t firstSector ()
             
            void flush ()
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            size_t getName (ExChar_t *name, size_t size)
             
            bool getWriteError ()
             
            bool isContiguous () const
             
            bool isDir () const
             
            bool isFile () const
             
            bool isHidden () const
             
            bool isOpen () const
             
            bool isReadable () const
             
            bool isReadOnly () const
             
            bool isRoot () const
             
            bool isSubDir () const
             
            bool isWritable () const
             
            bool ls (print_t *pr)
             
            bool ls (print_t *pr, uint8_t flags, uint8_t indent=0)
             
            bool mkdir (ExFatFile *parent, const ExChar_t *path, bool pFlag=true)
             
            bool open (const ExChar_t *path, int oflag=0X00)
             
            bool open (ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)
             
            bool open (ExFatFile *dirFile, uint32_t index, oflag_t oflag)
             
            bool open (ExFatVolume *vol, const ExChar_t *path, int oflag)
             
            bool openNext (ExFatFile *dirFile, oflag_t oflag=0X00)
             
            bool openRoot (ExFatVolume *vol)
             
             operator bool ()
             
            int peek ()
             
            bool preAllocate (uint64_t length)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            bool remove ()
             
            bool remove (const ExChar_t *path)
             
            bool rename (const ExChar_t *newPath)
             
            bool rename (ExFatFile *dirFile, const ExChar_t *newPath)
             
            void rewind ()
             
            bool rmdir ()
             
            bool seekCur (int64_t offset)
             
            bool seekEnd (int64_t offset=0)
             
            bool seekSet (uint64_t pos)
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint64_t length)
             
            uint64_t validLength ()
             
            size_t write (const char *str)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            - - - -

            -Friends

            class ExFatVolume
             
            -

            Detailed Description

            -

            Basic file class.

            -

            Constructor & Destructor Documentation

            - -

            ◆ ExFatFile()

            - -
            -
            - - - - - -
            - - - - - - - -
            ExFatFile::ExFatFile ()
            -
            -inline
            -
            -

            Create an instance.

            - -
            -
            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int ExFatFile::available ()
            -
            -inline
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. INT_MAX is returned for very large files.
            -

            available64() is recommended for very large files.

            -

            Zero is returned for directory files.

            - -
            -
            - -

            ◆ available64()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::available64 ()
            -
            -inline
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
            - -
            -
            - -

            ◆ clearError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::clearError ()
            -
            -inline
            -
            -

            Clear all error bits.

            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::clearWriteError ()
            -
            -inline
            -
            -

            Clear writeError.

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - - - -
            bool ExFatFile::close ()
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Parameters may be nullptr.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::curPosition () const
            -
            -inline
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dataLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::dataLength ()
            -
            -inline
            -
            -
            Returns
            Total data length for file.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatFile::dirIndex ()
            -
            -inline
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::exists (const ExChar_t * path)
            -
            -inline
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - - - - -
            void ExFatFile::fgetpos (fspos_t * pos)
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int ExFatFile::fgets (char * str,
            int num,
            char * delim = NULL 
            )
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::fileSize ()
            -
            -inline
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - - - -
            uint32_t ExFatFile::firstSector ()
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::flush ()
            -
            -inline
            -
            -

            Arduino name for sync()

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - - - - -
            void ExFatFile::fsetpos (const fspos_t * pos)
            -
            -

            Set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatFile::getError ()
            -
            -inline
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -

            Get a file's modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::getName (ExChar_t * name,
            size_t size 
            )
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]sizeThe size of the array in characters.
            -
            -
            -
            Returns
            the name length.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::getWriteError ()
            -
            -inline
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isContiguous () const
            -
            -inline
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isDir () const
            -
            -inline
            -
            -
            Returns
            True if this is a directory.
            - -
            -
            - -

            ◆ isFile()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isFile () const
            -
            -inline
            -
            -
            Returns
            True if this is a normal file.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isHidden () const
            -
            -inline
            -
            -
            Returns
            True if this is a hidden.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isOpen () const
            -
            -inline
            -
            -
            Returns
            true if the file is open.
            - -
            -
            - -

            ◆ isReadable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isReadable () const
            -
            -inline
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ isReadOnly()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isReadOnly () const
            -
            -inline
            -
            -
            Returns
            True if file is read-only
            - -
            -
            - -

            ◆ isRoot()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isRoot () const
            -
            -inline
            -
            -
            Returns
            True if this is the root directory.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isSubDir () const
            -
            -inline
            -
            -
            Returns
            True if this is a subdirectory.
            - -
            -
            - -

            ◆ isWritable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isWritable () const
            -
            -inline
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - - - - -
            bool ExFatFile::ls (print_tpr)
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]prPrint stream for list.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::ls (print_tpr,
            uint8_t flags,
            uint8_t indent = 0 
            )
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Parameters
            - - -
            [in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::mkdir (ExFatFileparent,
            const ExChar_t * path,
            bool pFlag = true 
            )
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]parentAn open directory file that will contain the new directory.
            [in]pathA path with a valid name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (const ExChar_t * path,
            int oflag = 0X00 
            )
            -
            -

            Open a file in the current working directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see ExFatFile::open(ExFatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (ExFatFiledirFile,
            const ExChar_t * path,
            oflag_t oflag 
            )
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirFileAn open directory containing the file to be opened.
            [in]pathThe path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list. Only one of O_RDONLY, O_READ, O_WRONLY, O_WRITE, or O_RDWR is allowed.
            -
            -
            -

            O_RDONLY - Open for reading.

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one file object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (ExFatFiledirFile,
            uint32_t index,
            oflag_t oflag 
            )
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirFileAn open ExFatFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see ExFatFile::open(ExFatFile*, const ExChar_t*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (ExFatVolumevol,
            const ExChar_t * path,
            int oflag 
            )
            -
            -

            Open a file in the volume working directory.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathwith a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see open(ExFatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::openNext (ExFatFiledirFile,
            oflag_t oflag = 0X00 
            )
            -
            -

            Open the next file or subdirectory in a directory.

            -
            Parameters
            - - - -
            [in]dirFileAn open instance for the directory containing the file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see open(ExFatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openRoot()

            - -
            -
            - - - - - - - - -
            bool ExFatFile::openRoot (ExFatVolumevol)
            -
            -

            Open a volume's root directory.

            -
            Parameters
            - - -
            [in]volThe FAT volume containing the root directory to be opened.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ExFatFile::operator bool ()
            -
            -inline
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - - - -
            int ExFatFile::peek ()
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - - - - -
            bool ExFatFile::preAllocate (uint64_t length)
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will have zero validLength and dataLength will equal the requested length.

            -
            Parameters
            - - -
            [in]lengthsize of allocated space in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - - - - -
            size_t ExFatFile::printAccessDateTime (print_tpr)
            -
            -

            Print a file's access date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - - - - -
            size_t ExFatFile::printCreateDateTime (print_tpr)
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::printField (Type value,
            char term 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - - - - -
            size_t ExFatFile::printFileSize (print_tpr)
            -
            -

            Print a file's size in bytes.

            Parameters
            - - -
            [in]prPrtin stream for the output.
            -
            -
            -
            Returns
            The number of bytes printed.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - - - - -
            size_t ExFatFile::printModifyDateTime (print_tpr)
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName()

            - -
            -
            - - - - - - - - -
            size_t ExFatFile::printName (print_tpr)
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ExFatFile::read ()
            -
            -inline
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            int ExFatFile::read (void * buf,
            size_t count 
            )
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - - - -
            bool ExFatFile::remove ()
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - - - - -
            bool ExFatFile::remove (const ExChar_t * path)
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - - - - -
            bool ExFatFile::rename (const ExChar_t * newPath)
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::rename (ExFatFiledirFile,
            const ExChar_t * newPath 
            )
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::rewind ()
            -
            -inline
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - - - -
            bool ExFatFile::rmdir ()
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::seekCur (int64_t offset)
            -
            -inline
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::seekEnd (int64_t offset = 0)
            -
            -inline
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - - - - -
            bool ExFatFile::seekSet (uint64_t pos)
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - - - -
            bool ExFatFile::sync ()
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -

            Truncate a file at the current file position.

            -
            Returns
            true for success or false for failure. Set a file's timestamps in its directory entry.
            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date and time.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - - - -
            bool ExFatFile::truncate ()
            -
            -

            Truncate a file at the current file position. will be maintained if it is less than or equal to length otherwise it will be set to end of file.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::truncate (uint64_t length)
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ validLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::validLength ()
            -
            -inline
            -
            -
            Returns
            The valid number of bytes in a file.
            - -
            -
            - -

            ◆ write() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::write (const char * str)
            -
            -inline
            -
            -

            Write a string to a file. Used by the Arduino Print class.

            Parameters
            - - -
            [in]strPointer to the string. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            count of characters written for success or -1 for failure.
            - -
            -
            - -

            ◆ write() [2/3]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::write (const void * buf,
            size_t count 
            )
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always count.
            - -
            -
            - -

            ◆ write() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::write (uint8_t b)
            -
            -inline
            -
            -

            Write a single byte.

            Parameters
            - - -
            [in]bThe byte to be written.
            -
            -
            -
            Returns
            +1 for success or zero for failure.
            - -
            -
            -

            Friends And Related Function Documentation

            - -

            ◆ ExFatVolume

            - -
            -
            - - - - - -
            - - - - -
            friend class ExFatVolume
            -
            -friend
            -
            -

            ExFatVolume allowed access to private members.

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatFile.h
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatFile.cpp
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatFilePrint.cpp
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatFileWrite.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_file__inherit__graph.png deleted file mode 100644 index d184b1ab8349947a1da3e1b36c03a5e072e95ef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2379 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 - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ExFatFormatter Member List
            -
            -
            - -

            This is the complete list of members for ExFatFormatter, including all inherited members.

            - - -
            format(BlockDevice *dev, uint8_t *secBuf, print_t *pr=NULL)ExFatFormatter
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_formatter.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_formatter.html deleted file mode 100644 index 49e61abb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_formatter.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: ExFatFormatter Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            ExFatFormatter Class Reference
            -
            -
            - -

            Format an exFAT volume. - More...

            - -

            #include <ExFatFormatter.h>

            - - - - -

            -Public Member Functions

            bool format (BlockDevice *dev, uint8_t *secBuf, print_t *pr=NULL)
             
            -

            Detailed Description

            -

            Format an exFAT volume.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Member Function Documentation

            - -

            ◆ format()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFormatter::format (BlockDevicedev,
            uint8_t * secBuf,
            print_tpr = NULL 
            )
            -
            -

            Format an exFAT volume.

            -
            Parameters
            - - - - -
            [in]devBlock device for volume.
            [in]secBufbuffer for writing to volume.
            [in]prPrint device for progress output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatFormatter.h
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatFormatter.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition-members.html deleted file mode 100644 index 0c9d0e42..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ExFatPartition Member List
            -
            -
            - -

            This is the complete list of members for ExFatPartition, including all inherited members.

            - - - - - - - - - - - - - - - - - - - -
            bytesPerCluster() constExFatPartitioninline
            bytesPerClusterShift() constExFatPartitioninline
            bytesPerSector() constExFatPartitioninline
            bytesPerSectorShift() constExFatPartitioninline
            cacheClear()ExFatPartitioninline
            clusterCount() constExFatPartitioninline
            clusterHeapStartSector() constExFatPartitioninline
            ExFatFile classExFatPartitionfriend
            ExFatPartition() (defined in ExFatPartition)ExFatPartitioninline
            fatLength() constExFatPartitioninline
            fatStartSector() constExFatPartitioninline
            fatType() constExFatPartitioninline
            freeClusterCount()ExFatPartition
            init(BlockDevice *dev, uint8_t part)ExFatPartition
            rootDirectoryCluster() constExFatPartitioninline
            rootLength()ExFatPartition
            sectorsPerCluster() constExFatPartitioninline
            sectorsPerClusterShift() constExFatPartitioninline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition.html deleted file mode 100644 index fd3dbb45..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition.html +++ /dev/null @@ -1,578 +0,0 @@ - - - - - - - -SdFat: ExFatPartition Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            ExFatPartition Class Reference
            -
            -
            - -

            Access exFat partitions on raw file devices. - More...

            - -

            #include <ExFatPartition.h>

            -
            -Inheritance diagram for ExFatPartition:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            uint32_t bytesPerCluster () const
             
            uint8_t bytesPerClusterShift () const
             
            uint16_t bytesPerSector () const
             
            uint8_t bytesPerSectorShift () const
             
            uint8_t * cacheClear ()
             
            uint32_t clusterCount () const
             
            uint32_t clusterHeapStartSector () const
             
            uint32_t fatLength () const
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            uint32_t freeClusterCount ()
             
            bool init (BlockDevice *dev, uint8_t part)
             
            uint32_t rootDirectoryCluster () const
             
            uint32_t rootLength ()
             
            uint32_t sectorsPerCluster () const
             
            uint8_t sectorsPerClusterShift () const
             
            - - - -

            -Friends

            class ExFatFile
             
            -

            Detailed Description

            -

            Access exFat partitions on raw file devices.

            -

            Member Function Documentation

            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::bytesPerCluster () const
            -
            -inline
            -
            -
            Returns
            the number of bytes in a cluster.
            - -
            -
            - -

            ◆ bytesPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::bytesPerClusterShift () const
            -
            -inline
            -
            -
            Returns
            the power of two for bytesPerCluster.
            - -
            -
            - -

            ◆ bytesPerSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t ExFatPartition::bytesPerSector () const
            -
            -inline
            -
            -
            Returns
            the number of bytes in a sector.
            - -
            -
            - -

            ◆ bytesPerSectorShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::bytesPerSectorShift () const
            -
            -inline
            -
            -
            Returns
            the power of two for bytesPerSector.
            - -
            -
            - -

            ◆ cacheClear()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t* ExFatPartition::cacheClear ()
            -
            -inline
            -
            -

            Clear the cache and returns a pointer to the cache. Not for normal apps.

            Returns
            A pointer to the cache buffer or zero if an error occurs.
            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::clusterCount () const
            -
            -inline
            -
            -
            Returns
            the cluster count for the partition.
            - -
            -
            - -

            ◆ clusterHeapStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::clusterHeapStartSector () const
            -
            -inline
            -
            -
            Returns
            the cluster heap start sector.
            - -
            -
            - -

            ◆ fatLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::fatLength () const
            -
            -inline
            -
            -
            Returns
            the FAT length in sectors
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::fatStartSector () const
            -
            -inline
            -
            -
            Returns
            the FAT start sector number.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::fatType () const
            -
            -inline
            -
            -
            Returns
            Type FAT_TYPE_EXFAT for exFAT partition or zero for error.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - - - -
            uint32_t ExFatPartition::freeClusterCount ()
            -
            -
            Returns
            the free cluster count.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatPartition::init (BlockDevicedev,
            uint8_t part 
            )
            -
            -

            Initialize a exFAT partition.

            Parameters
            - - - -
            [in]devThe blockDevice for the partition.
            [in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in sector zero.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rootDirectoryCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::rootDirectoryCluster () const
            -
            -inline
            -
            -
            Returns
            the root directory start cluster number.
            - -
            -
            - -

            ◆ rootLength()

            - -
            -
            - - - - - - - -
            uint32_t ExFatPartition::rootLength ()
            -
            -
            Returns
            the root directory length.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::sectorsPerCluster () const
            -
            -inline
            -
            -
            Returns
            the number of sectors in a cluster.
            - -
            -
            - -

            ◆ sectorsPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::sectorsPerClusterShift () const
            -
            -inline
            -
            -
            Returns
            the power of two for sectors per cluster.
            - -
            -
            -

            Friends And Related Function Documentation

            - -

            ◆ ExFatFile

            - -
            -
            - - - - - -
            - - - - -
            friend class ExFatFile
            -
            -friend
            -
            -

            ExFatFile allowed access to private members.

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatPartition.h
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatPartition.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_partition__inherit__graph.png deleted file mode 100644 index 0bebc9068dbf9db3deeb18d3f48c9f0d20c8cc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3161 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume-members.html deleted file mode 100644 index 29df91d9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ExFatVolume Member List
            -
            -
            - -

            This is the complete list of members for ExFatVolume, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(BlockDevice *dev, bool setCwv=true, uint8_t part=1)ExFatVolumeinline
            bytesPerCluster() constExFatPartitioninline
            bytesPerClusterShift() constExFatPartitioninline
            bytesPerSector() constExFatPartitioninline
            bytesPerSectorShift() constExFatPartitioninline
            cacheClear()ExFatPartitioninline
            chdir()ExFatVolumeinline
            chdir(const ExChar_t *path)ExFatVolume
            chdir(const String &path)ExFatVolumeinline
            chvol()ExFatVolumeinline
            clusterCount() constExFatPartitioninline
            clusterHeapStartSector() constExFatPartitioninline
            cwv()ExFatVolumeinlinestatic
            ExFatPartition() (defined in ExFatPartition)ExFatPartitioninline
            ExFatVolume() (defined in ExFatVolume)ExFatVolumeinline
            exists(const ExChar_t *path)ExFatVolumeinline
            exists(const String &path)ExFatVolumeinline
            fatLength() constExFatPartitioninline
            fatStartSector() constExFatPartitioninline
            fatType() constExFatPartitioninline
            freeClusterCount()ExFatPartition
            init(BlockDevice *dev, uint8_t part)ExFatPartition
            ls(print_t *pr, uint8_t flags=0)ExFatVolumeinline
            ls(print_t *pr, const ExChar_t *path, uint8_t flags)ExFatVolumeinline
            ls()ExFatVolumeinline
            ls(uint8_t flags)ExFatVolumeinline
            ls(const ExChar_t *path, uint8_t flags=0)ExFatVolumeinline
            mkdir(const ExChar_t *path, bool pFlag=true)ExFatVolumeinline
            mkdir(const String &path, bool pFlag=true)ExFatVolumeinline
            open(const ExChar_t *path, oflag_t oflag=0X00)ExFatVolumeinline
            open(const String &path, oflag_t oflag=0X00)ExFatVolumeinline
            remove(const ExChar_t *path)ExFatVolumeinline
            remove(const String &path)ExFatVolumeinline
            rename(const ExChar_t *oldPath, const ExChar_t *newPath)ExFatVolumeinline
            rename(const String &oldPath, const String &newPath)ExFatVolumeinline
            rmdir(const ExChar_t *path)ExFatVolumeinline
            rmdir(const String &path)ExFatVolumeinline
            rootDirectoryCluster() constExFatPartitioninline
            rootLength()ExFatPartition
            sectorsPerCluster() constExFatPartitioninline
            sectorsPerClusterShift() constExFatPartitioninline
            truncate(const ExChar_t *path, uint64_t length)ExFatVolumeinline
            truncate(const String &path, uint64_t length)ExFatVolumeinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume.html deleted file mode 100644 index abdeff84..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume.html +++ /dev/null @@ -1,1612 +0,0 @@ - - - - - - - -SdFat: ExFatVolume Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            exFAT volume. - More...

            - -

            #include <ExFatVolume.h>

            -
            -Inheritance diagram for ExFatVolume:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for ExFatVolume:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (BlockDevice *dev, bool setCwv=true, uint8_t part=1)
             
            uint32_t bytesPerCluster () const
             
            uint8_t bytesPerClusterShift () const
             
            uint16_t bytesPerSector () const
             
            uint8_t bytesPerSectorShift () const
             
            uint8_t * cacheClear ()
             
            bool chdir ()
             
            bool chdir (const ExChar_t *path)
             
            bool chdir (const String &path)
             
            void chvol ()
             
            uint32_t clusterCount () const
             
            uint32_t clusterHeapStartSector () const
             
            bool exists (const ExChar_t *path)
             
            bool exists (const String &path)
             
            uint32_t fatLength () const
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            uint32_t freeClusterCount ()
             
            bool init (BlockDevice *dev, uint8_t part)
             
            bool ls ()
             
            bool ls (const ExChar_t *path, uint8_t flags=0)
             
            bool ls (print_t *pr, const ExChar_t *path, uint8_t flags)
             
            bool ls (print_t *pr, uint8_t flags=0)
             
            bool ls (uint8_t flags)
             
            bool mkdir (const ExChar_t *path, bool pFlag=true)
             
            bool mkdir (const String &path, bool pFlag=true)
             
            ExFile open (const ExChar_t *path, oflag_t oflag=0X00)
             
            ExFile open (const String &path, oflag_t oflag=0X00)
             
            bool remove (const ExChar_t *path)
             
            bool remove (const String &path)
             
            bool rename (const ExChar_t *oldPath, const ExChar_t *newPath)
             
            bool rename (const String &oldPath, const String &newPath)
             
            bool rmdir (const ExChar_t *path)
             
            bool rmdir (const String &path)
             
            uint32_t rootDirectoryCluster () const
             
            uint32_t rootLength ()
             
            uint32_t sectorsPerCluster () const
             
            uint8_t sectorsPerClusterShift () const
             
            bool truncate (const ExChar_t *path, uint64_t length)
             
            bool truncate (const String &path, uint64_t length)
             
            - - - -

            -Static Public Member Functions

            static ExFatVolumecwv ()
             
            -

            Detailed Description

            -

            exFAT volume.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Member Function Documentation

            - -

            ◆ begin()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::begin (BlockDevicedev,
            bool setCwv = true,
            uint8_t part = 1 
            )
            -
            -inline
            -
            -

            Initialize an FatVolume object.

            Parameters
            - - - - -
            [in]devDevice block driver.
            [in]setCwvSet current working volume if true.
            [in]partpartition to initialize.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::bytesPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            the number of bytes in a cluster.
            - -
            -
            - -

            ◆ bytesPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::bytesPerClusterShift () const
            -
            -inlineinherited
            -
            -
            Returns
            the power of two for bytesPerCluster.
            - -
            -
            - -

            ◆ bytesPerSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t ExFatPartition::bytesPerSector () const
            -
            -inlineinherited
            -
            -
            Returns
            the number of bytes in a sector.
            - -
            -
            - -

            ◆ bytesPerSectorShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::bytesPerSectorShift () const
            -
            -inlineinherited
            -
            -
            Returns
            the power of two for bytesPerSector.
            - -
            -
            - -

            ◆ cacheClear()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t* ExFatPartition::cacheClear ()
            -
            -inlineinherited
            -
            -

            Clear the cache and returns a pointer to the cache. Not for normal apps.

            Returns
            A pointer to the cache buffer or zero if an error occurs.
            - -
            -
            - -

            ◆ chdir() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatVolume::chdir ()
            -
            -inline
            -
            -

            Set volume working directory to root.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [2/3]

            - -
            -
            - - - - - - - - -
            bool ExFatVolume::chdir (const ExChar_t * path)
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::chdir (const String & path)
            -
            -inline
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chvol()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatVolume::chvol ()
            -
            -inline
            -
            -

            Change global working volume to this volume.

            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::clusterCount () const
            -
            -inlineinherited
            -
            -
            Returns
            the cluster count for the partition.
            - -
            -
            - -

            ◆ clusterHeapStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::clusterHeapStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            the cluster heap start sector.
            - -
            -
            - -

            ◆ cwv()

            - -
            -
            - - - - - -
            - - - - - - - -
            static ExFatVolume* ExFatVolume::cwv ()
            -
            -inlinestatic
            -
            -
            Returns
            current working volume.
            - -
            -
            - -

            ◆ exists() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::exists (const ExChar_t * path)
            -
            -inline
            -
            -

            Test for the existence of a file.

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ exists() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::exists (const String & path)
            -
            -inline
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fatLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::fatLength () const
            -
            -inlineinherited
            -
            -
            Returns
            the FAT length in sectors
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::fatStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            the FAT start sector number.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::fatType () const
            -
            -inlineinherited
            -
            -
            Returns
            Type FAT_TYPE_EXFAT for exFAT partition or zero for error.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::freeClusterCount ()
            -
            -inherited
            -
            -
            Returns
            the free cluster count.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatPartition::init (BlockDevicedev,
            uint8_t part 
            )
            -
            -inherited
            -
            -

            Initialize a exFAT partition.

            Parameters
            - - - -
            [in]devThe blockDevice for the partition.
            [in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in sector zero.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatVolume::ls ()
            -
            -inline
            -
            -

            List the directory contents of the root directory to Serial.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::ls (const ExChar_t * path,
            uint8_t flags = 0 
            )
            -
            -inline
            -
            -

            List the directory contents of a directory to Serial.

            -
            Parameters
            - - - -
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::ls (print_tpr,
            const ExChar_t * path,
            uint8_t flags 
            )
            -
            -inline
            -
            -

            List the contents of a directory.

            -
            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::ls (print_tpr,
            uint8_t flags = 0 
            )
            -
            -inline
            -
            -

            List the directory contents of the root directory.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::ls (uint8_t flags)
            -
            -inline
            -
            -

            List the directory contents of the volume root to Serial.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::mkdir (const ExChar_t * path,
            bool pFlag = true 
            )
            -
            -inline
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::mkdir (const String & path,
            bool pFlag = true 
            )
            -
            -inline
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ExFile ExFatVolume::open (const ExChar_t * path,
            oflag_t oflag = 0X00 
            )
            -
            -inline
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a ExFile object.
            - -
            -
            - -

            ◆ open() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ExFile ExFatVolume::open (const String & path,
            oflag_t oflag = 0X00 
            )
            -
            -inline
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen oflag flags.
            -
            -
            -
            Returns
            a ExFile object.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::remove (const ExChar_t * path)
            -
            -inline
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::remove (const String & path)
            -
            -inline
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::rename (const ExChar_t * oldPath,
            const ExChar_t * newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::rename (const String & oldPath,
            const String & newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::rmdir (const ExChar_t * path)
            -
            -inline
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::rmdir (const String & path)
            -
            -inline
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rootDirectoryCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::rootDirectoryCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            the root directory start cluster number.
            - -
            -
            - -

            ◆ rootLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::rootLength ()
            -
            -inherited
            -
            -
            Returns
            the root directory length.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::sectorsPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            the number of sectors in a cluster.
            - -
            -
            - -

            ◆ sectorsPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::sectorsPerClusterShift () const
            -
            -inlineinherited
            -
            -
            Returns
            the power of two for sectors per cluster.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::truncate (const ExChar_t * path,
            uint64_t length 
            )
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::truncate (const String & path,
            uint64_t length 
            )
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatVolume.h
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatVolume.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_fat_volume__coll__graph.png deleted file mode 100644 index 561a21ffd9bb8738eab626a19fa0b1f3c0e021c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file-members.html deleted file mode 100644 index 05f8ba27..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file-members.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ExFile Member List
            -
            -
            - -

            This is the complete list of members for ExFile, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()StreamFile< ExFatFile, uint64_t >inline
            available64()ExFatFileinline
            clearError()ExFatFileinline
            clearWriteError()ExFatFileinline
            close()ExFatFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)ExFatFile
            curPosition() constExFatFileinline
            dataLength()ExFatFileinline
            dirIndex()ExFatFileinline
            ExFatFile()ExFatFileinline
            exists(const ExChar_t *path)ExFatFileinline
            fgetpos(fspos_t *pos)ExFatFile
            fgets(char *str, int num, char *delim=NULL)ExFatFile
            fileSize()ExFatFileinline
            firstSector()ExFatFile
            flush()StreamFile< ExFatFile, uint64_t >inline
            fsetpos(const fspos_t *pos)ExFatFile
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)ExFatFile
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)ExFatFile
            getError()ExFatFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)ExFatFile
            getName(ExChar_t *name, size_t size)ExFatFile
            getWriteError()ExFatFileinline
            isContiguous() constExFatFileinline
            isDir() constExFatFileinline
            isDirectory()StreamFile< ExFatFile, uint64_t >inline
            isFile() constExFatFileinline
            isHidden() constExFatFileinline
            isOpen() constExFatFileinline
            isReadable() constExFatFileinline
            isReadOnly() constExFatFileinline
            isRoot() constExFatFileinline
            isSubDir() constExFatFileinline
            isWritable() constExFatFileinline
            ls(print_t *pr)ExFatFile
            ls(print_t *pr, uint8_t flags, uint8_t indent=0)ExFatFile
            mkdir(ExFatFile *parent, const ExChar_t *path, bool pFlag=true)ExFatFile
            name() constStreamFile< ExFatFile, uint64_t >inline
            open(ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)ExFatFile
            open(ExFatVolume *vol, const ExChar_t *path, int oflag)ExFatFile
            open(ExFatFile *dirFile, uint32_t index, oflag_t oflag)ExFatFile
            open(const ExChar_t *path, int oflag=0X00)ExFatFile
            openNext(ExFatFile *dirFile, oflag_t oflag=0X00)ExFatFile
            openNextFile(oflag_t oflag=0X00)ExFileinline
            openRoot(ExFatVolume *vol)ExFatFile
            operator bool()ExFatFileinline
            peek()StreamFile< ExFatFile, uint64_t >inline
            position()StreamFile< ExFatFile, uint64_t >inline
            preAllocate(uint64_t length)ExFatFile
            printAccessDateTime(print_t *pr)ExFatFile
            printCreateDateTime(print_t *pr)ExFatFile
            printField(double value, char term, uint8_t prec=2)ExFatFileinline
            printField(float value, char term, uint8_t prec=2)ExFatFileinline
            printField(Type value, char term)ExFatFileinline
            printFileSize(print_t *pr)ExFatFile
            printModifyDateTime(print_t *pr)ExFatFile
            printName(print_t *pr)ExFatFile
            read()StreamFile< ExFatFile, uint64_t >inline
            ExFatFile::read(void *buf, size_t count)ExFatFile
            remove()ExFatFile
            remove(const ExChar_t *path)ExFatFile
            rename(const ExChar_t *newPath)ExFatFile
            rename(ExFatFile *dirFile, const ExChar_t *newPath)ExFatFile
            rewind()ExFatFileinline
            rewindDirectory()StreamFile< ExFatFile, uint64_t >inline
            rmdir()ExFatFile
            seek(uint64_t pos)StreamFile< ExFatFile, uint64_t >inline
            seekCur(int64_t offset)ExFatFileinline
            seekEnd(int64_t offset=0)ExFatFileinline
            seekSet(uint64_t pos)ExFatFile
            size()StreamFile< ExFatFile, uint64_t >inline
            StreamFile() (defined in StreamFile< ExFatFile, uint64_t >)StreamFile< ExFatFile, uint64_t >inline
            sync()ExFatFile
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)ExFatFile
            truncate()ExFatFile
            truncate(uint64_t length)ExFatFileinline
            validLength()ExFatFileinline
            write(uint8_t b)StreamFile< ExFatFile, uint64_t >inline
            write(const uint8_t *buffer, size_t size)StreamFile< ExFatFile, uint64_t >inline
            ExFatFile::write(const char *str)ExFatFileinline
            ExFatFile::write(const void *buf, size_t count)ExFatFile
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file.html deleted file mode 100644 index bea831d3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file.html +++ /dev/null @@ -1,3034 +0,0 @@ - - - - - - - -SdFat: ExFile Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            ExFile Class Reference
            -
            -
            - -

            exFAT file with Arduino Stream. - More...

            - -

            #include <ExFatFile.h>

            -
            -Inheritance diagram for ExFile:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for ExFile:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            uint64_t available64 ()
             
            void clearError ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            uint64_t curPosition () const
             
            uint64_t dataLength ()
             
            uint32_t dirIndex ()
             
            bool exists (const ExChar_t *path)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=NULL)
             
            uint64_t fileSize ()
             
            uint32_t firstSector ()
             
            void flush ()
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            size_t getName (ExChar_t *name, size_t size)
             
            bool getWriteError ()
             
            bool isContiguous () const
             
            bool isDir () const
             
            bool isDirectory ()
             
            bool isFile () const
             
            bool isHidden () const
             
            bool isOpen () const
             
            bool isReadable () const
             
            bool isReadOnly () const
             
            bool isRoot () const
             
            bool isSubDir () const
             
            bool isWritable () const
             
            bool ls (print_t *pr)
             
            bool ls (print_t *pr, uint8_t flags, uint8_t indent=0)
             
            bool mkdir (ExFatFile *parent, const ExChar_t *path, bool pFlag=true)
             
            const char * name () const
             
            bool open (const ExChar_t *path, int oflag=0X00)
             
            bool open (ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)
             
            bool open (ExFatFile *dirFile, uint32_t index, oflag_t oflag)
             
            bool open (ExFatVolume *vol, const ExChar_t *path, int oflag)
             
            bool openNext (ExFatFile *dirFile, oflag_t oflag=0X00)
             
            ExFile openNextFile (oflag_t oflag=0X00)
             
            bool openRoot (ExFatVolume *vol)
             
             operator bool ()
             
            int peek ()
             
            uint64_t position ()
             
            bool preAllocate (uint64_t length)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            bool remove ()
             
            bool remove (const ExChar_t *path)
             
            bool rename (const ExChar_t *newPath)
             
            bool rename (ExFatFile *dirFile, const ExChar_t *newPath)
             
            void rewind ()
             
            void rewindDirectory ()
             
            bool rmdir ()
             
            bool seek (uint64_t pos)
             
            bool seekCur (int64_t offset)
             
            bool seekEnd (int64_t offset=0)
             
            bool seekSet (uint64_t pos)
             
            uint64_t size ()
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint64_t length)
             
            uint64_t validLength ()
             
            size_t write (const char *str)
             
            size_t write (const uint8_t *buffer, size_t size)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            exFAT file with Arduino Stream.

            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< ExFatFile , uint64_t >::available ()
            -
            -inlineinherited
            -
            -
            Returns
            number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
            - -
            -
            - -

            ◆ available64()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::available64 ()
            -
            -inlineinherited
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
            - -
            -
            - -

            ◆ clearError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::clearError ()
            -
            -inlineinherited
            -
            -

            Clear all error bits.

            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::clearWriteError ()
            -
            -inlineinherited
            -
            -

            Clear writeError.

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::close ()
            -
            -inherited
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -inherited
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Parameters may be nullptr.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::curPosition () const
            -
            -inlineinherited
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dataLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::dataLength ()
            -
            -inlineinherited
            -
            -
            Returns
            Total data length for file.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatFile::dirIndex ()
            -
            -inlineinherited
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::exists (const ExChar_t * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ExFatFile::fgetpos (fspos_t * pos)
            -
            -inherited
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int ExFatFile::fgets (char * str,
            int num,
            char * delim = NULL 
            )
            -
            -inherited
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::fileSize ()
            -
            -inlineinherited
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatFile::firstSector ()
            -
            -inherited
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StreamFile< ExFatFile , uint64_t >::flush ()
            -
            -inlineinherited
            -
            -

            Ensure that any bytes written to the file are saved to the SD card.

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ExFatFile::fsetpos (const fspos_t * pos)
            -
            -inherited
            -
            -

            Set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatFile::getError ()
            -
            -inlineinherited
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::getName (ExChar_t * name,
            size_t size 
            )
            -
            -inherited
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]sizeThe size of the array in characters.
            -
            -
            -
            Returns
            the name length.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::getWriteError ()
            -
            -inlineinherited
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isContiguous () const
            -
            -inlineinherited
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isDir () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a directory.
            - -
            -
            - -

            ◆ isDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool StreamFile< ExFatFile , uint64_t >::isDirectory ()
            -
            -inlineinherited
            -
            -

            This function reports if the current file is a directory or not.

            Returns
            true if the file is a directory.
            - -
            -
            - -

            ◆ isFile()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isFile () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a normal file.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isHidden () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a hidden.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isOpen () const
            -
            -inlineinherited
            -
            -
            Returns
            true if the file is open.
            - -
            -
            - -

            ◆ isReadable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isReadable () const
            -
            -inlineinherited
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ isReadOnly()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isReadOnly () const
            -
            -inlineinherited
            -
            -
            Returns
            True if file is read-only
            - -
            -
            - -

            ◆ isRoot()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isRoot () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the root directory.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isSubDir () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a subdirectory.
            - -
            -
            - -

            ◆ isWritable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::isWritable () const
            -
            -inlineinherited
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::ls (print_tpr)
            -
            -inherited
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]prPrint stream for list.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::ls (print_tpr,
            uint8_t flags,
            uint8_t indent = 0 
            )
            -
            -inherited
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Parameters
            - - -
            [in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::mkdir (ExFatFileparent,
            const ExChar_t * path,
            bool pFlag = true 
            )
            -
            -inherited
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]parentAn open directory file that will contain the new directory.
            [in]pathA path with a valid name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ name()

            - -
            -
            - - - - - -
            - - - - - - - -
            const char* StreamFile< ExFatFile , uint64_t >::name () const
            -
            -inlineinherited
            -
            -

            No longer implemented due to Long File Names.

            -

            Use getName(char* name, size_t size).

            Returns
            a pointer to replacement suggestion.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (const ExChar_t * path,
            int oflag = 0X00 
            )
            -
            -inherited
            -
            -

            Open a file in the current working directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see ExFatFile::open(ExFatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (ExFatFiledirFile,
            const ExChar_t * path,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirFileAn open directory containing the file to be opened.
            [in]pathThe path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list. Only one of O_RDONLY, O_READ, O_WRONLY, O_WRITE, or O_RDWR is allowed.
            -
            -
            -

            O_RDONLY - Open for reading.

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one file object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (ExFatFiledirFile,
            uint32_t index,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirFileAn open ExFatFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see ExFatFile::open(ExFatFile*, const ExChar_t*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::open (ExFatVolumevol,
            const ExChar_t * path,
            int oflag 
            )
            -
            -inherited
            -
            -

            Open a file in the volume working directory.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathwith a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see open(ExFatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::openNext (ExFatFiledirFile,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            Open the next file or subdirectory in a directory.

            -
            Parameters
            - - - -
            [in]dirFileAn open instance for the directory containing the file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see open(ExFatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNextFile()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ExFile ExFile::openNextFile (oflag_t oflag = 0X00)
            -
            -inline
            -
            -

            Opens the next file or folder in a directory.

            -
            Parameters
            - - -
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FatStream object.
            - -
            -
            - -

            ◆ openRoot()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::openRoot (ExFatVolumevol)
            -
            -inherited
            -
            -

            Open a volume's root directory.

            -
            Parameters
            - - -
            [in]volThe FAT volume containing the root directory to be opened.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ExFatFile::operator bool ()
            -
            -inlineinherited
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< ExFatFile , uint64_t >::peek ()
            -
            -inlineinherited
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ position()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t StreamFile< ExFatFile , uint64_t >::position ()
            -
            -inlineinherited
            -
            -
            Returns
            the current file position.
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::preAllocate (uint64_t length)
            -
            -inherited
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will have zero validLength and dataLength will equal the requested length.

            -
            Parameters
            - - -
            [in]lengthsize of allocated space in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::printAccessDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's access date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::printCreateDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::printField (Type value,
            char term 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::printFileSize (print_tpr)
            -
            -inherited
            -
            -

            Print a file's size in bytes.

            Parameters
            - - -
            [in]prPrtin stream for the output.
            -
            -
            -
            Returns
            The number of bytes printed.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::printModifyDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::printName (print_tpr)
            -
            -inherited
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< ExFatFile , uint64_t >::read ()
            -
            -inlineinherited
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int ExFatFile::read (void * buf,
            size_t count 
            )
            -
            -inherited
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::remove ()
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::remove (const ExChar_t * path)
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::rename (const ExChar_t * newPath)
            -
            -inherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::rename (ExFatFiledirFile,
            const ExChar_t * newPath 
            )
            -
            -inherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatFile::rewind ()
            -
            -inlineinherited
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rewindDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StreamFile< ExFatFile , uint64_t >::rewindDirectory ()
            -
            -inlineinherited
            -
            -

            Rewind a file if it is a directory

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::rmdir ()
            -
            -inherited
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seek()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool StreamFile< ExFatFile , uint64_t >::seek (uint64_t pos)
            -
            -inlineinherited
            -
            -

            Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

            -
            Parameters
            - - -
            [in]posthe new file position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::seekCur (int64_t offset)
            -
            -inlineinherited
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::seekEnd (int64_t offset = 0)
            -
            -inlineinherited
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::seekSet (uint64_t pos)
            -
            -inherited
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ size()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t StreamFile< ExFatFile , uint64_t >::size ()
            -
            -inlineinherited
            -
            -
            Returns
            the file's size.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::sync ()
            -
            -inherited
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -inherited
            -
            -

            Truncate a file at the current file position.

            -
            Returns
            true for success or false for failure. Set a file's timestamps in its directory entry.
            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date and time.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatFile::truncate ()
            -
            -inherited
            -
            -

            Truncate a file at the current file position. will be maintained if it is less than or equal to length otherwise it will be set to end of file.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatFile::truncate (uint64_t length)
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ validLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t ExFatFile::validLength ()
            -
            -inlineinherited
            -
            -
            Returns
            The valid number of bytes in a file.
            - -
            -
            - -

            ◆ write() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t ExFatFile::write (const char * str)
            -
            -inlineinherited
            -
            -

            Write a string to a file. Used by the Arduino Print class.

            Parameters
            - - -
            [in]strPointer to the string. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            count of characters written for success or -1 for failure.
            - -
            -
            - -

            ◆ write() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StreamFile< ExFatFile , uint64_t >::write (const uint8_t * buffer,
            size_t size 
            )
            -
            -inlineinherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufferPointer to the location of the data to be written.
            [in]sizeNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always size.
            - -
            -
            - -

            ◆ write() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t ExFatFile::write (const void * buf,
            size_t count 
            )
            -
            -inherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always count.
            - -
            -
            - -

            ◆ write() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t StreamFile< ExFatFile , uint64_t >::write (uint8_t b)
            -
            -inlineinherited
            -
            -

            Write a byte to a file. Required by the Arduino Print class.

            Parameters
            - - -
            [in]bthe byte to be written. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            1 for success and 0 for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_ex_file__coll__graph.png deleted file mode 100644 index 9a11e99f78527308268d0df7080a80f1d5d6f712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4210 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 - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FatCache Member List
            -
            -
            - -

            This is the complete list of members for FatCache, including all inherited members.

            - - - - - - - - - - - - - - - - -
            buffer()FatCacheinline
            CACHE_FOR_READFatCachestatic
            CACHE_FOR_WRITEFatCachestatic
            CACHE_OPTION_NO_READFatCachestatic
            CACHE_RESERVE_FOR_WRITEFatCachestatic
            CACHE_STATUS_DIRTYFatCachestatic
            CACHE_STATUS_MASKFatCachestatic
            CACHE_STATUS_MIRROR_FATFatCachestatic
            dirty()FatCacheinline
            init(FatPartition *vol)FatCacheinline
            invalidate()FatCacheinline
            isDirty()FatCacheinline
            read(uint32_t sector, uint8_t option)FatCache
            sector()FatCacheinline
            sync()FatCache
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_cache.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_cache.html deleted file mode 100644 index ce6abd7d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_cache.html +++ /dev/null @@ -1,507 +0,0 @@ - - - - - - - -SdFat: FatCache Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Sector cache. - More...

            - -

            #include <FatPartition.h>

            - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            cache_tbuffer ()
             
            void dirty ()
             
            void init (FatPartition *vol)
             
            void invalidate ()
             
            bool isDirty ()
             
            cache_tread (uint32_t sector, uint8_t option)
             
            uint32_t sector ()
             
            bool sync ()
             
            - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const uint8_t CACHE_FOR_READ = 0
             
            static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
             
            static const uint8_t CACHE_OPTION_NO_READ = 4
             
            static const uint8_t CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
             
            static const uint8_t CACHE_STATUS_DIRTY = 1
             
            static const uint8_t CACHE_STATUS_MASK = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT
             
            static const uint8_t CACHE_STATUS_MIRROR_FAT = 2
             
            -

            Detailed Description

            -

            Sector cache.

            -

            Member Function Documentation

            - -

            ◆ buffer()

            - -
            -
            - - - - - -
            - - - - - - - -
            cache_t* FatCache::buffer ()
            -
            -inline
            -
            -
            Returns
            Cache sector address.
            - -
            -
            - -

            ◆ dirty()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatCache::dirty ()
            -
            -inline
            -
            -

            Set current sector dirty.

            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FatCache::init (FatPartitionvol)
            -
            -inline
            -
            -

            Initialize the cache.

            Parameters
            - - -
            [in]volFatPartition that owns this FatCache.
            -
            -
            - -
            -
            - -

            ◆ invalidate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatCache::invalidate ()
            -
            -inline
            -
            -

            Invalidate current cache sector.

            - -
            -
            - -

            ◆ isDirty()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatCache::isDirty ()
            -
            -inline
            -
            -
            Returns
            dirty status
            - -
            -
            - -

            ◆ read()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            cache_t * FatCache::read (uint32_t sector,
            uint8_t option 
            )
            -
            -

            Read a sector into the cache.

            Parameters
            - - - -
            [in]sectorSector to read.
            [in]optionmode for cached sector.
            -
            -
            -
            Returns
            Address of cached sector.
            - -
            -
            - -

            ◆ sector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatCache::sector ()
            -
            -inline
            -
            -
            Returns
            Logical sector number for cached sector.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - - - -
            bool FatCache::sync ()
            -
            -

            Write current sector if dirty.

            Returns
            true for success or false for failure.
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ CACHE_FOR_READ

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_FOR_READ = 0
            -
            -static
            -
            -

            Cache sector for read.

            - -
            -
            - -

            ◆ CACHE_FOR_WRITE

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
            -
            -static
            -
            -

            Cache sector for write.

            - -
            -
            - -

            ◆ CACHE_OPTION_NO_READ

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_OPTION_NO_READ = 4
            -
            -static
            -
            -

            Sync existing sector but do not read new sector.

            - -
            -
            - -

            ◆ CACHE_RESERVE_FOR_WRITE

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
            -
            -static
            -
            -

            Reserve cache sector for write - do not read from sector device.

            - -
            -
            - -

            ◆ CACHE_STATUS_DIRTY

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_STATUS_DIRTY = 1
            -
            -static
            -
            -

            Cached sector is dirty

            - -
            -
            - -

            ◆ CACHE_STATUS_MASK

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_STATUS_MASK = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT
            -
            -static
            -
            -

            Cache sector status bits

            - -
            -
            - -

            ◆ CACHE_STATUS_MIRROR_FAT

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FatCache::CACHE_STATUS_MIRROR_FAT = 2
            -
            -static
            -
            -

            Cashed sector is FAT entry and must be mirrored in second FAT.

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FatLib/FatPartition.h
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatPartition.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file-members.html deleted file mode 100644 index 95dfc857..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file-members.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FatFile Member List
            -
            -
            - -

            This is the complete list of members for FatFile, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()FatFileinline
            available32()FatFileinline
            clearError()FatFileinline
            clearWriteError()FatFileinline
            close()FatFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)FatFile
            createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
            createContiguous(const char *path, uint32_t size)FatFile
            curCluster() constFatFileinline
            curPosition() constFatFileinline
            dirEntry(DirFat_t *dir)FatFile
            dirIndex()FatFileinline
            dirSize()FatFile
            dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
            exists(const char *path)FatFileinline
            FatFile()FatFileinline
            FatFile(const char *path, oflag_t oflag)FatFileinline
            FatVolume classFatFilefriend
            fgetpos(fspos_t *pos)FatFile
            fgets(char *str, int num, char *delim=NULL)FatFile
            fileSize() constFatFileinline
            firstBlock() constFatFileinline
            firstSector() constFatFile
            flush()FatFileinline
            fsetpos(const fspos_t *pos)FatFile
            getAccessDate(uint16_t *pdate)FatFile
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)FatFileinline
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)FatFile
            getError()FatFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)FatFile
            getName(char *name, size_t size)FatFile
            getSFN(char *name)FatFile
            getWriteError()FatFileinline
            isContiguous() constFatFileinline
            isDir() constFatFileinline
            isFile() constFatFileinline
            isHidden() constFatFileinline
            isLFN() constFatFileinline
            isOpen() constFatFileinline
            isReadable() constFatFileinline
            isReadOnly() constFatFileinline
            isRoot() constFatFileinline
            isRoot32() constFatFileinline
            isRootFixed() constFatFileinline
            isSubDir() constFatFileinline
            isSystem() constFatFileinline
            isWritable() constFatFileinline
            legal83Char(uint8_t c)FatFileinlinestatic
            ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
            ls(uint8_t flags=0)FatFileinline
            mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
            open(FatVolume *vol, const char *path, oflag_t oflag)FatFile
            open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
            open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
            open(const char *path, oflag_t oflag=0X00)FatFile
            openNext(FatFile *dirFile, oflag_t oflag=0X00)FatFile
            openRoot(FatVolume *vol)FatFile
            operator bool()FatFileinline
            peek()FatFile
            preAllocate(uint32_t length)FatFile
            printAccessDate(print_t *pr)FatFile
            printAccessDateTime(print_t *pr)FatFileinline
            printCreateDateTime(print_t *pr)FatFile
            printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
            printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
            printField(double value, char term, uint8_t prec=2)FatFileinline
            printField(float value, char term, uint8_t prec=2)FatFileinline
            printField(Type value, char term)FatFileinline
            printFileSize(print_t *pr)FatFile
            printModifyDateTime(print_t *pr)FatFile
            printName(print_t *pr)FatFile
            printName()FatFileinline
            printSFN(print_t *pr)FatFile
            read()FatFileinline
            read(void *buf, size_t count)FatFile
            readDir(DirFat_t *dir)FatFile
            remove()FatFile
            remove(const char *path)FatFile
            rename(const char *newPath)FatFile
            rename(FatFile *dirFile, const char *newPath)FatFile
            rewind()FatFileinline
            rmdir()FatFile
            rmRfStar()FatFile
            seekCur(int32_t offset)FatFileinline
            seekEnd(int32_t offset=0)FatFileinline
            seekSet(uint32_t pos)FatFile
            sync()FatFile
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
            truncate()FatFile
            truncate(uint32_t length)FatFileinline
            write(const char *str)FatFileinline
            write(uint8_t b)FatFileinline
            write(const void *buf, size_t count)FatFile
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file.html deleted file mode 100644 index 40cf1986..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file.html +++ /dev/null @@ -1,3225 +0,0 @@ - - - - - - - -SdFat: FatFile Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Basic file class. - More...

            - -

            #include <FatFile.h>

            -
            -Inheritance diagram for FatFile:
            -
            -
            Inheritance graph
            - - - - - - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            uint32_t available32 ()
             
            void clearError ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            bool createContiguous (const char *path, uint32_t size)
             
            bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
             
            uint32_t curCluster () const
             
            uint32_t curPosition () const
             
            bool dirEntry (DirFat_t *dir)
             
            uint16_t dirIndex ()
             
            uint32_t dirSize ()
             
            void dmpFile (print_t *pr, uint32_t pos, size_t n)
             
            bool exists (const char *path)
             
             FatFile ()
             
             FatFile (const char *path, oflag_t oflag)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=NULL)
             
            uint32_t fileSize () const
             
            uint32_t firstBlock () const
             
            uint32_t firstSector () const
             
            void flush ()
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDate (uint16_t *pdate)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getName (char *name, size_t size)
             
            bool getSFN (char *name)
             
            bool getWriteError ()
             
            bool isContiguous () const
             
            bool isDir () const
             
            bool isFile () const
             
            bool isHidden () const
             
            bool isLFN () const
             
            bool isOpen () const
             
            bool isReadable () const
             
            bool isReadOnly () const
             
            bool isRoot () const
             
            bool isRoot32 () const
             
            bool isRootFixed () const
             
            bool isSubDir () const
             
            bool isSystem () const
             
            bool isWritable () const
             
            bool ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
             
            bool ls (uint8_t flags=0)
             
            bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
             
            bool open (const char *path, oflag_t oflag=0X00)
             
            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            bool openNext (FatFile *dirFile, oflag_t oflag=0X00)
             
            bool openRoot (FatVolume *vol)
             
             operator bool ()
             
            int peek ()
             
            bool preAllocate (uint32_t length)
             
            size_t printAccessDate (print_t *pr)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName ()
             
            size_t printName (print_t *pr)
             
            size_t printSFN (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            int8_t readDir (DirFat_t *dir)
             
            bool remove ()
             
            bool remove (const char *path)
             
            bool rename (const char *newPath)
             
            bool rename (FatFile *dirFile, const char *newPath)
             
            void rewind ()
             
            bool rmdir ()
             
            bool rmRfStar ()
             
            bool seekCur (int32_t offset)
             
            bool seekEnd (int32_t offset=0)
             
            bool seekSet (uint32_t pos)
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint32_t length)
             
            size_t write (const char *str)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            - - - - - - - -

            -Static Public Member Functions

            static bool legal83Char (uint8_t c)
             
            static void printFatDate (print_t *pr, uint16_t fatDate)
             
            static void printFatTime (print_t *pr, uint16_t fatTime)
             
            - - - -

            -Friends

            class FatVolume
             
            -

            Detailed Description

            -

            Basic file class.

            -

            Constructor & Destructor Documentation

            - -

            ◆ FatFile() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            FatFile::FatFile ()
            -
            -inline
            -
            -

            Create an instance.

            - -
            -
            - -

            ◆ FatFile() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            FatFile::FatFile (const char * path,
            oflag_t oflag 
            )
            -
            -inline
            -
            -

            Create a file object and open it in the current working directory.

            -
            Parameters
            - - - -
            [in]pathA path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int FatFile::available ()
            -
            -inline
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. INT_MAX is returned for very large files.
            -

            available64() is recomended for very large files.

            -

            Zero is returned for directory files.

            - -
            -
            - -

            ◆ available32()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::available32 ()
            -
            -inline
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
            - -
            -
            - -

            ◆ clearError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::clearError ()
            -
            -inline
            -
            -

            Clear all error bits.

            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::clearWriteError ()
            -
            -inline
            -
            -

            Set writeError to zero

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - - - -
            bool FatFile::close ()
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Set the contiguous flag if the file is contiguous. The parameters may be nullptr to only set the flag.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ createContiguous() [1/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::createContiguous (const char * path,
            uint32_t size 
            )
            -
            -

            Create and open a new contiguous file of a specified size.

            -
            Parameters
            - - - -
            [in]pathA path with a valid file name.
            [in]sizeThe desired file size.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ createContiguous() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::createContiguous (FatFiledirFile,
            const char * path,
            uint32_t size 
            )
            -
            -

            Create and open a new contiguous file of a specified size.

            -
            Parameters
            - - - - -
            [in]dirFileThe directory where the file will be created.
            [in]pathA path with a valid file name.
            [in]sizeThe desired file size.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::curCluster () const
            -
            -inline
            -
            -
            Returns
            The current cluster number for a file or directory.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::curPosition () const
            -
            -inline
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dirEntry()

            - -
            -
            - - - - - - - - -
            bool FatFile::dirEntry (DirFat_t * dir)
            -
            -

            Return a file's directory entry.

            -
            Parameters
            - - -
            [out]dirLocation for return of the file's directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatFile::dirIndex ()
            -
            -inline
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ dirSize()

            - -
            -
            - - - - - - - -
            uint32_t FatFile::dirSize ()
            -
            -
            Returns
            The number of bytes allocated to a directory or zero if an error occurs.
            - -
            -
            - -

            ◆ dmpFile()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            void FatFile::dmpFile (print_tpr,
            uint32_t pos,
            size_t n 
            )
            -
            -

            Dump file in Hex

            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]posStart position in file.
            [in]nnumber of locations to dump.
            -
            -
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::exists (const char * path)
            -
            -inline
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            True if the file exists.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - - - - -
            void FatFile::fgetpos (fspos_t * pos)
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int FatFile::fgets (char * str,
            int num,
            char * delim = NULL 
            )
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::fileSize () const
            -
            -inline
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstBlock()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::firstBlock () const
            -
            -inline
            -
            -
            Returns
            first sector of file or zero for empty file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - - - -
            uint32_t FatFile::firstSector () const
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::flush ()
            -
            -inline
            -
            -

            Arduino name for sync()

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - - - - -
            void FatFile::fsetpos (const fspos_t * pos)
            -
            -

            set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDate()

            - -
            -
            - - - - - - - - -
            bool FatFile::getAccessDate (uint16_t * pdate)
            -
            -

            Get a file's access date.

            -
            Parameters
            - - -
            [out]pdatePacked date for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inline
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimereturn zero since FAT has no time.
            -
            -
            -

            This function is for comparability in FsFile.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatFile::getError ()
            -
            -inline
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -

            Get a file's modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getName (char * name,
            size_t size 
            )
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getSFN()

            - -
            -
            - - - - - - - - -
            bool FatFile::getSFN (char * name)
            -
            -

            Get a file's Short File Name followed by a zero byte.

            -
            Parameters
            - - -
            [out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::getWriteError ()
            -
            -inline
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isContiguous () const
            -
            -inline
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isDir () const
            -
            -inline
            -
            -
            Returns
            True if this is a directory.
            - -
            -
            - -

            ◆ isFile()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isFile () const
            -
            -inline
            -
            -
            Returns
            True if this is a normal file.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isHidden () const
            -
            -inline
            -
            -
            Returns
            True if this is a hidden file.
            - -
            -
            - -

            ◆ isLFN()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isLFN () const
            -
            -inline
            -
            -
            Returns
            true if this file has a Long File Name.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isOpen () const
            -
            -inline
            -
            -
            Returns
            True if this is an open file/directory.
            - -
            -
            - -

            ◆ isReadable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isReadable () const
            -
            -inline
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ isReadOnly()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isReadOnly () const
            -
            -inline
            -
            -
            Returns
            True if file is read-only
            - -
            -
            - -

            ◆ isRoot()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRoot () const
            -
            -inline
            -
            -
            Returns
            True if this is the root directory.
            - -
            -
            - -

            ◆ isRoot32()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRoot32 () const
            -
            -inline
            -
            -
            Returns
            True if this is the FAT32 root directory.
            - -
            -
            - -

            ◆ isRootFixed()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRootFixed () const
            -
            -inline
            -
            -
            Returns
            True if this is the FAT12 of FAT16 root directory.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isSubDir () const
            -
            -inline
            -
            -
            Returns
            True if this is a subdirectory.
            - -
            -
            - -

            ◆ isSystem()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isSystem () const
            -
            -inline
            -
            -
            Returns
            True if this is a system file.
            - -
            -
            - -

            ◆ isWritable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isWritable () const
            -
            -inline
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ legal83Char()

            - -
            -
            - - - - - -
            - - - - - - - - -
            static bool FatFile::legal83Char (uint8_t c)
            -
            -inlinestatic
            -
            -

            Check for a legal 8.3 character.

            Parameters
            - - -
            [in]cCharacter to be checked.
            -
            -
            -
            Returns
            true for a legal 8.3 character.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::ls (print_tpr,
            uint8_t flags = 0,
            uint8_t indent = 0 
            )
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Parameters
            - - -
            [in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::ls (uint8_t flags = 0)
            -
            -inline
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::mkdir (FatFiledir,
            const char * path,
            bool pFlag = true 
            )
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]dirAn open FatFile instance for the directory that will contain the new directory.
            [in]pathA path with a valid name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -

            Open a file in the current working volume.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatFiledirFile,
            const char * path,
            oflag_t oflag 
            )
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirFileAn open FatFile instance for the directory containing the file to be opened.
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list. Only one of O_RDONLY, O_READ, O_WRONLY, O_WRITE, or O_RDWR is allowed.
            -
            -
            -

            O_RDONLY - Open for reading.

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatFiledirFile,
            uint16_t index,
            oflag_t oflag 
            )
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirFileAn open FatFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatVolumevol,
            const char * path,
            oflag_t oflag 
            )
            -
            -

            Open a file in the volume root directory.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathwith a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::openNext (FatFiledirFile,
            oflag_t oflag = 0X00 
            )
            -
            -

            Open the next file or subdirectory in a directory.

            -
            Parameters
            - - - -
            [in]dirFileAn open FatFile instance for the directory containing the file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openRoot()

            - -
            -
            - - - - - - - - -
            bool FatFile::openRoot (FatVolumevol)
            -
            -

            Open a volume's root directory.

            -
            Parameters
            - - -
            [in]volThe FAT volume containing the root directory to be opened.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            FatFile::operator bool ()
            -
            -inline
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - - - -
            int FatFile::peek ()
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - - - - -
            bool FatFile::preAllocate (uint32_t length)
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will contain uninitialized data.

            -
            Parameters
            - - -
            [in]lengthsize of the file in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDate()

            - -
            -
            - - - - - - - - -
            size_t FatFile::printAccessDate (print_tpr)
            -
            -

            Print a file's access date

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printAccessDateTime (print_tpr)
            -
            -inline
            -
            -

            Print a file's access date

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - - - - -
            size_t FatFile::printCreateDateTime (print_tpr)
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of bytes printed.
            - -
            -
            - -

            ◆ printFatDate()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            static void FatFile::printFatDate (print_tpr,
            uint16_t fatDate 
            )
            -
            -static
            -
            -

            Print a directory date field.

            -

            Format is yyyy-mm-dd.

            -
            Parameters
            - - - -
            [in]prPrint stream for output.
            [in]fatDateThe date field from a directory entry.
            -
            -
            - -
            -
            - -

            ◆ printFatTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            static void FatFile::printFatTime (print_tpr,
            uint16_t fatTime 
            )
            -
            -static
            -
            -

            Print a directory time field.

            -

            Format is hh:mm:ss.

            -
            Parameters
            - - - -
            [in]prPrint stream for output.
            [in]fatTimeThe time field from a directory entry.
            -
            -
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (Type value,
            char term 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - - - - -
            size_t FatFile::printFileSize (print_tpr)
            -
            -

            Print a file's size.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - - - - -
            size_t FatFile::printModifyDateTime (print_tpr)
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printName() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            size_t FatFile::printName ()
            -
            -inline
            -
            -

            Print a file's name.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName() [2/2]

            - -
            -
            - - - - - - - - -
            size_t FatFile::printName (print_tpr)
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printSFN()

            - -
            -
            - - - - - - - - -
            size_t FatFile::printSFN (print_tpr)
            -
            -

            Print a file's Short File Name.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int FatFile::read ()
            -
            -inline
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            int FatFile::read (void * buf,
            size_t count 
            )
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1.
            - -
            -
            - -

            ◆ readDir()

            - -
            -
            - - - - - - - - -
            int8_t FatFile::readDir (DirFat_t * dir)
            -
            -

            Read the next directory entry from a directory file.

            -
            Parameters
            - - -
            [out]dirThe DirFat_t struct that will receive the data.
            -
            -
            -
            Returns
            For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - - - -
            bool FatFile::remove ()
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - - - - -
            bool FatFile::remove (const char * path)
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - - - - -
            bool FatFile::rename (const char * newPath)
            -
            -

            Rename a file or subdirectory.

            Note
            the renamed file will be moved to the current volume working directory.
            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::rename (FatFiledirFile,
            const char * newPath 
            )
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::rewind ()
            -
            -inline
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - - - -
            bool FatFile::rmdir ()
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmRfStar()

            - -
            -
            - - - - - - - -
            bool FatFile::rmRfStar ()
            -
            -

            Recursively delete a directory and all contained files.

            -

            This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

            -

            Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekCur (int32_t offset)
            -
            -inline
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekEnd (int32_t offset = 0)
            -
            -inline
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - - - - -
            bool FatFile::seekSet (uint32_t pos)
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - - - -
            bool FatFile::sync ()
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -

            Set a file's timestamps in its directory entry.

            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - - - -
            bool FatFile::truncate ()
            -
            -

            Truncate a file at the current file position. will be maintained if it is less than or equal to length otherwise it will be set to end of file.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::truncate (uint32_t length)
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ write() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::write (const char * str)
            -
            -inline
            -
            -

            Write a string to a file. Used by the Arduino Print class.

            Parameters
            - - -
            [in]strPointer to the string. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            count of characters written for success or -1 for failure.
            - -
            -
            - -

            ◆ write() [2/3]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            size_t FatFile::write (const void * buf,
            size_t count 
            )
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always count. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
            - -
            -
            - -

            ◆ write() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::write (uint8_t b)
            -
            -inline
            -
            -

            Write a single byte.

            Parameters
            - - -
            [in]bThe byte to be written.
            -
            -
            -
            Returns
            +1 for success or -1 for failure.
            - -
            -
            -

            Friends And Related Function Documentation

            - -

            ◆ FatVolume

            - -
            -
            - - - - - -
            - - - - -
            friend class FatVolume
            -
            -friend
            -
            -

            FatVolume allowed access to private members.

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FatLib/FatFile.h
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatFile.cpp
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatFileLFN.cpp
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatFilePrint.cpp
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatFileSFN.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_file__inherit__graph.png deleted file mode 100644 index 936f4b5fb86720cc99736434d469e5268ea8b70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13255 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 IiRqjF14=PpDgXcg diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter-members.html deleted file mode 100644 index c68ba218..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FatFormatter Member List
            -
            -
            - -

            This is the complete list of members for FatFormatter, including all inherited members.

            - - -
            format(BlockDevice *dev, uint8_t *secBuffer, print_t *pr=NULL)FatFormatter
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter.html deleted file mode 100644 index bbeacb53..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_formatter.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: FatFormatter Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            FatFormatter Class Reference
            -
            -
            - -

            Format a FAT volume. - More...

            - -

            #include <FatFormatter.h>

            - - - - -

            -Public Member Functions

            bool format (BlockDevice *dev, uint8_t *secBuffer, print_t *pr=NULL)
             
            -

            Detailed Description

            -

            Format a FAT volume.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Member Function Documentation

            - -

            ◆ format()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFormatter::format (BlockDevicedev,
            uint8_t * secBuffer,
            print_tpr = NULL 
            )
            -
            -

            Format a FAT volume.

            -
            Parameters
            - - - - -
            [in]devBlock device for volume.
            [in]secBufferbuffer for writing to volume.
            [in]prPrint device for progress output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FatLib/FatFormatter.h
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatFormatter.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition-members.html deleted file mode 100644 index 18344b6c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FatPartition Member List
            -
            -
            - -

            This is the complete list of members for FatPartition, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - -
            bytesPerCluster()FatPartitioninline
            bytesPerClusterShift()FatPartitioninline
            bytesPerSector()FatPartitioninline
            bytesPerSectorShift()FatPartitioninline
            cacheClear()FatPartitioninline
            clusterCount() constFatPartitioninline
            dataStartSector() constFatPartitioninline
            dbgFat(uint32_t n, uint32_t *v)FatPartitioninline
            FatCache classFatPartitionfriend
            fatCount()FatPartitioninline
            FatFile classFatPartitionfriend
            FatPartition()FatPartitioninline
            fatStartSector() constFatPartitioninline
            fatType() constFatPartitioninline
            freeClusterCount()FatPartition
            init(BlockDevice *dev, uint8_t part=1)FatPartition
            rootDirEntryCount() constFatPartitioninline
            rootDirStart() constFatPartitioninline
            sectorMask()FatPartitioninline
            sectorsPerCluster() constFatPartitioninline
            sectorsPerClusterShift() constFatPartitioninline
            sectorsPerFat() constFatPartitioninline
            volumeSectorCount() constFatPartitioninline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition.html deleted file mode 100644 index 52e1e85e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition.html +++ /dev/null @@ -1,773 +0,0 @@ - - - - - - - -SdFat: FatPartition Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            FatPartition Class Reference
            -
            -
            - -

            Access FAT16 and FAT32 partitions on raw file devices. - More...

            - -

            #include <FatPartition.h>

            -
            -Inheritance diagram for FatPartition:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            uint16_t bytesPerCluster ()
             
            uint8_t bytesPerClusterShift ()
             
            uint16_t bytesPerSector ()
             
            uint8_t bytesPerSectorShift ()
             
            cache_tcacheClear ()
             
            uint32_t clusterCount () const
             
            uint32_t dataStartSector () const
             
            int8_t dbgFat (uint32_t n, uint32_t *v)
             
            uint8_t fatCount ()
             
             FatPartition ()
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            int32_t freeClusterCount ()
             
            bool init (BlockDevice *dev, uint8_t part=1)
             
            uint16_t rootDirEntryCount () const
             
            uint32_t rootDirStart () const
             
            uint16_t sectorMask ()
             
            uint8_t sectorsPerCluster () const
             
            uint8_t sectorsPerClusterShift () const
             
            uint32_t sectorsPerFat () const
             
            uint32_t volumeSectorCount () const
             
            - - - - - -

            -Friends

            class FatCache
             
            class FatFile
             
            -

            Detailed Description

            -

            Access FAT16 and FAT32 partitions on raw file devices.

            -

            Constructor & Destructor Documentation

            - -

            ◆ FatPartition()

            - -
            -
            - - - - - -
            - - - - - - - -
            FatPartition::FatPartition ()
            -
            -inline
            -
            -

            Create an instance of FatPartition

            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::bytesPerCluster ()
            -
            -inline
            -
            -
            Returns
            Number of bytes in a cluster.
            - -
            -
            - -

            ◆ bytesPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::bytesPerClusterShift ()
            -
            -inline
            -
            -
            Returns
            The shift count required to multiply by bytesPerCluster.
            - -
            -
            - -

            ◆ bytesPerSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::bytesPerSector ()
            -
            -inline
            -
            -
            Returns
            Number of bytes per sector.
            - -
            -
            - -

            ◆ bytesPerSectorShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::bytesPerSectorShift ()
            -
            -inline
            -
            -
            Returns
            The shift count required to multiply by bytesPerCluster.
            - -
            -
            - -

            ◆ cacheClear()

            - -
            -
            - - - - - -
            - - - - - - - -
            cache_t* FatPartition::cacheClear ()
            -
            -inline
            -
            -

            Clear the cache and returns a pointer to the cache. Not for normal apps.

            Returns
            A pointer to the cache buffer or zero if an error occurs.
            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::clusterCount () const
            -
            -inline
            -
            -
            Returns
            The total number of clusters in the volume.
            - -
            -
            - -

            ◆ dataStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::dataStartSector () const
            -
            -inline
            -
            -
            Returns
            The logical sector number for the start of file data.
            - -
            -
            - -

            ◆ dbgFat()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int8_t FatPartition::dbgFat (uint32_t n,
            uint32_t * v 
            )
            -
            -inline
            -
            -

            Debug access to FAT table

            -
            Parameters
            - - - -
            [in]ncluster number.
            [out]vvalue of entry
            -
            -
            -
            Returns
            -1 error, 0 EOC, else 1.
            - -
            -
            - -

            ◆ fatCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::fatCount ()
            -
            -inline
            -
            -
            Returns
            The number of File Allocation Tables.
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::fatStartSector () const
            -
            -inline
            -
            -
            Returns
            The logical sector number for the start of the first FAT.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::fatType () const
            -
            -inline
            -
            -
            Returns
            The FAT type of the volume. Values are 12, 16 or 32.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - - - -
            int32_t FatPartition::freeClusterCount ()
            -
            -

            Volume free space in clusters.

            -
            Returns
            Count of free clusters for success or -1 if an error occurs.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FatPartition::init (BlockDevicedev,
            uint8_t part = 1 
            )
            -
            -

            Initialize a FAT partition.

            -
            Parameters
            - - - -
            [in]devBlockDevice for this partition.
            [in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in sector zero.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rootDirEntryCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::rootDirEntryCount () const
            -
            -inline
            -
            -
            Returns
            The number of entries in the root directory for FAT16 volumes.
            - -
            -
            - -

            ◆ rootDirStart()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::rootDirStart () const
            -
            -inline
            -
            -
            Returns
            The logical sector number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
            - -
            -
            - -

            ◆ sectorMask()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::sectorMask ()
            -
            -inline
            -
            -
            Returns
            Mask for sector offset.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::sectorsPerCluster () const
            -
            -inline
            -
            -
            Returns
            The volume's cluster size in sectors.
            - -
            -
            - -

            ◆ sectorsPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::sectorsPerClusterShift () const
            -
            -inline
            -
            -
            Returns
            The shift count required to multiply by sectorsPerCluster.
            - -
            -
            - -

            ◆ sectorsPerFat()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::sectorsPerFat () const
            -
            -inline
            -
            -
            Returns
            The number of sectors in one FAT.
            - -
            -
            - -

            ◆ volumeSectorCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::volumeSectorCount () const
            -
            -inline
            -
            -
            Returns
            The number of sectors in the volume
            - -
            -
            -

            Friends And Related Function Documentation

            - -

            ◆ FatCache

            - -
            -
            - - - - - -
            - - - - -
            friend class FatCache
            -
            -friend
            -
            -

            FatCache allowed access to private members.

            - -
            -
            - -

            ◆ FatFile

            - -
            -
            - - - - - -
            - - - - -
            friend class FatFile
            -
            -friend
            -
            -

            FatFile allowed access to private members.

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FatLib/FatPartition.h
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatPartition.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_partition__inherit__graph.png deleted file mode 100644 index 1f468393650df7e989b11fe124f41d8bb37107f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3043 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 - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FatVolume Member List
            -
            -
            - -

            This is the complete list of members for FatVolume, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(BlockDevice *dev, bool setCwv=true, uint8_t part=1)FatVolumeinline
            bytesPerCluster()FatPartitioninline
            bytesPerClusterShift()FatPartitioninline
            bytesPerSector()FatPartitioninline
            bytesPerSectorShift()FatPartitioninline
            cacheClear()FatPartitioninline
            chdir()FatVolumeinline
            chdir(const char *path)FatVolume
            chdir(const String &path)FatVolumeinline
            chvol()FatVolumeinline
            clusterCount() constFatPartitioninline
            cwv()FatVolumeinlinestatic
            dataStartSector() constFatPartitioninline
            dbgFat(uint32_t n, uint32_t *v)FatPartitioninline
            exists(const char *path)FatVolumeinline
            exists(const String &path)FatVolumeinline
            fatCount()FatPartitioninline
            FatPartition()FatPartitioninline
            fatStartSector() constFatPartitioninline
            fatType() constFatPartitioninline
            freeClusterCount()FatPartition
            init(BlockDevice *dev, uint8_t part=1)FatPartition
            ls(print_t *pr, uint8_t flags=0)FatVolumeinline
            ls(print_t *pr, const char *path, uint8_t flags)FatVolumeinline
            ls(uint8_t flags=0)FatVolumeinline
            ls(const char *path, uint8_t flags=0)FatVolumeinline
            mkdir(const char *path, bool pFlag=true)FatVolumeinline
            mkdir(const String &path, bool pFlag=true)FatVolumeinline
            open(const char *path, oflag_t oflag=0X00)FatVolumeinline
            open(const String &path, oflag_t oflag=0X00)FatVolumeinline
            remove(const char *path)FatVolumeinline
            remove(const String &path)FatVolumeinline
            rename(const char *oldPath, const char *newPath)FatVolumeinline
            rename(const String &oldPath, const String &newPath)FatVolumeinline
            rmdir(const char *path)FatVolumeinline
            rmdir(const String &path)FatVolumeinline
            rootDirEntryCount() constFatPartitioninline
            rootDirStart() constFatPartitioninline
            sectorMask()FatPartitioninline
            sectorsPerCluster() constFatPartitioninline
            sectorsPerClusterShift() constFatPartitioninline
            sectorsPerFat() constFatPartitioninline
            truncate(const char *path, uint32_t length)FatVolumeinline
            truncate(const String &path, uint32_t length)FatVolumeinline
            volumeSectorCount() constFatPartitioninline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume.html deleted file mode 100644 index c5f85aad..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume.html +++ /dev/null @@ -1,1711 +0,0 @@ - - - - - - - -SdFat: FatVolume Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Integration class for the FatLib library. - More...

            - -

            #include <FatVolume.h>

            -
            -Inheritance diagram for FatVolume:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for FatVolume:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (BlockDevice *dev, bool setCwv=true, uint8_t part=1)
             
            uint16_t bytesPerCluster ()
             
            uint8_t bytesPerClusterShift ()
             
            uint16_t bytesPerSector ()
             
            uint8_t bytesPerSectorShift ()
             
            cache_tcacheClear ()
             
            bool chdir ()
             
            bool chdir (const char *path)
             
            bool chdir (const String &path)
             
            void chvol ()
             
            uint32_t clusterCount () const
             
            uint32_t dataStartSector () const
             
            int8_t dbgFat (uint32_t n, uint32_t *v)
             
            bool exists (const char *path)
             
            bool exists (const String &path)
             
            uint8_t fatCount ()
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            int32_t freeClusterCount ()
             
            bool init (BlockDevice *dev, uint8_t part=1)
             
            bool ls (const char *path, uint8_t flags=0)
             
            bool ls (print_t *pr, const char *path, uint8_t flags)
             
            bool ls (print_t *pr, uint8_t flags=0)
             
            bool ls (uint8_t flags=0)
             
            bool mkdir (const char *path, bool pFlag=true)
             
            bool mkdir (const String &path, bool pFlag=true)
             
            File32 open (const char *path, oflag_t oflag=0X00)
             
            File32 open (const String &path, oflag_t oflag=0X00)
             
            bool remove (const char *path)
             
            bool remove (const String &path)
             
            bool rename (const char *oldPath, const char *newPath)
             
            bool rename (const String &oldPath, const String &newPath)
             
            bool rmdir (const char *path)
             
            bool rmdir (const String &path)
             
            uint16_t rootDirEntryCount () const
             
            uint32_t rootDirStart () const
             
            uint16_t sectorMask ()
             
            uint8_t sectorsPerCluster () const
             
            uint8_t sectorsPerClusterShift () const
             
            uint32_t sectorsPerFat () const
             
            bool truncate (const char *path, uint32_t length)
             
            bool truncate (const String &path, uint32_t length)
             
            uint32_t volumeSectorCount () const
             
            - - - -

            -Static Public Member Functions

            static FatVolumecwv ()
             
            -

            Detailed Description

            -

            Integration class for the FatLib library.

            -

            Member Function Documentation

            - -

            ◆ begin()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatVolume::begin (BlockDevicedev,
            bool setCwv = true,
            uint8_t part = 1 
            )
            -
            -inline
            -
            -

            Initialize an FatVolume object.

            Parameters
            - - - - -
            [in]devDevice block driver.
            [in]setCwvSet current working volume if true.
            [in]partpartition to initialize.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::bytesPerCluster ()
            -
            -inlineinherited
            -
            -
            Returns
            Number of bytes in a cluster.
            - -
            -
            - -

            ◆ bytesPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::bytesPerClusterShift ()
            -
            -inlineinherited
            -
            -
            Returns
            The shift count required to multiply by bytesPerCluster.
            - -
            -
            - -

            ◆ bytesPerSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::bytesPerSector ()
            -
            -inlineinherited
            -
            -
            Returns
            Number of bytes per sector.
            - -
            -
            - -

            ◆ bytesPerSectorShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::bytesPerSectorShift ()
            -
            -inlineinherited
            -
            -
            Returns
            The shift count required to multiply by bytesPerCluster.
            - -
            -
            - -

            ◆ cacheClear()

            - -
            -
            - - - - - -
            - - - - - - - -
            cache_t* FatPartition::cacheClear ()
            -
            -inlineinherited
            -
            -

            Clear the cache and returns a pointer to the cache. Not for normal apps.

            Returns
            A pointer to the cache buffer or zero if an error occurs.
            - -
            -
            - -

            ◆ chdir() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatVolume::chdir ()
            -
            -inline
            -
            -

            Set volume working directory to root.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [2/3]

            - -
            -
            - - - - - - - - -
            bool FatVolume::chdir (const char * path)
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::chdir (const String & path)
            -
            -inline
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chvol()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatVolume::chvol ()
            -
            -inline
            -
            -

            Change global current working volume to this volume.

            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::clusterCount () const
            -
            -inlineinherited
            -
            -
            Returns
            The total number of clusters in the volume.
            - -
            -
            - -

            ◆ cwv()

            - -
            -
            - - - - - -
            - - - - - - - -
            static FatVolume* FatVolume::cwv ()
            -
            -inlinestatic
            -
            -
            Returns
            current working volume.
            - -
            -
            - -

            ◆ dataStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::dataStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of file data.
            - -
            -
            - -

            ◆ dbgFat()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int8_t FatPartition::dbgFat (uint32_t n,
            uint32_t * v 
            )
            -
            -inlineinherited
            -
            -

            Debug access to FAT table

            -
            Parameters
            - - - -
            [in]ncluster number.
            [out]vvalue of entry
            -
            -
            -
            Returns
            -1 error, 0 EOC, else 1.
            - -
            -
            - -

            ◆ exists() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::exists (const char * path)
            -
            -inline
            -
            -

            Test for the existence of a file.

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ exists() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::exists (const String & path)
            -
            -inline
            -
            -

            Test for the existence of a file.

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fatCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::fatCount ()
            -
            -inlineinherited
            -
            -
            Returns
            The number of File Allocation Tables.
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::fatStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of the first FAT.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::fatType () const
            -
            -inlineinherited
            -
            -
            Returns
            The FAT type of the volume. Values are 12, 16 or 32.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            int32_t FatPartition::freeClusterCount ()
            -
            -inherited
            -
            -

            Volume free space in clusters.

            -
            Returns
            Count of free clusters for success or -1 if an error occurs.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatPartition::init (BlockDevicedev,
            uint8_t part = 1 
            )
            -
            -inherited
            -
            -

            Initialize a FAT partition.

            -
            Parameters
            - - - -
            [in]devBlockDevice for this partition.
            [in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in sector zero.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::ls (const char * path,
            uint8_t flags = 0 
            )
            -
            -inline
            -
            -

            List the directory contents of a directory to Serial.

            -
            Parameters
            - - - -
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatVolume::ls (print_tpr,
            const char * path,
            uint8_t flags 
            )
            -
            -inline
            -
            -

            List the contents of a directory.

            -
            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::ls (print_tpr,
            uint8_t flags = 0 
            )
            -
            -inline
            -
            -

            List the directory contents of the volume root directory.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::ls (uint8_t flags = 0)
            -
            -inline
            -
            -

            List the directory contents of the root directory to Serial.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::mkdir (const char * path,
            bool pFlag = true 
            )
            -
            -inline
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::mkdir (const String & path,
            bool pFlag = true 
            )
            -
            -inline
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            File32 FatVolume::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -inline
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a File32 object.
            - -
            -
            - -

            ◆ open() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            File32 FatVolume::open (const String & path,
            oflag_t oflag = 0X00 
            )
            -
            -inline
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a File32 object.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::remove (const char * path)
            -
            -inline
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::remove (const String & path)
            -
            -inline
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::rename (const char * oldPath,
            const char * newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::rename (const String & oldPath,
            const String & newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::rmdir (const char * path)
            -
            -inline
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::rmdir (const String & path)
            -
            -inline
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rootDirEntryCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::rootDirEntryCount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of entries in the root directory for FAT16 volumes.
            - -
            -
            - -

            ◆ rootDirStart()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::rootDirStart () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
            - -
            -
            - -

            ◆ sectorMask()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::sectorMask ()
            -
            -inlineinherited
            -
            -
            Returns
            Mask for sector offset.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::sectorsPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            The volume's cluster size in sectors.
            - -
            -
            - -

            ◆ sectorsPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::sectorsPerClusterShift () const
            -
            -inlineinherited
            -
            -
            Returns
            The shift count required to multiply by sectorsPerCluster.
            - -
            -
            - -

            ◆ sectorsPerFat()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::sectorsPerFat () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of sectors in one FAT.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::truncate (const char * path,
            uint32_t length 
            )
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::truncate (const String & path,
            uint32_t length 
            )
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ volumeSectorCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::volumeSectorCount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of sectors in the volume
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FatLib/FatVolume.h
            • -
            • Arduino/libraries/SdFat/src/FatLib/FatVolume.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume__coll__graph.png deleted file mode 100644 index 986a8d3e9c12f333983a09a27d3fee91a1ca5d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1181 zcmeAS@N?(olHy`uVBq!ia0vp^DL`Dn!3HE>EWLUYNUCO?o{+Lh|*SA8$_owEXnnQ}E;5zdug?ttsCoB;6q3#G&ZVl&TTU zP{6R@o#k}T#q0^<2Qv3;NQ)>GJ# zTi0~Pmxrh1?n&_p{*y9u<+>Aga~>3(@KT#*YT|PGRKWD|_{vAKUp@MH^NhOdx5VD{ zmPwB9N_-C}p@c*y-I@3ckYVGwG-`5w`{$2bkB*)TEEaczR)XHnG-+t?^ zX0WjQd6!||*H!0M@Ekm^*xlW|dfE4dLVE-pagubrt?lggthCy`h~=*Hx^+_7UWsZ^VO+-H;k{e6inY8iI5GT{YyPdH zRCRb$0%zHYS#$5!nVE)KhkKbmej4?9_wC#N?i@Y(aQ~_zZRZWPDOsz&u?4j4-V;(A zAg*?hE6^+V;GeIn<*u=MPH?{V=g;xyTW|f9Uvi)Q=Iig$-RbG`|NT01n$_{!gsQ*q zblv_GB<}DlV9{K1KRo)xKJOiNG3pjg(wlC*<=1b#cfKb3di>luHUCVnwa7gFynKmY zz^l0IwG0n@H19AsT$>?x6I}8TvOZSIHE}HDKdvEcTy!SGpbKAL_<~YwY5>eve z62uHwZ&ZO@if&z>FlwetGJj?eDdBDpOA z(icpX+SlZ5pMC50yj>RWovh}bJFFci_CMNeUgq2_Pk-#2{B+rj%5ULp&z-}JF8;VU z$7a{!rz_l#y!J`mcG}F+{kH4Rf@&QhWCFL(kwo{ zqiq$(dMBS)JCkFz0U>46riQmIxi>LIhJDI)IU)PGrgLxIGOICiyR|KH`9-rQcjF~D z$u<4tJ23HxvT;hAlR0CJ;nnUv26Iw?2^Td)B`OmwUZrav(Tx;u<7VKS@Hbzv!`7Bz kH-q15zZOt_Pkv(Wacz>mdKI;Vst00(auv;Y7A diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fat_volume__inherit__graph.png deleted file mode 100644 index 5ff55073de29b7ef1422e8dca69224756407d4dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 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 - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            File32 Member List
            -
            -
            - -

            This is the complete list of members for File32, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()StreamFile< FatFile, uint32_t >inline
            available32()FatFileinline
            clearError()FatFileinline
            clearWriteError()FatFileinline
            close()FatFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)FatFile
            createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
            createContiguous(const char *path, uint32_t size)FatFile
            curCluster() constFatFileinline
            curPosition() constFatFileinline
            dirEntry(DirFat_t *dir)FatFile
            dirIndex()FatFileinline
            dirSize()FatFile
            dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
            exists(const char *path)FatFileinline
            FatFile()FatFileinline
            FatFile(const char *path, oflag_t oflag)FatFileinline
            fgetpos(fspos_t *pos)FatFile
            fgets(char *str, int num, char *delim=NULL)FatFile
            fileSize() constFatFileinline
            firstBlock() constFatFileinline
            firstSector() constFatFile
            flush()StreamFile< FatFile, uint32_t >inline
            fsetpos(const fspos_t *pos)FatFile
            getAccessDate(uint16_t *pdate)FatFile
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)FatFileinline
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)FatFile
            getError()FatFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)FatFile
            getName(char *name, size_t size)FatFile
            getSFN(char *name)FatFile
            getWriteError()FatFileinline
            isContiguous() constFatFileinline
            isDir() constFatFileinline
            isDirectory()StreamFile< FatFile, uint32_t >inline
            isFile() constFatFileinline
            isHidden() constFatFileinline
            isLFN() constFatFileinline
            isOpen() constFatFileinline
            isReadable() constFatFileinline
            isReadOnly() constFatFileinline
            isRoot() constFatFileinline
            isRoot32() constFatFileinline
            isRootFixed() constFatFileinline
            isSubDir() constFatFileinline
            isSystem() constFatFileinline
            isWritable() constFatFileinline
            legal83Char(uint8_t c)FatFileinlinestatic
            ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
            ls(uint8_t flags=0)FatFileinline
            mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
            name() constStreamFile< FatFile, uint32_t >inline
            open(FatVolume *vol, const char *path, oflag_t oflag)FatFile
            open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
            open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
            open(const char *path, oflag_t oflag=0X00)FatFile
            openNext(FatFile *dirFile, oflag_t oflag=0X00)FatFile
            openNextFile(oflag_t oflag=0X00)File32inline
            openRoot(FatVolume *vol)FatFile
            operator bool()FatFileinline
            peek()StreamFile< FatFile, uint32_t >inline
            position()StreamFile< FatFile, uint32_t >inline
            preAllocate(uint32_t length)FatFile
            printAccessDate(print_t *pr)FatFile
            printAccessDateTime(print_t *pr)FatFileinline
            printCreateDateTime(print_t *pr)FatFile
            printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
            printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
            printField(double value, char term, uint8_t prec=2)FatFileinline
            printField(float value, char term, uint8_t prec=2)FatFileinline
            printField(Type value, char term)FatFileinline
            printFileSize(print_t *pr)FatFile
            printModifyDateTime(print_t *pr)FatFile
            printName(print_t *pr)FatFile
            printName()FatFileinline
            printSFN(print_t *pr)FatFile
            read()StreamFile< FatFile, uint32_t >inline
            FatFile::read(void *buf, size_t count)FatFile
            readDir(DirFat_t *dir)FatFile
            remove()FatFile
            remove(const char *path)FatFile
            rename(const char *newPath)FatFile
            rename(FatFile *dirFile, const char *newPath)FatFile
            rewind()FatFileinline
            rewindDirectory()StreamFile< FatFile, uint32_t >inline
            rmdir()FatFile
            rmRfStar()FatFile
            seek(uint32_t pos)StreamFile< FatFile, uint32_t >inline
            seekCur(int32_t offset)FatFileinline
            seekEnd(int32_t offset=0)FatFileinline
            seekSet(uint32_t pos)FatFile
            size()StreamFile< FatFile, uint32_t >inline
            StreamFile() (defined in StreamFile< FatFile, uint32_t >)StreamFile< FatFile, uint32_t >inline
            sync()FatFile
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
            truncate()FatFile
            truncate(uint32_t length)FatFileinline
            write(uint8_t b)StreamFile< FatFile, uint32_t >inline
            write(const uint8_t *buffer, size_t size)StreamFile< FatFile, uint32_t >inline
            FatFile::write(const char *str)FatFileinline
            FatFile::write(const void *buf, size_t count)FatFile
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32.html deleted file mode 100644 index 71cdd1f3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32.html +++ /dev/null @@ -1,3740 +0,0 @@ - - - - - - - -SdFat: File32 Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            FAT16/FAT32 file with Arduino Stream. - More...

            - -

            #include <FatFile.h>

            -
            -Inheritance diagram for File32:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for File32:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            uint32_t available32 ()
             
            void clearError ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            bool createContiguous (const char *path, uint32_t size)
             
            bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
             
            uint32_t curCluster () const
             
            uint32_t curPosition () const
             
            bool dirEntry (DirFat_t *dir)
             
            uint16_t dirIndex ()
             
            uint32_t dirSize ()
             
            void dmpFile (print_t *pr, uint32_t pos, size_t n)
             
            bool exists (const char *path)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=NULL)
             
            uint32_t fileSize () const
             
            uint32_t firstBlock () const
             
            uint32_t firstSector () const
             
            void flush ()
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDate (uint16_t *pdate)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getName (char *name, size_t size)
             
            bool getSFN (char *name)
             
            bool getWriteError ()
             
            bool isContiguous () const
             
            bool isDir () const
             
            bool isDirectory ()
             
            bool isFile () const
             
            bool isHidden () const
             
            bool isLFN () const
             
            bool isOpen () const
             
            bool isReadable () const
             
            bool isReadOnly () const
             
            bool isRoot () const
             
            bool isRoot32 () const
             
            bool isRootFixed () const
             
            bool isSubDir () const
             
            bool isSystem () const
             
            bool isWritable () const
             
            bool ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
             
            bool ls (uint8_t flags=0)
             
            bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
             
            const char * name () const
             
            bool open (const char *path, oflag_t oflag=0X00)
             
            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            bool openNext (FatFile *dirFile, oflag_t oflag=0X00)
             
            File32 openNextFile (oflag_t oflag=0X00)
             
            bool openRoot (FatVolume *vol)
             
             operator bool ()
             
            int peek ()
             
            uint32_t position ()
             
            bool preAllocate (uint32_t length)
             
            size_t printAccessDate (print_t *pr)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName ()
             
            size_t printName (print_t *pr)
             
            size_t printSFN (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            int8_t readDir (DirFat_t *dir)
             
            bool remove ()
             
            bool remove (const char *path)
             
            bool rename (const char *newPath)
             
            bool rename (FatFile *dirFile, const char *newPath)
             
            void rewind ()
             
            void rewindDirectory ()
             
            bool rmdir ()
             
            bool rmRfStar ()
             
            bool seek (uint32_t pos)
             
            bool seekCur (int32_t offset)
             
            bool seekEnd (int32_t offset=0)
             
            bool seekSet (uint32_t pos)
             
            uint32_t size ()
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint32_t length)
             
            size_t write (const char *str)
             
            size_t write (const uint8_t *buffer, size_t size)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            - - - - - - - -

            -Static Public Member Functions

            static bool legal83Char (uint8_t c)
             
            static void printFatDate (print_t *pr, uint16_t fatDate)
             
            static void printFatTime (print_t *pr, uint16_t fatTime)
             
            -

            Detailed Description

            -

            FAT16/FAT32 file with Arduino Stream.

            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< FatFile , uint32_t >::available ()
            -
            -inlineinherited
            -
            -
            Returns
            number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
            - -
            -
            - -

            ◆ available32()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::available32 ()
            -
            -inlineinherited
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
            - -
            -
            - -

            ◆ clearError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::clearError ()
            -
            -inlineinherited
            -
            -

            Clear all error bits.

            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::clearWriteError ()
            -
            -inlineinherited
            -
            -

            Set writeError to zero

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::close ()
            -
            -inherited
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -inherited
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Set the contiguous flag if the file is contiguous. The parameters may be nullptr to only set the flag.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ createContiguous() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::createContiguous (const char * path,
            uint32_t size 
            )
            -
            -inherited
            -
            -

            Create and open a new contiguous file of a specified size.

            -
            Parameters
            - - - -
            [in]pathA path with a valid file name.
            [in]sizeThe desired file size.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ createContiguous() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::createContiguous (FatFiledirFile,
            const char * path,
            uint32_t size 
            )
            -
            -inherited
            -
            -

            Create and open a new contiguous file of a specified size.

            -
            Parameters
            - - - - -
            [in]dirFileThe directory where the file will be created.
            [in]pathA path with a valid file name.
            [in]sizeThe desired file size.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::curCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            The current cluster number for a file or directory.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::curPosition () const
            -
            -inlineinherited
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dirEntry()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::dirEntry (DirFat_t * dir)
            -
            -inherited
            -
            -

            Return a file's directory entry.

            -
            Parameters
            - - -
            [out]dirLocation for return of the file's directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatFile::dirIndex ()
            -
            -inlineinherited
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ dirSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::dirSize ()
            -
            -inherited
            -
            -
            Returns
            The number of bytes allocated to a directory or zero if an error occurs.
            - -
            -
            - -

            ◆ dmpFile()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            void FatFile::dmpFile (print_tpr,
            uint32_t pos,
            size_t n 
            )
            -
            -inherited
            -
            -

            Dump file in Hex

            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]posStart position in file.
            [in]nnumber of locations to dump.
            -
            -
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::exists (const char * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            True if the file exists.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FatFile::fgetpos (fspos_t * pos)
            -
            -inherited
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int FatFile::fgets (char * str,
            int num,
            char * delim = NULL 
            )
            -
            -inherited
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::fileSize () const
            -
            -inlineinherited
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstBlock()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::firstBlock () const
            -
            -inlineinherited
            -
            -
            Returns
            first sector of file or zero for empty file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::firstSector () const
            -
            -inherited
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StreamFile< FatFile , uint32_t >::flush ()
            -
            -inlineinherited
            -
            -

            Ensure that any bytes written to the file are saved to the SD card.

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FatFile::fsetpos (const fspos_t * pos)
            -
            -inherited
            -
            -

            set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::getAccessDate (uint16_t * pdate)
            -
            -inherited
            -
            -

            Get a file's access date.

            -
            Parameters
            - - -
            [out]pdatePacked date for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inlineinherited
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimereturn zero since FAT has no time.
            -
            -
            -

            This function is for comparability in FsFile.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatFile::getError ()
            -
            -inlineinherited
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getName (char * name,
            size_t size 
            )
            -
            -inherited
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getSFN()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::getSFN (char * name)
            -
            -inherited
            -
            -

            Get a file's Short File Name followed by a zero byte.

            -
            Parameters
            - - -
            [out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::getWriteError ()
            -
            -inlineinherited
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isContiguous () const
            -
            -inlineinherited
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isDir () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a directory.
            - -
            -
            - -

            ◆ isDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool StreamFile< FatFile , uint32_t >::isDirectory ()
            -
            -inlineinherited
            -
            -

            This function reports if the current file is a directory or not.

            Returns
            true if the file is a directory.
            - -
            -
            - -

            ◆ isFile()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isFile () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a normal file.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isHidden () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a hidden file.
            - -
            -
            - -

            ◆ isLFN()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isLFN () const
            -
            -inlineinherited
            -
            -
            Returns
            true if this file has a Long File Name.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isOpen () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is an open file/directory.
            - -
            -
            - -

            ◆ isReadable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isReadable () const
            -
            -inlineinherited
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ isReadOnly()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isReadOnly () const
            -
            -inlineinherited
            -
            -
            Returns
            True if file is read-only
            - -
            -
            - -

            ◆ isRoot()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRoot () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the root directory.
            - -
            -
            - -

            ◆ isRoot32()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRoot32 () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the FAT32 root directory.
            - -
            -
            - -

            ◆ isRootFixed()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRootFixed () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the FAT12 of FAT16 root directory.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isSubDir () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a subdirectory.
            - -
            -
            - -

            ◆ isSystem()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isSystem () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a system file.
            - -
            -
            - -

            ◆ isWritable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isWritable () const
            -
            -inlineinherited
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ legal83Char()

            - -
            -
            - - - - - -
            - - - - - - - - -
            static bool FatFile::legal83Char (uint8_t c)
            -
            -inlinestaticinherited
            -
            -

            Check for a legal 8.3 character.

            Parameters
            - - -
            [in]cCharacter to be checked.
            -
            -
            -
            Returns
            true for a legal 8.3 character.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::ls (print_tpr,
            uint8_t flags = 0,
            uint8_t indent = 0 
            )
            -
            -inherited
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Parameters
            - - -
            [in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::ls (uint8_t flags = 0)
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::mkdir (FatFiledir,
            const char * path,
            bool pFlag = true 
            )
            -
            -inherited
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]dirAn open FatFile instance for the directory that will contain the new directory.
            [in]pathA path with a valid name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ name()

            - -
            -
            - - - - - -
            - - - - - - - -
            const char* StreamFile< FatFile , uint32_t >::name () const
            -
            -inlineinherited
            -
            -

            No longer implemented due to Long File Names.

            -

            Use getName(char* name, size_t size).

            Returns
            a pointer to replacement suggestion.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            Open a file in the current working volume.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatFiledirFile,
            const char * path,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirFileAn open FatFile instance for the directory containing the file to be opened.
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list. Only one of O_RDONLY, O_READ, O_WRONLY, O_WRITE, or O_RDWR is allowed.
            -
            -
            -

            O_RDONLY - Open for reading.

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatFiledirFile,
            uint16_t index,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirFileAn open FatFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatVolumevol,
            const char * path,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file in the volume root directory.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathwith a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::openNext (FatFiledirFile,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            Open the next file or subdirectory in a directory.

            -
            Parameters
            - - - -
            [in]dirFileAn open FatFile instance for the directory containing the file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNextFile()

            - -
            -
            - - - - - -
            - - - - - - - - -
            File32 File32::openNextFile (oflag_t oflag = 0X00)
            -
            -inline
            -
            -

            Opens the next file or folder in a directory.

            -
            Parameters
            - - -
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FatStream object.
            - -
            -
            - -

            ◆ openRoot()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::openRoot (FatVolumevol)
            -
            -inherited
            -
            -

            Open a volume's root directory.

            -
            Parameters
            - - -
            [in]volThe FAT volume containing the root directory to be opened.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            FatFile::operator bool ()
            -
            -inlineinherited
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< FatFile , uint32_t >::peek ()
            -
            -inlineinherited
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ position()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t StreamFile< FatFile , uint32_t >::position ()
            -
            -inlineinherited
            -
            -
            Returns
            the current file position.
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::preAllocate (uint32_t length)
            -
            -inherited
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will contain uninitialized data.

            -
            Parameters
            - - -
            [in]lengthsize of the file in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printAccessDate (print_tpr)
            -
            -inherited
            -
            -

            Print a file's access date

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printAccessDateTime (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's access date

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printCreateDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of bytes printed.
            - -
            -
            - -

            ◆ printFatDate()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            static void FatFile::printFatDate (print_tpr,
            uint16_t fatDate 
            )
            -
            -staticinherited
            -
            -

            Print a directory date field.

            -

            Format is yyyy-mm-dd.

            -
            Parameters
            - - - -
            [in]prPrint stream for output.
            [in]fatDateThe date field from a directory entry.
            -
            -
            - -
            -
            - -

            ◆ printFatTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            static void FatFile::printFatTime (print_tpr,
            uint16_t fatTime 
            )
            -
            -staticinherited
            -
            -

            Print a directory time field.

            -

            Format is hh:mm:ss.

            -
            Parameters
            - - - -
            [in]prPrint stream for output.
            [in]fatTimeThe time field from a directory entry.
            -
            -
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (Type value,
            char term 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printFileSize (print_tpr)
            -
            -inherited
            -
            -

            Print a file's size.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printModifyDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printName() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            size_t FatFile::printName ()
            -
            -inlineinherited
            -
            -

            Print a file's name.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printName (print_tpr)
            -
            -inherited
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printSFN()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printSFN (print_tpr)
            -
            -inherited
            -
            -

            Print a file's Short File Name.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< FatFile , uint32_t >::read ()
            -
            -inlineinherited
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int FatFile::read (void * buf,
            size_t count 
            )
            -
            -inherited
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1.
            - -
            -
            - -

            ◆ readDir()

            - -
            -
            - - - - - -
            - - - - - - - - -
            int8_t FatFile::readDir (DirFat_t * dir)
            -
            -inherited
            -
            -

            Read the next directory entry from a directory file.

            -
            Parameters
            - - -
            [out]dirThe DirFat_t struct that will receive the data.
            -
            -
            -
            Returns
            For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::remove ()
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::remove (const char * path)
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::rename (const char * newPath)
            -
            -inherited
            -
            -

            Rename a file or subdirectory.

            Note
            the renamed file will be moved to the current volume working directory.
            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::rename (FatFiledirFile,
            const char * newPath 
            )
            -
            -inherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::rewind ()
            -
            -inlineinherited
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rewindDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StreamFile< FatFile , uint32_t >::rewindDirectory ()
            -
            -inlineinherited
            -
            -

            Rewind a file if it is a directory

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::rmdir ()
            -
            -inherited
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmRfStar()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::rmRfStar ()
            -
            -inherited
            -
            -

            Recursively delete a directory and all contained files.

            -

            This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

            -

            Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seek()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool StreamFile< FatFile , uint32_t >::seek (uint32_t pos)
            -
            -inlineinherited
            -
            -

            Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

            -
            Parameters
            - - -
            [in]posthe new file position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekCur (int32_t offset)
            -
            -inlineinherited
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekEnd (int32_t offset = 0)
            -
            -inlineinherited
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekSet (uint32_t pos)
            -
            -inherited
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ size()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t StreamFile< FatFile , uint32_t >::size ()
            -
            -inlineinherited
            -
            -
            Returns
            the file's size.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::sync ()
            -
            -inherited
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -inherited
            -
            -

            Set a file's timestamps in its directory entry.

            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::truncate ()
            -
            -inherited
            -
            -

            Truncate a file at the current file position. will be maintained if it is less than or equal to length otherwise it will be set to end of file.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::truncate (uint32_t length)
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ write() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::write (const char * str)
            -
            -inlineinherited
            -
            -

            Write a string to a file. Used by the Arduino Print class.

            Parameters
            - - -
            [in]strPointer to the string. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            count of characters written for success or -1 for failure.
            - -
            -
            - -

            ◆ write() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StreamFile< FatFile , uint32_t >::write (const uint8_t * buffer,
            size_t size 
            )
            -
            -inlineinherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufferPointer to the location of the data to be written.
            [in]sizeNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always size.
            - -
            -
            - -

            ◆ write() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FatFile::write (const void * buf,
            size_t count 
            )
            -
            -inherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always count. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
            - -
            -
            - -

            ◆ write() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t StreamFile< FatFile , uint32_t >::write (uint8_t b)
            -
            -inlineinherited
            -
            -

            Write a byte to a file. Required by the Arduino Print class.

            Parameters
            - - -
            [in]bthe byte to be written. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            1 for success and 0 for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/FatLib/FatFile.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32__coll__graph.png deleted file mode 100644 index ae9a14b521ad6bea84b96c957bfe94511ab63f96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3805 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 A*8l(j diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_file32__inherit__graph.png deleted file mode 100644 index ae9a14b521ad6bea84b96c957bfe94511ab63f96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3805 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 A*8l(j diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file-members.html deleted file mode 100644 index 48a73ff3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file-members.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FsBaseFile Member List
            -
            -
            - -

            This is the complete list of members for FsBaseFile, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()FsBaseFileinline
            clearWriteError()FsBaseFileinline
            close()FsBaseFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)FsBaseFileinline
            curPosition()FsBaseFileinline
            dirIndex()FsBaseFileinline
            exists(const char *path)FsBaseFileinline
            fgetpos(fspos_t *pos)FsBaseFileinline
            fgets(char *str, int num, char *delim=nullptr)FsBaseFileinline
            fileSize()FsBaseFileinline
            firstSector()FsBaseFileinline
            flush()FsBaseFileinline
            FsBaseFile() (defined in FsBaseFile)FsBaseFileinline
            FsBaseFile(const FsBaseFile &from)FsBaseFile
            fsetpos(const fspos_t *pos)FsBaseFileinline
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)FsBaseFileinline
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)FsBaseFileinline
            getError()FsBaseFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)FsBaseFileinline
            getName(char *name, size_t len)FsBaseFileinline
            getWriteError()FsBaseFileinline
            isContiguous()FsBaseFileinline
            isDir()FsBaseFileinline
            isDirectory()FsBaseFileinline
            isHidden()FsBaseFileinline
            isOpen()FsBaseFileinline
            isSubDir()FsBaseFileinline
            ls(print_t *pr)FsBaseFileinline
            ls(print_t *pr, uint8_t flags)FsBaseFileinline
            mkdir(FsBaseFile *dir, const char *path, bool pFlag=true)FsBaseFile
            name() constFsBaseFileinline
            open(FsBaseFile *dir, const char *path, oflag_t oflag=O_RDONLY)FsBaseFile
            open(FsBaseFile *dir, uint32_t index, oflag_t oflag)FsBaseFile
            open(FsVolume *vol, const char *path, oflag_t oflag)FsBaseFile
            open(const char *path, oflag_t oflag=O_RDONLY)FsBaseFileinline
            openNext(FsBaseFile *dir, oflag_t oflag=O_RDONLY)FsBaseFile
            operator bool()FsBaseFileinline
            operator=(const FsBaseFile &from)FsBaseFile
            peek()FsBaseFileinline
            position()FsBaseFileinline
            preAllocate(uint64_t length)FsBaseFileinline
            printAccessDateTime(print_t *pr)FsBaseFileinline
            printCreateDateTime(print_t *pr)FsBaseFileinline
            printField(double value, char term, uint8_t prec=2)FsBaseFileinline
            printField(float value, char term, uint8_t prec=2)FsBaseFileinline
            printField(Type value, char term)FsBaseFileinline
            printFileSize(print_t *pr)FsBaseFileinline
            printModifyDateTime(print_t *pr)FsBaseFileinline
            printName(print_t *pr)FsBaseFileinline
            read()FsBaseFileinline
            read(void *buf, size_t count)FsBaseFileinline
            remove()FsBaseFile
            remove(const char *path)FsBaseFileinline
            rename(const char *newPath)FsBaseFileinline
            rename(FsBaseFile *dirFile, const char *newPath)FsBaseFileinline
            rewind()FsBaseFileinline
            rewindDirectory()FsBaseFileinline
            rmdir()FsBaseFile
            seek(uint64_t pos)FsBaseFileinline
            seekCur(int64_t offset)FsBaseFileinline
            seekEnd(int64_t offset=0)FsBaseFileinline
            seekSet(uint64_t pos)FsBaseFileinline
            size()FsBaseFileinline
            sync()FsBaseFileinline
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FsBaseFileinline
            truncate()FsBaseFileinline
            truncate(uint64_t length)FsBaseFileinline
            write(uint8_t b)FsBaseFileinline
            write(const void *buf, size_t count)FsBaseFileinline
            ~FsBaseFile() (defined in FsBaseFile)FsBaseFileinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file.html deleted file mode 100644 index cc1f2e5f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file.html +++ /dev/null @@ -1,2599 +0,0 @@ - - - - - - - -SdFat: FsBaseFile Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            FsBaseFile Class Reference
            -
            -
            - -

            FsBaseFile class. - More...

            - -

            #include <FsFile.h>

            -
            -Inheritance diagram for FsBaseFile:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            uint64_t curPosition ()
             
            uint32_t dirIndex ()
             
            bool exists (const char *path)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=nullptr)
             
            uint64_t fileSize ()
             
            uint32_t firstSector ()
             
            void flush ()
             
             FsBaseFile (const FsBaseFile &from)
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            size_t getName (char *name, size_t len)
             
            bool getWriteError ()
             
            bool isContiguous ()
             
            bool isDir ()
             
            bool isDirectory ()
             
            bool isHidden ()
             
            bool isOpen ()
             
            bool isSubDir ()
             
            bool ls (print_t *pr)
             
            bool ls (print_t *pr, uint8_t flags)
             
            bool mkdir (FsBaseFile *dir, const char *path, bool pFlag=true)
             
            const char * name () const
             
            bool open (const char *path, oflag_t oflag=O_RDONLY)
             
            bool open (FsBaseFile *dir, const char *path, oflag_t oflag=O_RDONLY)
             
            bool open (FsBaseFile *dir, uint32_t index, oflag_t oflag)
             
            bool open (FsVolume *vol, const char *path, oflag_t oflag)
             
            bool openNext (FsBaseFile *dir, oflag_t oflag=O_RDONLY)
             
             operator bool ()
             
            FsBaseFileoperator= (const FsBaseFile &from)
             
            int peek ()
             
            uint64_t position ()
             
            bool preAllocate (uint64_t length)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            bool remove ()
             
            bool remove (const char *path)
             
            bool rename (const char *newPath)
             
            bool rename (FsBaseFile *dirFile, const char *newPath)
             
            void rewind ()
             
            void rewindDirectory ()
             
            bool rmdir ()
             
            bool seek (uint64_t pos)
             
            bool seekCur (int64_t offset)
             
            bool seekEnd (int64_t offset=0)
             
            bool seekSet (uint64_t pos)
             
            uint64_t size ()
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint64_t length)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            FsBaseFile class.

            -

            Constructor & Destructor Documentation

            - -

            ◆ FsBaseFile()

            - -
            -
            - - - - - - - - -
            FsBaseFile::FsBaseFile (const FsBaseFilefrom)
            -
            -

            Copy constructor.

            -
            Parameters
            - - -
            [in]fromObject used to initialize this instance.
            -
            -
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int FsBaseFile::available ()
            -
            -inline
            -
            -
            Returns
            number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsBaseFile::clearWriteError ()
            -
            -inline
            -
            -

            Clear writeError.

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - - - -
            bool FsBaseFile::close ()
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -inline
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Set contiguous flag for FAT16/FAT32 files. Parameters may be nullptr.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t FsBaseFile::curPosition ()
            -
            -inline
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsBaseFile::dirIndex ()
            -
            -inline
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::exists (const char * path)
            -
            -inline
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FsBaseFile::fgetpos (fspos_t * pos)
            -
            -inline
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int FsBaseFile::fgets (char * str,
            int num,
            char * delim = nullptr 
            )
            -
            -inline
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t FsBaseFile::fileSize ()
            -
            -inline
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsBaseFile::firstSector ()
            -
            -inline
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsBaseFile::flush ()
            -
            -inline
            -
            -

            Ensure that any bytes written to the file are saved to the SD card.

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FsBaseFile::fsetpos (const fspos_t * pos)
            -
            -inline
            -
            -

            set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inline
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inline
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FsBaseFile::getError ()
            -
            -inline
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inline
            -
            -

            Get a file's Modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::getName (char * name,
            size_t len 
            )
            -
            -inline
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]lenThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
            -
            -
            -
            Returns
            The length of the returned string.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::getWriteError ()
            -
            -inline
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isContiguous ()
            -
            -inline
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isDir ()
            -
            -inline
            -
            -
            Returns
            True if this is a directory else false.
            - -
            -
            - -

            ◆ isDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isDirectory ()
            -
            -inline
            -
            -

            This function reports if the current file is a directory or not.

            Returns
            true if the file is a directory.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isHidden ()
            -
            -inline
            -
            -
            Returns
            True if this is a hidden file else false.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isOpen ()
            -
            -inline
            -
            -
            Returns
            True if this is an open file/directory else false.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isSubDir ()
            -
            -inline
            -
            -
            Returns
            True if this is a subdirectory file else false.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::ls (print_tpr)
            -
            -inline
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]prPrint object.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::ls (print_tpr,
            uint8_t flags 
            )
            -
            -inline
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint object.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::mkdir (FsBaseFiledir,
            const char * path,
            bool pFlag = true 
            )
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]dirAn open FatFile instance for the directory that will contain the new directory.
            [in]pathA path with a valid 8.3 DOS name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ name()

            - -
            -
            - - - - - -
            - - - - - - - -
            const char* FsBaseFile::name () const
            -
            -inline
            -
            -

            No longer implemented due to Long File Names.

            -

            Use getName(char* name, size_t size).

            Returns
            a pointer to replacement suggestion.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (const char * path,
            oflag_t oflag = O_RDONLY 
            )
            -
            -inline
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - -
            [in]pathA path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (FsBaseFiledir,
            const char * path,
            oflag_t oflag = O_RDONLY 
            )
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirAn open file instance for the directory containing the file to be opened.
            [in]pathA path with a valid 8.3 DOS name for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            O_RDONLY - Open for reading only..

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing only.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one file object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (FsBaseFiledir,
            uint32_t index,
            oflag_t oflag 
            )
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirAn open FsFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see FsFile::open(FsFile*, const char*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (FsVolumevol,
            const char * path,
            oflag_t oflag 
            )
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathA path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::openNext (FsBaseFiledir,
            oflag_t oflag = O_RDONLY 
            )
            -
            -

            Opens the next file or folder in a directory.

            Parameters
            - - - -
            [in]dirdirectory containing files.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a file object.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            FsBaseFile::operator bool ()
            -
            -inline
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ operator=()

            - -
            -
            - - - - - - - - -
            FsBaseFile & FsBaseFile::operator= (const FsBaseFilefrom)
            -
            -

            Copy assignment operator

            Parameters
            - - -
            [in]fromObject used to initialize this instance.
            -
            -
            -
            Returns
            assigned object.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int FsBaseFile::peek ()
            -
            -inline
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ position()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t FsBaseFile::position ()
            -
            -inline
            -
            -
            Returns
            the current file position.
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::preAllocate (uint64_t length)
            -
            -inline
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will contain uninitialized data for FAT16/FAT32 files. exFAT files will have zero validLength and dataLength will equal the requested length.

            -
            Parameters
            - - -
            [in]lengthsize of the file in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printAccessDateTime (print_tpr)
            -
            -inline
            -
            -

            Print a file's access date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printCreateDateTime (print_tpr)
            -
            -inline
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::printField (Type value,
            char term 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printFileSize (print_tpr)
            -
            -inline
            -
            -

            Print a file's size.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printModifyDateTime (print_tpr)
            -
            -inline
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printName (print_tpr)
            -
            -inline
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int FsBaseFile::read ()
            -
            -inline
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int FsBaseFile::read (void * buf,
            size_t count 
            )
            -
            -inline
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than count, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - - - -
            bool FsBaseFile::remove ()
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::remove (const char * path)
            -
            -inline
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::rename (const char * newPath)
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::rename (FsBaseFiledirFile,
            const char * newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsBaseFile::rewind ()
            -
            -inline
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rewindDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsBaseFile::rewindDirectory ()
            -
            -inline
            -
            -

            Rewind a file if it is a directory

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - - - -
            bool FsBaseFile::rmdir ()
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seek()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seek (uint64_t pos)
            -
            -inline
            -
            -

            Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

            -
            Parameters
            - - -
            [in]posthe new file position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seekCur (int64_t offset)
            -
            -inline
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seekEnd (int64_t offset = 0)
            -
            -inline
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seekSet (uint64_t pos)
            -
            -inline
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ size()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t FsBaseFile::size ()
            -
            -inline
            -
            -
            Returns
            the file's size.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::sync ()
            -
            -inline
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -inline
            -
            -

            Set a file's timestamps in its directory entry.

            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date and time.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::truncate ()
            -
            -inline
            -
            -

            Truncate a file to the current position.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::truncate (uint64_t length)
            -
            -inline
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ write() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::write (const void * buf,
            size_t count 
            )
            -
            -inline
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
            - -
            -
            - -

            ◆ write() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::write (uint8_t b)
            -
            -inline
            -
            -

            Write a byte to a file. Required by the Arduino Print class.

            Parameters
            - - -
            [in]bthe byte to be written. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            1 for success and 0 for failure.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FsLib/FsFile.h
            • -
            • Arduino/libraries/SdFat/src/FsLib/FsFile.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_base_file__inherit__graph.png deleted file mode 100644 index d72ae9e9a0f55b737f84e5bfccc8f091a03cdb0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2409 zcmcImc{Cf?9yY3_mWnEEDVfi4sB)6YtG?=e_%tj1L;7HC zE+NJ+h(>r#!s?aidOlYK8hWP@MDn#D(yJ2sJ?g}>y|b}y@*ohXet^&C7viawL#PlG z>RujtXv$n0Ddjdvh!iV%yHlB9m^>}kqipHm>K(?X6=StvE$qf}wt^0Q&8O1$2#}JZ zk2ReL_SeN1wXsv71Og-bQ$xT|W}OYSAVa0$YJ6RfKoIrEv<0Rnd3aIH zD*H_k517%NAnyE9df$7}=lQ^n(T8Zkl0|2(7WF!&hLuiLj&zu~jm=}*Ibgf|-;}Ze zZJCXP&!MPKvpd9zC&zmkrm{Swo+f!X{+!xOgEx`pRgmYy}-)?*U6gKEk(jZtGE5VHPFC!|ue9~Ul3tA(ht+;M} zuA3dh!yzaQzu?t#(e`dOZ5{q=rm4K1N23{=|;VG z_u~8NwYJ{kGk1iCJ*viJb5RuX3X{;*Vz6ZJ#M=^`UeJhhLf&y_a z?Qt;Yk!tsG8BFahe0djfw|}dPelm9(!}V^`4o^j%G$LE=!}r(+r*WqdFG^vTwm`jN!t3=O>#?i*eAdp(_TN$v7T5Tker6%KxITuR@Z6=47nRdI6_#f}yiuF% z97>mbB#F2>4UMi7^)}!+yJOi-O}&+GKW$|sPg|U@1RqsP+}S@zYFcKsjO7}GbQmH4ZgNn8F$c(Lrex>wixp&y7APdxbxn68 z7%bg{T0y<;EQ72ay1j$vBKi!4YC0~IL>)Qd24DQnxP9JCt>H;q%-rI30LkFKA87D> z(-Q-nZ^T&_!wg$6MH>W>HF(-tGg3n~ss2)}G6PN#)VE&*^*N2zmEXZC!Ez?SPMHl$ zaoK-~u8=?V<^k%}nbNWdud>Dx(mJYO{7|1ze`H>F<)NjF5O$GgOmkNh@Oy3;Dsd_}<6RZm5Iaq(L5$C!4SPHfA>>KskCtA~HOg-kK%Du- zxpU)IN572nx#nASr;Lb}NXAh-D3LjYeL9-#cb_Jnt+gB&BuqW-G} z1op!-V`2g4F$pveo3xT}4%vM+o@uTV&Qx#fq-z0Z;Y;AJnx%y2v6Ar@ zz;WYpZ3q9?ag33R6YP~;KI#PRWRYeI|ob;YQ0WQR<~1cz`14AU}y zCAH7QRGew_mRy&qI+Vid6PF!s!4dY1B(-siLv>H*bu#9XX5mF|eT2qvUJ%Bmburor ze1SicvNIddpLXC0!1}IWnChwt7%&$vnRE0!Xvo5{n1D> zn*kO+kGzgA!FzTdv;X+F+s$9L)~FvzYpp5Dv(fx^yYNg3n%*3;EAXdd2Kg?GW^I-% z7=A9PUk`dbb1{u`IotpV1lOst6rjDYb&F&@7m^&n*@PI?38mJtl5PKFE6UHObbYzuZ^6=i~i8X;Khk^JE6)K^pv3$gG zF(a_zt(_NuamP;dgE~m{bNx~N;b4O^pivOpN$}?dMtum?kR)uFXT>r~TE{R-S!H!$M=C{@G f1<}0^ib&~Pi`|BfmvrW6@E(L(+FRfu9&vvHXIIhI diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache-members.html deleted file mode 100644 index 540c5de1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FsCache Member List
            -
            -
            - -

            This is the complete list of members for FsCache, including all inherited members.

            - - - - - - - - - - - - - - - - - -
            CACHE_FOR_READFsCachestatic
            CACHE_FOR_WRITEFsCachestatic
            CACHE_OPTION_NO_READFsCachestatic
            CACHE_RESERVE_FOR_WRITEFsCachestatic
            CACHE_STATUS_DIRTYFsCachestatic
            CACHE_STATUS_MASKFsCachestatic
            cacheBuffer()FsCacheinline
            clear()FsCacheinline
            dirty()FsCacheinline
            FsCache() (defined in FsCache)FsCacheinline
            get(uint32_t sector, uint8_t option)FsCache
            init(BlockDevice *blockDev)FsCacheinline
            invalidate()FsCache
            isDirty()FsCacheinline
            sector()FsCacheinline
            sync()FsCache
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache.html deleted file mode 100644 index 6e6ff5a3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_cache.html +++ /dev/null @@ -1,502 +0,0 @@ - - - - - - - -SdFat: FsCache Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Sector cache. - More...

            - -

            #include <ExFatPartition.h>

            - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            uint8_t * cacheBuffer ()
             
            uint8_t * clear ()
             
            void dirty ()
             
            uint8_t * get (uint32_t sector, uint8_t option)
             
            void init (BlockDevice *blockDev)
             
            void invalidate ()
             
            bool isDirty ()
             
            uint32_t sector ()
             
            bool sync ()
             
            - - - - - - - - - - - - - -

            -Static Public Attributes

            static const uint8_t CACHE_FOR_READ = 0
             
            static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
             
            static const uint8_t CACHE_OPTION_NO_READ = 2
             
            static const uint8_t CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
             
            static const uint8_t CACHE_STATUS_DIRTY = 1
             
            static const uint8_t CACHE_STATUS_MASK = CACHE_STATUS_DIRTY
             
            -

            Detailed Description

            -

            Sector cache.

            -

            Member Function Documentation

            - -

            ◆ cacheBuffer()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t* FsCache::cacheBuffer ()
            -
            -inline
            -
            -
            Returns
            Cache sector address.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t* FsCache::clear ()
            -
            -inline
            -
            -
            Returns
            Clear the cache and returns a pointer to the cache.
            - -
            -
            - -

            ◆ dirty()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsCache::dirty ()
            -
            -inline
            -
            -

            Set current sector dirty.

            - -
            -
            - -

            ◆ get()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            uint8_t * FsCache::get (uint32_t sector,
            uint8_t option 
            )
            -
            -

            Fill cache with sector data.

            Parameters
            - - - -
            [in]sectorSector to read.
            [in]optionmode for cached sector.
            -
            -
            -
            Returns
            Address of cached sector.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FsCache::init (BlockDeviceblockDev)
            -
            -inline
            -
            -

            Initialize the cache.

            Parameters
            - - -
            [in]blockDevBlock device for this partition.
            -
            -
            - -
            -
            - -

            ◆ invalidate()

            - -
            -
            - - - - - - - -
            void FsCache::invalidate ()
            -
            -

            Invalidate current cache sector.

            - -
            -
            - -

            ◆ isDirty()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsCache::isDirty ()
            -
            -inline
            -
            -
            Returns
            dirty status
            - -
            -
            - -

            ◆ sector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsCache::sector ()
            -
            -inline
            -
            -
            Returns
            Logical sector number for cached sector.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - - - -
            bool FsCache::sync ()
            -
            -

            Write current sector if dirty.

            Returns
            true for success or false for failure.
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ CACHE_FOR_READ

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FsCache::CACHE_FOR_READ = 0
            -
            -static
            -
            -

            Cache sector for read.

            - -
            -
            - -

            ◆ CACHE_FOR_WRITE

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FsCache::CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
            -
            -static
            -
            -

            Cache sector for write.

            - -
            -
            - -

            ◆ CACHE_OPTION_NO_READ

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FsCache::CACHE_OPTION_NO_READ = 2
            -
            -static
            -
            -

            Sync existing sector but do not read new sector.

            - -
            -
            - -

            ◆ CACHE_RESERVE_FOR_WRITE

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FsCache::CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
            -
            -static
            -
            -

            Reserve cache sector for write - do not read from sector device.

            - -
            -
            - -

            ◆ CACHE_STATUS_DIRTY

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FsCache::CACHE_STATUS_DIRTY = 1
            -
            -static
            -
            -

            Cached sector is dirty

            - -
            -
            - -

            ◆ CACHE_STATUS_MASK

            - -
            -
            - - - - - -
            - - - - -
            const uint8_t FsCache::CACHE_STATUS_MASK = CACHE_STATUS_DIRTY
            -
            -static
            -
            -

            Cache sector status bits

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatPartition.h
            • -
            • Arduino/libraries/SdFat/src/ExFatLib/ExFatPartition.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file-members.html deleted file mode 100644 index b2f41d35..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file-members.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FsFile Member List
            -
            -
            - -

            This is the complete list of members for FsFile, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()StreamFile< FsBaseFile, uint64_t >inline
            clearWriteError()FsBaseFileinline
            close()FsBaseFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)FsBaseFileinline
            curPosition()FsBaseFileinline
            dirIndex()FsBaseFileinline
            exists(const char *path)FsBaseFileinline
            fgetpos(fspos_t *pos)FsBaseFileinline
            fgets(char *str, int num, char *delim=nullptr)FsBaseFileinline
            fileSize()FsBaseFileinline
            firstSector()FsBaseFileinline
            flush()StreamFile< FsBaseFile, uint64_t >inline
            FsBaseFile() (defined in FsBaseFile)FsBaseFileinline
            FsBaseFile(const FsBaseFile &from)FsBaseFile
            fsetpos(const fspos_t *pos)FsBaseFileinline
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)FsBaseFileinline
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)FsBaseFileinline
            getError()FsBaseFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)FsBaseFileinline
            getName(char *name, size_t len)FsBaseFileinline
            getWriteError()FsBaseFileinline
            isContiguous()FsBaseFileinline
            isDir()FsBaseFileinline
            isDirectory()StreamFile< FsBaseFile, uint64_t >inline
            isHidden()FsBaseFileinline
            isOpen()FsBaseFileinline
            isSubDir()FsBaseFileinline
            ls(print_t *pr)FsBaseFileinline
            ls(print_t *pr, uint8_t flags)FsBaseFileinline
            mkdir(FsBaseFile *dir, const char *path, bool pFlag=true)FsBaseFile
            name() constStreamFile< FsBaseFile, uint64_t >inline
            open(FsBaseFile *dir, const char *path, oflag_t oflag=O_RDONLY)FsBaseFile
            open(FsBaseFile *dir, uint32_t index, oflag_t oflag)FsBaseFile
            open(FsVolume *vol, const char *path, oflag_t oflag)FsBaseFile
            open(const char *path, oflag_t oflag=O_RDONLY)FsBaseFileinline
            openNext(FsBaseFile *dir, oflag_t oflag=O_RDONLY)FsBaseFile
            openNextFile(oflag_t oflag=O_RDONLY)FsFileinline
            operator bool()FsBaseFileinline
            operator=(const FsBaseFile &from)FsBaseFile
            peek()StreamFile< FsBaseFile, uint64_t >inline
            position()StreamFile< FsBaseFile, uint64_t >inline
            preAllocate(uint64_t length)FsBaseFileinline
            printAccessDateTime(print_t *pr)FsBaseFileinline
            printCreateDateTime(print_t *pr)FsBaseFileinline
            printField(double value, char term, uint8_t prec=2)FsBaseFileinline
            printField(float value, char term, uint8_t prec=2)FsBaseFileinline
            printField(Type value, char term)FsBaseFileinline
            printFileSize(print_t *pr)FsBaseFileinline
            printModifyDateTime(print_t *pr)FsBaseFileinline
            printName(print_t *pr)FsBaseFileinline
            read()StreamFile< FsBaseFile, uint64_t >inline
            FsBaseFile::read(void *buf, size_t count)FsBaseFileinline
            remove()FsBaseFile
            remove(const char *path)FsBaseFileinline
            rename(const char *newPath)FsBaseFileinline
            rename(FsBaseFile *dirFile, const char *newPath)FsBaseFileinline
            rewind()FsBaseFileinline
            rewindDirectory()StreamFile< FsBaseFile, uint64_t >inline
            rmdir()FsBaseFile
            seek(uint64_t pos)StreamFile< FsBaseFile, uint64_t >inline
            seekCur(int64_t offset)FsBaseFileinline
            seekEnd(int64_t offset=0)FsBaseFileinline
            seekSet(uint64_t pos)FsBaseFileinline
            size()StreamFile< FsBaseFile, uint64_t >inline
            StreamFile() (defined in StreamFile< FsBaseFile, uint64_t >)StreamFile< FsBaseFile, uint64_t >inline
            sync()FsBaseFileinline
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FsBaseFileinline
            truncate()FsBaseFileinline
            truncate(uint64_t length)FsBaseFileinline
            write(uint8_t b)StreamFile< FsBaseFile, uint64_t >inline
            write(const uint8_t *buffer, size_t size)StreamFile< FsBaseFile, uint64_t >inline
            FsBaseFile::write(const void *buf, size_t count)FsBaseFileinline
            ~FsBaseFile() (defined in FsBaseFile)FsBaseFileinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file.html deleted file mode 100644 index 70ca7309..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file.html +++ /dev/null @@ -1,2698 +0,0 @@ - - - - - - - -SdFat: FsFile Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            FsFile Class Reference
            -
            -
            - -

            FsBaseFile file with Arduino Stream. - More...

            - -

            #include <FsFile.h>

            -
            -Inheritance diagram for FsFile:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for FsFile:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            uint64_t curPosition ()
             
            uint32_t dirIndex ()
             
            bool exists (const char *path)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=nullptr)
             
            uint64_t fileSize ()
             
            uint32_t firstSector ()
             
            void flush ()
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            size_t getName (char *name, size_t len)
             
            bool getWriteError ()
             
            bool isContiguous ()
             
            bool isDir ()
             
            bool isDirectory ()
             
            bool isHidden ()
             
            bool isOpen ()
             
            bool isSubDir ()
             
            bool ls (print_t *pr)
             
            bool ls (print_t *pr, uint8_t flags)
             
            bool mkdir (FsBaseFile *dir, const char *path, bool pFlag=true)
             
            const char * name () const
             
            bool open (const char *path, oflag_t oflag=O_RDONLY)
             
            bool open (FsBaseFile *dir, const char *path, oflag_t oflag=O_RDONLY)
             
            bool open (FsBaseFile *dir, uint32_t index, oflag_t oflag)
             
            bool open (FsVolume *vol, const char *path, oflag_t oflag)
             
            bool openNext (FsBaseFile *dir, oflag_t oflag=O_RDONLY)
             
            FsFile openNextFile (oflag_t oflag=O_RDONLY)
             
             operator bool ()
             
            int peek ()
             
            uint64_t position ()
             
            bool preAllocate (uint64_t length)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            bool remove ()
             
            bool remove (const char *path)
             
            bool rename (const char *newPath)
             
            bool rename (FsBaseFile *dirFile, const char *newPath)
             
            void rewind ()
             
            void rewindDirectory ()
             
            bool rmdir ()
             
            bool seek (uint64_t pos)
             
            bool seekCur (int64_t offset)
             
            bool seekEnd (int64_t offset=0)
             
            bool seekSet (uint64_t pos)
             
            uint64_t size ()
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint64_t length)
             
            size_t write (const uint8_t *buffer, size_t size)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            FsBaseFile file with Arduino Stream.

            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< FsBaseFile , uint64_t >::available ()
            -
            -inlineinherited
            -
            -
            Returns
            number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsBaseFile::clearWriteError ()
            -
            -inlineinherited
            -
            -

            Clear writeError.

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::close ()
            -
            -inherited
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -inlineinherited
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Set contiguous flag for FAT16/FAT32 files. Parameters may be nullptr.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t FsBaseFile::curPosition ()
            -
            -inlineinherited
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsBaseFile::dirIndex ()
            -
            -inlineinherited
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::exists (const char * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FsBaseFile::fgetpos (fspos_t * pos)
            -
            -inlineinherited
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int FsBaseFile::fgets (char * str,
            int num,
            char * delim = nullptr 
            )
            -
            -inlineinherited
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t FsBaseFile::fileSize ()
            -
            -inlineinherited
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsBaseFile::firstSector ()
            -
            -inlineinherited
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StreamFile< FsBaseFile , uint64_t >::flush ()
            -
            -inlineinherited
            -
            -

            Ensure that any bytes written to the file are saved to the SD card.

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FsBaseFile::fsetpos (const fspos_t * pos)
            -
            -inlineinherited
            -
            -

            set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inlineinherited
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inlineinherited
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FsBaseFile::getError ()
            -
            -inlineinherited
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inlineinherited
            -
            -

            Get a file's Modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::getName (char * name,
            size_t len 
            )
            -
            -inlineinherited
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]lenThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
            -
            -
            -
            Returns
            The length of the returned string.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::getWriteError ()
            -
            -inlineinherited
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isContiguous ()
            -
            -inlineinherited
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isDir ()
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a directory else false.
            - -
            -
            - -

            ◆ isDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool StreamFile< FsBaseFile , uint64_t >::isDirectory ()
            -
            -inlineinherited
            -
            -

            This function reports if the current file is a directory or not.

            Returns
            true if the file is a directory.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isHidden ()
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a hidden file else false.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isOpen ()
            -
            -inlineinherited
            -
            -
            Returns
            True if this is an open file/directory else false.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::isSubDir ()
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a subdirectory file else false.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::ls (print_tpr)
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]prPrint object.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::ls (print_tpr,
            uint8_t flags 
            )
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint object.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::mkdir (FsBaseFiledir,
            const char * path,
            bool pFlag = true 
            )
            -
            -inherited
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]dirAn open FatFile instance for the directory that will contain the new directory.
            [in]pathA path with a valid 8.3 DOS name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ name()

            - -
            -
            - - - - - -
            - - - - - - - -
            const char* StreamFile< FsBaseFile , uint64_t >::name () const
            -
            -inlineinherited
            -
            -

            No longer implemented due to Long File Names.

            -

            Use getName(char* name, size_t size).

            Returns
            a pointer to replacement suggestion.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (const char * path,
            oflag_t oflag = O_RDONLY 
            )
            -
            -inlineinherited
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - -
            [in]pathA path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (FsBaseFiledir,
            const char * path,
            oflag_t oflag = O_RDONLY 
            )
            -
            -inherited
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirAn open file instance for the directory containing the file to be opened.
            [in]pathA path with a valid 8.3 DOS name for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            O_RDONLY - Open for reading only..

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing only.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one file object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (FsBaseFiledir,
            uint32_t index,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirAn open FsFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see FsFile::open(FsFile*, const char*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::open (FsVolumevol,
            const char * path,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathA path for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::openNext (FsBaseFiledir,
            oflag_t oflag = O_RDONLY 
            )
            -
            -inherited
            -
            -

            Opens the next file or folder in a directory.

            Parameters
            - - - -
            [in]dirdirectory containing files.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a file object.
            - -
            -
            - -

            ◆ openNextFile()

            - -
            -
            - - - - - -
            - - - - - - - - -
            FsFile FsFile::openNextFile (oflag_t oflag = O_RDONLY)
            -
            -inline
            -
            -

            Opens the next file or folder in a directory.

            -
            Parameters
            - - -
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FatStream object.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            FsBaseFile::operator bool ()
            -
            -inlineinherited
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< FsBaseFile , uint64_t >::peek ()
            -
            -inlineinherited
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ position()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t StreamFile< FsBaseFile , uint64_t >::position ()
            -
            -inlineinherited
            -
            -
            Returns
            the current file position.
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::preAllocate (uint64_t length)
            -
            -inlineinherited
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will contain uninitialized data for FAT16/FAT32 files. exFAT files will have zero validLength and dataLength will equal the requested length.

            -
            Parameters
            - - -
            [in]lengthsize of the file in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printAccessDateTime (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's access date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printCreateDateTime (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::printField (Type value,
            char term 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printFileSize (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's size.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printModifyDateTime (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FsBaseFile::printName (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int StreamFile< FsBaseFile , uint64_t >::read ()
            -
            -inlineinherited
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int FsBaseFile::read (void * buf,
            size_t count 
            )
            -
            -inlineinherited
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than count, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::remove ()
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::remove (const char * path)
            -
            -inlineinherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::rename (const char * newPath)
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::rename (FsBaseFiledirFile,
            const char * newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsBaseFile::rewind ()
            -
            -inlineinherited
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rewindDirectory()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StreamFile< FsBaseFile , uint64_t >::rewindDirectory ()
            -
            -inlineinherited
            -
            -

            Rewind a file if it is a directory

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::rmdir ()
            -
            -inherited
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seek()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool StreamFile< FsBaseFile , uint64_t >::seek (uint64_t pos)
            -
            -inlineinherited
            -
            -

            Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

            -
            Parameters
            - - -
            [in]posthe new file position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seekCur (int64_t offset)
            -
            -inlineinherited
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seekEnd (int64_t offset = 0)
            -
            -inlineinherited
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::seekSet (uint64_t pos)
            -
            -inlineinherited
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ size()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint64_t StreamFile< FsBaseFile , uint64_t >::size ()
            -
            -inlineinherited
            -
            -
            Returns
            the file's size.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::sync ()
            -
            -inlineinherited
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsBaseFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -inlineinherited
            -
            -

            Set a file's timestamps in its directory entry.

            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date and time.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsBaseFile::truncate ()
            -
            -inlineinherited
            -
            -

            Truncate a file to the current position.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsBaseFile::truncate (uint64_t length)
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ write() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StreamFile< FsBaseFile , uint64_t >::write (const uint8_t * buffer,
            size_t size 
            )
            -
            -inlineinherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufferPointer to the location of the data to be written.
            [in]sizeNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always size.
            - -
            -
            - -

            ◆ write() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FsBaseFile::write (const void * buf,
            size_t count 
            )
            -
            -inlineinherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
            - -
            -
            - -

            ◆ write() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t StreamFile< FsBaseFile , uint64_t >::write (uint8_t b)
            -
            -inlineinherited
            -
            -

            Write a byte to a file. Required by the Arduino Print class.

            Parameters
            - - -
            [in]bthe byte to be written. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            1 for success and 0 for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/FsLib/FsFile.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file__coll__graph.png deleted file mode 100644 index 67e504a9a9f126137798feb8f7ca40417c94d718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4255 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_file__inherit__graph.png deleted file mode 100644 index 67e504a9a9f126137798feb8f7ca40417c94d718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4255 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume-members.html deleted file mode 100644 index 7a99d114..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            FsVolume Member List
            -
            -
            - -

            This is the complete list of members for FsVolume, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(BlockDevice *blockDev)FsVolume
            bytesPerCluster()FsVolumeinline
            chdir()FsVolumeinline
            chdir(const char *path)FsVolumeinline
            chdir(const String &path)FsVolumeinline
            chvol()FsVolumeinline
            clusterCount()FsVolumeinline
            cwv()FsVolumeinlinestatic
            dataStartSector() constFsVolumeinline
            end()FsVolumeinline
            exists(const char *path)FsVolumeinline
            exists(const String &path)FsVolumeinline
            fatStartSector() constFsVolumeinline
            fatType() constFsVolumeinline
            freeClusterCount()FsVolumeinline
            FsBaseFile classFsVolumefriend
            FsVolume() (defined in FsVolume)FsVolumeinline
            ls(print_t *pr)FsVolumeinline
            ls(print_t *pr, uint8_t flags)FsVolumeinline
            ls(print_t *pr, const char *path, uint8_t flags)FsVolume
            ls()FsVolumeinline
            ls(uint8_t flags)FsVolumeinline
            ls(const char *path, uint8_t flags=0)FsVolumeinline
            mkdir(const char *path, bool pFlag=true)FsVolumeinline
            mkdir(const String &path, bool pFlag=true)FsVolumeinline
            open(const char *path, oflag_t oflag=0X00)FsVolume
            open(const String &path, oflag_t oflag=0X00)FsVolume
            remove(const char *path)FsVolumeinline
            remove(const String &path)FsVolumeinline
            rename(const char *oldPath, const char *newPath)FsVolumeinline
            rename(const String &oldPath, const String &newPath)FsVolumeinline
            rmdir(const char *path)FsVolumeinline
            rmdir(const String &path)FsVolumeinline
            sectorsPerCluster() constFsVolumeinline
            ~FsVolume() (defined in FsVolume)FsVolumeinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume.html deleted file mode 100644 index c8593512..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume.html +++ /dev/null @@ -1,1296 +0,0 @@ - - - - - - - -SdFat: FsVolume Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            FsVolume class. - More...

            - -

            #include <FsVolume.h>

            -
            -Inheritance diagram for FsVolume:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (BlockDevice *blockDev)
             
            uint32_t bytesPerCluster ()
             
            bool chdir ()
             
            bool chdir (const char *path)
             
            bool chdir (const String &path)
             
            void chvol ()
             
            uint32_t clusterCount ()
             
            uint32_t dataStartSector () const
             
            void end ()
             
            bool exists (const char *path)
             
            bool exists (const String &path)
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            uint32_t freeClusterCount ()
             
            bool ls ()
             
            bool ls (const char *path, uint8_t flags=0)
             
            bool ls (print_t *pr)
             
            bool ls (print_t *pr, const char *path, uint8_t flags)
             
            bool ls (print_t *pr, uint8_t flags)
             
            bool ls (uint8_t flags)
             
            bool mkdir (const char *path, bool pFlag=true)
             
            bool mkdir (const String &path, bool pFlag=true)
             
            FsFile open (const char *path, oflag_t oflag=0X00)
             
            FsFile open (const String &path, oflag_t oflag=0X00)
             
            bool remove (const char *path)
             
            bool remove (const String &path)
             
            bool rename (const char *oldPath, const char *newPath)
             
            bool rename (const String &oldPath, const String &newPath)
             
            bool rmdir (const char *path)
             
            bool rmdir (const String &path)
             
            uint32_t sectorsPerCluster () const
             
            - - - -

            -Static Public Member Functions

            static FsVolumecwv ()
             
            - - - -

            -Friends

            class FsBaseFile
             
            -

            Detailed Description

            -

            FsVolume class.

            -

            Member Function Documentation

            - -

            ◆ begin()

            - -
            -
            - - - - - - - - -
            bool FsVolume::begin (BlockDeviceblockDev)
            -
            -

            Initialize an FatVolume object.

            Parameters
            - - -
            [in]blockDevDevice block driver.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::bytesPerCluster ()
            -
            -inline
            -
            -
            Returns
            the number of bytes in a cluster.
            - -
            -
            - -

            ◆ chdir() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsVolume::chdir ()
            -
            -inline
            -
            -

            Set volume working directory to root.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::chdir (const char * path)
            -
            -inline
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::chdir (const String & path)
            -
            -inline
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chvol()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsVolume::chvol ()
            -
            -inline
            -
            -

            Change global working volume to this volume.

            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::clusterCount ()
            -
            -inline
            -
            -
            Returns
            The total number of clusters in the volume.
            - -
            -
            - -

            ◆ cwv()

            - -
            -
            - - - - - -
            - - - - - - - -
            static FsVolume* FsVolume::cwv ()
            -
            -inlinestatic
            -
            -
            Returns
            current working volume.
            - -
            -
            - -

            ◆ dataStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::dataStartSector () const
            -
            -inline
            -
            -
            Returns
            The logical sector number for the start of file data.
            - -
            -
            - -

            ◆ end()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsVolume::end ()
            -
            -inline
            -
            -

            free dynamic memory and end access to volume

            - -
            -
            - -

            ◆ exists() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::exists (const char * path)
            -
            -inline
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ exists() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::exists (const String & path)
            -
            -inline
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::fatStartSector () const
            -
            -inline
            -
            -
            Returns
            The logical sector number for the start of the first FAT.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FsVolume::fatType () const
            -
            -inline
            -
            -
            Returns
            Partition type, FAT_TYPE_EXFAT, FAT_TYPE_FAT32, FAT_TYPE_FAT16, or zero for error.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::freeClusterCount ()
            -
            -inline
            -
            -
            Returns
            the free cluster count.
            - -
            -
            - -

            ◆ ls() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsVolume::ls ()
            -
            -inline
            -
            -

            List directory contents.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::ls (const char * path,
            uint8_t flags = 0 
            )
            -
            -inline
            -
            -

            List the directory contents of a directory to Serial.

            -
            Parameters
            - - - -
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            -
            -true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::ls (print_tpr)
            -
            -inline
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]prPrint object.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [4/6]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsVolume::ls (print_tpr,
            const char * path,
            uint8_t flags 
            )
            -
            -

            List the directory contents of a directory.

            -
            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::ls (print_tpr,
            uint8_t flags 
            )
            -
            -inline
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint object.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::ls (uint8_t flags)
            -
            -inline
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::mkdir (const char * path,
            bool pFlag = true 
            )
            -
            -inline
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::mkdir (const String & path,
            bool pFlag = true 
            )
            -
            -inline
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            FsFile FsVolume::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FsBaseFile object.
            - -
            -
            - -

            ◆ open() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            FsFile FsVolume::open (const String & path,
            oflag_t oflag = 0X00 
            )
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FsBaseFile object.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::remove (const char * path)
            -
            -inline
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::remove (const String & path)
            -
            -inline
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::rename (const char * oldPath,
            const char * newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::rename (const String & oldPath,
            const String & newPath 
            )
            -
            -inline
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::rmdir (const char * path)
            -
            -inline
            -
            -

            Remove a subdirectory from the volume's root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::rmdir (const String & path)
            -
            -inline
            -
            -

            Remove a subdirectory from the volume's root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::sectorsPerCluster () const
            -
            -inline
            -
            -
            Returns
            The volume's cluster size in sectors.
            - -
            -
            -

            Friends And Related Function Documentation

            - -

            ◆ FsBaseFile

            - -
            -
            - - - - - -
            - - - - -
            friend class FsBaseFile
            -
            -friend
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure. FsBaseFile allowed access to private members.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/FsLib/FsVolume.h
            • -
            • Arduino/libraries/SdFat/src/FsLib/FsVolume.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_fs_volume__inherit__graph.png deleted file mode 100644 index cb61c56c4377a39fa2c8c6f4bfd1b05d3fff4523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2114 zcmcJQc{Cf?9>+b?8q3g7OUKlbT2cfrv_cHZ#1cuYt+kfgwbl-?q|q5dO;xlqlp0S< z2~mm|)H-xDM~OWmNLu4rVv8ljh~=g4%z5vfH~+qO?z!i8?)U!lyZ8J1{C+>UIN3`} zDocuph)5$G;BLbBLbyA`#Xcz)PmsbO7KF5ii=2L1&$~!O5s}aN2)On2$?(O z>cwZl2cllVufIDdB4r>2ce&KKC1$%l?f#%2MO}1cb#$;{^wYA*9bOH&o(VzFFsEI^!ag}QO{=B?BQrDQ`73X`lwR!Vj`m# zByE6qOZ+%$h@ygIWMm}mUG3WXecl6NVq@>$^PSvhhH?ZGWt2QuUJ+$#HYwvL0>#-Q zReq3gTd0pUY#yfYOD0WOF+Q<}Y3vco`s)#~FZ;Be^BL!#vACn@^k3D#@zTbwKUK=& zL`*z&4X>WqnjFt`(JlL%pqjf!yUlSztv=GlDW9cend%y_9K5cojNB14AuV&J1BOxs zs+9B4Bn$?VqUVWijbT0OE~srC*&9bwSJZ68lkk8|ap0V+O`FC)Us=yrs^!kTsi>>d z=Ngq49CidZHyi5k_+j%y#oSCf9fWm3ZqtTjW)sppQ?UvbVkISv?nuQLT?2nqMQQuu~UK)!_zKB2_ht6+WB*$THu@lWi32rx<5ocq~0 zzYENC#1wm9P*KgwQBCZBB-9gLa+M6PBIN|uN%Sv114e;wO1#*DqBV?h3pJ#)7G@;k zi3VO8rOg;Y&TCPc(kLN`d%cyLnGHVP9<#sCHvnowwJeCyV8KV;2mN|Q zaE<4#vYGaOq($5Ps?^5Gm+2XoIl0prUE9JRZ5eiHbfWLHufZezf#B8W+A7eseLs$` z#aJ-x-^?i3%r2+Kw1Yc_UwvOqdF|agA_m1q z5M^-tk4fkcsHe2rJXOeRKv)3hhWj0MEqS%5$%zW}D`dyA2(&5hR=Zj+|K&8l6kI7o z4bAsdSn*gglQT&P+N~myKbri04k~edf^ZYAvRlaFcCKBPjMvL~Mp*U7I$PTFa^AoRAA? zA+8{8G$Zm`>yCk5ekUxh@HCi}xVrB;yQhd7ANP7S0TILh*?qkZr-RvH@-I!v=<(R5 zTs_IKzn}gPb3ITnmD3|KV*F1)uIsQH4 z9Q(Lkh+jhF6rtkk!186m1hVu%8xdci3g zXDpJN^~ak0-_qXU~WpwFG=UGZaF8{>#Zej@vxKz)$~e OU_6HQJ){uO1d zT13!kg0Adf#Mj-*+Qd7k9^*h**8d5%e*?{Ov8vhYd^y~GxcBzl=}!5}IcHuOMQBfB z#&MubTIGVF)y3bU - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            MinimumSerial Member List
            -
            -
            - -

            This is the complete list of members for MinimumSerial, including all inherited members.

            - - - - - - - -
            available()MinimumSerial
            begin(uint32_t baud)MinimumSerial
            flush()MinimumSerial
            operator bool()MinimumSerialinline
            read()MinimumSerial
            write(uint8_t b)MinimumSerial
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial.html deleted file mode 100644 index 7544e7f4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - -SdFat: MinimumSerial Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            MinimumSerial Class Reference
            -
            -
            - -

            mini serial class for the SdFat library. - More...

            - -

            #include <MinimumSerial.h>

            -
            -Inheritance diagram for MinimumSerial:
            -
            -
            Inheritance graph
            - - - - -
            [legend]
            -
            -Collaboration diagram for MinimumSerial:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            void begin (uint32_t baud)
             
            void flush ()
             
             operator bool ()
             
            int read ()
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            mini serial class for the SdFat library.

            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - - - -
            int MinimumSerial::available ()
            -
            -
            Returns
            one if data is available.
            - -
            -
            - -

            ◆ begin()

            - -
            -
            - - - - - - - - -
            void MinimumSerial::begin (uint32_t baud)
            -
            -

            Set baud rate for serial port zero and enable in non interrupt mode. Do not call this function if you use another serial library.

            Parameters
            - - -
            [in]baudrate
            -
            -
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - - - -
            void MinimumSerial::flush ()
            -
            -

            Wait for write done.

            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            MinimumSerial::operator bool ()
            -
            -inline
            -
            -
            Returns
            true for hardware serial
            - -
            -
            - -

            ◆ read()

            - -
            -
            - - - - - - - -
            int MinimumSerial::read ()
            -
            -

            Unbuffered read

            Returns
            -1 if no character is available or an available character.
            - -
            -
            - -

            ◆ write()

            - -
            -
            - - - - - - - - -
            size_t MinimumSerial::write (uint8_t b)
            -
            -

            Unbuffered write

            -
            Parameters
            - - -
            [in]bbyte to write.
            -
            -
            -
            Returns
            1
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/MinimumSerial.h
            • -
            • Arduino/libraries/SdFat/src/MinimumSerial.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_minimum_serial__coll__graph.png deleted file mode 100644 index 790bea9ed7794965cac6d6555688accab38dd8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmeAS@N?(olHy`uVBq!ia0vp^6My`7!Cs>;yi zL9c)#ql3%4ez(PM13uPHT(+{UOLoJtuodTnoAevyDn z`GJV3-U8EO=0=NEPn@Q+`qj=;*E(f+4NtPhy^E>*TEM9%-52|H$%ZwHJZ~mD=M=3j zd$;NJ8KK!Rml#f&`s5TXo^_!`&1~mp&cLfrR%)iLFKw=Ux}8aH<BM7ECuDid?8OewW>}yVet!P`TB8y_y9n-`4BJ9K@-Vm* zy!!Cr!{rN{KM(A=^YFtn>4rElM|lR94>souZA;?p4D`*mPpdnE!Io`MI|%xhI@=*-~J;e$}km|I_zp?)0Dk zDpjyFXYm(?pHJT0yu1Bx`ct6F&oTR4k3J8)thw*o%>Mi{r)+C~E!P#SX_=H8(#r5_ z@AEBtlEU5{JN9{X!;{q4t_4gN_}dT5-}^dqy8oF|tOe{EeoMMKp6sl9tSHvmrP_*k zop-h^j5!QX5mXVro?Bzb@L~6RmtD)QTesHLbNkQxBWX4Dn&8CrRaH;?wydj8+QZIJ zU0pp_-8C%TMlRWC=9k#lUilS9QoUB*9b1lc@5&i?3N6WeRZ}k)E-7Amy43aRH=W7R9d93Q$eD5N$+FC< zCDV8H6##2f+nah@Q*KRZ z+Y8tAv!_K*4SRa7?8KiIVb$burC4rmOw>^&jay&yP9X)Y$lD!>h+x4MpA= z)lXJt?bg1y_WZQjJSVS3xJ`P=8G3t1+S}Z1#`PDj%`DN)+P$_WcE`Ro`xzhHv--A2 zLbCt(jr;f6W%Pb3w!u?AJVrG4o_p#a{aE4jrkj_Q^6My`7!Cs>;yi zL9c)#ql3%4ez(PM13uPHT(+{UOLoJtuodTnoAevyDn z`GJV3-U8EO=0=NEPn@Q+`qj=;*E(f+4NtPhy^E>*TEM9%-52|H$%ZwHJZ~mD=M=3j zd$;NJ8KK!Rml#f&`s5TXo^_!`&1~mp&cLfrR%)iLFKw=Ux}8aH<BM7ECuDid?8OewW>}yVet!P`TB8y_y9n-`4BJ9K@-Vm* zy!!Cr!{rN{KM(A=^YFtn>4rElM|lR94>souZA;?p4D`*mPpdnE!Io`MI|%xhI@=*-~J;e$}km|I_zp?)0Dk zDpjyFXYm(?pHJT0yu1Bx`ct6F&oTR4k3J8)thw*o%>Mi{r)+C~E!P#SX_=H8(#r5_ z@AEBtlEU5{JN9{X!;{q4t_4gN_}dT5-}^dqy8oF|tOe{EeoMMKp6sl9tSHvmrP_*k zop-h^j5!QX5mXVro?Bzb@L~6RmtD)QTesHLbNkQxBWX4Dn&8CrRaH;?wydj8+QZIJ zU0pp_-8C%TMlRWC=9k#lUilS9QoUB*9b1lc@5&i?3N6WeRZ}k)E-7Amy43aRH=W7R9d93Q$eD5N$+FC< zCDV8H6##2f+nah@Q*KRZ z+Y8tAv!_K*4SRa7?8KiIVb$burC4rmOw>^&jay&yP9X)Y$lD!>h+x4MpA= z)lXJt?bg1y_WZQjJSVS3xJ`P=8G3t1+S}Z1#`PDj%`DN)+P$_WcE`Ro`xzhHv--A2 zLbCt(jr;f6W%Pb3w!u?AJVrG4o_p#a{aE4jrkj_Q^ - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            PrintFile< BaseFile > Member List
            -
            -
            - -

            This is the complete list of members for PrintFile< BaseFile >, including all inherited members.

            - - -
            write(uint8_t b)PrintFile< BaseFile >inline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file.html deleted file mode 100644 index e62a7e4a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -SdFat: PrintFile< BaseFile > Class Template Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            PrintFile< BaseFile > Class Template Reference
            -
            -
            - -

            PrintFile class. - More...

            - -

            #include <ArduinoFiles.h>

            -
            -Inheritance diagram for PrintFile< BaseFile >:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            -
            -Collaboration diagram for PrintFile< BaseFile >:
            -
            -
            Collaboration graph
            - - - - - -
            [legend]
            - - - - -

            -Public Member Functions

            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            template<class BaseFile>
            -class PrintFile< BaseFile >

            - -

            PrintFile class.

            -

            Member Function Documentation

            - -

            ◆ write()

            - -
            -
            -
            -template<class BaseFile>
            - - - - - -
            - - - - - - - - -
            size_t PrintFile< BaseFile >::write (uint8_t b)
            -
            -inline
            -
            -

            Write a single byte.

            Parameters
            - - -
            [in]bbyte to write.
            -
            -
            -
            Returns
            one for success.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/common/ArduinoFiles.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file__coll__graph.png deleted file mode 100644 index d83d8993639d433e653a5edea89e93d3297a2b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2894 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_print_file__inherit__graph.png deleted file mode 100644 index d83d8993639d433e653a5edea89e93d3297a2b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2894 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base-members.html deleted file mode 100644 index c6456f08..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdBase< Vol > Member List
            -
            -
            - -

            This is the complete list of members for SdBase< Vol >, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(SdCsPin_t csPin=SS)SdBase< Vol >inline
            begin(SdCsPin_t csPin, uint32_t maxSck)SdBase< Vol >inline
            begin(SdSpiConfig spiConfig)SdBase< Vol >inline
            begin(SdioConfig sdioConfig)SdBase< Vol >inline
            card()SdBase< Vol >inline
            cardBegin(SdSpiConfig spiConfig)SdBase< Vol >inline
            cardBegin(SdioConfig sdioConfig)SdBase< Vol >inline
            errorHalt(print_t *pr)SdBase< Vol >inline
            errorHalt(print_t *pr, const char *msg)SdBase< Vol >inline
            errorHalt(print_t *pr, const __FlashStringHelper *msg)SdBase< Vol >inline
            errorHalt(const __FlashStringHelper *msg)SdBase< Vol >inline
            errorHalt()SdBase< Vol >inline
            errorHalt(const char *msg)SdBase< Vol >inline
            errorPrint(print_t *pr)SdBase< Vol >inline
            errorPrint(print_t *pr, char const *msg)SdBase< Vol >inline
            errorPrint(Print *pr, const __FlashStringHelper *msg)SdBase< Vol >inline
            errorPrint(const char *msg)SdBase< Vol >inline
            errorPrint(const __FlashStringHelper *msg)SdBase< Vol >inline
            initErrorHalt(print_t *pr)SdBase< Vol >inline
            initErrorHalt(print_t *pr, const char *msg)SdBase< Vol >inline
            initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdBase< Vol >inline
            initErrorHalt()SdBase< Vol >inline
            initErrorHalt(const char *msg)SdBase< Vol >inline
            initErrorHalt(const __FlashStringHelper *msg)SdBase< Vol >inline
            initErrorPrint(Print *pr)SdBase< Vol >inline
            initErrorPrint()SdBase< Vol >inline
            printFatType(print_t *pr)SdBase< Vol >inline
            printSdError(print_t *pr)SdBase< Vol >inline
            sdErrorCode()SdBase< Vol >inline
            sdErrorData()SdBase< Vol >inline
            vol()SdBase< Vol >inline
            volumeBegin()SdBase< Vol >inline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base.html deleted file mode 100644 index 27d1130d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base.html +++ /dev/null @@ -1,1327 +0,0 @@ - - - - - - - -SdFat: SdBase< Vol > Class Template Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdBase< Vol > Class Template Reference
            -
            -
            - -

            base SD file system template class. - More...

            - -

            #include <SdFat.h>

            -
            -Inheritance diagram for SdBase< Vol >:
            -
            -
            Inheritance graph
            - - - - -
            [legend]
            -
            -Collaboration diagram for SdBase< Vol >:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (SdCsPin_t csPin, uint32_t maxSck)
             
            bool begin (SdCsPin_t csPin=SS)
             
            bool begin (SdioConfig sdioConfig)
             
            bool begin (SdSpiConfig spiConfig)
             
            SdCardcard ()
             
            bool cardBegin (SdioConfig sdioConfig)
             
            bool cardBegin (SdSpiConfig spiConfig)
             
            void errorHalt ()
             
            void errorHalt (const __FlashStringHelper *msg)
             
            void errorHalt (const char *msg)
             
            void errorHalt (print_t *pr)
             
            void errorHalt (print_t *pr, const __FlashStringHelper *msg)
             
            void errorHalt (print_t *pr, const char *msg)
             
            void errorPrint (const __FlashStringHelper *msg)
             
            void errorPrint (const char *msg)
             
            void errorPrint (Print *pr, const __FlashStringHelper *msg)
             
            void errorPrint (print_t *pr)
             
            void errorPrint (print_t *pr, char const *msg)
             
            void initErrorHalt ()
             
            void initErrorHalt (const __FlashStringHelper *msg)
             
            void initErrorHalt (const char *msg)
             
            void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
             
            void initErrorHalt (print_t *pr)
             
            void initErrorHalt (print_t *pr, const char *msg)
             
            void initErrorPrint ()
             
            void initErrorPrint (Print *pr)
             
            void printFatType (print_t *pr)
             
            void printSdError (print_t *pr)
             
            uint8_t sdErrorCode ()
             
            uint8_t sdErrorData ()
             
            Vol * vol ()
             
            bool volumeBegin ()
             
            -

            Detailed Description

            -

            template<class Vol>
            -class SdBase< Vol >

            - -

            base SD file system template class.

            -

            Member Function Documentation

            - -

            ◆ begin() [1/4]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdBase< Vol >::begin (SdCsPin_t csPin,
            uint32_t maxSck 
            )
            -
            -inline
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - - -
            [in]csPinSD card chip select pin.
            [in]maxSckMaximum SCK frequency.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [2/4]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            bool SdBase< Vol >::begin (SdCsPin_t csPin = SS)
            -
            -inline
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - -
            [in]csPinSD card chip select pin.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [3/4]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            bool SdBase< Vol >::begin (SdioConfig sdioConfig)
            -
            -inline
            -
            -

            Initialize SD card and file system for SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [4/4]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            bool SdBase< Vol >::begin (SdSpiConfig spiConfig)
            -
            -inline
            -
            -

            Initialize SD card and file system for SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ card()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            SdCard* SdBase< Vol >::card ()
            -
            -inline
            -
            -
            Returns
            Pointer to SD card object.
            - -
            -
            - -

            ◆ cardBegin() [1/2]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            bool SdBase< Vol >::cardBegin (SdioConfig sdioConfig)
            -
            -inline
            -
            -

            Initialize SD card in SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ cardBegin() [2/2]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            bool SdBase< Vol >::cardBegin (SdSpiConfig spiConfig)
            -
            -inline
            -
            -

            Initialize SD card in SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ errorHalt() [1/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            void SdBase< Vol >::errorHalt ()
            -
            -inline
            -
            -

            Print error info to Serial and halt.

            - -
            -
            - -

            ◆ errorHalt() [2/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::errorHalt (const __FlashStringHelper * msg)
            -
            -inline
            -
            -

            Print msg to Serial and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [3/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::errorHalt (const char * msg)
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [4/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::errorHalt (print_tpr)
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [5/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< Vol >::errorHalt (print_tpr,
            const __FlashStringHelper * msg 
            )
            -
            -inline
            -
            -

            Print msg and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [6/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< Vol >::errorHalt (print_tpr,
            const char * msg 
            )
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [1/5]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::errorPrint (const __FlashStringHelper * msg)
            -
            -inline
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [2/5]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::errorPrint (const char * msg)
            -
            -inline
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [3/5]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< Vol >::errorPrint (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inline
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [4/5]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::errorPrint (print_tpr)
            -
            -inline
            -
            -

            Print SD errorCode and errorData.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [5/5]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< Vol >::errorPrint (print_tpr,
            char const * msg 
            )
            -
            -inline
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [1/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            void SdBase< Vol >::initErrorHalt ()
            -
            -inline
            -
            -

            Print error info and halt.

            - -
            -
            - -

            ◆ initErrorHalt() [2/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::initErrorHalt (const __FlashStringHelper * msg)
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [3/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::initErrorHalt (const char * msg)
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [4/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< Vol >::initErrorHalt (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [5/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::initErrorHalt (print_tpr)
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [6/6]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< Vol >::initErrorHalt (print_tpr,
            const char * msg 
            )
            -
            -inline
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorPrint() [1/2]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            void SdBase< Vol >::initErrorPrint ()
            -
            -inline
            -
            -

            Print error details after begin() fails.

            - -
            -
            - -

            ◆ initErrorPrint() [2/2]

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::initErrorPrint (Print * pr)
            -
            -inline
            -
            -

            Print error details after begin() fails.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ printFatType()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::printFatType (print_tpr)
            -
            -inline
            -
            -

            Print volume FAT/exFAT type.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ printSdError()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - - -
            void SdBase< Vol >::printSdError (print_tpr)
            -
            -inline
            -
            -

            Print error info and return.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ sdErrorCode()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< Vol >::sdErrorCode ()
            -
            -inline
            -
            -
            Returns
            SD card error code.
            - -
            -
            - -

            ◆ sdErrorData()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< Vol >::sdErrorData ()
            -
            -inline
            -
            -
            Returns
            SD card error data.
            - -
            -
            - -

            ◆ vol()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            Vol* SdBase< Vol >::vol ()
            -
            -inline
            -
            -
            Returns
            pointer to base volume
            - -
            -
            - -

            ◆ volumeBegin()

            - -
            -
            -
            -template<class Vol>
            - - - - - -
            - - - - - - - -
            bool SdBase< Vol >::volumeBegin ()
            -
            -inline
            -
            -

            Initialize file system after call to cardBegin.

            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdFat.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base__coll__graph.png deleted file mode 100644 index 1154d6464a15734c791a2beca1809db01e810c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1238 zcmeAS@N?(olHy`uVBq!ia0vp^l|Wp;!3HF)zTR&HQfx`y?k)`fL2$v|<&zm0Sh_u3 z978JRyq)WtetsodORZ&g+Zc_>Wq(omU_dY!k4HOFa* z%PYQr%vs`VCfqPOsiRcKD#YEg>r5MO;-kY!1`&PhZRf@Ow)(!O-=zD;ug6>E??1No zOJZ&jaN|`JdVG9*X0A^PU&y4E>{S=$57@-0ag$+6PQwkA*Os@_=RS85 zoShQnkTZ$(-Mkeqew>}Z?8Tq&PuNb*;|V<7zgC_3=w8eF-IwPdHLMRgqA~MHM`+Qu z@>zSumLJiYnbHwibZfTn_oM^wURc@R==$Z-5nD9VCOo?2P_o|jC-Go=7`)6FRHYjx z@j9Gj1Dc!?dRL>{4F7yl3jvx3`t7*gkx|y!`%M&biBVePSoOPSRxvIQsfP^U({Hw+{6@ znQgv*=Mt^&3=S;k*RIpsFKQJWJ!4``P0gQe9D2+RTL0KC-2A`(Q?KMn&nEv6Lq-Nc z9j2;sgNhG6FJf{NoIYJ$9k0{YQ~ox6+Q%r>CZCuXW3sxk8nnZT^0i7qgX8e`|W~ zx8Hd^Zq>KWsG>92mIKk;R+VCWu> z2j2}iJ(bt2v%7LIq1w2l&#ZG-%w)|eImiLOAcYwg@01H`<+O1*l?Y%y0eYs^t zADex3w6#(DayL~z&zxU6Pwj)!P0@Yl{N|QdK5Bbv%nWbEs2j*IyN&c3hMrTkfL!kfl|wY&3Xug@vnK3%<9=;yk)IF;w;KdrhHU2-if z_VVYws{8j<-r96~?$ZOyep_a*TQq<5wRrQ(Iu)-^mh!~}zFci(`0CAvHJ{7A&U$a< z_dqXEs;v&RhR>THqI< zK3|6Z-4+UpPv5+Kn`k0s>-esBllZ2X$yFHf^I(tUrro=5r|~^%{8$lVvG+yV39g2G t#yOS67CQxM_#Z64pva*JEF643@jJJ&Z;z0VPy!ZI44$rjF6*2UngD?TJyrk! diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_base__inherit__graph.png deleted file mode 100644 index 1154d6464a15734c791a2beca1809db01e810c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1238 zcmeAS@N?(olHy`uVBq!ia0vp^l|Wp;!3HF)zTR&HQfx`y?k)`fL2$v|<&zm0Sh_u3 z978JRyq)WtetsodORZ&g+Zc_>Wq(omU_dY!k4HOFa* z%PYQr%vs`VCfqPOsiRcKD#YEg>r5MO;-kY!1`&PhZRf@Ow)(!O-=zD;ug6>E??1No zOJZ&jaN|`JdVG9*X0A^PU&y4E>{S=$57@-0ag$+6PQwkA*Os@_=RS85 zoShQnkTZ$(-Mkeqew>}Z?8Tq&PuNb*;|V<7zgC_3=w8eF-IwPdHLMRgqA~MHM`+Qu z@>zSumLJiYnbHwibZfTn_oM^wURc@R==$Z-5nD9VCOo?2P_o|jC-Go=7`)6FRHYjx z@j9Gj1Dc!?dRL>{4F7yl3jvx3`t7*gkx|y!`%M&biBVePSoOPSRxvIQsfP^U({Hw+{6@ znQgv*=Mt^&3=S;k*RIpsFKQJWJ!4``P0gQe9D2+RTL0KC-2A`(Q?KMn&nEv6Lq-Nc z9j2;sgNhG6FJf{NoIYJ$9k0{YQ~ox6+Q%r>CZCuXW3sxk8nnZT^0i7qgX8e`|W~ zx8Hd^Zq>KWsG>92mIKk;R+VCWu> z2j2}iJ(bt2v%7LIq1w2l&#ZG-%w)|eImiLOAcYwg@01H`<+O1*l?Y%y0eYs^t zADex3w6#(DayL~z&zxU6Pwj)!P0@Yl{N|QdK5Bbv%nWbEs2j*IyN&c3hMrTkfL!kfl|wY&3Xug@vnK3%<9=;yk)IF;w;KdrhHU2-if z_VVYws{8j<-r96~?$ZOyep_a*TQq<5wRrQ(Iu)-^mh!~}zFci(`0CAvHJ{7A&U$a< z_dqXEs;v&RhR>THqI< zK3|6Z-4+UpPv5+Kn`k0s>-esBllZ2X$yFHf^I(tUrro=5r|~^%{8$lVvG+yV39g2G t#yOS67CQxM_#Z64pva*JEF643@jJJ&Z;z0VPy!ZI44$rjF6*2UngD?TJyrk! diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory-members.html deleted file mode 100644 index b4396d14..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdCardFactory Member List
            -
            -
            - -

            This is the complete list of members for SdCardFactory, including all inherited members.

            - - - -
            newCard(SdSpiConfig config)SdCardFactoryinline
            newCard(SdioConfig config)SdCardFactoryinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory.html deleted file mode 100644 index 5fdde56c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_factory.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -SdFat: SdCardFactory Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdCardFactory Class Reference
            -
            -
            - -

            Setup a SPI card or SDIO card. - More...

            - -

            #include <SdCard.h>

            - - - - - - -

            -Public Member Functions

            SdCardnewCard (SdioConfig config)
             
            SdCardnewCard (SdSpiConfig config)
             
            -

            Detailed Description

            -

            Setup a SPI card or SDIO card.

            -

            Member Function Documentation

            - -

            ◆ newCard() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            SdCard* SdCardFactory::newCard (SdioConfig config)
            -
            -inline
            -
            -

            Initialize SDIO card.

            -
            Parameters
            - - -
            [in]configSDIO configuration.
            -
            -
            -
            Returns
            generic card pointer or nullptr if SDIO is not supported.
            - -
            -
            - -

            ◆ newCard() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            SdCard* SdCardFactory::newCard (SdSpiConfig config)
            -
            -inline
            -
            -

            Initialize SPI card.

            -
            Parameters
            - - -
            [in]configSPI configuration.
            -
            -
            -
            Returns
            generic card pointer.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdCard/SdCard.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface-members.html deleted file mode 100644 index a7954a43..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdCardInterface Member List
            -
            -
            - -

            This is the complete list of members for SdCardInterface, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - -
            erase(uint32_t firstSector, uint32_t lastSector)=0SdCardInterfacepure virtual
            errorCode() const =0SdCardInterfacepure virtual
            errorData() const =0SdCardInterfacepure virtual
            isBusy()=0SdCardInterfacepure virtual
            readCID(cid_t *cid)=0SdCardInterfacepure virtual
            readCSD(csd_t *csd)=0SdCardInterfacepure virtual
            readOCR(uint32_t *ocr)=0SdCardInterfacepure virtual
            readSector(uint32_t sector, uint8_t *dst)=0BlockDeviceInterfacepure virtual
            readSectors(uint32_t sector, uint8_t *dst, size_t ns)=0BlockDeviceInterfacepure virtual
            sectorCount()=0SdCardInterfacepure virtual
            status()SdCardInterfaceinlinevirtual
            syncDevice()=0BlockDeviceInterfacepure virtual
            type() const =0SdCardInterfacepure virtual
            writeData(const uint8_t *src)=0SdCardInterfacepure virtual
            writeSector(uint32_t sector, const uint8_t *src)=0BlockDeviceInterfacepure virtual
            writeSectors(uint32_t sector, const uint8_t *src, size_t ns)=0BlockDeviceInterfacepure virtual
            writeStart(uint32_t sector)=0SdCardInterfacepure virtual
            writeStop()=0SdCardInterfacepure virtual
            ~BlockDeviceInterface() (defined in BlockDeviceInterface)BlockDeviceInterfaceinlinevirtual
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface.html deleted file mode 100644 index 6f0e8fec..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface.html +++ /dev/null @@ -1,809 +0,0 @@ - - - - - - - -SdFat: SdCardInterface Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdCardInterface Class Referenceabstract
            -
            -
            - -

            Abstract interface for an SD card. - More...

            - -

            #include <SdCardInterface.h>

            -
            -Inheritance diagram for SdCardInterface:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            -
            -Collaboration diagram for SdCardInterface:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            virtual bool erase (uint32_t firstSector, uint32_t lastSector)=0
             
            virtual uint8_t errorCode () const =0
             
            virtual uint32_t errorData () const =0
             
            virtual bool isBusy ()=0
             
            virtual bool readCID (cid_t *cid)=0
             
            virtual bool readCSD (csd_t *csd)=0
             
            virtual bool readOCR (uint32_t *ocr)=0
             
            virtual bool readSector (uint32_t sector, uint8_t *dst)=0
             
            virtual bool readSectors (uint32_t sector, uint8_t *dst, size_t ns)=0
             
            virtual uint32_t sectorCount ()=0
             
            virtual uint32_t status ()
             
            virtual bool syncDevice ()=0
             
            virtual uint8_t type () const =0
             
            virtual bool writeData (const uint8_t *src)=0
             
            virtual bool writeSector (uint32_t sector, const uint8_t *src)=0
             
            virtual bool writeSectors (uint32_t sector, const uint8_t *src, size_t ns)=0
             
            virtual bool writeStart (uint32_t sector)=0
             
            virtual bool writeStop ()=0
             
            -

            Detailed Description

            -

            Abstract interface for an SD card.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            Member Function Documentation

            - -

            ◆ erase()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual bool SdCardInterface::erase (uint32_t firstSector,
            uint32_t lastSector 
            )
            -
            -pure virtual
            -
            -

            Erase a range of sectors.

            -
            Parameters
            - - - -
            [in]firstSectorThe address of the first sector in the range.
            [in]lastSectorThe address of the last sector in the range.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ errorCode()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint8_t SdCardInterface::errorCode () const
            -
            -pure virtual
            -
            -
            Returns
            error code.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ errorData()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint32_t SdCardInterface::errorData () const
            -
            -pure virtual
            -
            -
            Returns
            error data.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ isBusy()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual bool SdCardInterface::isBusy ()
            -
            -pure virtual
            -
            -
            Returns
            true if card is busy.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ readCID()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual bool SdCardInterface::readCID (cid_tcid)
            -
            -pure virtual
            -
            -

            Read a card's CID register.

            -
            Parameters
            - - -
            [out]cidpointer to area for returned data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ readCSD()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual bool SdCardInterface::readCSD (csd_t * csd)
            -
            -pure virtual
            -
            -

            Read a card's CSD register.

            -
            Parameters
            - - -
            [out]csdpointer to area for returned data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ readOCR()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual bool SdCardInterface::readOCR (uint32_t * ocr)
            -
            -pure virtual
            -
            -

            Read OCR register.

            -
            Parameters
            - - -
            [out]ocrValue of OCR register.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ readSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::readSector (uint32_t sector,
            uint8_t * dst 
            )
            -
            -pure virtualinherited
            -
            -

            Read a sector.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ readSectors()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::readSectors (uint32_t sector,
            uint8_t * dst,
            size_t ns 
            )
            -
            -pure virtualinherited
            -
            -

            Read multiple sectors.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be read.
            [in]nsNumber of sectors to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ sectorCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint32_t SdCardInterface::sectorCount ()
            -
            -pure virtual
            -
            -

            Determine the size of an SD flash memory card.

            -
            Returns
            The number of 512 byte data sectors in the card or zero if an error occurs.
            - -

            Implements BlockDeviceInterface.

            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ status()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint32_t SdCardInterface::status ()
            -
            -inlinevirtual
            -
            -
            Returns
            card status.
            - -

            Reimplemented in SdioCard.

            - -
            -
            - -

            ◆ syncDevice()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual bool BlockDeviceInterface::syncDevice ()
            -
            -pure virtualinherited
            -
            -

            End multi-sector transfer and go to idle state.

            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ type()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint8_t SdCardInterface::type () const
            -
            -pure virtual
            -
            -

            Return the card type: SD V1, SD V2 or SDHC/SDXC

            Returns
            0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeData()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual bool SdCardInterface::writeData (const uint8_t * src)
            -
            -pure virtual
            -
            -

            Write one data sector in a multiple sector write sequence.

            Parameters
            - - -
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::writeSector (uint32_t sector,
            const uint8_t * src 
            )
            -
            -pure virtualinherited
            -
            -

            Writes a sector.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeSectors()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            virtual bool BlockDeviceInterface::writeSectors (uint32_t sector,
            const uint8_t * src,
            size_t ns 
            )
            -
            -pure virtualinherited
            -
            -

            Write multiple sectors.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be written.
            [in]nsNumber of sectors to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeStart()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual bool SdCardInterface::writeStart (uint32_t sector)
            -
            -pure virtual
            -
            -

            Start a write multiple sectors sequence.

            -
            Parameters
            - - -
            [in]sectorAddress of first sector in sequence.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            - -

            ◆ writeStop()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual bool SdCardInterface::writeStop ()
            -
            -pure virtual
            -
            -

            End a write multiple sectors sequence.

            Returns
            true for success or false for failure.
            - -

            Implemented in SdioCard.

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdCard/SdCardInterface.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface__coll__graph.png deleted file mode 100644 index 030b16207d1ab47544386452d363dfe3c93c5eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1457 zcmb_cdoyFFEt;;C#7e70Iy-BtMU=JPO(Q7gu@I7qX-gyO6=c~o%9&P6Jxi4; zW{Q~fphQyI4kZ~Dk6460h)0C*6IGFzp8m6)vp;vg^PPLn{r>yzJvYP46Q#4$U?&I! z(m|hh@!960?Tyyf{HQ?xlx>q{C=LA{BK;;#?1C$(D}a zFCZLsdl>h`|JR4rrSjLEW^Rs-zj^T^DvYR6F8vnSC6X<#dB-ev+trRuI9=;*$PI_( zP*MA`S3v1;VB&t!gGufmD@uo>N#q&ivz8^+5-&=qap>?i9#tU!x z%|x8f4Ny)A84e^xaTY)W3nP#cE~kY=mh@H4B#XqGB$^>N0QWoozmh+1$rkS{GQ(rw=Uzj$Yx8*505L0_|-ZbOCO5gE8o|mbSBI z3~BbtVk&SQISJ2rcQ)uYBY+fJ7b#_YxJsO<2@0?;9Vq5e8k(Uw_2G3y8-#z4lYVb7 z5eIGJAzr2Rw>MJPr1n!uvLb#wr!_B{Rr%Z^tn!ZWk@(&48e-3R!%t5fm7gB-WFEVW zT>z~&whrnu@hT;tHJotML?C#YcB%izuDA`<$CJwf4v&1`2YKt%$`NidL#Q*jYTgy1J?k z!R-JMWyll}_v`(s#<9MB>s*+-nu7)u6ic;i+wxiDxOHToei}0^iHD3QLl|3ie#0B6 zv0`&=XEEV~jRKZ^OHS(QfqN|%%%vE|65Qorg6e%klq=W#(7_Pa+UtBAEuU^Ixh9{V z&^&}xJN^Ehhby-im=P!3;kZ4|mfP69KuD>skKN8*81*QEF+;={V&GPIn5)K82xpUb z;tD41VvlX+IXqkQ9>t}t6j9?JP)*^-`x&LzIr|marL1l$8CY<1US+vc{cSf-JB$XZJMsUO~n#r<|&gaapy5tVu9=M+iQ!{ixnpA!8x|+nM42O!giGZ?~}Lp zgeIXt8A+0QoPyzcCs6c;7vj%!_XC%@IBFn;LIJ_}=%P@ld!E$|-H)M4t2=bV zA4&$q#Bb9&o63BNQ0!m}Mu;wQHyf!vGW{gm_=!lDM(0~|u*5YQjn#*fU*k3Mk{JL+ z9x6e^;dQa(LSC)sWc{frw1oAbxt@iij~qbS8I69}5L1#$`Z+iz{#7{QQUblrGpZ+d z82Jn7r&$|(IS{$}$W+1Vv#qDZw35Fl2da&#zc-!??y8Gq(JJ+0GJ#e0<$&gemcAsx z1UdmsfrPv%m-G%OZ$)!=HOU&tOH_BEijigcLuA@xEzva31An~PfMn%7!yf`LB;&YrBI%Xje}ch7*DQH=U&CPXGV_ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_card_interface__inherit__graph.png deleted file mode 100644 index fda0d43157731acb8b38dbab52cf26f3580d18e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2234 zcmchZcU03^7RP^45fucBmNm~&0)^BmxN-`O zPE`IWK=OyolUb|Ce0`=$Wx`A{yf^&opntCm+d123b>(52u=qJS2{d=MzYp}TXtK?rTa-CBHPBZ~qjTe(miPu5yFd zJL0X&vA}U@Sm9BDS(c<7N#AN1uIYeeMf)XSd9euAlUiq|JbcqiSs__q36~70fJ}r= zrOtA2Lz~&fhSVH&eyt8sLf^6P4F53GJJG${cL>56rdmE$X3`swLrq@t{64QrPbZIV zXR_j)R?)XPbqQBofde+t)&qsY4r*|UNP>Odqq&W``@66dNF3u%<(jYt#mc?I^%_K6 zZOWzjxX(MGxTX|HcBpi%mpU4&`o?%|)xx_{yu*YPo=vIu-oPe8Nk;g!Y%|Fg72`je zce}m)F!aiVqK-~mQgVF(4^4L{i4wY=jigpepp@6#K69z&%-9r{AzDt|{cmCBs-j0) zFG|9hT9dQXSzNb&@RFF!dFfB|rcHyzdy}EAul4Q3j&+0smaV$YBlYi>e~nUJta4+5 z7mF(t0GL15vudUA{h8LSYT(p|LL|)pXW-?iLFC4Rt8qJ_6Ke2<8g*6R$0+@aK?!Yy z`Q0d_q@s?rghX3^oC`0(f2c|o-p7zHeHo*TKI-nC#s$zujpjCK4<12Zh(~um^u7nY zcL<-cg?WHNmPZK0k4nXqo7!jg9O%!_n%iTAG*_(H&twMcMwFSR zv>Wnm4uGRee>r;N?M6rY#T{K#XVI7P-jri4NpgxrqR+M^{p5nN;~lfJXumLi2HzM?dcTkBa{`i2vzT+#6e9P|%-shB)2X+4y?Ka|Ej%7B%DjRrj_M zDDnW<;`G4rfA|ZRyv$Wo-y*8}SH%zbaT$$Ms$@3>Eyw23QP<=HVkF2nlryy}FW!4<;FiN;)DI*;s^uGE&>2pqqJaHs-#l7rGBY1al?H z%=Gc3T@yMI#&XvZ+mwvtpFiKiPbIoVkZVb5L(SZ{dqi>e4*kWzRuSgDLY~G73_8iG z;)4`5h@{;qnQrK@lq2dr*_fjVM#066DWh9R-Mpz+gRp_5VQ>jh_fyfO%`WBZ|9TU# ziCoAM_t!9ekUYt1lMPIm{&Ywt2T5W*F&Aw6`cotq5i6_N=7zuWAex?mm<(O9oaCnqjh&s3v11&pkQOJsYKqGe5V z2)Iq~+(s%x_CDgIo@3wGo?n{ra*bm{YRb%=uFD{ITU@3*#-UINNoQ{sFC8E;q|(_X zaQ1t7s0ZB@l6?Q*)XIqA?IIdzmq zi_$?jv;7tL{TyXdi%RBy^Db1lVi@)_ci3pR-vBRPqP^#HQD@FZMpWWxo9sTBt+3J) aZO^b!u6t&DIb!QG0>F(eV3f-)QNIDO&RdlL diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat-members.html deleted file mode 100644 index e92c9695..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat-members.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdExFat Member List
            -
            -
            - -

            This is the complete list of members for SdExFat, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(SdCsPin_t csPin=SS)SdBase< ExFatVolume >inline
            begin(SdCsPin_t csPin, uint32_t maxSck)SdBase< ExFatVolume >inline
            begin(SdSpiConfig spiConfig)SdBase< ExFatVolume >inline
            begin(SdioConfig sdioConfig)SdBase< ExFatVolume >inline
            ExFatVolume::begin(BlockDevice *dev, bool setCwv=true, uint8_t part=1)ExFatVolumeinline
            bytesPerCluster() constExFatPartitioninline
            bytesPerClusterShift() constExFatPartitioninline
            bytesPerSector() constExFatPartitioninline
            bytesPerSectorShift() constExFatPartitioninline
            cacheClear()ExFatPartitioninline
            card()SdBase< ExFatVolume >inline
            cardBegin(SdSpiConfig spiConfig)SdBase< ExFatVolume >inline
            cardBegin(SdioConfig sdioConfig)SdBase< ExFatVolume >inline
            chdir()ExFatVolumeinline
            chdir(const ExChar_t *path)ExFatVolume
            chdir(const String &path)ExFatVolumeinline
            chvol()ExFatVolumeinline
            clusterCount() constExFatPartitioninline
            clusterHeapStartSector() constExFatPartitioninline
            cwv()ExFatVolumeinlinestatic
            errorHalt(print_t *pr)SdBase< ExFatVolume >inline
            errorHalt(print_t *pr, const char *msg)SdBase< ExFatVolume >inline
            errorHalt(print_t *pr, const __FlashStringHelper *msg)SdBase< ExFatVolume >inline
            errorHalt(const __FlashStringHelper *msg)SdBase< ExFatVolume >inline
            errorHalt()SdBase< ExFatVolume >inline
            errorHalt(const char *msg)SdBase< ExFatVolume >inline
            errorPrint(print_t *pr)SdBase< ExFatVolume >inline
            errorPrint(print_t *pr, char const *msg)SdBase< ExFatVolume >inline
            errorPrint(Print *pr, const __FlashStringHelper *msg)SdBase< ExFatVolume >inline
            errorPrint(const char *msg)SdBase< ExFatVolume >inline
            errorPrint(const __FlashStringHelper *msg)SdBase< ExFatVolume >inline
            ExFatPartition() (defined in ExFatPartition)ExFatPartitioninline
            ExFatVolume() (defined in ExFatVolume)ExFatVolumeinline
            exists(const ExChar_t *path)ExFatVolumeinline
            exists(const String &path)ExFatVolumeinline
            fatLength() constExFatPartitioninline
            fatStartSector() constExFatPartitioninline
            fatType() constExFatPartitioninline
            format(print_t *pr=NULL)SdExFatinline
            freeClusterCount()ExFatPartition
            init(BlockDevice *dev, uint8_t part)ExFatPartition
            initErrorHalt(print_t *pr)SdBase< ExFatVolume >inline
            initErrorHalt(print_t *pr, const char *msg)SdBase< ExFatVolume >inline
            initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdBase< ExFatVolume >inline
            initErrorHalt()SdBase< ExFatVolume >inline
            initErrorHalt(const char *msg)SdBase< ExFatVolume >inline
            initErrorHalt(const __FlashStringHelper *msg)SdBase< ExFatVolume >inline
            initErrorPrint(Print *pr)SdBase< ExFatVolume >inline
            initErrorPrint()SdBase< ExFatVolume >inline
            ls(print_t *pr, uint8_t flags=0)ExFatVolumeinline
            ls(print_t *pr, const ExChar_t *path, uint8_t flags)ExFatVolumeinline
            ls()ExFatVolumeinline
            ls(uint8_t flags)ExFatVolumeinline
            ls(const ExChar_t *path, uint8_t flags=0)ExFatVolumeinline
            mkdir(const ExChar_t *path, bool pFlag=true)ExFatVolumeinline
            mkdir(const String &path, bool pFlag=true)ExFatVolumeinline
            open(const ExChar_t *path, oflag_t oflag=0X00)ExFatVolumeinline
            open(const String &path, oflag_t oflag=0X00)ExFatVolumeinline
            printFatType(print_t *pr)SdBase< ExFatVolume >inline
            printSdError(print_t *pr)SdBase< ExFatVolume >inline
            remove(const ExChar_t *path)ExFatVolumeinline
            remove(const String &path)ExFatVolumeinline
            rename(const ExChar_t *oldPath, const ExChar_t *newPath)ExFatVolumeinline
            rename(const String &oldPath, const String &newPath)ExFatVolumeinline
            rmdir(const ExChar_t *path)ExFatVolumeinline
            rmdir(const String &path)ExFatVolumeinline
            rootDirectoryCluster() constExFatPartitioninline
            rootLength()ExFatPartition
            sdErrorCode()SdBase< ExFatVolume >inline
            sdErrorData()SdBase< ExFatVolume >inline
            sectorsPerCluster() constExFatPartitioninline
            sectorsPerClusterShift() constExFatPartitioninline
            truncate(const ExChar_t *path, uint64_t length)ExFatVolumeinline
            truncate(const String &path, uint64_t length)ExFatVolumeinline
            vol()SdBase< ExFatVolume >inline
            volumeBegin()SdBase< ExFatVolume >inline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat.html deleted file mode 100644 index d28b997f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat.html +++ /dev/null @@ -1,2800 +0,0 @@ - - - - - - - -SdFat: SdExFat Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            SD file system class for exFAT volumes. - More...

            - -

            #include <SdFat.h>

            -
            -Inheritance diagram for SdExFat:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for SdExFat:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (BlockDevice *dev, bool setCwv=true, uint8_t part=1)
             
            bool begin (SdCsPin_t csPin, uint32_t maxSck)
             
            bool begin (SdCsPin_t csPin=SS)
             
            bool begin (SdioConfig sdioConfig)
             
            bool begin (SdSpiConfig spiConfig)
             
            uint32_t bytesPerCluster () const
             
            uint8_t bytesPerClusterShift () const
             
            uint16_t bytesPerSector () const
             
            uint8_t bytesPerSectorShift () const
             
            uint8_t * cacheClear ()
             
            SdCardcard ()
             
            bool cardBegin (SdioConfig sdioConfig)
             
            bool cardBegin (SdSpiConfig spiConfig)
             
            bool chdir ()
             
            bool chdir (const ExChar_t *path)
             
            bool chdir (const String &path)
             
            void chvol ()
             
            uint32_t clusterCount () const
             
            uint32_t clusterHeapStartSector () const
             
            void errorHalt ()
             
            void errorHalt (const __FlashStringHelper *msg)
             
            void errorHalt (const char *msg)
             
            void errorHalt (print_t *pr)
             
            void errorHalt (print_t *pr, const __FlashStringHelper *msg)
             
            void errorHalt (print_t *pr, const char *msg)
             
            void errorPrint (const __FlashStringHelper *msg)
             
            void errorPrint (const char *msg)
             
            void errorPrint (Print *pr, const __FlashStringHelper *msg)
             
            void errorPrint (print_t *pr)
             
            void errorPrint (print_t *pr, char const *msg)
             
            bool exists (const ExChar_t *path)
             
            bool exists (const String &path)
             
            uint32_t fatLength () const
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            bool format (print_t *pr=NULL)
             
            uint32_t freeClusterCount ()
             
            bool init (BlockDevice *dev, uint8_t part)
             
            void initErrorHalt ()
             
            void initErrorHalt (const __FlashStringHelper *msg)
             
            void initErrorHalt (const char *msg)
             
            void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
             
            void initErrorHalt (print_t *pr)
             
            void initErrorHalt (print_t *pr, const char *msg)
             
            void initErrorPrint ()
             
            void initErrorPrint (Print *pr)
             
            bool ls ()
             
            bool ls (const ExChar_t *path, uint8_t flags=0)
             
            bool ls (print_t *pr, const ExChar_t *path, uint8_t flags)
             
            bool ls (print_t *pr, uint8_t flags=0)
             
            bool ls (uint8_t flags)
             
            bool mkdir (const ExChar_t *path, bool pFlag=true)
             
            bool mkdir (const String &path, bool pFlag=true)
             
            ExFile open (const ExChar_t *path, oflag_t oflag=0X00)
             
            ExFile open (const String &path, oflag_t oflag=0X00)
             
            void printFatType (print_t *pr)
             
            void printSdError (print_t *pr)
             
            bool remove (const ExChar_t *path)
             
            bool remove (const String &path)
             
            bool rename (const ExChar_t *oldPath, const ExChar_t *newPath)
             
            bool rename (const String &oldPath, const String &newPath)
             
            bool rmdir (const ExChar_t *path)
             
            bool rmdir (const String &path)
             
            uint32_t rootDirectoryCluster () const
             
            uint32_t rootLength ()
             
            uint8_t sdErrorCode ()
             
            uint8_t sdErrorData ()
             
            uint32_t sectorsPerCluster () const
             
            uint8_t sectorsPerClusterShift () const
             
            bool truncate (const ExChar_t *path, uint64_t length)
             
            bool truncate (const String &path, uint64_t length)
             
            ExFatVolumevol ()
             
            bool volumeBegin ()
             
            - - - -

            -Static Public Member Functions

            static ExFatVolumecwv ()
             
            -

            Detailed Description

            -

            SD file system class for exFAT volumes.

            -

            Member Function Documentation

            - -

            ◆ begin() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::begin (BlockDevicedev,
            bool setCwv = true,
            uint8_t part = 1 
            )
            -
            -inlineinherited
            -
            -

            Initialize an FatVolume object.

            Parameters
            - - - - -
            [in]devDevice block driver.
            [in]setCwvSet current working volume if true.
            [in]partpartition to initialize.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdBase< ExFatVolume >::begin (SdCsPin_t csPin,
            uint32_t maxSck 
            )
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - - -
            [in]csPinSD card chip select pin.
            [in]maxSckMaximum SCK frequency.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< ExFatVolume >::begin (SdCsPin_t csPin = SS)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - -
            [in]csPinSD card chip select pin.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< ExFatVolume >::begin (SdioConfig sdioConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system for SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< ExFatVolume >::begin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system for SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::bytesPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            the number of bytes in a cluster.
            - -
            -
            - -

            ◆ bytesPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::bytesPerClusterShift () const
            -
            -inlineinherited
            -
            -
            Returns
            the power of two for bytesPerCluster.
            - -
            -
            - -

            ◆ bytesPerSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t ExFatPartition::bytesPerSector () const
            -
            -inlineinherited
            -
            -
            Returns
            the number of bytes in a sector.
            - -
            -
            - -

            ◆ bytesPerSectorShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::bytesPerSectorShift () const
            -
            -inlineinherited
            -
            -
            Returns
            the power of two for bytesPerSector.
            - -
            -
            - -

            ◆ cacheClear()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t* ExFatPartition::cacheClear ()
            -
            -inlineinherited
            -
            -

            Clear the cache and returns a pointer to the cache. Not for normal apps.

            Returns
            A pointer to the cache buffer or zero if an error occurs.
            - -
            -
            - -

            ◆ card()

            - -
            -
            - - - - - -
            - - - - - - - -
            SdCard* SdBase< ExFatVolume >::card ()
            -
            -inlineinherited
            -
            -
            Returns
            Pointer to SD card object.
            - -
            -
            - -

            ◆ cardBegin() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< ExFatVolume >::cardBegin (SdioConfig sdioConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card in SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ cardBegin() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< ExFatVolume >::cardBegin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card in SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatVolume::chdir ()
            -
            -inlineinherited
            -
            -

            Set volume working directory to root.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::chdir (const ExChar_t * path)
            -
            -inherited
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::chdir (const String & path)
            -
            -inlineinherited
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chvol()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ExFatVolume::chvol ()
            -
            -inlineinherited
            -
            -

            Change global working volume to this volume.

            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::clusterCount () const
            -
            -inlineinherited
            -
            -
            Returns
            the cluster count for the partition.
            - -
            -
            - -

            ◆ clusterHeapStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::clusterHeapStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            the cluster heap start sector.
            - -
            -
            - -

            ◆ cwv()

            - -
            -
            - - - - - -
            - - - - - - - -
            static ExFatVolume* ExFatVolume::cwv ()
            -
            -inlinestaticinherited
            -
            -
            Returns
            current working volume.
            - -
            -
            - -

            ◆ errorHalt() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< ExFatVolume >::errorHalt ()
            -
            -inlineinherited
            -
            -

            Print error info to Serial and halt.

            - -
            -
            - -

            ◆ errorHalt() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::errorHalt (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print msg to Serial and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::errorHalt (const char * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::errorHalt (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< ExFatVolume >::errorHalt (print_tpr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< ExFatVolume >::errorHalt (print_tpr,
            const char * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::errorPrint (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::errorPrint (const char * msg)
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< ExFatVolume >::errorPrint (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::errorPrint (print_tpr)
            -
            -inlineinherited
            -
            -

            Print SD errorCode and errorData.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< ExFatVolume >::errorPrint (print_tpr,
            char const * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ exists() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::exists (const ExChar_t * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file.

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ exists() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::exists (const String & path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fatLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::fatLength () const
            -
            -inlineinherited
            -
            -
            Returns
            the FAT length in sectors
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::fatStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            the FAT start sector number.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::fatType () const
            -
            -inlineinherited
            -
            -
            Returns
            Type FAT_TYPE_EXFAT for exFAT partition or zero for error.
            - -
            -
            - -

            ◆ format()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdExFat::format (print_tpr = NULL)
            -
            -inline
            -
            -

            Format a SD card exFAT.

            -
            Parameters
            - - -
            [in]prOptional Print information.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::freeClusterCount ()
            -
            -inherited
            -
            -
            Returns
            the free cluster count.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatPartition::init (BlockDevicedev,
            uint8_t part 
            )
            -
            -inherited
            -
            -

            Initialize a exFAT partition.

            Parameters
            - - - -
            [in]devThe blockDevice for the partition.
            [in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in sector zero.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ initErrorHalt() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< ExFatVolume >::initErrorHalt ()
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            - -
            -
            - -

            ◆ initErrorHalt() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::initErrorHalt (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::initErrorHalt (const char * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< ExFatVolume >::initErrorHalt (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::initErrorHalt (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< ExFatVolume >::initErrorHalt (print_tpr,
            const char * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorPrint() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< ExFatVolume >::initErrorPrint ()
            -
            -inlineinherited
            -
            -

            Print error details after begin() fails.

            - -
            -
            - -

            ◆ initErrorPrint() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::initErrorPrint (Print * pr)
            -
            -inlineinherited
            -
            -

            Print error details after begin() fails.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ ls() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ExFatVolume::ls ()
            -
            -inlineinherited
            -
            -

            List the directory contents of the root directory to Serial.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::ls (const ExChar_t * path,
            uint8_t flags = 0 
            )
            -
            -inlineinherited
            -
            -

            List the directory contents of a directory to Serial.

            -
            Parameters
            - - - -
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::ls (print_tpr,
            const ExChar_t * path,
            uint8_t flags 
            )
            -
            -inlineinherited
            -
            -

            List the contents of a directory.

            -
            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::ls (print_tpr,
            uint8_t flags = 0 
            )
            -
            -inlineinherited
            -
            -

            List the directory contents of the root directory.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::ls (uint8_t flags)
            -
            -inlineinherited
            -
            -

            List the directory contents of the volume root to Serial.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::mkdir (const ExChar_t * path,
            bool pFlag = true 
            )
            -
            -inlineinherited
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::mkdir (const String & path,
            bool pFlag = true 
            )
            -
            -inlineinherited
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ExFile ExFatVolume::open (const ExChar_t * path,
            oflag_t oflag = 0X00 
            )
            -
            -inlineinherited
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a ExFile object.
            - -
            -
            - -

            ◆ open() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ExFile ExFatVolume::open (const String & path,
            oflag_t oflag = 0X00 
            )
            -
            -inlineinherited
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen oflag flags.
            -
            -
            -
            Returns
            a ExFile object.
            - -
            -
            - -

            ◆ printFatType()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::printFatType (print_tpr)
            -
            -inlineinherited
            -
            -

            Print volume FAT/exFAT type.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ printSdError()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< ExFatVolume >::printSdError (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and return.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::remove (const ExChar_t * path)
            -
            -inlineinherited
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::remove (const String & path)
            -
            -inlineinherited
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::rename (const ExChar_t * oldPath,
            const ExChar_t * newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::rename (const String & oldPath,
            const String & newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::rmdir (const ExChar_t * path)
            -
            -inlineinherited
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool ExFatVolume::rmdir (const String & path)
            -
            -inlineinherited
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rootDirectoryCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::rootDirectoryCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            the root directory start cluster number.
            - -
            -
            - -

            ◆ rootLength()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::rootLength ()
            -
            -inherited
            -
            -
            Returns
            the root directory length.
            - -
            -
            - -

            ◆ sdErrorCode()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< ExFatVolume >::sdErrorCode ()
            -
            -inlineinherited
            -
            -
            Returns
            SD card error code.
            - -
            -
            - -

            ◆ sdErrorData()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< ExFatVolume >::sdErrorData ()
            -
            -inlineinherited
            -
            -
            Returns
            SD card error data.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t ExFatPartition::sectorsPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            the number of sectors in a cluster.
            - -
            -
            - -

            ◆ sectorsPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t ExFatPartition::sectorsPerClusterShift () const
            -
            -inlineinherited
            -
            -
            Returns
            the power of two for sectors per cluster.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::truncate (const ExChar_t * path,
            uint64_t length 
            )
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool ExFatVolume::truncate (const String & path,
            uint64_t length 
            )
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ vol()

            - -
            -
            - - - - - -
            - - - - - - - -
            ExFatVolume * SdBase< ExFatVolume >::vol ()
            -
            -inlineinherited
            -
            -
            Returns
            pointer to base volume
            - -
            -
            - -

            ◆ volumeBegin()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdBase< ExFatVolume >::volumeBegin ()
            -
            -inlineinherited
            -
            -

            Initialize file system after call to cardBegin.

            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdFat.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_ex_fat__coll__graph.png deleted file mode 100644 index e1c1ed8acdb37335dc8241d0f0ee65000c090c76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3180 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 O0kD8xfmE5eM*ka>e - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdFat32 Member List
            -
            -
            - -

            This is the complete list of members for SdFat32, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(SdCsPin_t csPin=SS)SdBase< FatVolume >inline
            begin(SdCsPin_t csPin, uint32_t maxSck)SdBase< FatVolume >inline
            begin(SdSpiConfig spiConfig)SdBase< FatVolume >inline
            begin(SdioConfig sdioConfig)SdBase< FatVolume >inline
            FatVolume::begin(BlockDevice *dev, bool setCwv=true, uint8_t part=1)FatVolumeinline
            bytesPerCluster()FatPartitioninline
            bytesPerClusterShift()FatPartitioninline
            bytesPerSector()FatPartitioninline
            bytesPerSectorShift()FatPartitioninline
            cacheClear()FatPartitioninline
            card()SdBase< FatVolume >inline
            cardBegin(SdSpiConfig spiConfig)SdBase< FatVolume >inline
            cardBegin(SdioConfig sdioConfig)SdBase< FatVolume >inline
            chdir()FatVolumeinline
            chdir(const char *path)FatVolume
            chdir(const String &path)FatVolumeinline
            chvol()FatVolumeinline
            clusterCount() constFatPartitioninline
            cwv()FatVolumeinlinestatic
            dataStartSector() constFatPartitioninline
            dbgFat(uint32_t n, uint32_t *v)FatPartitioninline
            errorHalt(print_t *pr)SdBase< FatVolume >inline
            errorHalt(print_t *pr, const char *msg)SdBase< FatVolume >inline
            errorHalt(print_t *pr, const __FlashStringHelper *msg)SdBase< FatVolume >inline
            errorHalt(const __FlashStringHelper *msg)SdBase< FatVolume >inline
            errorHalt()SdBase< FatVolume >inline
            errorHalt(const char *msg)SdBase< FatVolume >inline
            errorPrint(print_t *pr)SdBase< FatVolume >inline
            errorPrint(print_t *pr, char const *msg)SdBase< FatVolume >inline
            errorPrint(Print *pr, const __FlashStringHelper *msg)SdBase< FatVolume >inline
            errorPrint(const char *msg)SdBase< FatVolume >inline
            errorPrint(const __FlashStringHelper *msg)SdBase< FatVolume >inline
            exists(const char *path)FatVolumeinline
            exists(const String &path)FatVolumeinline
            fatCount()FatPartitioninline
            FatPartition()FatPartitioninline
            fatStartSector() constFatPartitioninline
            fatType() constFatPartitioninline
            format(print_t *pr=NULL)SdFat32inline
            freeClusterCount()FatPartition
            init(BlockDevice *dev, uint8_t part=1)FatPartition
            initErrorHalt(print_t *pr)SdBase< FatVolume >inline
            initErrorHalt(print_t *pr, const char *msg)SdBase< FatVolume >inline
            initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdBase< FatVolume >inline
            initErrorHalt()SdBase< FatVolume >inline
            initErrorHalt(const char *msg)SdBase< FatVolume >inline
            initErrorHalt(const __FlashStringHelper *msg)SdBase< FatVolume >inline
            initErrorPrint(Print *pr)SdBase< FatVolume >inline
            initErrorPrint()SdBase< FatVolume >inline
            ls(print_t *pr, uint8_t flags=0)FatVolumeinline
            ls(print_t *pr, const char *path, uint8_t flags)FatVolumeinline
            ls(uint8_t flags=0)FatVolumeinline
            ls(const char *path, uint8_t flags=0)FatVolumeinline
            mkdir(const char *path, bool pFlag=true)FatVolumeinline
            mkdir(const String &path, bool pFlag=true)FatVolumeinline
            open(const char *path, oflag_t oflag=0X00)FatVolumeinline
            open(const String &path, oflag_t oflag=0X00)FatVolumeinline
            printFatType(print_t *pr)SdBase< FatVolume >inline
            printSdError(print_t *pr)SdBase< FatVolume >inline
            remove(const char *path)FatVolumeinline
            remove(const String &path)FatVolumeinline
            rename(const char *oldPath, const char *newPath)FatVolumeinline
            rename(const String &oldPath, const String &newPath)FatVolumeinline
            rmdir(const char *path)FatVolumeinline
            rmdir(const String &path)FatVolumeinline
            rootDirEntryCount() constFatPartitioninline
            rootDirStart() constFatPartitioninline
            sdErrorCode()SdBase< FatVolume >inline
            sdErrorData()SdBase< FatVolume >inline
            sectorMask()FatPartitioninline
            sectorsPerCluster() constFatPartitioninline
            sectorsPerClusterShift() constFatPartitioninline
            sectorsPerFat() constFatPartitioninline
            truncate(const char *path, uint32_t length)FatVolumeinline
            truncate(const String &path, uint32_t length)FatVolumeinline
            vol()SdBase< FatVolume >inline
            volumeBegin()SdBase< FatVolume >inline
            volumeSectorCount() constFatPartitioninline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32.html deleted file mode 100644 index 93af6df4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32.html +++ /dev/null @@ -1,2904 +0,0 @@ - - - - - - - -SdFat: SdFat32 Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            SD file system class for FAT volumes. - More...

            - -

            #include <SdFat.h>

            -
            -Inheritance diagram for SdFat32:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for SdFat32:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (BlockDevice *dev, bool setCwv=true, uint8_t part=1)
             
            bool begin (SdCsPin_t csPin, uint32_t maxSck)
             
            bool begin (SdCsPin_t csPin=SS)
             
            bool begin (SdioConfig sdioConfig)
             
            bool begin (SdSpiConfig spiConfig)
             
            uint16_t bytesPerCluster ()
             
            uint8_t bytesPerClusterShift ()
             
            uint16_t bytesPerSector ()
             
            uint8_t bytesPerSectorShift ()
             
            cache_tcacheClear ()
             
            SdCardcard ()
             
            bool cardBegin (SdioConfig sdioConfig)
             
            bool cardBegin (SdSpiConfig spiConfig)
             
            bool chdir ()
             
            bool chdir (const char *path)
             
            bool chdir (const String &path)
             
            void chvol ()
             
            uint32_t clusterCount () const
             
            uint32_t dataStartSector () const
             
            int8_t dbgFat (uint32_t n, uint32_t *v)
             
            void errorHalt ()
             
            void errorHalt (const __FlashStringHelper *msg)
             
            void errorHalt (const char *msg)
             
            void errorHalt (print_t *pr)
             
            void errorHalt (print_t *pr, const __FlashStringHelper *msg)
             
            void errorHalt (print_t *pr, const char *msg)
             
            void errorPrint (const __FlashStringHelper *msg)
             
            void errorPrint (const char *msg)
             
            void errorPrint (Print *pr, const __FlashStringHelper *msg)
             
            void errorPrint (print_t *pr)
             
            void errorPrint (print_t *pr, char const *msg)
             
            bool exists (const char *path)
             
            bool exists (const String &path)
             
            uint8_t fatCount ()
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            bool format (print_t *pr=NULL)
             
            int32_t freeClusterCount ()
             
            bool init (BlockDevice *dev, uint8_t part=1)
             
            void initErrorHalt ()
             
            void initErrorHalt (const __FlashStringHelper *msg)
             
            void initErrorHalt (const char *msg)
             
            void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
             
            void initErrorHalt (print_t *pr)
             
            void initErrorHalt (print_t *pr, const char *msg)
             
            void initErrorPrint ()
             
            void initErrorPrint (Print *pr)
             
            bool ls (const char *path, uint8_t flags=0)
             
            bool ls (print_t *pr, const char *path, uint8_t flags)
             
            bool ls (print_t *pr, uint8_t flags=0)
             
            bool ls (uint8_t flags=0)
             
            bool mkdir (const char *path, bool pFlag=true)
             
            bool mkdir (const String &path, bool pFlag=true)
             
            File32 open (const char *path, oflag_t oflag=0X00)
             
            File32 open (const String &path, oflag_t oflag=0X00)
             
            void printFatType (print_t *pr)
             
            void printSdError (print_t *pr)
             
            bool remove (const char *path)
             
            bool remove (const String &path)
             
            bool rename (const char *oldPath, const char *newPath)
             
            bool rename (const String &oldPath, const String &newPath)
             
            bool rmdir (const char *path)
             
            bool rmdir (const String &path)
             
            uint16_t rootDirEntryCount () const
             
            uint32_t rootDirStart () const
             
            uint8_t sdErrorCode ()
             
            uint8_t sdErrorData ()
             
            uint16_t sectorMask ()
             
            uint8_t sectorsPerCluster () const
             
            uint8_t sectorsPerClusterShift () const
             
            uint32_t sectorsPerFat () const
             
            bool truncate (const char *path, uint32_t length)
             
            bool truncate (const String &path, uint32_t length)
             
            FatVolumevol ()
             
            bool volumeBegin ()
             
            uint32_t volumeSectorCount () const
             
            - - - -

            -Static Public Member Functions

            static FatVolumecwv ()
             
            -

            Detailed Description

            -

            SD file system class for FAT volumes.

            -

            Member Function Documentation

            - -

            ◆ begin() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatVolume::begin (BlockDevicedev,
            bool setCwv = true,
            uint8_t part = 1 
            )
            -
            -inlineinherited
            -
            -

            Initialize an FatVolume object.

            Parameters
            - - - - -
            [in]devDevice block driver.
            [in]setCwvSet current working volume if true.
            [in]partpartition to initialize.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdBase< FatVolume >::begin (SdCsPin_t csPin,
            uint32_t maxSck 
            )
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - - -
            [in]csPinSD card chip select pin.
            [in]maxSckMaximum SCK frequency.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FatVolume >::begin (SdCsPin_t csPin = SS)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - -
            [in]csPinSD card chip select pin.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FatVolume >::begin (SdioConfig sdioConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system for SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FatVolume >::begin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system for SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::bytesPerCluster ()
            -
            -inlineinherited
            -
            -
            Returns
            Number of bytes in a cluster.
            - -
            -
            - -

            ◆ bytesPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::bytesPerClusterShift ()
            -
            -inlineinherited
            -
            -
            Returns
            The shift count required to multiply by bytesPerCluster.
            - -
            -
            - -

            ◆ bytesPerSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::bytesPerSector ()
            -
            -inlineinherited
            -
            -
            Returns
            Number of bytes per sector.
            - -
            -
            - -

            ◆ bytesPerSectorShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::bytesPerSectorShift ()
            -
            -inlineinherited
            -
            -
            Returns
            The shift count required to multiply by bytesPerCluster.
            - -
            -
            - -

            ◆ cacheClear()

            - -
            -
            - - - - - -
            - - - - - - - -
            cache_t* FatPartition::cacheClear ()
            -
            -inlineinherited
            -
            -

            Clear the cache and returns a pointer to the cache. Not for normal apps.

            Returns
            A pointer to the cache buffer or zero if an error occurs.
            - -
            -
            - -

            ◆ card()

            - -
            -
            - - - - - -
            - - - - - - - -
            SdCard* SdBase< FatVolume >::card ()
            -
            -inlineinherited
            -
            -
            Returns
            Pointer to SD card object.
            - -
            -
            - -

            ◆ cardBegin() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FatVolume >::cardBegin (SdioConfig sdioConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card in SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ cardBegin() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FatVolume >::cardBegin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card in SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatVolume::chdir ()
            -
            -inlineinherited
            -
            -

            Set volume working directory to root.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::chdir (const char * path)
            -
            -inherited
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::chdir (const String & path)
            -
            -inlineinherited
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chvol()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatVolume::chvol ()
            -
            -inlineinherited
            -
            -

            Change global current working volume to this volume.

            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::clusterCount () const
            -
            -inlineinherited
            -
            -
            Returns
            The total number of clusters in the volume.
            - -
            -
            - -

            ◆ cwv()

            - -
            -
            - - - - - -
            - - - - - - - -
            static FatVolume* FatVolume::cwv ()
            -
            -inlinestaticinherited
            -
            -
            Returns
            current working volume.
            - -
            -
            - -

            ◆ dataStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::dataStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of file data.
            - -
            -
            - -

            ◆ dbgFat()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int8_t FatPartition::dbgFat (uint32_t n,
            uint32_t * v 
            )
            -
            -inlineinherited
            -
            -

            Debug access to FAT table

            -
            Parameters
            - - - -
            [in]ncluster number.
            [out]vvalue of entry
            -
            -
            -
            Returns
            -1 error, 0 EOC, else 1.
            - -
            -
            - -

            ◆ errorHalt() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< FatVolume >::errorHalt ()
            -
            -inlineinherited
            -
            -

            Print error info to Serial and halt.

            - -
            -
            - -

            ◆ errorHalt() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::errorHalt (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print msg to Serial and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::errorHalt (const char * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::errorHalt (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FatVolume >::errorHalt (print_tpr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FatVolume >::errorHalt (print_tpr,
            const char * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::errorPrint (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::errorPrint (const char * msg)
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FatVolume >::errorPrint (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::errorPrint (print_tpr)
            -
            -inlineinherited
            -
            -

            Print SD errorCode and errorData.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FatVolume >::errorPrint (print_tpr,
            char const * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ exists() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::exists (const char * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file.

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ exists() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::exists (const String & path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file.

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fatCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::fatCount ()
            -
            -inlineinherited
            -
            -
            Returns
            The number of File Allocation Tables.
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::fatStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of the first FAT.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::fatType () const
            -
            -inlineinherited
            -
            -
            Returns
            The FAT type of the volume. Values are 12, 16 or 32.
            - -
            -
            - -

            ◆ format()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdFat32::format (print_tpr = NULL)
            -
            -inline
            -
            -

            Format a SD card FAT32/FAT16.

            -
            Parameters
            - - -
            [in]prOptional Print information.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            int32_t FatPartition::freeClusterCount ()
            -
            -inherited
            -
            -

            Volume free space in clusters.

            -
            Returns
            Count of free clusters for success or -1 if an error occurs.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatPartition::init (BlockDevicedev,
            uint8_t part = 1 
            )
            -
            -inherited
            -
            -

            Initialize a FAT partition.

            -
            Parameters
            - - - -
            [in]devBlockDevice for this partition.
            [in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in sector zero.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ initErrorHalt() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< FatVolume >::initErrorHalt ()
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            - -
            -
            - -

            ◆ initErrorHalt() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::initErrorHalt (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::initErrorHalt (const char * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FatVolume >::initErrorHalt (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::initErrorHalt (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FatVolume >::initErrorHalt (print_tpr,
            const char * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorPrint() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< FatVolume >::initErrorPrint ()
            -
            -inlineinherited
            -
            -

            Print error details after begin() fails.

            - -
            -
            - -

            ◆ initErrorPrint() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::initErrorPrint (Print * pr)
            -
            -inlineinherited
            -
            -

            Print error details after begin() fails.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ ls() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::ls (const char * path,
            uint8_t flags = 0 
            )
            -
            -inlineinherited
            -
            -

            List the directory contents of a directory to Serial.

            -
            Parameters
            - - - -
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatVolume::ls (print_tpr,
            const char * path,
            uint8_t flags 
            )
            -
            -inlineinherited
            -
            -

            List the contents of a directory.

            -
            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::ls (print_tpr,
            uint8_t flags = 0 
            )
            -
            -inlineinherited
            -
            -

            List the directory contents of the volume root directory.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::ls (uint8_t flags = 0)
            -
            -inlineinherited
            -
            -

            List the directory contents of the root directory to Serial.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::mkdir (const char * path,
            bool pFlag = true 
            )
            -
            -inlineinherited
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::mkdir (const String & path,
            bool pFlag = true 
            )
            -
            -inlineinherited
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            File32 FatVolume::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -inlineinherited
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a File32 object.
            - -
            -
            - -

            ◆ open() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            File32 FatVolume::open (const String & path,
            oflag_t oflag = 0X00 
            )
            -
            -inlineinherited
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a File32 object.
            - -
            -
            - -

            ◆ printFatType()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::printFatType (print_tpr)
            -
            -inlineinherited
            -
            -

            Print volume FAT/exFAT type.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ printSdError()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FatVolume >::printSdError (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and return.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::remove (const char * path)
            -
            -inlineinherited
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::remove (const String & path)
            -
            -inlineinherited
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::rename (const char * oldPath,
            const char * newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::rename (const String & oldPath,
            const String & newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::rmdir (const char * path)
            -
            -inlineinherited
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatVolume::rmdir (const String & path)
            -
            -inlineinherited
            -
            -

            Remove a subdirectory from the volume's working directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rootDirEntryCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::rootDirEntryCount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of entries in the root directory for FAT16 volumes.
            - -
            -
            - -

            ◆ rootDirStart()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::rootDirStart () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
            - -
            -
            - -

            ◆ sdErrorCode()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< FatVolume >::sdErrorCode ()
            -
            -inlineinherited
            -
            -
            Returns
            SD card error code.
            - -
            -
            - -

            ◆ sdErrorData()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< FatVolume >::sdErrorData ()
            -
            -inlineinherited
            -
            -
            Returns
            SD card error data.
            - -
            -
            - -

            ◆ sectorMask()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatPartition::sectorMask ()
            -
            -inlineinherited
            -
            -
            Returns
            Mask for sector offset.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::sectorsPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            The volume's cluster size in sectors.
            - -
            -
            - -

            ◆ sectorsPerClusterShift()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatPartition::sectorsPerClusterShift () const
            -
            -inlineinherited
            -
            -
            Returns
            The shift count required to multiply by sectorsPerCluster.
            - -
            -
            - -

            ◆ sectorsPerFat()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::sectorsPerFat () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of sectors in one FAT.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::truncate (const char * path,
            uint32_t length 
            )
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatVolume::truncate (const String & path,
            uint32_t length 
            )
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be at the new EOF.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for the file.
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ vol()

            - -
            -
            - - - - - -
            - - - - - - - -
            FatVolume * SdBase< FatVolume >::vol ()
            -
            -inlineinherited
            -
            -
            Returns
            pointer to base volume
            - -
            -
            - -

            ◆ volumeBegin()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdBase< FatVolume >::volumeBegin ()
            -
            -inlineinherited
            -
            -

            Initialize file system after call to cardBegin.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ volumeSectorCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatPartition::volumeSectorCount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of sectors in the volume
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdFat.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32__coll__graph.png deleted file mode 100644 index d7ff0975b8485087251eca198c5c8a5314ccc7f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3057 zcmchZc{tSDAIHD4RF*_)$~w8$$d+}KY=g;?Vz|n5(M6L6S(C<0%HUQMV+#`+`$gGf z44Uj3`*LL&Tz4>yu?-W-kK28o``qWb|Nibdf4tB6=RD_g&inQGd}8hGEQR>R`2heB zf?1hg-P2qE;Nm^Rx3`KkR>bZJpNF-jIk3Awvl{Xf0YD%RW^UqmFM~OOh>`L>b#Qq% zkh-Ms@#>lDGfM{PZoi1MV8sTj9eeLo<@Ap>)!7F2+mfDxZ!vv;)jLB3t+YxAOonA= zeGqsgGye>PNSLwZZB}WxB7!7BA2oZJZu&^8Z%Af#lh-cLNj=>=82@%cnD=BDwR^YQ z@LavYL9p!pxP5X3Vf@qqa6*In4q*6}gQuY8E<$r~fEyTj0P1&BpU_inj}_I__fmgEop2x0FG24_J4VM7fM4 zxf4ETj}P;;v(-0@}jhC3GQlLNBjogAff4|3*uX< zY)dm#eebD4h_T?$QDb7AeNgB)ugRoaE;}WEmzd6;E@oK}%q(<}9BMgbM$NH&T)(Wm zF=y>WT3N_g5Rv%O?R!Lj1@@P`eef!Pw@Lj0sLxGhp@QSCgU9e{2+Yh!Z~yAfbO0~eU-?8aQB^8k4!YS@ijT(*lgA8PZMbI=V{B@@ZWe3 z9GRBaz{?l#6=NsYoM&YryzTk%QrE+y%jy>6vQ_8XU$6~~2|Ppz)UiJ5aI)HVLGj^} zosl7-EAKc?FTl^~3eL6_8u+M%u%XeZm|*keK1y_BwMJipcx1L})>LDVSZ^CNq52h% zgM*>Bf-^i&1JBFz(1_crb4qAl4C`l0%)-6hayHG2<=N%pk>!NnTK)BmE_B0}SnMIv z#E3W}cc7P1f^2LwT1HqN^XDi8p1hxK` z-_q#9Tx^clXwB5OM3!i|IH1q0kC7WTI}D8Ago|3WpGGIp@jo9igZ-iLT?VI371f`m z5mu{$sSyduFrOZXFjQL;Z@dE5Fz55<#3{yHT+|}n92~aCVd_N)d>;;K`e91LW(d(E zQkhGO=eo9T7Z*}OgS=tHkL*1RN|9l&=!Gt(7k^kCX9uRS(}o7^6_|3xh8ovWh9GUF zh1oWV-lGCCXG1M^dYHkZn3 zs`+WrMI2_jA9*MBI}bzp!hkHNcV;FWFkIs;|nTu)J=1^!XP2_R)>)YOXht^NU zdk#sPxkOs|I~_ONv>Wivr<^7U;>z)~$ab>CcFr%t>)Yz25o?%Gll_UxH_JQQ@Hup; zF8mI6W;4;}Hb1T${9?%%UNeD8brNz?L^wET;9Fv1ZXA8_c&ekztYOmGNdH~J%SYL& zZV})5Ul#?)c~+l2GTpN0{UAvFWns*?&Ao1*_V?VTm*;jt`X>rQBGhuu6^TOf2hU+i zd^A6xcY(*j1dLg6lok1If9iDI0ZH9mGH17#njG|& zm>n`wj_lgDhi6WY+#p_HoUd|(E6wWK6NH>YzQB~P#kY)jh(@!%&cxy136I%>@}!%e z>}J3Dw$8T>r7pNc>6yDug?-9d!wWt3L5OeFwA;%tdvxMIoR|43iALWo)9c!@K*3QJ z;f}{U=M68SltLQ1`l+yrI~)>fn(a05rVmmvs1&C=Qc3Em2tb98Y;@FSUQ*=Q z3p$T`QdD$G1u~b{E5j^SRaxStvpAM2$o(#(TcywfjNz0I-xx|)?x`04lzz(<1PP-n z2Rypa(-97r&|vv=hx5P4Kg(cTPWKxJnYoa|3yKM`XDDKl_l`s|<76E# zZC->{z%uopZ50AW`OFsD=DJeQDQsxm1yJ$2;Ae|X z4k@rZcTJbHGf&S!SKAijSbfVUBczi;j--XC&EF?zt11rlJC*Ru)5uvd0_NHuU~73* zo`t!ezxX;-s^Q&XAZaMvz`REDxp5a&xeaXxk}mDS6_z~YxptxxcIiGhvB6+W(kjc7 zQp1qEt9=1QAbqXhioL<9y&Y43)z87IC6r5E5O75eP&*eplT=1WM>(3GoBuhIw$#JG%c8h|gn_*t9)LmZ%u7w( GBL4@B*5vX4 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fat32__inherit__graph.png deleted file mode 100644 index d7ff0975b8485087251eca198c5c8a5314ccc7f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3057 zcmchZc{tSDAIHD4RF*_)$~w8$$d+}KY=g;?Vz|n5(M6L6S(C<0%HUQMV+#`+`$gGf z44Uj3`*LL&Tz4>yu?-W-kK28o``qWb|Nibdf4tB6=RD_g&inQGd}8hGEQR>R`2heB zf?1hg-P2qE;Nm^Rx3`KkR>bZJpNF-jIk3Awvl{Xf0YD%RW^UqmFM~OOh>`L>b#Qq% zkh-Ms@#>lDGfM{PZoi1MV8sTj9eeLo<@Ap>)!7F2+mfDxZ!vv;)jLB3t+YxAOonA= zeGqsgGye>PNSLwZZB}WxB7!7BA2oZJZu&^8Z%Af#lh-cLNj=>=82@%cnD=BDwR^YQ z@LavYL9p!pxP5X3Vf@qqa6*In4q*6}gQuY8E<$r~fEyTj0P1&BpU_inj}_I__fmgEop2x0FG24_J4VM7fM4 zxf4ETj}P;;v(-0@}jhC3GQlLNBjogAff4|3*uX< zY)dm#eebD4h_T?$QDb7AeNgB)ugRoaE;}WEmzd6;E@oK}%q(<}9BMgbM$NH&T)(Wm zF=y>WT3N_g5Rv%O?R!Lj1@@P`eef!Pw@Lj0sLxGhp@QSCgU9e{2+Yh!Z~yAfbO0~eU-?8aQB^8k4!YS@ijT(*lgA8PZMbI=V{B@@ZWe3 z9GRBaz{?l#6=NsYoM&YryzTk%QrE+y%jy>6vQ_8XU$6~~2|Ppz)UiJ5aI)HVLGj^} zosl7-EAKc?FTl^~3eL6_8u+M%u%XeZm|*keK1y_BwMJipcx1L})>LDVSZ^CNq52h% zgM*>Bf-^i&1JBFz(1_crb4qAl4C`l0%)-6hayHG2<=N%pk>!NnTK)BmE_B0}SnMIv z#E3W}cc7P1f^2LwT1HqN^XDi8p1hxK` z-_q#9Tx^clXwB5OM3!i|IH1q0kC7WTI}D8Ago|3WpGGIp@jo9igZ-iLT?VI371f`m z5mu{$sSyduFrOZXFjQL;Z@dE5Fz55<#3{yHT+|}n92~aCVd_N)d>;;K`e91LW(d(E zQkhGO=eo9T7Z*}OgS=tHkL*1RN|9l&=!Gt(7k^kCX9uRS(}o7^6_|3xh8ovWh9GUF zh1oWV-lGCCXG1M^dYHkZn3 zs`+WrMI2_jA9*MBI}bzp!hkHNcV;FWFkIs;|nTu)J=1^!XP2_R)>)YOXht^NU zdk#sPxkOs|I~_ONv>Wivr<^7U;>z)~$ab>CcFr%t>)Yz25o?%Gll_UxH_JQQ@Hup; zF8mI6W;4;}Hb1T${9?%%UNeD8brNz?L^wET;9Fv1ZXA8_c&ekztYOmGNdH~J%SYL& zZV})5Ul#?)c~+l2GTpN0{UAvFWns*?&Ao1*_V?VTm*;jt`X>rQBGhuu6^TOf2hU+i zd^A6xcY(*j1dLg6lok1If9iDI0ZH9mGH17#njG|& zm>n`wj_lgDhi6WY+#p_HoUd|(E6wWK6NH>YzQB~P#kY)jh(@!%&cxy136I%>@}!%e z>}J3Dw$8T>r7pNc>6yDug?-9d!wWt3L5OeFwA;%tdvxMIoR|43iALWo)9c!@K*3QJ z;f}{U=M68SltLQ1`l+yrI~)>fn(a05rVmmvs1&C=Qc3Em2tb98Y;@FSUQ*=Q z3p$T`QdD$G1u~b{E5j^SRaxStvpAM2$o(#(TcywfjNz0I-xx|)?x`04lzz(<1PP-n z2Rypa(-97r&|vv=hx5P4Kg(cTPWKxJnYoa|3yKM`XDDKl_l`s|<76E# zZC->{z%uopZ50AW`OFsD=DJeQDQsxm1yJ$2;Ae|X z4k@rZcTJbHGf&S!SKAijSbfVUBczi;j--XC&EF?zt11rlJC*Ru)5uvd0_NHuU~73* zo`t!ezxX;-s^Q&XAZaMvz`REDxp5a&xeaXxk}mDS6_z~YxptxxcIiGhvB6+W(kjc7 zQp1qEt9=1QAbqXhioL<9y&Y43)z87IC6r5E5O75eP&*eplT=1WM>(3GoBuhIw$#JG%c8h|gn_*t9)LmZ%u7w( GBL4@B*5vX4 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file-members.html deleted file mode 100644 index dc59cfaa..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file-members.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdFile Member List
            -
            -
            - -

            This is the complete list of members for SdFile, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            available()FatFileinline
            available32()FatFileinline
            clearError()FatFileinline
            clearWriteError()FatFileinline
            close()FatFile
            contiguousRange(uint32_t *bgnSector, uint32_t *endSector)FatFile
            createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
            createContiguous(const char *path, uint32_t size)FatFile
            curCluster() constFatFileinline
            curPosition() constFatFileinline
            dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))SdFileinlinestatic
            dateTimeCallbackCancel()SdFileinlinestatic
            dirEntry(DirFat_t *dir)FatFile
            dirIndex()FatFileinline
            dirSize()FatFile
            dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
            exists(const char *path)FatFileinline
            FatFile()FatFileinline
            FatFile(const char *path, oflag_t oflag)FatFileinline
            fgetpos(fspos_t *pos)FatFile
            fgets(char *str, int num, char *delim=NULL)FatFile
            fileSize() constFatFileinline
            firstBlock() constFatFileinline
            firstSector() constFatFile
            flush()FatFileinline
            fsetpos(const fspos_t *pos)FatFile
            getAccessDate(uint16_t *pdate)FatFile
            getAccessDateTime(uint16_t *pdate, uint16_t *ptime)FatFileinline
            getCreateDateTime(uint16_t *pdate, uint16_t *ptime)FatFile
            getError()FatFileinline
            getModifyDateTime(uint16_t *pdate, uint16_t *ptime)FatFile
            getName(char *name, size_t size)FatFile
            getSFN(char *name)FatFile
            getWriteError()FatFileinline
            isContiguous() constFatFileinline
            isDir() constFatFileinline
            isFile() constFatFileinline
            isHidden() constFatFileinline
            isLFN() constFatFileinline
            isOpen() constFatFileinline
            isReadable() constFatFileinline
            isReadOnly() constFatFileinline
            isRoot() constFatFileinline
            isRoot32() constFatFileinline
            isRootFixed() constFatFileinline
            isSubDir() constFatFileinline
            isSystem() constFatFileinline
            isWritable() constFatFileinline
            legal83Char(uint8_t c)FatFileinlinestatic
            ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
            ls(uint8_t flags=0)FatFileinline
            mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
            open(FatVolume *vol, const char *path, oflag_t oflag)FatFile
            open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
            open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
            open(const char *path, oflag_t oflag=0X00)FatFile
            openNext(FatFile *dirFile, oflag_t oflag=0X00)FatFile
            openRoot(FatVolume *vol)FatFile
            operator bool()FatFileinline
            peek()FatFile
            preAllocate(uint32_t length)FatFile
            printAccessDate(print_t *pr)FatFile
            printAccessDateTime(print_t *pr)FatFileinline
            printCreateDateTime(print_t *pr)FatFile
            printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
            printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
            printField(double value, char term, uint8_t prec=2)FatFileinline
            printField(float value, char term, uint8_t prec=2)FatFileinline
            printField(Type value, char term)FatFileinline
            printFileSize(print_t *pr)FatFile
            printModifyDateTime(print_t *pr)FatFile
            printName(print_t *pr)FatFile
            printName()FatFileinline
            printSFN(print_t *pr)FatFile
            read()FatFileinline
            read(void *buf, size_t count)FatFile
            readDir(DirFat_t *dir)FatFile
            remove()FatFile
            remove(const char *path)FatFile
            rename(const char *newPath)FatFile
            rename(FatFile *dirFile, const char *newPath)FatFile
            rewind()FatFileinline
            rmdir()FatFile
            rmRfStar()FatFile
            SdFile() (defined in SdFile)SdFileinline
            SdFile(const char *path, oflag_t oflag)SdFileinline
            seekCur(int32_t offset)FatFileinline
            seekEnd(int32_t offset=0)FatFileinline
            seekSet(uint32_t pos)FatFile
            sync()FatFile
            timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
            truncate()FatFile
            truncate(uint32_t length)FatFileinline
            write(uint8_t b)PrintFile< SdBaseFile >inline
            FatFile::write(const char *str)FatFileinline
            FatFile::write(const void *buf, size_t count)FatFile
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file.html deleted file mode 100644 index 267b9b64..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file.html +++ /dev/null @@ -1,3603 +0,0 @@ - - - - - - - -SdFat: SdFile Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            FAT16/FAT32 file with Print. - More...

            - -

            #include <SdFat.h>

            -
            -Inheritance diagram for SdFile:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for SdFile:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            uint32_t available32 ()
             
            void clearError ()
             
            void clearWriteError ()
             
            bool close ()
             
            bool contiguousRange (uint32_t *bgnSector, uint32_t *endSector)
             
            bool createContiguous (const char *path, uint32_t size)
             
            bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
             
            uint32_t curCluster () const
             
            uint32_t curPosition () const
             
            bool dirEntry (DirFat_t *dir)
             
            uint16_t dirIndex ()
             
            uint32_t dirSize ()
             
            void dmpFile (print_t *pr, uint32_t pos, size_t n)
             
            bool exists (const char *path)
             
            void fgetpos (fspos_t *pos)
             
            int fgets (char *str, int num, char *delim=NULL)
             
            uint32_t fileSize () const
             
            uint32_t firstBlock () const
             
            uint32_t firstSector () const
             
            void flush ()
             
            void fsetpos (const fspos_t *pos)
             
            bool getAccessDate (uint16_t *pdate)
             
            bool getAccessDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getCreateDateTime (uint16_t *pdate, uint16_t *ptime)
             
            uint8_t getError ()
             
            bool getModifyDateTime (uint16_t *pdate, uint16_t *ptime)
             
            bool getName (char *name, size_t size)
             
            bool getSFN (char *name)
             
            bool getWriteError ()
             
            bool isContiguous () const
             
            bool isDir () const
             
            bool isFile () const
             
            bool isHidden () const
             
            bool isLFN () const
             
            bool isOpen () const
             
            bool isReadable () const
             
            bool isReadOnly () const
             
            bool isRoot () const
             
            bool isRoot32 () const
             
            bool isRootFixed () const
             
            bool isSubDir () const
             
            bool isSystem () const
             
            bool isWritable () const
             
            bool ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
             
            bool ls (uint8_t flags=0)
             
            bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
             
            bool open (const char *path, oflag_t oflag=0X00)
             
            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            bool openNext (FatFile *dirFile, oflag_t oflag=0X00)
             
            bool openRoot (FatVolume *vol)
             
             operator bool ()
             
            int peek ()
             
            bool preAllocate (uint32_t length)
             
            size_t printAccessDate (print_t *pr)
             
            size_t printAccessDateTime (print_t *pr)
             
            size_t printCreateDateTime (print_t *pr)
             
            size_t printField (double value, char term, uint8_t prec=2)
             
            size_t printField (float value, char term, uint8_t prec=2)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t printFileSize (print_t *pr)
             
            size_t printModifyDateTime (print_t *pr)
             
            size_t printName ()
             
            size_t printName (print_t *pr)
             
            size_t printSFN (print_t *pr)
             
            int read ()
             
            int read (void *buf, size_t count)
             
            int8_t readDir (DirFat_t *dir)
             
            bool remove ()
             
            bool remove (const char *path)
             
            bool rename (const char *newPath)
             
            bool rename (FatFile *dirFile, const char *newPath)
             
            void rewind ()
             
            bool rmdir ()
             
            bool rmRfStar ()
             
             SdFile (const char *path, oflag_t oflag)
             
            bool seekCur (int32_t offset)
             
            bool seekEnd (int32_t offset=0)
             
            bool seekSet (uint32_t pos)
             
            bool sync ()
             
            bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
             
            bool truncate ()
             
            bool truncate (uint32_t length)
             
            size_t write (const char *str)
             
            size_t write (const void *buf, size_t count)
             
            size_t write (uint8_t b)
             
            - - - - - - - - - - - -

            -Static Public Member Functions

            static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
             
            static void dateTimeCallbackCancel ()
             
            static bool legal83Char (uint8_t c)
             
            static void printFatDate (print_t *pr, uint16_t fatDate)
             
            static void printFatTime (print_t *pr, uint16_t fatTime)
             
            -

            Detailed Description

            -

            FAT16/FAT32 file with Print.

            -

            Constructor & Destructor Documentation

            - -

            ◆ SdFile()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            SdFile::SdFile (const char * path,
            oflag_t oflag 
            )
            -
            -inline
            -
            -

            Create an open SdFile.

            Parameters
            - - - -
            [in]pathpath for file.
            [in]oflagopen flags.
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            - - - - - -
            - - - - - - - -
            int FatFile::available ()
            -
            -inlineinherited
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. INT_MAX is returned for very large files.
            -

            available64() is recomended for very large files.

            -

            Zero is returned for directory files.

            - -
            -
            - -

            ◆ available32()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::available32 ()
            -
            -inlineinherited
            -
            -
            Returns
            The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
            - -
            -
            - -

            ◆ clearError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::clearError ()
            -
            -inlineinherited
            -
            -

            Clear all error bits.

            - -
            -
            - -

            ◆ clearWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::clearWriteError ()
            -
            -inlineinherited
            -
            -

            Set writeError to zero

            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::close ()
            -
            -inherited
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ contiguousRange()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::contiguousRange (uint32_t * bgnSector,
            uint32_t * endSector 
            )
            -
            -inherited
            -
            -

            Check for contiguous file and return its raw sector range.

            -
            Parameters
            - - - -
            [out]bgnSectorthe first sector address for the file.
            [out]endSectorthe last sector address for the file.
            -
            -
            -

            Set the contiguous flag if the file is contiguous. The parameters may be nullptr to only set the flag.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ createContiguous() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::createContiguous (const char * path,
            uint32_t size 
            )
            -
            -inherited
            -
            -

            Create and open a new contiguous file of a specified size.

            -
            Parameters
            - - - -
            [in]pathA path with a valid file name.
            [in]sizeThe desired file size.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ createContiguous() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::createContiguous (FatFiledirFile,
            const char * path,
            uint32_t size 
            )
            -
            -inherited
            -
            -

            Create and open a new contiguous file of a specified size.

            -
            Parameters
            - - - - -
            [in]dirFileThe directory where the file will be created.
            [in]pathA path with a valid file name.
            [in]sizeThe desired file size.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ curCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::curCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            The current cluster number for a file or directory.
            - -
            -
            - -

            ◆ curPosition()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::curPosition () const
            -
            -inlineinherited
            -
            -
            Returns
            The current position for a file or directory.
            - -
            -
            - -

            ◆ dateTimeCallback()

            - -
            -
            - - - - - -
            - - - - - - - - -
            static void SdFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
            -
            -inlinestatic
            -
            -

            Set the date/time callback function

            -
            Parameters
            - - -
            [in]dateTimeThe user's call back function. The callback function is of the form:
            -
            -
            -
            void dateTime(uint16_t* date, uint16_t* time) {
            -
            uint16_t year;
            -
            uint8_t month, day, hour, minute, second;
            -
            -
            // User gets date and time from GPS or real-time clock here
            -
            -
            // return date using FS_DATE macro to format fields
            -
            *date = FS_DATE(year, month, day);
            -
            -
            // return time using FS_TIME macro to format fields
            -
            *time = FS_TIME(hour, minute, second);
            -
            }
            -

            Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

            - -
            -
            - -

            ◆ dateTimeCallbackCancel()

            - -
            -
            - - - - - -
            - - - - - - - -
            static void SdFile::dateTimeCallbackCancel ()
            -
            -inlinestatic
            -
            -

            Cancel the date/time callback function.

            - -
            -
            - -

            ◆ dirEntry()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::dirEntry (DirFat_t * dir)
            -
            -inherited
            -
            -

            Return a file's directory entry.

            -
            Parameters
            - - -
            [out]dirLocation for return of the file's directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ dirIndex()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint16_t FatFile::dirIndex ()
            -
            -inlineinherited
            -
            -
            Returns
            Directory entry index.
            - -
            -
            - -

            ◆ dirSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::dirSize ()
            -
            -inherited
            -
            -
            Returns
            The number of bytes allocated to a directory or zero if an error occurs.
            - -
            -
            - -

            ◆ dmpFile()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            void FatFile::dmpFile (print_tpr,
            uint32_t pos,
            size_t n 
            )
            -
            -inherited
            -
            -

            Dump file in Hex

            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]posStart position in file.
            [in]nnumber of locations to dump.
            -
            -
            - -
            -
            - -

            ◆ exists()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::exists (const char * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -

            The calling instance must be an open directory file.

            -

            dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

            -
            Returns
            True if the file exists.
            - -
            -
            - -

            ◆ fgetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FatFile::fgetpos (fspos_t * pos)
            -
            -inherited
            -
            -

            get position for streams

            Parameters
            - - -
            [out]posstruct to receive position
            -
            -
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int FatFile::fgets (char * str,
            int num,
            char * delim = NULL 
            )
            -
            -inherited
            -
            -

            Get a string from a file.

            -

            fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

            -

            fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

            -
            Parameters
            - - - - -
            [out]strPointer to the array where the string is stored.
            [in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
            [in]delimOptional set of delimiters. The default is "\n".
            -
            -
            -
            Returns
            For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
            - -
            -
            - -

            ◆ fileSize()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::fileSize () const
            -
            -inlineinherited
            -
            -
            Returns
            The total number of bytes in a file.
            - -
            -
            - -

            ◆ firstBlock()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::firstBlock () const
            -
            -inlineinherited
            -
            -
            Returns
            first sector of file or zero for empty file.
            - -
            -
            - -

            ◆ firstSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FatFile::firstSector () const
            -
            -inherited
            -
            -
            Returns
            Address of first sector or zero for empty file.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::flush ()
            -
            -inlineinherited
            -
            -

            Arduino name for sync()

            - -
            -
            - -

            ◆ fsetpos()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void FatFile::fsetpos (const fspos_t * pos)
            -
            -inherited
            -
            -

            set position for streams

            Parameters
            - - -
            [in]posstruct with value for new position
            -
            -
            - -
            -
            - -

            ◆ getAccessDate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::getAccessDate (uint16_t * pdate)
            -
            -inherited
            -
            -

            Get a file's access date.

            -
            Parameters
            - - -
            [out]pdatePacked date for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getAccessDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inlineinherited
            -
            -

            Get a file's access date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimereturn zero since FAT has no time.
            -
            -
            -

            This function is for comparability in FsFile.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getCreateDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's create date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getError()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FatFile::getError ()
            -
            -inlineinherited
            -
            -
            Returns
            All error bits.
            - -
            -
            - -

            ◆ getModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getModifyDateTime (uint16_t * pdate,
            uint16_t * ptime 
            )
            -
            -inherited
            -
            -

            Get a file's modify date and time.

            -
            Parameters
            - - - -
            [out]pdatePacked date for directory entry.
            [out]ptimePacked time for directory entry.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getName()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::getName (char * name,
            size_t size 
            )
            -
            -inherited
            -
            -

            Get a file's name followed by a zero byte.

            -
            Parameters
            - - - -
            [out]nameAn array of characters for the file's name.
            [in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getSFN()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::getSFN (char * name)
            -
            -inherited
            -
            -

            Get a file's Short File Name followed by a zero byte.

            -
            Parameters
            - - -
            [out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ getWriteError()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::getWriteError ()
            -
            -inlineinherited
            -
            -
            Returns
            value of writeError
            - -
            -
            - -

            ◆ isContiguous()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isContiguous () const
            -
            -inlineinherited
            -
            -
            Returns
            True if the file is contiguous.
            - -
            -
            - -

            ◆ isDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isDir () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a directory.
            - -
            -
            - -

            ◆ isFile()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isFile () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a normal file.
            - -
            -
            - -

            ◆ isHidden()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isHidden () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a hidden file.
            - -
            -
            - -

            ◆ isLFN()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isLFN () const
            -
            -inlineinherited
            -
            -
            Returns
            true if this file has a Long File Name.
            - -
            -
            - -

            ◆ isOpen()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isOpen () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is an open file/directory.
            - -
            -
            - -

            ◆ isReadable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isReadable () const
            -
            -inlineinherited
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ isReadOnly()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isReadOnly () const
            -
            -inlineinherited
            -
            -
            Returns
            True if file is read-only
            - -
            -
            - -

            ◆ isRoot()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRoot () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the root directory.
            - -
            -
            - -

            ◆ isRoot32()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRoot32 () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the FAT32 root directory.
            - -
            -
            - -

            ◆ isRootFixed()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isRootFixed () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is the FAT12 of FAT16 root directory.
            - -
            -
            - -

            ◆ isSubDir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isSubDir () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a subdirectory.
            - -
            -
            - -

            ◆ isSystem()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isSystem () const
            -
            -inlineinherited
            -
            -
            Returns
            True if this is a system file.
            - -
            -
            - -

            ◆ isWritable()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::isWritable () const
            -
            -inlineinherited
            -
            -
            Returns
            True file is writable.
            - -
            -
            - -

            ◆ legal83Char()

            - -
            -
            - - - - - -
            - - - - - - - - -
            static bool FatFile::legal83Char (uint8_t c)
            -
            -inlinestaticinherited
            -
            -

            Check for a legal 8.3 character.

            Parameters
            - - -
            [in]cCharacter to be checked.
            -
            -
            -
            Returns
            true for a legal 8.3 character.
            - -
            -
            - -

            ◆ ls() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::ls (print_tpr,
            uint8_t flags = 0,
            uint8_t indent = 0 
            )
            -
            -inherited
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint stream for list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Parameters
            - - -
            [in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::ls (uint8_t flags = 0)
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::mkdir (FatFiledir,
            const char * path,
            bool pFlag = true 
            )
            -
            -inherited
            -
            -

            Make a new directory.

            -
            Parameters
            - - - - -
            [in]dirAn open FatFile instance for the directory that will contain the new directory.
            [in]pathA path with a valid name for the new directory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            Open a file in the current working volume.

            -
            Parameters
            - - - -
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatFiledirFile,
            const char * path,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file or directory by name.

            -
            Parameters
            - - - - -
            [in]dirFileAn open FatFile instance for the directory containing the file to be opened.
            [in]pathA path with a valid name for a file to be opened.
            [in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list. Only one of O_RDONLY, O_READ, O_WRONLY, O_WRITE, or O_RDWR is allowed.
            -
            -
            -

            O_RDONLY - Open for reading.

            -

            O_READ - Same as O_RDONLY.

            -

            O_WRONLY - Open for writing.

            -

            O_WRITE - Same as O_WRONLY.

            -

            O_RDWR - Open for reading and writing.

            -

            O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

            -

            O_AT_END - Set the initial position at the end of the file.

            -

            O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

            -

            O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

            -

            O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

            -

            WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

            -
            Note
            Directory files must be opened read only. Write and truncation is not allowed for directory files.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatFiledirFile,
            uint16_t index,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file by index.

            -
            Parameters
            - - - - -
            [in]dirFileAn open FatFile instance for the directory.
            [in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -

            See open() by path for definition of flags.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::open (FatVolumevol,
            const char * path,
            oflag_t oflag 
            )
            -
            -inherited
            -
            -

            Open a file in the volume root directory.

            -
            Parameters
            - - - - -
            [in]volVolume where the file is located.
            [in]pathwith a valid name for a file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openNext()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::openNext (FatFiledirFile,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            Open the next file or subdirectory in a directory.

            -
            Parameters
            - - - -
            [in]dirFileAn open FatFile instance for the directory containing the file to be opened.
            [in]oflagbitwise-inclusive OR of open flags. See see FatFile::open(FatFile*, const char*, uint8_t).
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ openRoot()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::openRoot (FatVolumevol)
            -
            -inherited
            -
            -

            Open a volume's root directory.

            -
            Parameters
            - - -
            [in]volThe FAT volume containing the root directory to be opened.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            FatFile::operator bool ()
            -
            -inlineinherited
            -
            -

            The parenthesis operator.

            -
            Returns
            true if a file is open.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int FatFile::peek ()
            -
            -inherited
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ preAllocate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::preAllocate (uint32_t length)
            -
            -inherited
            -
            -

            Allocate contiguous clusters to an empty file.

            -

            The file must be empty with no clusters allocated.

            -

            The file will contain uninitialized data.

            -
            Parameters
            - - -
            [in]lengthsize of the file in bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printAccessDate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printAccessDate (print_tpr)
            -
            -inherited
            -
            -

            Print a file's access date

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printAccessDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printAccessDateTime (print_tpr)
            -
            -inlineinherited
            -
            -

            Print a file's access date

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printCreateDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printCreateDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's creation date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of bytes printed.
            - -
            -
            - -

            ◆ printFatDate()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            static void FatFile::printFatDate (print_tpr,
            uint16_t fatDate 
            )
            -
            -staticinherited
            -
            -

            Print a directory date field.

            -

            Format is yyyy-mm-dd.

            -
            Parameters
            - - - -
            [in]prPrint stream for output.
            [in]fatDateThe date field from a directory entry.
            -
            -
            - -
            -
            - -

            ◆ printFatTime()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            static void FatFile::printFatTime (print_tpr,
            uint16_t fatTime 
            )
            -
            -staticinherited
            -
            -

            Print a directory time field.

            -

            Format is hh:mm:ss.

            -
            Parameters
            - - - -
            [in]prPrint stream for output.
            [in]fatTimeThe time field from a directory entry.
            -
            -
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename Type >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FatFile::printField (Type value,
            char term 
            )
            -
            -inlineinherited
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator. Use '\n' for CR LF.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printFileSize()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printFileSize (print_tpr)
            -
            -inherited
            -
            -

            Print a file's size.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ printModifyDateTime()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printModifyDateTime (print_tpr)
            -
            -inherited
            -
            -

            Print a file's modify date and time

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed.
            - -
            -
            - -

            ◆ printName() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            size_t FatFile::printName ()
            -
            -inlineinherited
            -
            -

            Print a file's name.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printName() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printName (print_tpr)
            -
            -inherited
            -
            -

            Print a file's name

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ printSFN()

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::printSFN (print_tpr)
            -
            -inherited
            -
            -

            Print a file's Short File Name.

            -
            Parameters
            - - -
            [in]prPrint stream for output.
            -
            -
            -
            Returns
            The number of characters printed is returned for success and zero is returned for failure.
            - -
            -
            - -

            ◆ read() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int FatFile::read ()
            -
            -inlineinherited
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
            - -
            -
            - -

            ◆ read() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int FatFile::read (void * buf,
            size_t count 
            )
            -
            -inherited
            -
            -

            Read data from a file starting at the current position.

            -
            Parameters
            - - - -
            [out]bufPointer to the location that will receive the data.
            [in]countMaximum number of bytes to read.
            -
            -
            -
            Returns
            For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1.
            - -
            -
            - -

            ◆ readDir()

            - -
            -
            - - - - - -
            - - - - - - - - -
            int8_t FatFile::readDir (DirFat_t * dir)
            -
            -inherited
            -
            -

            Read the next directory entry from a directory file.

            -
            Parameters
            - - -
            [out]dirThe DirFat_t struct that will receive the data.
            -
            -
            -
            Returns
            For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::remove ()
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::remove (const char * path)
            -
            -inherited
            -
            -

            Remove a file.

            -

            The directory entry and all data for the file are deleted.

            -
            Parameters
            - - -
            [in]pathPath for the file to be removed.
            -
            -
            -

            Example use: dirFile.remove(filenameToRemove);

            -
            Note
            This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::rename (const char * newPath)
            -
            -inherited
            -
            -

            Rename a file or subdirectory.

            Note
            the renamed file will be moved to the current volume working directory.
            -
            Parameters
            - - -
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FatFile::rename (FatFiledirFile,
            const char * newPath 
            )
            -
            -inherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]dirFileDirectory for the new path.
            [in]newPathNew path name for the file/directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FatFile::rewind ()
            -
            -inlineinherited
            -
            -

            Set the file's current position to zero.

            - -
            -
            - -

            ◆ rmdir()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::rmdir ()
            -
            -inherited
            -
            -

            Remove a directory file.

            -

            The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmRfStar()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::rmRfStar ()
            -
            -inherited
            -
            -

            Recursively delete a directory and all contained files.

            -

            This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

            -

            Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

            -
            Note
            This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekCur()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekCur (int32_t offset)
            -
            -inlineinherited
            -
            -

            Set the files position to current position + pos. See seekSet().

            Parameters
            - - -
            [in]offsetThe new position in bytes from the current position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekEnd()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekEnd (int32_t offset = 0)
            -
            -inlineinherited
            -
            -

            Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

            Parameters
            - - -
            [in]offsetThe new position in bytes from end-of-file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ seekSet()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::seekSet (uint32_t pos)
            -
            -inherited
            -
            -

            Sets a file's position.

            -
            Parameters
            - - -
            [in]posThe new position in bytes from the beginning of the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sync()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::sync ()
            -
            -inherited
            -
            -

            The sync() call causes all modified data and directory fields to be written to the storage device.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ timestamp()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FatFile::timestamp (uint8_t flags,
            uint16_t year,
            uint8_t month,
            uint8_t day,
            uint8_t hour,
            uint8_t minute,
            uint8_t second 
            )
            -
            -inherited
            -
            -

            Set a file's timestamps in its directory entry.

            -
            Parameters
            - - -
            [in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
            -
            -
            -

            T_ACCESS - Set the file's last access date.

            -

            T_CREATE - Set the file's creation date and time.

            -

            T_WRITE - Set the file's last write/modification date and time.

            -
            Parameters
            - - - - - - - -
            [in]yearValid range 1980 - 2107 inclusive.
            [in]monthValid range 1 - 12 inclusive.
            [in]dayValid range 1 - 31 inclusive.
            [in]hourValid range 0 - 23 inclusive.
            [in]minuteValid range 0 - 59 inclusive.
            [in]secondValid range 0 - 59 inclusive
            -
            -
            -
            Note
            It is possible to set an invalid date since there is no check for the number of days in a month.
            -
            -Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FatFile::truncate ()
            -
            -inherited
            -
            -

            Truncate a file at the current file position. will be maintained if it is less than or equal to length otherwise it will be set to end of file.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ truncate() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FatFile::truncate (uint32_t length)
            -
            -inlineinherited
            -
            -

            Truncate a file to a specified length. The current file position will be set to end of file.

            -
            Parameters
            - - -
            [in]lengthThe desired length for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ write() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t FatFile::write (const char * str)
            -
            -inlineinherited
            -
            -

            Write a string to a file. Used by the Arduino Print class.

            Parameters
            - - -
            [in]strPointer to the string. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            count of characters written for success or -1 for failure.
            - -
            -
            - -

            ◆ write() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t FatFile::write (const void * buf,
            size_t count 
            )
            -
            -inherited
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufPointer to the location of the data to be written.
            [in]countNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always count. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
            - -
            -
            - -

            ◆ write() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t PrintFile< SdBaseFile >::write (uint8_t b)
            -
            -inlineinherited
            -
            -

            Write a single byte.

            Parameters
            - - -
            [in]bbyte to write.
            -
            -
            -
            Returns
            one for success.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdFat.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_file__coll__graph.png deleted file mode 100644 index c275e3e52006c9262c83bedede656b2a029b8a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 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 - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdFs Member List
            -
            -
            - -

            This is the complete list of members for SdFs, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(SdCsPin_t csPin=SS)SdBase< FsVolume >inline
            begin(SdCsPin_t csPin, uint32_t maxSck)SdBase< FsVolume >inline
            begin(SdSpiConfig spiConfig)SdBase< FsVolume >inline
            begin(SdioConfig sdioConfig)SdBase< FsVolume >inline
            FsVolume::begin(BlockDevice *blockDev)FsVolume
            bytesPerCluster()FsVolumeinline
            card()SdBase< FsVolume >inline
            cardBegin(SdSpiConfig spiConfig)SdBase< FsVolume >inline
            cardBegin(SdioConfig sdioConfig)SdBase< FsVolume >inline
            chdir()FsVolumeinline
            chdir(const char *path)FsVolumeinline
            chdir(const String &path)FsVolumeinline
            chvol()FsVolumeinline
            clusterCount()FsVolumeinline
            cwv()FsVolumeinlinestatic
            dataStartSector() constFsVolumeinline
            end()FsVolumeinline
            errorHalt(print_t *pr)SdBase< FsVolume >inline
            errorHalt(print_t *pr, const char *msg)SdBase< FsVolume >inline
            errorHalt(print_t *pr, const __FlashStringHelper *msg)SdBase< FsVolume >inline
            errorHalt(const __FlashStringHelper *msg)SdBase< FsVolume >inline
            errorHalt()SdBase< FsVolume >inline
            errorHalt(const char *msg)SdBase< FsVolume >inline
            errorPrint(print_t *pr)SdBase< FsVolume >inline
            errorPrint(print_t *pr, char const *msg)SdBase< FsVolume >inline
            errorPrint(Print *pr, const __FlashStringHelper *msg)SdBase< FsVolume >inline
            errorPrint(const char *msg)SdBase< FsVolume >inline
            errorPrint(const __FlashStringHelper *msg)SdBase< FsVolume >inline
            exists(const char *path)FsVolumeinline
            exists(const String &path)FsVolumeinline
            fatStartSector() constFsVolumeinline
            fatType() constFsVolumeinline
            freeClusterCount()FsVolumeinline
            FsVolume() (defined in FsVolume)FsVolumeinline
            initErrorHalt(print_t *pr)SdBase< FsVolume >inline
            initErrorHalt(print_t *pr, const char *msg)SdBase< FsVolume >inline
            initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdBase< FsVolume >inline
            initErrorHalt()SdBase< FsVolume >inline
            initErrorHalt(const char *msg)SdBase< FsVolume >inline
            initErrorHalt(const __FlashStringHelper *msg)SdBase< FsVolume >inline
            initErrorPrint(Print *pr)SdBase< FsVolume >inline
            initErrorPrint()SdBase< FsVolume >inline
            ls(print_t *pr)FsVolumeinline
            ls(print_t *pr, uint8_t flags)FsVolumeinline
            ls(print_t *pr, const char *path, uint8_t flags)FsVolume
            ls()FsVolumeinline
            ls(uint8_t flags)FsVolumeinline
            ls(const char *path, uint8_t flags=0)FsVolumeinline
            mkdir(const char *path, bool pFlag=true)FsVolumeinline
            mkdir(const String &path, bool pFlag=true)FsVolumeinline
            open(const char *path, oflag_t oflag=0X00)FsVolume
            open(const String &path, oflag_t oflag=0X00)FsVolume
            printFatType(print_t *pr)SdBase< FsVolume >inline
            printSdError(print_t *pr)SdBase< FsVolume >inline
            remove(const char *path)FsVolumeinline
            remove(const String &path)FsVolumeinline
            rename(const char *oldPath, const char *newPath)FsVolumeinline
            rename(const String &oldPath, const String &newPath)FsVolumeinline
            rmdir(const char *path)FsVolumeinline
            rmdir(const String &path)FsVolumeinline
            sdErrorCode()SdBase< FsVolume >inline
            sdErrorData()SdBase< FsVolume >inline
            sectorsPerCluster() constFsVolumeinline
            vol()SdBase< FsVolume >inline
            volumeBegin()SdBase< FsVolume >inline
            ~FsVolume() (defined in FsVolume)FsVolumeinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs.html deleted file mode 100644 index b9e4b746..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs.html +++ /dev/null @@ -1,2445 +0,0 @@ - - - - - - - -SdFat: SdFs Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            SD file system class for FAT16, FAT32, and exFAT volumes. - More...

            - -

            #include <SdFat.h>

            -
            -Inheritance diagram for SdFs:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            -
            -Collaboration diagram for SdFs:
            -
            -
            Collaboration graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (BlockDevice *blockDev)
             
            bool begin (SdCsPin_t csPin, uint32_t maxSck)
             
            bool begin (SdCsPin_t csPin=SS)
             
            bool begin (SdioConfig sdioConfig)
             
            bool begin (SdSpiConfig spiConfig)
             
            uint32_t bytesPerCluster ()
             
            SdCardcard ()
             
            bool cardBegin (SdioConfig sdioConfig)
             
            bool cardBegin (SdSpiConfig spiConfig)
             
            bool chdir ()
             
            bool chdir (const char *path)
             
            bool chdir (const String &path)
             
            void chvol ()
             
            uint32_t clusterCount ()
             
            uint32_t dataStartSector () const
             
            void end ()
             
            void errorHalt ()
             
            void errorHalt (const __FlashStringHelper *msg)
             
            void errorHalt (const char *msg)
             
            void errorHalt (print_t *pr)
             
            void errorHalt (print_t *pr, const __FlashStringHelper *msg)
             
            void errorHalt (print_t *pr, const char *msg)
             
            void errorPrint (const __FlashStringHelper *msg)
             
            void errorPrint (const char *msg)
             
            void errorPrint (Print *pr, const __FlashStringHelper *msg)
             
            void errorPrint (print_t *pr)
             
            void errorPrint (print_t *pr, char const *msg)
             
            bool exists (const char *path)
             
            bool exists (const String &path)
             
            uint32_t fatStartSector () const
             
            uint8_t fatType () const
             
            uint32_t freeClusterCount ()
             
            void initErrorHalt ()
             
            void initErrorHalt (const __FlashStringHelper *msg)
             
            void initErrorHalt (const char *msg)
             
            void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
             
            void initErrorHalt (print_t *pr)
             
            void initErrorHalt (print_t *pr, const char *msg)
             
            void initErrorPrint ()
             
            void initErrorPrint (Print *pr)
             
            bool ls ()
             
            bool ls (const char *path, uint8_t flags=0)
             
            bool ls (print_t *pr)
             
            bool ls (print_t *pr, const char *path, uint8_t flags)
             
            bool ls (print_t *pr, uint8_t flags)
             
            bool ls (uint8_t flags)
             
            bool mkdir (const char *path, bool pFlag=true)
             
            bool mkdir (const String &path, bool pFlag=true)
             
            FsFile open (const char *path, oflag_t oflag=0X00)
             
            FsFile open (const String &path, oflag_t oflag=0X00)
             
            void printFatType (print_t *pr)
             
            void printSdError (print_t *pr)
             
            bool remove (const char *path)
             
            bool remove (const String &path)
             
            bool rename (const char *oldPath, const char *newPath)
             
            bool rename (const String &oldPath, const String &newPath)
             
            bool rmdir (const char *path)
             
            bool rmdir (const String &path)
             
            uint8_t sdErrorCode ()
             
            uint8_t sdErrorData ()
             
            uint32_t sectorsPerCluster () const
             
            FsVolumevol ()
             
            bool volumeBegin ()
             
            - - - -

            -Static Public Member Functions

            static FsVolumecwv ()
             
            -

            Detailed Description

            -

            SD file system class for FAT16, FAT32, and exFAT volumes.

            -

            Member Function Documentation

            - -

            ◆ begin() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::begin (BlockDeviceblockDev)
            -
            -inherited
            -
            -

            Initialize an FatVolume object.

            Parameters
            - - -
            [in]blockDevDevice block driver.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdBase< FsVolume >::begin (SdCsPin_t csPin,
            uint32_t maxSck 
            )
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - - -
            [in]csPinSD card chip select pin.
            [in]maxSckMaximum SCK frequency.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FsVolume >::begin (SdCsPin_t csPin = SS)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system.

            -
            Parameters
            - - -
            [in]csPinSD card chip select pin.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FsVolume >::begin (SdioConfig sdioConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system for SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ begin() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FsVolume >::begin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card and file system for SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ bytesPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::bytesPerCluster ()
            -
            -inlineinherited
            -
            -
            Returns
            the number of bytes in a cluster.
            - -
            -
            - -

            ◆ card()

            - -
            -
            - - - - - -
            - - - - - - - -
            SdCard* SdBase< FsVolume >::card ()
            -
            -inlineinherited
            -
            -
            Returns
            Pointer to SD card object.
            - -
            -
            - -

            ◆ cardBegin() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FsVolume >::cardBegin (SdioConfig sdioConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card in SDIO mode.

            -
            Parameters
            - - -
            [in]sdioConfigSDIO configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ cardBegin() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdBase< FsVolume >::cardBegin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize SD card in SPI mode.

            -
            Parameters
            - - -
            [in]spiConfigSPI configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsVolume::chdir ()
            -
            -inlineinherited
            -
            -

            Set volume working directory to root.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::chdir (const char * path)
            -
            -inlineinherited
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chdir() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::chdir (const String & path)
            -
            -inlineinherited
            -
            -

            Set volume working directory.

            Parameters
            - - -
            [in]pathPath for volume working directory.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ chvol()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsVolume::chvol ()
            -
            -inlineinherited
            -
            -

            Change global working volume to this volume.

            - -
            -
            - -

            ◆ clusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::clusterCount ()
            -
            -inlineinherited
            -
            -
            Returns
            The total number of clusters in the volume.
            - -
            -
            - -

            ◆ cwv()

            - -
            -
            - - - - - -
            - - - - - - - -
            static FsVolume* FsVolume::cwv ()
            -
            -inlinestaticinherited
            -
            -
            Returns
            current working volume.
            - -
            -
            - -

            ◆ dataStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::dataStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of file data.
            - -
            -
            - -

            ◆ end()

            - -
            -
            - - - - - -
            - - - - - - - -
            void FsVolume::end ()
            -
            -inlineinherited
            -
            -

            free dynamic memory and end access to volume

            - -
            -
            - -

            ◆ errorHalt() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< FsVolume >::errorHalt ()
            -
            -inlineinherited
            -
            -

            Print error info to Serial and halt.

            - -
            -
            - -

            ◆ errorHalt() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::errorHalt (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print msg to Serial and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::errorHalt (const char * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::errorHalt (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FsVolume >::errorHalt (print_tpr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorHalt() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FsVolume >::errorHalt (print_tpr,
            const char * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [1/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::errorPrint (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [2/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::errorPrint (const char * msg)
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [3/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FsVolume >::errorPrint (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [4/5]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::errorPrint (print_tpr)
            -
            -inlineinherited
            -
            -

            Print SD errorCode and errorData.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ errorPrint() [5/5]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FsVolume >::errorPrint (print_tpr,
            char const * msg 
            )
            -
            -inlineinherited
            -
            -

            Print msg, any SD error code.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ exists() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::exists (const char * path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ exists() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::exists (const String & path)
            -
            -inlineinherited
            -
            -

            Test for the existence of a file in a directory

            -
            Parameters
            - - -
            [in]pathPath of the file to be tested for.
            -
            -
            -
            Returns
            true if the file exists else false.
            - -
            -
            - -

            ◆ fatStartSector()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::fatStartSector () const
            -
            -inlineinherited
            -
            -
            Returns
            The logical sector number for the start of the first FAT.
            - -
            -
            - -

            ◆ fatType()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t FsVolume::fatType () const
            -
            -inlineinherited
            -
            -
            Returns
            Partition type, FAT_TYPE_EXFAT, FAT_TYPE_FAT32, FAT_TYPE_FAT16, or zero for error.
            - -
            -
            - -

            ◆ freeClusterCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::freeClusterCount ()
            -
            -inlineinherited
            -
            -
            Returns
            the free cluster count.
            - -
            -
            - -

            ◆ initErrorHalt() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< FsVolume >::initErrorHalt ()
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            - -
            -
            - -

            ◆ initErrorHalt() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::initErrorHalt (const __FlashStringHelper * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::initErrorHalt (const char * msg)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FsVolume >::initErrorHalt (Print * pr,
            const __FlashStringHelper * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::initErrorHalt (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ initErrorHalt() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdBase< FsVolume >::initErrorHalt (print_tpr,
            const char * msg 
            )
            -
            -inlineinherited
            -
            -

            Print error info and halt.

            -
            Parameters
            - - - -
            [in]prPrint destination.
            [in]msgMessage to print.
            -
            -
            - -
            -
            - -

            ◆ initErrorPrint() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdBase< FsVolume >::initErrorPrint ()
            -
            -inlineinherited
            -
            -

            Print error details after begin() fails.

            - -
            -
            - -

            ◆ initErrorPrint() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::initErrorPrint (Print * pr)
            -
            -inlineinherited
            -
            -

            Print error details after begin() fails.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ ls() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - -
            bool FsVolume::ls ()
            -
            -inlineinherited
            -
            -

            List directory contents.

            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [2/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::ls (const char * path,
            uint8_t flags = 0 
            )
            -
            -inlineinherited
            -
            -

            List the directory contents of a directory to Serial.

            -
            Parameters
            - - - -
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            -
            -true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::ls (print_tpr)
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]prPrint object.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool FsVolume::ls (print_tpr,
            const char * path,
            uint8_t flags 
            )
            -
            -inherited
            -
            -

            List the directory contents of a directory.

            -
            Parameters
            - - - - -
            [in]prPrint stream for list.
            [in]pathdirectory to list.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::ls (print_tpr,
            uint8_t flags 
            )
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - - -
            [in]prPrint object.
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ls() [6/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::ls (uint8_t flags)
            -
            -inlineinherited
            -
            -

            List directory contents.

            -
            Parameters
            - - -
            [in]flagsThe inclusive OR of
            -
            -
            -

            LS_DATE - Print file modification date

            -

            LS_SIZE - Print file size.

            -

            LS_R - Recursive list of subdirectories.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::mkdir (const char * path,
            bool pFlag = true 
            )
            -
            -inlineinherited
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ mkdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::mkdir (const String & path,
            bool pFlag = true 
            )
            -
            -inlineinherited
            -
            -

            Make a subdirectory in the volume root directory.

            -
            Parameters
            - - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            [in]pFlagCreate missing parent directories if true.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ open() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            FsFile FsVolume::open (const char * path,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FsBaseFile object.
            - -
            -
            - -

            ◆ open() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            FsFile FsVolume::open (const String & path,
            oflag_t oflag = 0X00 
            )
            -
            -inherited
            -
            -

            open a file

            -
            Parameters
            - - - -
            [in]pathlocation of file to be opened.
            [in]oflagopen flags.
            -
            -
            -
            Returns
            a FsBaseFile object.
            - -
            -
            - -

            ◆ printFatType()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::printFatType (print_tpr)
            -
            -inlineinherited
            -
            -

            Print volume FAT/exFAT type.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ printSdError()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdBase< FsVolume >::printSdError (print_tpr)
            -
            -inlineinherited
            -
            -

            Print error info and return.

            -
            Parameters
            - - -
            [in]prPrint destination.
            -
            -
            - -
            -
            - -

            ◆ remove() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::remove (const char * path)
            -
            -inlineinherited
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ remove() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::remove (const String & path)
            -
            -inlineinherited
            -
            -

            Remove a file from the volume root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the file.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::rename (const char * oldPath,
            const char * newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rename() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool FsVolume::rename (const String & oldPath,
            const String & newPath 
            )
            -
            -inlineinherited
            -
            -

            Rename a file or subdirectory.

            -
            Parameters
            - - - -
            [in]oldPathPath name to the file or subdirectory to be renamed.
            [in]newPathNew path name of the file or subdirectory.
            -
            -
            -

            The newPath object must not exist before the rename call.

            -

            The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::rmdir (const char * path)
            -
            -inlineinherited
            -
            -

            Remove a subdirectory from the volume's root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ rmdir() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool FsVolume::rmdir (const String & path)
            -
            -inlineinherited
            -
            -

            Remove a subdirectory from the volume's root directory.

            -
            Parameters
            - - -
            [in]pathA path with a valid 8.3 DOS name for the subdirectory.
            -
            -
            -

            The subdirectory file will be removed only if it is empty.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sdErrorCode()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< FsVolume >::sdErrorCode ()
            -
            -inlineinherited
            -
            -
            Returns
            SD card error code.
            - -
            -
            - -

            ◆ sdErrorData()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdBase< FsVolume >::sdErrorData ()
            -
            -inlineinherited
            -
            -
            Returns
            SD card error data.
            - -
            -
            - -

            ◆ sectorsPerCluster()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t FsVolume::sectorsPerCluster () const
            -
            -inlineinherited
            -
            -
            Returns
            The volume's cluster size in sectors.
            - -
            -
            - -

            ◆ vol()

            - -
            -
            - - - - - -
            - - - - - - - -
            FsVolume * SdBase< FsVolume >::vol ()
            -
            -inlineinherited
            -
            -
            Returns
            pointer to base volume
            - -
            -
            - -

            ◆ volumeBegin()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdBase< FsVolume >::volumeBegin ()
            -
            -inlineinherited
            -
            -

            Initialize file system after call to cardBegin.

            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdFat.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_fs__coll__graph.png deleted file mode 100644 index 94b7508d88d87c8532033af05d82534f67c34b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2089 zcmbtVdo&Y#ANPt{yfkViEbT#ro`<=RH#AnIg#nx@b&kww6mF)68u)g1<$g@5u`la4;-5Zv=*j-T~4t)srde-0w*hjT1Y9sG(hUu0wLB=!!-7BG=Q;sFikh0;g9s|oADjYl-t8H!h<}<2BGE!P!19 z)Zi1BN)DmLA0FjMvA7|^4-Np$qW&oVJh~YgwTbSTnYmT-+6!a@XP+YA!MZi;*Am%z zqO8*j8X4-+ykAg7dRw_JXt8_53I~WC6inUa1F`bhv8xCR;3`_er z?JED8qyPMmKU(N?N^p_}s6zUqXZi~142I4^tX-p)q0XXNP5X=WwbZi6H|w8owI>z= zbGd{AgA`-QXHk=+M*f%iZ>{-ddw(|^EgSZvdkqwU(F=G);&_{vBr(h{^l_Nyb6QlX zK`e+~p&Y@y(z{@j=T)Ph;L@$_ef;B**G>m;pn$M=@hljzncQ)a8e`ibZec?HDq_1f zp}5AH>9B6!t6P}M4J3=Xp-}hukD~rLDn&dCMW!B;IMtQ-F8h0V@$zC}ZF5x775-HW zb)d!Ew`&!)#(&G_w@SkjTFIxHnA48zsf_;8a&iiHYFCu%<7x=U0fOv3(8Pyj!bhC~ zSXW4As`HS<55(-ORer?)8OD4xK`v9I{$<3k=l4^awi2)skI6bon=~Q|#dH|QZ;Lf94#_TZDI#zW;-Bc&6@?o$FyTWZ=!OSLoT|!n6?)oLT!173 zu$tc*37u^_&e3kEW^bc?7OS>^wdJO8Bm7k0Y{^9jK&eT?Qf4uV^aY#SO=69-TVFtY z)xj$X1fxkXxtC|(3DOTY?}xKrg+yWP<~9;LRp>RHB$6lCqV9}l2jqkIMz*_ z;5xPF3x!ZKj0*T4KW-P;n&FTg>F%`v=e$TEWYD|Dwj|Ic8PPlhQ$6mC(J3C-i%6;|8RsVjs@e4%&YH7_{vq_H+f#J0bRC zq}hBG31i=%vt9p|`<=RH#AnIg#nx@b&kww6mF)68u)g1<$g@5u`la4;-5Zv=*j-T~4t)srde-0w*hjT1Y9sG(hUu0wLB=!!-7BG=Q;sFikh0;g9s|oADjYl-t8H!h<}<2BGE!P!19 z)Zi1BN)DmLA0FjMvA7|^4-Np$qW&oVJh~YgwTbSTnYmT-+6!a@XP+YA!MZi;*Am%z zqO8*j8X4-+ykAg7dRw_JXt8_53I~WC6inUa1F`bhv8xCR;3`_er z?JED8qyPMmKU(N?N^p_}s6zUqXZi~142I4^tX-p)q0XXNP5X=WwbZi6H|w8owI>z= zbGd{AgA`-QXHk=+M*f%iZ>{-ddw(|^EgSZvdkqwU(F=G);&_{vBr(h{^l_Nyb6QlX zK`e+~p&Y@y(z{@j=T)Ph;L@$_ef;B**G>m;pn$M=@hljzncQ)a8e`ibZec?HDq_1f zp}5AH>9B6!t6P}M4J3=Xp-}hukD~rLDn&dCMW!B;IMtQ-F8h0V@$zC}ZF5x775-HW zb)d!Ew`&!)#(&G_w@SkjTFIxHnA48zsf_;8a&iiHYFCu%<7x=U0fOv3(8Pyj!bhC~ zSXW4As`HS<55(-ORer?)8OD4xK`v9I{$<3k=l4^awi2)skI6bon=~Q|#dH|QZ;Lf94#_TZDI#zW;-Bc&6@?o$FyTWZ=!OSLoT|!n6?)oLT!173 zu$tc*37u^_&e3kEW^bc?7OS>^wdJO8Bm7k0Y{^9jK&eT?Qf4uV^aY#SO=69-TVFtY z)xj$X1fxkXxtC|(3DOTY?}xKrg+yWP<~9;LRp>RHB$6lCqV9}l2jqkIMz*_ z;5xPF3x!ZKj0*T4KW-P;n&FTg>F%`v=e$TEWYD|Dwj|Ic8PPlhQ$6mC(J3C-i%6;|8RsVjs@e4%&YH7_{vq_H+f#J0bRC zq}hBG31i=%vt9p| - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdSpiArduinoDriver Member List
            -
            -
            - -

            This is the complete list of members for SdSpiArduinoDriver, including all inherited members.

            - - - - - - - - - - -
            activate()SdSpiArduinoDriverinline
            begin(SdSpiConfig spiConfig)SdSpiArduinoDriverinline
            deactivate()SdSpiArduinoDriverinline
            end()SdSpiArduinoDriver
            receive()SdSpiArduinoDriverinline
            receive(uint8_t *buf, size_t count)SdSpiArduinoDriverinline
            send(uint8_t data)SdSpiArduinoDriverinline
            send(const uint8_t *buf, size_t count)SdSpiArduinoDriverinline
            setSckSpeed(uint32_t maxSck)SdSpiArduinoDriverinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_arduino_driver.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_arduino_driver.html deleted file mode 100644 index bb293951..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_arduino_driver.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - -SdFat: SdSpiArduinoDriver Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdSpiArduinoDriver Class Reference
            -
            -
            - -

            Optimized SPI class for access to SD and SDHC flash memory cards. - More...

            - -

            #include <SdSpiArduinoDriver.h>

            - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            void activate ()
             
            void begin (SdSpiConfig spiConfig)
             
            void deactivate ()
             
            void end ()
             
            uint8_t receive ()
             
            uint8_t receive (uint8_t *buf, size_t count)
             
            void send (const uint8_t *buf, size_t count)
             
            void send (uint8_t data)
             
            void setSckSpeed (uint32_t maxSck)
             
            -

            Detailed Description

            -

            Optimized SPI class for access to SD and SDHC flash memory cards.

            -

            Member Function Documentation

            - -

            ◆ activate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdSpiArduinoDriver::activate ()
            -
            -inline
            -
            -

            Activate SPI hardware.

            - -
            -
            - -

            ◆ begin()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiArduinoDriver::begin (SdSpiConfig spiConfig)
            -
            -inline
            -
            -

            Initialize the SPI bus.

            -
            Parameters
            - - -
            [in]spiConfigSD card configuration.
            -
            -
            - -
            -
            - -

            ◆ deactivate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdSpiArduinoDriver::deactivate ()
            -
            -inline
            -
            -

            Deactivate SPI hardware.

            - -
            -
            - -

            ◆ end()

            - -
            -
            - - - - - - - -
            void SdSpiArduinoDriver::end ()
            -
            -

            End use of SPI driver after begin() call.

            - -
            -
            - -

            ◆ receive() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdSpiArduinoDriver::receive ()
            -
            -inline
            -
            -

            Receive a byte.

            -
            Returns
            The byte.
            - -
            -
            - -

            ◆ receive() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            uint8_t SdSpiArduinoDriver::receive (uint8_t * buf,
            size_t count 
            )
            -
            -inline
            -
            -

            Receive multiple bytes.

            -
            Parameters
            - - - -
            [out]bufBuffer to receive the data.
            [in]countNumber of bytes to receive.
            -
            -
            -
            Returns
            Zero for no error or nonzero error code.
            - -
            -
            - -

            ◆ send() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdSpiArduinoDriver::send (const uint8_t * buf,
            size_t count 
            )
            -
            -inline
            -
            -

            Send multiple bytes.

            -
            Parameters
            - - - -
            [in]bufBuffer for data to be sent.
            [in]countNumber of bytes to send.
            -
            -
            - -
            -
            - -

            ◆ send() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiArduinoDriver::send (uint8_t data)
            -
            -inline
            -
            -

            Send a byte.

            -
            Parameters
            - - -
            [in]dataByte to send
            -
            -
            - -
            -
            - -

            ◆ setSckSpeed()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiArduinoDriver::setSckSpeed (uint32_t maxSck)
            -
            -inline
            -
            -

            Save high speed SPISettings after SD initialization.

            -
            Parameters
            - - -
            [in]maxSckMaximum SCK frequency.
            -
            -
            - -
            -
            -
            The documentation for this class was generated from the following files: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class-members.html deleted file mode 100644 index 122f8cc4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdSpiBaseClass Member List
            -
            -
            - -

            This is the complete list of members for SdSpiBaseClass, including all inherited members.

            - - - - - - - - - -
            activate()SdSpiBaseClassinlinevirtual
            begin(SdSpiConfig config)=0SdSpiBaseClasspure virtual
            deactivate()SdSpiBaseClassinlinevirtual
            receive()=0SdSpiBaseClasspure virtual
            receive(uint8_t *buf, size_t count)=0SdSpiBaseClasspure virtual
            send(uint8_t data)=0SdSpiBaseClasspure virtual
            send(const uint8_t *buf, size_t count)=0SdSpiBaseClasspure virtual
            setSckSpeed(uint32_t maxSck)SdSpiBaseClassinlinevirtual
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class.html deleted file mode 100644 index 04d191f0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_base_class.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -SdFat: SdSpiBaseClass Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdSpiBaseClass Class Referenceabstract
            -
            -
            - -

            Base class for external SPI drivers. - More...

            - -

            #include <SdSpiBaseClass.h>

            - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            virtual void activate ()
             
            virtual void begin (SdSpiConfig config)=0
             
            virtual void deactivate ()
             
            virtual uint8_t receive ()=0
             
            virtual uint8_t receive (uint8_t *buf, size_t count)=0
             
            virtual void send (const uint8_t *buf, size_t count)=0
             
            virtual void send (uint8_t data)=0
             
            virtual void setSckSpeed (uint32_t maxSck)
             
            -

            Detailed Description

            -

            Base class for external SPI drivers.

            -

            Member Function Documentation

            - -

            ◆ activate()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual void SdSpiBaseClass::activate ()
            -
            -inlinevirtual
            -
            -

            Activate SPI hardware.

            - -
            -
            - -

            ◆ begin()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual void SdSpiBaseClass::begin (SdSpiConfig config)
            -
            -pure virtual
            -
            -

            Initialize the SPI bus.

            -
            Parameters
            - - -
            [in]configSPI configuration.
            -
            -
            - -
            -
            - -

            ◆ deactivate()

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual void SdSpiBaseClass::deactivate ()
            -
            -inlinevirtual
            -
            -

            Deactivate SPI hardware.

            - -
            -
            - -

            ◆ receive() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint8_t SdSpiBaseClass::receive ()
            -
            -pure virtual
            -
            -

            Receive a byte.

            -
            Returns
            The byte.
            - -
            -
            - -

            ◆ receive() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual uint8_t SdSpiBaseClass::receive (uint8_t * buf,
            size_t count 
            )
            -
            -pure virtual
            -
            -

            Receive multiple bytes.

            -
            Parameters
            - - - -
            [out]bufBuffer to receive the data.
            [in]countNumber of bytes to receive.
            -
            -
            -
            Returns
            Zero for no error or nonzero error code.
            - -
            -
            - -

            ◆ send() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            virtual void SdSpiBaseClass::send (const uint8_t * buf,
            size_t count 
            )
            -
            -pure virtual
            -
            -

            Send multiple bytes.

            -
            Parameters
            - - - -
            [in]bufBuffer for data to be sent.
            [in]countNumber of bytes to send.
            -
            -
            - -
            -
            - -

            ◆ send() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual void SdSpiBaseClass::send (uint8_t data)
            -
            -pure virtual
            -
            -

            Send a byte.

            -
            Parameters
            - - -
            [in]dataByte to send
            -
            -
            - -
            -
            - -

            ◆ setSckSpeed()

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual void SdSpiBaseClass::setSckSpeed (uint32_t maxSck)
            -
            -inlinevirtual
            -
            -

            Save high speed SPISettings after SD initialization.

            -
            Parameters
            - - -
            [in]maxSckMaximum SCK frequency.
            -
            -
            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card-members.html deleted file mode 100644 index 2ca2e85a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdSpiCard Member List
            -
            -
            - -

            This is the complete list of members for SdSpiCard, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(SdSpiConfig spiConfig)SdSpiCard
            dbgClearStats()SdSpiCard
            dbgPrintStats()SdSpiCard
            erase(uint32_t firstSector, uint32_t lastSector)SdSpiCard
            eraseSingleSectorEnable()SdSpiCard
            error(uint8_t code)SdSpiCardinline
            errorCode() constSdSpiCardinline
            errorData() constSdSpiCardinline
            isBusy()SdSpiCard
            readCID(cid_t *cid)SdSpiCardinline
            readCSD(csd_t *csd)SdSpiCardinline
            readData(uint8_t *dst)SdSpiCard
            readOCR(uint32_t *ocr)SdSpiCard
            readSector(uint32_t sector, uint8_t *dst)SdSpiCardinline
            readSectors(uint32_t sector, uint8_t *dst, size_t ns)SdSpiCard
            readSingle(uint32_t sector, uint8_t *dst)SdSpiCard
            readStart(uint32_t sector)SdSpiCard
            readStatus(uint8_t *status)SdSpiCard
            readStop()SdSpiCard
            SdSpiCard()SdSpiCardinline
            sectorCount()SdSpiCard
            spiStart()SdSpiCard
            spiStop()SdSpiCard
            syncDevice()SdSpiCard
            type() constSdSpiCardinline
            writeData(const uint8_t *src)SdSpiCard
            writeSector(uint32_t sector, const uint8_t *src)SdSpiCardinline
            writeSectors(uint32_t sector, const uint8_t *src, size_t ns)SdSpiCard
            writeSingle(uint32_t sector, const uint8_t *src)SdSpiCard
            writeStart(uint32_t sector)SdSpiCard
            writeStart(uint32_t sector, uint32_t eraseCount)SdSpiCard
            writeStop()SdSpiCard
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card.html deleted file mode 100644 index f3701886..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_card.html +++ /dev/null @@ -1,1058 +0,0 @@ - - - - - - - -SdFat: SdSpiCard Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdSpiCard Class Reference
            -
            -
            - -

            Raw access to SD and SDHC flash memory cards via SPI protocol. - More...

            - -

            #include <SdSpiCard.h>

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (SdSpiConfig spiConfig)
             
            void dbgClearStats ()
             
            void dbgPrintStats ()
             
            bool erase (uint32_t firstSector, uint32_t lastSector)
             
            bool eraseSingleSectorEnable ()
             
            void error (uint8_t code)
             
            uint8_t errorCode () const
             
            uint32_t errorData () const
             
            bool isBusy ()
             
            bool readCID (cid_t *cid)
             
            bool readCSD (csd_t *csd)
             
            bool readData (uint8_t *dst)
             
            bool readOCR (uint32_t *ocr)
             
            bool readSector (uint32_t sector, uint8_t *dst)
             
            bool readSectors (uint32_t sector, uint8_t *dst, size_t ns)
             
            bool readSingle (uint32_t sector, uint8_t *dst)
             
            bool readStart (uint32_t sector)
             
            bool readStatus (uint8_t *status)
             
            bool readStop ()
             
             SdSpiCard ()
             
            uint32_t sectorCount ()
             
            void spiStart ()
             
            void spiStop ()
             
            bool syncDevice ()
             
            uint8_t type () const
             
            bool writeData (const uint8_t *src)
             
            bool writeSector (uint32_t sector, const uint8_t *src)
             
            bool writeSectors (uint32_t sector, const uint8_t *src, size_t ns)
             
            bool writeSingle (uint32_t sector, const uint8_t *src)
             
            bool writeStart (uint32_t sector)
             
            bool writeStart (uint32_t sector, uint32_t eraseCount)
             
            bool writeStop ()
             
            -

            Detailed Description

            -

            Raw access to SD and SDHC flash memory cards via SPI protocol.

            -

            Constructor & Destructor Documentation

            - -

            ◆ SdSpiCard()

            - -
            -
            - - - - - -
            - - - - - - - -
            SdSpiCard::SdSpiCard ()
            -
            -inline
            -
            -

            Construct an instance of SdSpiCard.

            - -
            -
            -

            Member Function Documentation

            - -

            ◆ begin()

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::begin (SdSpiConfig spiConfig)
            -
            -

            Initialize the SD card.

            Parameters
            - - -
            [in]spiConfigSPI card configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ dbgClearStats()

            - -
            -
            - - - - - - - -
            void SdSpiCard::dbgClearStats ()
            -
            -

            Clear debug stats.

            - -
            -
            - -

            ◆ dbgPrintStats()

            - -
            -
            - - - - - - - -
            void SdSpiCard::dbgPrintStats ()
            -
            -

            Print debug stats.

            - -
            -
            - -

            ◆ erase()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::erase (uint32_t firstSector,
            uint32_t lastSector 
            )
            -
            -

            Erase a range of sectors.

            -
            Parameters
            - - - -
            [in]firstSectorThe address of the first sector in the range.
            [in]lastSectorThe address of the last sector in the range.
            -
            -
            -
            Note
            This function requests the SD card to do a flash erase for a range of sectors. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single sector erase.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ eraseSingleSectorEnable()

            - -
            -
            - - - - - - - -
            bool SdSpiCard::eraseSingleSectorEnable ()
            -
            -

            Determine if card supports single sector erase.

            -
            Returns
            true is returned if single sector erase is supported. false is returned if single sector erase is not supported.
            - -
            -
            - -

            ◆ error()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiCard::error (uint8_t code)
            -
            -inline
            -
            -

            Set SD error code.

            Parameters
            - - -
            [in]codevalue for error code.
            -
            -
            - -
            -
            - -

            ◆ errorCode()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdSpiCard::errorCode () const
            -
            -inline
            -
            -
            Returns
            code for the last error. See SdCardInfo.h for a list of error codes.
            - -
            -
            - -

            ◆ errorData()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t SdSpiCard::errorData () const
            -
            -inline
            -
            -
            Returns
            error data for last error.
            - -
            -
            - -

            ◆ isBusy()

            - -
            -
            - - - - - - - -
            bool SdSpiCard::isBusy ()
            -
            -

            Check for busy. MISO low indicates the card is busy.

            -
            Returns
            true if busy else false.
            - -
            -
            - -

            ◆ readCID()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdSpiCard::readCID (cid_tcid)
            -
            -inline
            -
            -

            Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

            -
            Parameters
            - - -
            [out]cidpointer to area for returned data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readCSD()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdSpiCard::readCSD (csd_t * csd)
            -
            -inline
            -
            -

            Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

            -
            Parameters
            - - -
            [out]csdpointer to area for returned data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readData()

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::readData (uint8_t * dst)
            -
            -

            Read one data sector in a multiple sector read sequence

            -
            Parameters
            - - -
            [out]dstPointer to the location for the data to be read.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readOCR()

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::readOCR (uint32_t * ocr)
            -
            -

            Read OCR register.

            -
            Parameters
            - - -
            [out]ocrValue of OCR register.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::readSector (uint32_t sector,
            uint8_t * dst 
            )
            -
            -inline
            -
            -

            Read a 512 byte sector from an SD card.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readSectors()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::readSectors (uint32_t sector,
            uint8_t * dst,
            size_t ns 
            )
            -
            -

            Read multiple 512 byte sectors from an SD card.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be read.
            [in]nsNumber of sectors to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readSingle()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::readSingle (uint32_t sector,
            uint8_t * dst 
            )
            -
            -

            Read a 512 byte sector from an SD card.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readStart()

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::readStart (uint32_t sector)
            -
            -

            Start a read multiple sector sequence.

            -
            Parameters
            - - -
            [in]sectorAddress of first sector in sequence.
            -
            -
            -
            Note
            This function is used with readData() and readStop() for optimized multiple sector reads. SPI chipSelect must be low for the entire sequence.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readStatus()

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::readStatus (uint8_t * status)
            -
            -

            Return the 64 byte card status

            Parameters
            - - -
            [out]statuslocation for 64 status bytes.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readStop()

            - -
            -
            - - - - - - - -
            bool SdSpiCard::readStop ()
            -
            -

            End a read multiple sectors sequence.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sectorCount()

            - -
            -
            - - - - - - - -
            uint32_t SdSpiCard::sectorCount ()
            -
            -

            Determine the size of an SD flash memory card.

            -
            Returns
            The number of 512 byte data sectors in the card or zero if an error occurs.
            - -
            -
            - -

            ◆ spiStart()

            - -
            -
            - - - - - - - -
            void SdSpiCard::spiStart ()
            -
            -

            Set CS low and activate the card.

            - -
            -
            - -

            ◆ spiStop()

            - -
            -
            - - - - - - - -
            void SdSpiCard::spiStop ()
            -
            -

            Set CS high and deactivate the card.

            - -
            -
            - -

            ◆ syncDevice()

            - -
            -
            - - - - - - - -
            bool SdSpiCard::syncDevice ()
            -
            -
            Returns
            success if sync successful. Not for user apps.
            - -
            -
            - -

            ◆ type()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdSpiCard::type () const
            -
            -inline
            -
            -

            Return the card type: SD V1, SD V2 or SDHC/SDXC

            Returns
            0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC.
            - -
            -
            - -

            ◆ writeData()

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::writeData (const uint8_t * src)
            -
            -

            Write one data sector in a multiple sector write sequence.

            Parameters
            - - -
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::writeSector (uint32_t sector,
            const uint8_t * src 
            )
            -
            -inline
            -
            -

            Writes a 512 byte sector to an SD card.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeSectors()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::writeSectors (uint32_t sector,
            const uint8_t * src,
            size_t ns 
            )
            -
            -

            Write multiple 512 byte sectors to an SD card.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be written.
            [in]nsNumber of sectors to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeSingle()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::writeSingle (uint32_t sector,
            const uint8_t * src 
            )
            -
            -

            Writes a 512 byte sector to an SD card.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeStart() [1/2]

            - -
            -
            - - - - - - - - -
            bool SdSpiCard::writeStart (uint32_t sector)
            -
            -

            Start a write multiple sectors sequence.

            -
            Parameters
            - - -
            [in]sectorAddress of first sector in sequence.
            -
            -
            -
            Note
            This function is used with writeData() and writeStop() for optimized multiple sector writes.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeStart() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool SdSpiCard::writeStart (uint32_t sector,
            uint32_t eraseCount 
            )
            -
            -

            Start a write multiple sector sequence with pre-erase.

            -
            Parameters
            - - - -
            [in]sectorAddress of first sector in sequence.
            [in]eraseCountThe number of sectors to be pre-erased.
            -
            -
            -
            Note
            This function is used with writeData() and writeStop() for optimized multiple sector writes.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeStop()

            - -
            -
            - - - - - - - -
            bool SdSpiCard::writeStop ()
            -
            -

            End a write multiple sectors sequence.

            -
            Returns
            true for success or false for failure.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h
            • -
            • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config-members.html deleted file mode 100644 index 966ca412..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdSpiConfig Member List
            -
            -
            - -

            This is the complete list of members for SdSpiConfig, including all inherited members.

            - - - - - - - - - -
            csPinSdSpiConfig
            maxSckSdSpiConfig
            optionsSdSpiConfig
            SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t *port)SdSpiConfiginline
            SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed)SdSpiConfiginline
            SdSpiConfig(SdCsPin_t cs, uint8_t opt)SdSpiConfiginline
            SdSpiConfig(SdCsPin_t cs)SdSpiConfiginlineexplicit
            spiPortSdSpiConfig
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config.html deleted file mode 100644 index cfa53519..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_config.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - -SdFat: SdSpiConfig Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdSpiConfig Class Reference
            -
            -
            - -

            SPI card configuration. - More...

            - -

            #include <SdSpiDriver.h>

            - - - - - - - - - - -

            -Public Member Functions

             SdSpiConfig (SdCsPin_t cs)
             
             SdSpiConfig (SdCsPin_t cs, uint8_t opt)
             
             SdSpiConfig (SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed)
             
             SdSpiConfig (SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t *port)
             
            - - - - - - - - - -

            -Public Attributes

            const SdCsPin_t csPin
             
            const uint32_t maxSck
             
            const uint8_t options
             
            SpiPort_tspiPort
             
            -

            Detailed Description

            -

            SPI card configuration.

            -

            Constructor & Destructor Documentation

            - -

            ◆ SdSpiConfig() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            SdSpiConfig::SdSpiConfig (SdCsPin_t cs,
            uint8_t opt,
            uint32_t maxSpeed,
            SpiPort_tport 
            )
            -
            -inline
            -
            -

            SdSpiConfig constructor.

            -
            Parameters
            - - - - - -
            [in]csChip select pin.
            [in]optOptions.
            [in]maxSpeedMaximum SCK frequency.
            [in]portThe SPI port to use.
            -
            -
            - -
            -
            - -

            ◆ SdSpiConfig() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            SdSpiConfig::SdSpiConfig (SdCsPin_t cs,
            uint8_t opt,
            uint32_t maxSpeed 
            )
            -
            -inline
            -
            -

            SdSpiConfig constructor.

            -
            Parameters
            - - - - -
            [in]csChip select pin.
            [in]optOptions.
            [in]maxSpeedMaximum SCK frequency.
            -
            -
            - -
            -
            - -

            ◆ SdSpiConfig() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            SdSpiConfig::SdSpiConfig (SdCsPin_t cs,
            uint8_t opt 
            )
            -
            -inline
            -
            -

            SdSpiConfig constructor.

            -
            Parameters
            - - - -
            [in]csChip select pin.
            [in]optOptions.
            -
            -
            - -
            -
            - -

            ◆ SdSpiConfig() [4/4]

            - -
            -
            - - - - - -
            - - - - - - - - -
            SdSpiConfig::SdSpiConfig (SdCsPin_t cs)
            -
            -inlineexplicit
            -
            -

            SdSpiConfig constructor.

            -
            Parameters
            - - -
            [in]csChip select pin.
            -
            -
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ csPin

            - -
            -
            - - - - -
            const SdCsPin_t SdSpiConfig::csPin
            -
            -

            Chip select pin.

            - -
            -
            - -

            ◆ maxSck

            - -
            -
            - - - - -
            const uint32_t SdSpiConfig::maxSck
            -
            -

            Max SCK frequency

            - -
            -
            - -

            ◆ options

            - -
            -
            - - - - -
            const uint8_t SdSpiConfig::options
            -
            -

            Options

            - -
            -
            - -

            ◆ spiPort

            - -
            -
            - - - - -
            SpiPort_t* SdSpiConfig::spiPort
            -
            -

            SPI port

            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver-members.html deleted file mode 100644 index af8871b8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdSpiSoftDriver Member List
            -
            -
            - -

            This is the complete list of members for SdSpiSoftDriver, including all inherited members.

            - - - - - - - - - - -
            activate()SdSpiSoftDriverinline
            begin()=0SdSpiSoftDriverpure virtual
            begin(SdSpiConfig spiConfig)SdSpiSoftDriverinline
            deactivate()SdSpiSoftDriverinline
            receive()=0SdSpiSoftDriverpure virtual
            receive(uint8_t *buf, size_t count)SdSpiSoftDriverinline
            send(uint8_t data)=0SdSpiSoftDriverpure virtual
            send(const uint8_t *buf, size_t count)SdSpiSoftDriverinline
            setSckSpeed(uint32_t maxSck)SdSpiSoftDriverinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver.html deleted file mode 100644 index 736a6a98..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - - -SdFat: SdSpiSoftDriver Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdSpiSoftDriver Class Referenceabstract
            -
            -
            - -

            Base class for external soft SPI. - More...

            - -

            #include <SdSpiSoftDriver.h>

            -
            -Inheritance diagram for SdSpiSoftDriver:
            -
            -
            Inheritance graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            void activate ()
             
            virtual void begin ()=0
             
            void begin (SdSpiConfig spiConfig)
             
            void deactivate ()
             
            virtual uint8_t receive ()=0
             
            uint8_t receive (uint8_t *buf, size_t count)
             
            void send (const uint8_t *buf, size_t count)
             
            virtual void send (uint8_t data)=0
             
            void setSckSpeed (uint32_t maxSck)
             
            -

            Detailed Description

            -

            Base class for external soft SPI.

            -

            Member Function Documentation

            - -

            ◆ activate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdSpiSoftDriver::activate ()
            -
            -inline
            -
            -

            Activate SPI hardware.

            - -
            -
            - -

            ◆ begin() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual void SdSpiSoftDriver::begin ()
            -
            -pure virtual
            -
            -

            Initialize the SPI bus.

            - -

            Implemented in SoftSpiDriver< MisoPin, MosiPin, SckPin >.

            - -
            -
            - -

            ◆ begin() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiSoftDriver::begin (SdSpiConfig spiConfig)
            -
            -inline
            -
            -

            Initialize the SPI bus.

            -
            Parameters
            - - -
            [in]spiConfigSD card configuration.
            -
            -
            - -
            -
            - -

            ◆ deactivate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdSpiSoftDriver::deactivate ()
            -
            -inline
            -
            -

            Deactivate SPI hardware.

            - -
            -
            - -

            ◆ receive() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            virtual uint8_t SdSpiSoftDriver::receive ()
            -
            -pure virtual
            -
            -

            Receive a byte.

            -
            Returns
            The byte.
            - -

            Implemented in SoftSpiDriver< MisoPin, MosiPin, SckPin >.

            - -
            -
            - -

            ◆ receive() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            uint8_t SdSpiSoftDriver::receive (uint8_t * buf,
            size_t count 
            )
            -
            -inline
            -
            -

            Receive multiple bytes.

            -
            Parameters
            - - - -
            [out]bufBuffer to receive the data.
            [in]countNumber of bytes to receive.
            -
            -
            -
            Returns
            Zero for no error or nonzero error code.
            - -
            -
            - -

            ◆ send() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdSpiSoftDriver::send (const uint8_t * buf,
            size_t count 
            )
            -
            -inline
            -
            -

            Send multiple bytes.

            -
            Parameters
            - - - -
            [in]bufBuffer for data to be sent.
            [in]countNumber of bytes to send.
            -
            -
            - -
            -
            - -

            ◆ send() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            virtual void SdSpiSoftDriver::send (uint8_t data)
            -
            -pure virtual
            -
            -

            Send a byte.

            -
            Parameters
            - - -
            [in]dataByte to send
            -
            -
            - -

            Implemented in SoftSpiDriver< MisoPin, MosiPin, SckPin >.

            - -
            -
            - -

            ◆ setSckSpeed()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiSoftDriver::setSckSpeed (uint32_t maxSck)
            -
            -inline
            -
            -

            Save high speed SPISettings after SD initialization.

            -
            Parameters
            - - -
            [in]maxSckMaximum SCK frequency.
            -
            -
            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sd_spi_soft_driver__inherit__graph.png deleted file mode 100644 index 216a5b942588ec135be457ce9a08e5e7f28c62c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1786 zcmcIldo4Sba}bc;bO^@l7aOC>KWmiaFB5 zra2j0M_FVFC()=+wJ>}23`O>u95m{5WgDpV(dhyL;3`8CnJrvPoUS@&Wwo zSLMyAQdFF!032ougq;t1Qa)qxMaIH|_`pP?{&N+~dukf6w1X&BxbaY{VM8aScz=VZ zH0GnX`<}5|3{Jp^I-sqsEwvIj=ds^$(7ML6+?Mf)mqYk_gM&VXMn*-Hl6?Y5xL@u3 zXSz~NS6nwbPj?y5#hiByEMqu2I5c06Yzc@fimp)d*w6jyJH80JO&V;fF$v^GLEnwL za1>sD?^zM~iQyC0Z6hv~pe`Y$sJH57n(*svKQ2HJSEHj~6QNzA&{CVeRsg|JqYP8) z$$;c0iJYL(%}R_tJ-5GU+AF>$x<2^$jNCJ}lP?)@Gj>vpGxS3qnMqx>MzKPml)699 zT0uJ3D=yZ%apC;*Hz&J`FmA8`ILDMg+3^L4r_y8Iu+|;JXT9!>d64Iq=(U7sGN#=< z7DhhC&sL`{6c;|_>ha$e^@p!sk7BfHJvtL^~=F8X?XAxyq z*8g(p{uQXDyYUF#+;}znm1n7_e`NLTs%b0j;gQ+2%FaWHbdm zS&KY-q~M_->FLJ%#*OXXPcmC=VU`2#FG4MB_Q-TVuMBoA8#{u=t81L|+#c4hGOJ?1 zAY5?usoH#JRU0LTO70TnWeFxey2B zWhKIsy2~jTC*Y9I56UJzT=LStOHo*qRyBH3copovj)X^PK0c`?I@jvfxB0|~VC16; zzoE^*z})ZET@A9&5^?OY{yCC!vNq#nUw?|7OCET6XpNp@${V_rsIQm^sY^J=_8$Dk zMCVJVT{*OBDe|&@)#?~sr{lf4a~`;|ad8J7#~Zpslm&z1;aTgQZN(QqpNnqfCv`G> zlhuE~Qp|#Vhgt~fcT-=?i0O3>!3nt<|Iy>m`BaJUr#%1vRNp)vMESZ4C_OVZ)Yg_I zP0CK#G5`a+4}y}h)2yOcE=!!7Y`yT~{f#}(vZnvRw~1S~Dz{0ya%(E?ZYB(k*8;T!>ap2D)NnWakF0X#BFsh&PLuQV-kml(ziEBU3+ z2+0ZZqH@g2{8b5G9>rZZ&3a#&}#wRmx+oo32X)B+R z-*m$OlC0;-wsP5~XYbqA55Jk{OFz6qsM}S=c*C_^aYWs(u9auHW4ESpn;wmqWLe&T zcQ)dB*jD#*>GeA5xRGMz(5F~#N+QsY4}fo237Dw*=FOjOLPhs+%@)g$`r%_9T>hAo zf;Oei=8WO{rpTdNqk{VZ^E0gp!B^?7V(Z(Q+?UTkc!;-7{a zV4nM-a0-yy7kJdMp2@K5X6!5Z82QGUnj^2bdovzp)65F<-wkr*oXiKXkE#4c6pc3Q4ylQrCQ#D7 z7bDqM^h2gQetKLr>aML!3rID|>9Ta=)}j8o+yAo{fM~n(4APu&8p}7HDpik^CrUtX s_C76~fTH*-`%{p(b1r}VkME>GOA{APAWDMas%HlBaJ_`#qrOc29fs*(2LJ#7 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card-members.html deleted file mode 100644 index e468df61..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdioCard Member List
            -
            -
            - -

            This is the complete list of members for SdioCard, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            begin(SdioConfig sdioConfig)SdioCard
            end()SdioCardinline
            erase(uint32_t firstSector, uint32_t lastSector)SdioCardvirtual
            errorCode() constSdioCardvirtual
            errorData() constSdioCardvirtual
            errorLine() constSdioCard
            isBusy()SdioCardvirtual
            kHzSdClk()SdioCard
            readCID(cid_t *cid)SdioCardvirtual
            readCSD(csd_t *csd)SdioCardvirtual
            readData(uint8_t *dst)SdioCard
            readOCR(uint32_t *ocr)SdioCardvirtual
            readSector(uint32_t sector, uint8_t *dst)SdioCardvirtual
            readSectors(uint32_t sector, uint8_t *dst, size_t ns)SdioCardvirtual
            readStart(uint32_t sector)SdioCard
            readStart(uint32_t sector, uint32_t count)SdioCard
            readStop()SdioCard
            sectorCount()SdioCardvirtual
            status()SdioCardvirtual
            syncDevice()SdioCardvirtual
            type() constSdioCardvirtual
            writeData(const uint8_t *src)SdioCardvirtual
            writeSector(uint32_t sector, const uint8_t *src)SdioCardvirtual
            writeSectors(uint32_t sector, const uint8_t *src, size_t ns)SdioCardvirtual
            writeStart(uint32_t sector)SdioCardvirtual
            writeStart(uint32_t sector, uint32_t count)SdioCard
            writeStop()SdioCardvirtual
            ~BlockDeviceInterface() (defined in BlockDeviceInterface)BlockDeviceInterfaceinlinevirtual
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card.html deleted file mode 100644 index 5fc1fb88..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card.html +++ /dev/null @@ -1,1060 +0,0 @@ - - - - - - - -SdFat: SdioCard Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdioCard Class Reference
            -
            -
            - -

            Raw SDIO access to SD and SDHC flash memory cards. - More...

            - -

            #include <SdioCard.h>

            -
            -Inheritance diagram for SdioCard:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            -
            -Collaboration diagram for SdioCard:
            -
            -
            Collaboration graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool begin (SdioConfig sdioConfig)
             
            bool end ()
             
            bool erase (uint32_t firstSector, uint32_t lastSector)
             
            uint8_t errorCode () const
             
            uint32_t errorData () const
             
            uint32_t errorLine () const
             
            bool isBusy ()
             
            uint32_t kHzSdClk ()
             
            bool readCID (cid_t *cid)
             
            bool readCSD (csd_t *csd)
             
            bool readData (uint8_t *dst)
             
            bool readOCR (uint32_t *ocr)
             
            bool readSector (uint32_t sector, uint8_t *dst)
             
            bool readSectors (uint32_t sector, uint8_t *dst, size_t ns)
             
            bool readStart (uint32_t sector)
             
            bool readStart (uint32_t sector, uint32_t count)
             
            bool readStop ()
             
            uint32_t sectorCount ()
             
            uint32_t status ()
             
            bool syncDevice ()
             
            uint8_t type () const
             
            bool writeData (const uint8_t *src)
             
            bool writeSector (uint32_t sector, const uint8_t *src)
             
            bool writeSectors (uint32_t sector, const uint8_t *src, size_t ns)
             
            bool writeStart (uint32_t sector)
             
            bool writeStart (uint32_t sector, uint32_t count)
             
            bool writeStop ()
             
            -

            Detailed Description

            -

            Raw SDIO access to SD and SDHC flash memory cards.

            -

            Member Function Documentation

            - -

            ◆ begin()

            - -
            -
            - - - - - - - - -
            bool SdioCard::begin (SdioConfig sdioConfig)
            -
            -

            Initialize the SD card.

            Parameters
            - - -
            [in]sdioConfigSDIO card configuration.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ end()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdioCard::end ()
            -
            -inline
            -
            -

            Disable an SDIO card.

            Returns
            false - not implemented.
            - -
            -
            - -

            ◆ erase()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdioCard::erase (uint32_t firstSector,
            uint32_t lastSector 
            )
            -
            -virtual
            -
            -

            Erase a range of sectors.

            -
            Parameters
            - - - -
            [in]firstSectorThe address of the first sector in the range.
            [in]lastSectorThe address of the last sector in the range.
            -
            -
            -
            Note
            This function requests the SD card to do a flash erase for a range of sectors. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single sector erase.
            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ errorCode()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdioCard::errorCode () const
            -
            -virtual
            -
            -
            Returns
            code for the last error. See SdCardInfo.h for a list of error codes.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ errorData()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t SdioCard::errorData () const
            -
            -virtual
            -
            -
            Returns
            error data for last error.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ errorLine()

            - -
            -
            - - - - - - - -
            uint32_t SdioCard::errorLine () const
            -
            -
            Returns
            error line for last error. Tmp function for debug.
            - -
            -
            - -

            ◆ isBusy()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdioCard::isBusy ()
            -
            -virtual
            -
            -

            Check for busy with CMD13.

            -
            Returns
            true if busy else false.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ kHzSdClk()

            - -
            -
            - - - - - - - -
            uint32_t SdioCard::kHzSdClk ()
            -
            -
            Returns
            the SD clock frequency in kHz.
            - -
            -
            - -

            ◆ readCID()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdioCard::readCID (cid_tcid)
            -
            -virtual
            -
            -

            Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

            -
            Parameters
            - - -
            [out]cidpointer to area for returned data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ readCSD()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdioCard::readCSD (csd_t * csd)
            -
            -virtual
            -
            -

            Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

            -
            Parameters
            - - -
            [out]csdpointer to area for returned data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ readData()

            - -
            -
            - - - - - - - - -
            bool SdioCard::readData (uint8_t * dst)
            -
            -

            Read one data sector in a multiple sector read sequence

            -
            Parameters
            - - -
            [out]dstPointer to the location for the data to be read.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readOCR()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdioCard::readOCR (uint32_t * ocr)
            -
            -virtual
            -
            -

            Read OCR register.

            -
            Parameters
            - - -
            [out]ocrValue of OCR register.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ readSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdioCard::readSector (uint32_t sector,
            uint8_t * dst 
            )
            -
            -virtual
            -
            -

            Read a 512 byte sector from an SD card.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements BlockDeviceInterface.

            - -
            -
            - -

            ◆ readSectors()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool SdioCard::readSectors (uint32_t sector,
            uint8_t * dst,
            size_t ns 
            )
            -
            -virtual
            -
            -

            Read multiple 512 byte sectors from an SD card.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be read.
            [in]nsNumber of sectors to be read.
            [out]dstPointer to the location that will receive the data.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements BlockDeviceInterface.

            - -
            -
            - -

            ◆ readStart() [1/2]

            - -
            -
            - - - - - - - - -
            bool SdioCard::readStart (uint32_t sector)
            -
            -

            Start a read multiple sectors sequence.

            -
            Parameters
            - - -
            [in]sectorAddress of first sector in sequence.
            -
            -
            -
            Note
            This function is used with readData() and readStop() for optimized multiple sector reads. SPI chipSelect must be low for the entire sequence.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readStart() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool SdioCard::readStart (uint32_t sector,
            uint32_t count 
            )
            -
            -

            Start a read multiple sectors sequence.

            -
            Parameters
            - - - -
            [in]sectorAddress of first sector in sequence.
            [in]countMaximum sector count.
            -
            -
            -
            Note
            This function is used with readData() and readStop() for optimized multiple sector reads. SPI chipSelect must be low for the entire sequence.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ readStop()

            - -
            -
            - - - - - - - -
            bool SdioCard::readStop ()
            -
            -

            End a read multiple sectors sequence.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ sectorCount()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t SdioCard::sectorCount ()
            -
            -virtual
            -
            -

            Determine the size of an SD flash memory card.

            -
            Returns
            The number of 512 byte data sectors in the card or zero if an error occurs.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ status()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint32_t SdioCard::status ()
            -
            -virtual
            -
            -
            Returns
            SDIO card status.
            - -

            Reimplemented from SdCardInterface.

            - -
            -
            - -

            ◆ syncDevice()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdioCard::syncDevice ()
            -
            -virtual
            -
            -
            Returns
            success if sync successful. Not for user apps.
            - -

            Implements BlockDeviceInterface.

            - -
            -
            - -

            ◆ type()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdioCard::type () const
            -
            -virtual
            -
            -

            Return the card type: SD V1, SD V2 or SDHC

            Returns
            0 - SD V1, 1 - SD V2, or 3 - SDHC.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ writeData()

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdioCard::writeData (const uint8_t * src)
            -
            -virtual
            -
            -

            Write one data sector in a multiple sector write sequence.

            Parameters
            - - -
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ writeSector()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            bool SdioCard::writeSector (uint32_t sector,
            const uint8_t * src 
            )
            -
            -virtual
            -
            -

            Writes a 512 byte sector to an SD card.

            -
            Parameters
            - - - -
            [in]sectorLogical sector to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements BlockDeviceInterface.

            - -
            -
            - -

            ◆ writeSectors()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            bool SdioCard::writeSectors (uint32_t sector,
            const uint8_t * src,
            size_t ns 
            )
            -
            -virtual
            -
            -

            Write multiple 512 byte sectors to an SD card.

            -
            Parameters
            - - - - -
            [in]sectorLogical sector to be written.
            [in]nsNumber of sectors to be written.
            [in]srcPointer to the location of the data to be written.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -

            Implements BlockDeviceInterface.

            - -
            -
            - -

            ◆ writeStart() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            bool SdioCard::writeStart (uint32_t sector)
            -
            -virtual
            -
            -

            Start a write multiple sectors sequence.

            -
            Parameters
            - - -
            [in]sectorAddress of first sector in sequence.
            -
            -
            -
            Note
            This function is used with writeData() and writeStop() for optimized multiple sector writes.
            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            - -

            ◆ writeStart() [2/2]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool SdioCard::writeStart (uint32_t sector,
            uint32_t count 
            )
            -
            -

            Start a write multiple sectors sequence.

            -
            Parameters
            - - - -
            [in]sectorAddress of first sector in sequence.
            [in]countMaximum sector count.
            -
            -
            -
            Note
            This function is used with writeData() and writeStop() for optimized multiple sector writes.
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ writeStop()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdioCard::writeStop ()
            -
            -virtual
            -
            -

            End a write multiple sectors sequence.

            -
            Returns
            true for success or false for failure.
            - -

            Implements SdCardInterface.

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdCard/SdioCard.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_card__coll__graph.png deleted file mode 100644 index 2777f7b343988bf19fb452f7223315c70285073c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2241 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 - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SdioConfig Member List
            -
            -
            - -

            This is the complete list of members for SdioConfig, including all inherited members.

            - - - - - -
            options()SdioConfiginline
            SdioConfig() (defined in SdioConfig)SdioConfiginline
            SdioConfig(uint8_t opt)SdioConfiginlineexplicit
            useDma()SdioConfiginline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_config.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_config.html deleted file mode 100644 index e5ae18bb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sdio_config.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - -SdFat: SdioConfig Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SdioConfig Class Reference
            -
            -
            - -

            SDIO card configuration. - More...

            - -

            #include <SdioCard.h>

            - - - - - - - - -

            -Public Member Functions

            uint8_t options ()
             
             SdioConfig (uint8_t opt)
             
            bool useDma ()
             
            -

            Detailed Description

            -

            SDIO card configuration.

            -

            Constructor & Destructor Documentation

            - -

            ◆ SdioConfig()

            - -
            -
            - - - - - -
            - - - - - - - - -
            SdioConfig::SdioConfig (uint8_t opt)
            -
            -inlineexplicit
            -
            -

            SdioConfig constructor.

            Parameters
            - - -
            [in]optSDIO options.
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ options()

            - -
            -
            - - - - - -
            - - - - - - - -
            uint8_t SdioConfig::options ()
            -
            -inline
            -
            -
            Returns
            SDIO card options.
            - -
            -
            - -

            ◆ useDma()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool SdioConfig::useDma ()
            -
            -inline
            -
            -
            Returns
            true if DMA_SDIO.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/SdCard/SdioCard.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver-members.html deleted file mode 100644 index 32bebac0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SoftSpiDriver< MisoPin, MosiPin, SckPin > Member List
            -
            -
            - -

            This is the complete list of members for SoftSpiDriver< MisoPin, MosiPin, SckPin >, including all inherited members.

            - - - - - - - - - - -
            activate()SdSpiSoftDriverinline
            begin()SoftSpiDriver< MisoPin, MosiPin, SckPin >inlinevirtual
            SdSpiSoftDriver::begin(SdSpiConfig spiConfig)SdSpiSoftDriverinline
            deactivate()SdSpiSoftDriverinline
            receive()SoftSpiDriver< MisoPin, MosiPin, SckPin >inlinevirtual
            SdSpiSoftDriver::receive(uint8_t *buf, size_t count)SdSpiSoftDriverinline
            send(uint8_t data)SoftSpiDriver< MisoPin, MosiPin, SckPin >inlinevirtual
            SdSpiSoftDriver::send(const uint8_t *buf, size_t count)SdSpiSoftDriverinline
            setSckSpeed(uint32_t maxSck)SdSpiSoftDriverinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver.html deleted file mode 100644 index 571fcd3a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - - - - -SdFat: SoftSpiDriver< MisoPin, MosiPin, SckPin > Class Template Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SoftSpiDriver< MisoPin, MosiPin, SckPin > Class Template Reference
            -
            -
            - -

            Class for external soft SPI. - More...

            - -

            #include <SdSpiSoftDriver.h>

            -
            -Inheritance diagram for SoftSpiDriver< MisoPin, MosiPin, SckPin >:
            -
            -
            Inheritance graph
            - - - - -
            [legend]
            -
            -Collaboration diagram for SoftSpiDriver< MisoPin, MosiPin, SckPin >:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            void activate ()
             
            void begin ()
             
            void begin (SdSpiConfig spiConfig)
             
            void deactivate ()
             
            uint8_t receive ()
             
            uint8_t receive (uint8_t *buf, size_t count)
             
            void send (const uint8_t *buf, size_t count)
             
            void send (uint8_t data)
             
            void setSckSpeed (uint32_t maxSck)
             
            -

            Detailed Description

            -

            template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
            -class SoftSpiDriver< MisoPin, MosiPin, SckPin >

            - -

            Class for external soft SPI.

            -

            Member Function Documentation

            - -

            ◆ activate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdSpiSoftDriver::activate ()
            -
            -inlineinherited
            -
            -

            Activate SPI hardware.

            - -
            -
            - -

            ◆ begin() [1/2]

            - -
            -
            -
            -template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
            - - - - - -
            - - - - - - - -
            void SoftSpiDriver< MisoPin, MosiPin, SckPin >::begin ()
            -
            -inlinevirtual
            -
            -

            Initialize the SPI bus.

            - -

            Implements SdSpiSoftDriver.

            - -
            -
            - -

            ◆ begin() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiSoftDriver::begin (SdSpiConfig spiConfig)
            -
            -inlineinherited
            -
            -

            Initialize the SPI bus.

            -
            Parameters
            - - -
            [in]spiConfigSD card configuration.
            -
            -
            - -
            -
            - -

            ◆ deactivate()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SdSpiSoftDriver::deactivate ()
            -
            -inlineinherited
            -
            -

            Deactivate SPI hardware.

            - -
            -
            - -

            ◆ receive() [1/2]

            - -
            -
            -
            -template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
            - - - - - -
            - - - - - - - -
            uint8_t SoftSpiDriver< MisoPin, MosiPin, SckPin >::receive ()
            -
            -inlinevirtual
            -
            -

            Receive a byte.

            -
            Returns
            The byte.
            - -

            Implements SdSpiSoftDriver.

            - -
            -
            - -

            ◆ receive() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            uint8_t SdSpiSoftDriver::receive (uint8_t * buf,
            size_t count 
            )
            -
            -inlineinherited
            -
            -

            Receive multiple bytes.

            -
            Parameters
            - - - -
            [out]bufBuffer to receive the data.
            [in]countNumber of bytes to receive.
            -
            -
            -
            Returns
            Zero for no error or nonzero error code.
            - -
            -
            - -

            ◆ send() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void SdSpiSoftDriver::send (const uint8_t * buf,
            size_t count 
            )
            -
            -inlineinherited
            -
            -

            Send multiple bytes.

            -
            Parameters
            - - - -
            [in]bufBuffer for data to be sent.
            [in]countNumber of bytes to send.
            -
            -
            - -
            -
            - -

            ◆ send() [2/2]

            - -
            -
            -
            -template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
            - - - - - -
            - - - - - - - - -
            void SoftSpiDriver< MisoPin, MosiPin, SckPin >::send (uint8_t data)
            -
            -inlinevirtual
            -
            -

            Send a byte.

            -
            Parameters
            - - -
            [in]dataByte to send
            -
            -
            - -

            Implements SdSpiSoftDriver.

            - -
            -
            - -

            ◆ setSckSpeed()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void SdSpiSoftDriver::setSckSpeed (uint32_t maxSck)
            -
            -inlineinherited
            -
            -

            Save high speed SPISettings after SD initialization.

            -
            Parameters
            - - -
            [in]maxSckMaximum SCK frequency.
            -
            -
            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver__coll__graph.png deleted file mode 100644 index 56bd8b49f1fcf1a68fd24e6e332e0d6aee4ed073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmchY|34FmAIB&8ZlUX3_)w%&j-{HSM&#>CnB3f)>Nwx+Gv5|5wnH7CYs1nR#UE&B zX$SxSfPn!%upPGV3|3!vXIJ*jS?@qM`jWp7;N$=LK8Nz-&Y?Zf$Lnf#opQ>vY|>}H z?s7Z^8{%WPFEr(5VbKLI?-0P=B0GUo)5WH{0eeDVW45Xp?V>pX>VlV-0jWUb3O{IB zUjFu|DX^*8_CH$_jrvCY%x=ibpH})Ba`T1Iue%`mNYBNU9EXPhvrk2bS%^1va8?%L zOKEkxUg#|ILL9%bO7aCyYh_yufGos8vvTd_LpV~#7Znw{Ki9MM7m&*@;XvleCXfBF zy=AtCS9XAcWN8t4V-YgtDP*6DjiE9Y_(cACqU1qmK#YE(==)U2g+@M63m<+LX%U$! zlRA0a2e5M$`>}l&XdPtuY#)UaaYvO1_XK?fBLCTs%q|A8*Rp64T zo}VChu)$d@{wl*YWo=Uo!_sCL1ZNLE__>hMnKEn&8^{+YOPLI3VeBnQ;p?zVhDemn z8vYr@DQ$SKkoD|T=-btHDbyE}C66_hkQ>jr&3jqC)PfJkWDc7O8v~5*qa;({$6Vyn z={u@^g==Yg4G(=Q!-KRqMMHS^XBMZq%^~ha#ONQJ!HPJet3hiUo4DuZt2Ihi?=0+Y z!jdZR{GCc}OuzxFAW4>)3)$Z0B6RLAyk-UGSPi7Lq8-o*p^@kZ6RhU5v+jZ@qYbrw zJnyXeS{v12Ba_wK^$oL%bB|j_WM~ti1l6`d-GTKGZp_Ke1U-QB_57EVNxFUhht%z# zTZfW`ZTHmMTRcaRB7QW^spX(?qWzD*sn&2gKtS(s35?HXCLhC))P8 zCdG#va?Aaiz^Y_C{v)a5i>@fm?=5xUssda5%pV)|@G5uB88}_cgLbZT>G=(m`=#bk zRYzM03!+Mx6;zQsGgEcLIPt8`m!9JYR4pi>v*D-99(kwyLl1u&pe=|aO~Rmpr7mhS z6(P4^G_9T>4~{cntXaov9D}zeIGNk_Qm)H>;XzUtsQQH%fjm9h+|VG1LjmDoxAqGG zBE@x-<86v`J`{QYRQ&;uGc`^GbZ+$J+Rz&-S)Lc%o>=m+iRSIp^=btCaYH@z@vd=6 z8}QdQYFLa-Q)#Qn8bVa|a_Iq)jBuM$`95I2BX5<=R5cF=edJ}gG@!=kxz2^ zOI08#Xio6v4R$cKJ0cr|iabJAZeq5l`|_miAkSVJnkX|zP>>%1@#;{*mf2x)&~5fV zLu4a+kg_@+M*jQ?4M*!mVxu0ov)`i$TWPaw&6DV{Y+VcQ5pW*i4#e zRmoeB8O&#kM@X;P&cP|8-}g?%MFMHnVR_=Jg&eR{k5Z}kYm2hx98dh!mf%&!iRj%; z?^sB1=E_#88yB2ZG0hI%9D#1pltc864z=O2sps r#1+*SGv#VP{%F+hPpL81_CZ_w)k!~-o_Oz_7y|_QUh$!M-zfMKXMc(* diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_soft_spi_driver__inherit__graph.png deleted file mode 100644 index 56bd8b49f1fcf1a68fd24e6e332e0d6aee4ed073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmchY|34FmAIB&8ZlUX3_)w%&j-{HSM&#>CnB3f)>Nwx+Gv5|5wnH7CYs1nR#UE&B zX$SxSfPn!%upPGV3|3!vXIJ*jS?@qM`jWp7;N$=LK8Nz-&Y?Zf$Lnf#opQ>vY|>}H z?s7Z^8{%WPFEr(5VbKLI?-0P=B0GUo)5WH{0eeDVW45Xp?V>pX>VlV-0jWUb3O{IB zUjFu|DX^*8_CH$_jrvCY%x=ibpH})Ba`T1Iue%`mNYBNU9EXPhvrk2bS%^1va8?%L zOKEkxUg#|ILL9%bO7aCyYh_yufGos8vvTd_LpV~#7Znw{Ki9MM7m&*@;XvleCXfBF zy=AtCS9XAcWN8t4V-YgtDP*6DjiE9Y_(cACqU1qmK#YE(==)U2g+@M63m<+LX%U$! zlRA0a2e5M$`>}l&XdPtuY#)UaaYvO1_XK?fBLCTs%q|A8*Rp64T zo}VChu)$d@{wl*YWo=Uo!_sCL1ZNLE__>hMnKEn&8^{+YOPLI3VeBnQ;p?zVhDemn z8vYr@DQ$SKkoD|T=-btHDbyE}C66_hkQ>jr&3jqC)PfJkWDc7O8v~5*qa;({$6Vyn z={u@^g==Yg4G(=Q!-KRqMMHS^XBMZq%^~ha#ONQJ!HPJet3hiUo4DuZt2Ihi?=0+Y z!jdZR{GCc}OuzxFAW4>)3)$Z0B6RLAyk-UGSPi7Lq8-o*p^@kZ6RhU5v+jZ@qYbrw zJnyXeS{v12Ba_wK^$oL%bB|j_WM~ti1l6`d-GTKGZp_Ke1U-QB_57EVNxFUhht%z# zTZfW`ZTHmMTRcaRB7QW^spX(?qWzD*sn&2gKtS(s35?HXCLhC))P8 zCdG#va?Aaiz^Y_C{v)a5i>@fm?=5xUssda5%pV)|@G5uB88}_cgLbZT>G=(m`=#bk zRYzM03!+Mx6;zQsGgEcLIPt8`m!9JYR4pi>v*D-99(kwyLl1u&pe=|aO~Rmpr7mhS z6(P4^G_9T>4~{cntXaov9D}zeIGNk_Qm)H>;XzUtsQQH%fjm9h+|VG1LjmDoxAqGG zBE@x-<86v`J`{QYRQ&;uGc`^GbZ+$J+Rz&-S)Lc%o>=m+iRSIp^=btCaYH@z@vd=6 z8}QdQYFLa-Q)#Qn8bVa|a_Iq)jBuM$`95I2BX5<=R5cF=edJ}gG@!=kxz2^ zOI08#Xio6v4R$cKJ0cr|iabJAZeq5l`|_miAkSVJnkX|zP>>%1@#;{*mf2x)&~5fV zLu4a+kg_@+M*jQ?4M*!mVxu0ov)`i$TWPaw&6DV{Y+VcQ5pW*i4#e zRmoeB8O&#kM@X;P&cP|8-}g?%MFMHnVR_=Jg&eR{k5Z}kYm2hx98dh!mf%&!iRj%; z?^sB1=E_#88yB2ZG0hI%9D#1pltc864z=O2sps r#1+*SGv#VP{%F+hPpL81_CZ_w)k!~-o_Oz_7y|_QUh$!M-zfMKXMc(* diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream-members.html deleted file mode 100644 index 0e353e23..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream-members.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            StdioStream Member List
            -
            -
            - -

            This is the complete list of members for StdioStream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            clearerr()StdioStreaminline
            fclose()StdioStream
            feof()StdioStreaminline
            ferror()StdioStreaminline
            fflush()StdioStream
            fgetc()StdioStreaminline
            fgets(char *str, size_t num, size_t *len=0)StdioStream
            FatFile::fgets(char *str, int num, char *delim=NULL)FatFileprivate
            fopen(const char *path, const char *mode)StdioStream
            fputc(int c)StdioStreaminline
            fputs(const char *str)StdioStream
            fread(void *ptr, size_t size, size_t count)StdioStream
            fseek(int32_t offset, int origin)StdioStream
            ftell()StdioStream
            fwrite(const void *ptr, size_t size, size_t count)StdioStream
            getc()StdioStreaminline
            print(char c)StdioStreaminline
            print(const char *str)StdioStreaminline
            print(const __FlashStringHelper *str)StdioStream
            print(double val, uint8_t prec=2)StdioStreaminline
            print(float val, uint8_t prec=2)StdioStreaminline
            print(T val)StdioStreaminline
            printDec(char n)StdioStreaminline
            printDec(signed char n)StdioStream
            printDec(unsigned char n)StdioStreaminline
            printDec(int16_t n)StdioStream
            printDec(uint16_t n)StdioStream
            printDec(int32_t n)StdioStream
            printDec(uint32_t n)StdioStream
            printDec(double value, uint8_t prec)StdioStreaminline
            printDec(float value, uint8_t prec)StdioStream
            printField(double value, char term, uint8_t prec=2)StdioStreaminline
            printField(float value, char term, uint8_t prec=2)StdioStreaminline
            printField(T value, char term)StdioStreaminline
            FatFile::printField(Type value, char term)FatFileinlineprivate
            printHex(uint32_t n)StdioStream
            printHexln(uint32_t n)StdioStreaminline
            println()StdioStreaminline
            println(double val, uint8_t prec=2)StdioStreaminline
            println(float val, uint8_t prec=2)StdioStreaminline
            println(T val)StdioStreaminline
            putc(int c)StdioStreaminline
            putCRLF()StdioStreaminline
            rewind()StdioStream
            StdioStream()StdioStreaminline
            ungetc(int c)StdioStream
            FatFile::write(const char *str)FatFileinlineprivate
            FatFile::write(uint8_t b)FatFileinlineprivate
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream.html deleted file mode 100644 index 55b8c6ab..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream.html +++ /dev/null @@ -1,1693 +0,0 @@ - - - - - - - -SdFat: StdioStream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            StdioStream Class Reference
            -
            -
            - -

            StdioStream implements a minimal stdio stream. - More...

            - -

            #include <StdioStream.h>

            -
            -Inheritance diagram for StdioStream:
            -
            -
            Inheritance graph
            - - - - -
            [legend]
            -
            -Collaboration diagram for StdioStream:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            void clearerr ()
             
            int fclose ()
             
            int feof ()
             
            int ferror ()
             
            int fflush ()
             
            int fgetc ()
             
            char * fgets (char *str, size_t num, size_t *len=0)
             
            bool fopen (const char *path, const char *mode)
             
            int fputc (int c)
             
            int fputs (const char *str)
             
            size_t fread (void *ptr, size_t size, size_t count)
             
            int fseek (int32_t offset, int origin)
             
            int32_t ftell ()
             
            size_t fwrite (const void *ptr, size_t size, size_t count)
             
            int getc ()
             
            size_t print (char c)
             
            size_t print (const __FlashStringHelper *str)
             
            size_t print (const char *str)
             
            size_t print (double val, uint8_t prec=2)
             
            size_t print (float val, uint8_t prec=2)
             
            template<typename T >
            size_t print (T val)
             
            int printDec (char n)
             
            int printDec (double value, uint8_t prec)
             
            int printDec (float value, uint8_t prec)
             
            int printDec (int16_t n)
             
            int printDec (int32_t n)
             
            int printDec (signed char n)
             
            int printDec (uint16_t n)
             
            int printDec (uint32_t n)
             
            int printDec (unsigned char n)
             
            int printField (double value, char term, uint8_t prec=2)
             
            int printField (float value, char term, uint8_t prec=2)
             
            template<typename T >
            int printField (T value, char term)
             
            int printHex (uint32_t n)
             
            int printHexln (uint32_t n)
             
            size_t println ()
             
            size_t println (double val, uint8_t prec=2)
             
            size_t println (float val, uint8_t prec=2)
             
            template<typename T >
            size_t println (T val)
             
            int putc (int c)
             
            int putCRLF ()
             
            bool rewind ()
             
             StdioStream ()
             
            int ungetc (int c)
             
            - - - - - - - - - - -

            -Private Member Functions

            int fgets (char *str, int num, char *delim=NULL)
             
            template<typename Type >
            size_t printField (Type value, char term)
             
            size_t write (const char *str)
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            StdioStream implements a minimal stdio stream.

            -

            StdioStream does not support subdirectories or long file names.

            -

            Constructor & Destructor Documentation

            - -

            ◆ StdioStream()

            - -
            -
            - - - - - -
            - - - - - - - -
            StdioStream::StdioStream ()
            -
            -inline
            -
            -

            Constructor

            - -
            -
            -

            Member Function Documentation

            - -

            ◆ clearerr()

            - -
            -
            - - - - - -
            - - - - - - - -
            void StdioStream::clearerr ()
            -
            -inline
            -
            -

            Clear the stream's end-of-file and error indicators.

            - -
            -
            - -

            ◆ fclose()

            - -
            -
            - - - - - - - -
            int StdioStream::fclose ()
            -
            -

            Close a stream.

            -

            A successful call to the fclose function causes the stream to be flushed and the associated file to be closed. Any unwritten buffered data is written to the file; any unread buffered data is discarded. Whether or not the call succeeds, the stream is disassociated from the file.

            -
            Returns
            zero if the stream was successfully closed, or EOF if any any errors are detected.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ feof()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StdioStream::feof ()
            -
            -inline
            -
            -

            Test the stream's end-of-file indicator.

            Returns
            non-zero if and only if the end-of-file indicator is set.
            - -
            -
            - -

            ◆ ferror()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StdioStream::ferror ()
            -
            -inline
            -
            -

            Test the stream's error indicator.

            Returns
            return non-zero if and only if the error indicator is set.
            - -
            -
            - -

            ◆ fflush()

            - -
            -
            - - - - - - - -
            int StdioStream::fflush ()
            -
            -

            Flush the stream.

            -

            If stream is an output stream or an update stream in which the most recent operation was not input, any unwritten data is written to the file; otherwise the call is an error since any buffered input data would be lost.

            -
            Returns
            sets the error indicator for the stream and returns EOF if an error occurs, otherwise it returns zero.
            - -
            -
            - -

            ◆ fgetc()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StdioStream::fgetc ()
            -
            -inline
            -
            -

            Get a byte from the stream.

            -
            Returns
            If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF. Otherwise, the fgetc function returns the next character from the input stream.
            - -
            -
            - -

            ◆ fgets()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            char * StdioStream::fgets (char * str,
            size_t num,
            size_t * len = 0 
            )
            -
            -

            Get a string from a stream.

            -

            The fgets function reads at most one less than the number of characters specified by num from the stream into the array pointed to by str. No additional characters are read after a new-line character (which is retained) or after end-of-file. A null character is written immediately after the last character read into the array.

            -
            Parameters
            - - - - -
            [out]strPointer to an array of where the string is copied.
            [in]numMaximum number of characters including the null character.
            [out]lenIf len is not null and fgets is successful, the length of the string is returned.
            -
            -
            -
            Returns
            str if successful. If end-of-file is encountered and no characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned.
            - -
            -
            - -

            ◆ fopen()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            bool StdioStream::fopen (const char * path,
            const char * mode 
            )
            -
            -

            Open a stream.

            -

            Open a file and associates the stream with it.

            -
            Parameters
            - - - -
            [in]pathfile to be opened.
            [in]modea string that indicates the open mode.
            -
            -
            - - - - - - - - - - - - - - - - - -
            "r" or "rb" Open a file for reading. The file must exist.
            "w" or "wb" Truncate an existing to zero length or create an empty file for writing.
            "wx" or "wbx" Create a file for writing. Fails if the file already exists.
            "a" or "ab" Append; open or create file for writing at end-of-file.
            "r+" or "rb+" or "r+b" Open a file for update (reading and writing).
            "w+" or "w+b" or "wb+" Truncate an existing to zero length or create a file for update.
            "w+x" or "w+bx" or "wb+x" Create a file for update. Fails if the file already exists.
            "a+" or "a+b" or "ab+" Append; open or create a file for update, writing at end-of-file.
            -

            The character 'b' shall have no effect, but is allowed for ISO C standard conformance.

            -

            Opening a file with append mode causes all subsequent writes to the file to be forced to the then current end-of-file, regardless of intervening calls to the fseek function.

            -

            When a file is opened with update mode, both input and output may be performed on the associated stream. However, output shall not be directly followed by input without an intervening call to the fflush function or to a file positioning function (fseek, or rewind), and input shall not be directly followed by output without an intervening call to a file positioning function, unless the input operation encounters end-of-file.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ fputc()

            - -
            -
            - - - - - -
            - - - - - - - - -
            int StdioStream::fputc (int c)
            -
            -inline
            -
            -

            Write a byte to a stream.

            -
            Parameters
            - - -
            [in]cthe byte to be written (converted to an unsigned char).
            -
            -
            -
            Returns
            Upon successful completion, fputc() returns the value it has written. Otherwise, it returns EOF and sets the error indicator for the stream.
            - -
            -
            - -

            ◆ fputs()

            - -
            -
            - - - - - - - - -
            int StdioStream::fputs (const char * str)
            -
            -

            Write a string to a stream.

            -
            Parameters
            - - -
            [in]stra pointer to the string to be written.
            -
            -
            -
            Returns
            for success, fputs() returns a non-negative number. Otherwise, it returns EOF and sets the error indicator for the stream.
            - -
            -
            - -

            ◆ fread()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t StdioStream::fread (void * ptr,
            size_t size,
            size_t count 
            )
            -
            -

            Binary input.

            -

            Reads an array of up to count elements, each one with a size of size bytes.

            Parameters
            - - - - -
            [out]ptrpointer to area of at least (size*count) bytes where the data will be stored.
            [in]sizethe size, in bytes, of each element to be read.
            [in]countthe number of elements to be read.
            -
            -
            -
            Returns
            number of elements successfully read, which may be less than count if a read error or end-of-file is encountered. If size or count is zero, fread returns zero and the contents of the array and the state of the stream remain unchanged.
            - -
            -
            - -

            ◆ fseek()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            int StdioStream::fseek (int32_t offset,
            int origin 
            )
            -
            -

            Set the file position for the stream.

            -
            Parameters
            - - - -
            [in]offsetnumber of offset from the origin.
            [in]originposition used as reference for the offset. It is specified by one of the following constants.
            -
            -
            -

            SEEK_SET - Beginning of file.

            -

            SEEK_CUR - Current position of the file pointer.

            -

            SEEK_END - End of file.

            -
            Returns
            zero for success. Otherwise, it returns non-zero and sets the error indicator for the stream.
            - -
            -
            - -

            ◆ ftell()

            - -
            -
            - - - - - - - -
            int32_t StdioStream::ftell ()
            -
            -

            Get the current position in a stream.

            -
            Returns
            If successful, ftell return the current value of the position indicator. On failure, ftell returns −1L.
            - -
            -
            - -

            ◆ fwrite()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            size_t StdioStream::fwrite (const void * ptr,
            size_t size,
            size_t count 
            )
            -
            -

            Binary output.

            -

            Writes an array of up to count elements, each one with a size of size bytes.

            Parameters
            - - - - -
            [in]ptrpointer to (size*count) bytes of data to be written.
            [in]sizethe size, in bytes, of each element to be written.
            [in]countthe number of elements to be written.
            -
            -
            -
            Returns
            number of elements successfully written. if this number is less than count, an error has occurred. If size or count is zero, fwrite returns zero.
            - -
            -
            - -

            ◆ getc()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StdioStream::getc ()
            -
            -inline
            -
            -

            Get a byte from the stream.

            -

            getc and fgetc are equivalent but getc is in-line so it is faster but require more flash memory.

            -
            Returns
            If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF. Otherwise, the fgetc function returns the next character from the input stream.
            - -
            -
            - -

            ◆ print() [1/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t StdioStream::print (char c)
            -
            -inline
            -
            -

            Write a character.

            Parameters
            - - -
            [in]cthe character to write.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ print() [2/6]

            - -
            -
            - - - - - - - - -
            size_t StdioStream::print (const __FlashStringHelper * str)
            -
            -

            Print a string stored in flash memory.

            -
            Parameters
            - - -
            [in]strthe string to print.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ print() [3/6]

            - -
            -
            - - - - - -
            - - - - - - - - -
            size_t StdioStream::print (const char * str)
            -
            -inline
            -
            -

            Write a string.

            -
            Parameters
            - - -
            [in]strthe string to be written.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ print() [4/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StdioStream::print (double val,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a floating point number.

            -
            Parameters
            - - - -
            [in]precNumber of digits after decimal point.
            [in]valthe number to be printed.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ print() [5/6]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StdioStream::print (float val,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a floating point number.

            -
            Parameters
            - - - -
            [in]precNumber of digits after decimal point.
            [in]valthe number to be printed.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ print() [6/6]

            - -
            -
            -
            -template<typename T >
            - - - - - -
            - - - - - - - - -
            size_t StdioStream::print (val)
            -
            -inline
            -
            -

            Print a number.

            -
            Parameters
            - - -
            [in]valthe number to be printed.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ printDec() [1/9]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int StdioStream::printDec (char n)
            -
            -inline
            -
            -

            Print a char as a number.

            Parameters
            - - -
            [in]nnumber to be printed.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [2/9]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int StdioStream::printDec (double value,
            uint8_t prec 
            )
            -
            -inline
            -
            -

            Print a double.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [3/9]

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            int StdioStream::printDec (float value,
            uint8_t prec 
            )
            -
            -

            Print a float.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [4/9]

            - -
            -
            - - - - - - - - -
            int StdioStream::printDec (int16_t n)
            -
            -

            Print a int16_t

            Parameters
            - - -
            [in]nnumber to be printed.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [5/9]

            - -
            -
            - - - - - - - - -
            int StdioStream::printDec (int32_t n)
            -
            -

            Print a signed 32-bit integer.

            Parameters
            - - -
            [in]nnumber to be printed.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [6/9]

            - -
            -
            - - - - - - - - -
            int StdioStream::printDec (signed char n)
            -
            -

            print a signed 8-bit integer

            Parameters
            - - -
            [in]nnumber to be printed.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [7/9]

            - -
            -
            - - - - - - - - -
            int StdioStream::printDec (uint16_t n)
            -
            -

            print a uint16_t.

            Parameters
            - - -
            [in]nnumber to be printed.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [8/9]

            - -
            -
            - - - - - - - - -
            int StdioStream::printDec (uint32_t n)
            -
            -

            Write an unsigned 32-bit number.

            Parameters
            - - -
            [in]nnumber to be printed.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printDec() [9/9]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int StdioStream::printDec (unsigned char n)
            -
            -inline
            -
            -

            Print an unsigned 8-bit number.

            Parameters
            - - -
            [in]nnumber to be print.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int StdioStream::printField (double value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            int StdioStream::printField (float value,
            char term,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printField() [3/3]

            - -
            -
            -
            -template<typename T >
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            int StdioStream::printField (value,
            char term 
            )
            -
            -inline
            -
            -

            Print a number followed by a field terminator.

            Parameters
            - - - -
            [in]valueThe number to be printed.
            [in]termThe field terminator.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printHex()

            - -
            -
            - - - - - - - - -
            int StdioStream::printHex (uint32_t n)
            -
            -

            Print HEX

            Parameters
            - - -
            [in]nnumber to be printed as HEX.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ printHexln()

            - -
            -
            - - - - - -
            - - - - - - - - -
            int StdioStream::printHexln (uint32_t n)
            -
            -inline
            -
            -

            Print HEX with CRLF

            Parameters
            - - -
            [in]nnumber to be printed as HEX.
            -
            -
            -
            Returns
            The number of bytes written or -1 if an error occurs.
            - -
            -
            - -

            ◆ println() [1/4]

            - -
            -
            - - - - - -
            - - - - - - - -
            size_t StdioStream::println ()
            -
            -inline
            -
            -

            Write a CR/LF.

            -
            Returns
            two, the number of bytes written, for success or zero for failure.
            - -
            -
            - -

            ◆ println() [2/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StdioStream::println (double val,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a floating point number followed by CR/LF.

            -
            Parameters
            - - - -
            [in]valthe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ println() [3/4]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StdioStream::println (float val,
            uint8_t prec = 2 
            )
            -
            -inline
            -
            -

            Print a floating point number followed by CR/LF.

            -
            Parameters
            - - - -
            [in]valthe number to be printed.
            [in]precNumber of digits after decimal point.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ println() [4/4]

            - -
            -
            -
            -template<typename T >
            - - - - - -
            - - - - - - - - -
            size_t StdioStream::println (val)
            -
            -inline
            -
            -

            Print an item followed by CR/LF

            -
            Parameters
            - - -
            [in]valthe item to be printed.
            -
            -
            -
            Returns
            the number of bytes written.
            - -
            -
            - -

            ◆ putc()

            - -
            -
            - - - - - -
            - - - - - - - - -
            int StdioStream::putc (int c)
            -
            -inline
            -
            -

            Write a byte to a stream.

            -

            putc and fputc are equivalent but putc is in-line so it is faster but require more flash memory.

            -
            Parameters
            - - -
            [in]cthe byte to be written (converted to an unsigned char).
            -
            -
            -
            Returns
            Upon successful completion, fputc() returns the value it has written. Otherwise, it returns EOF and sets the error indicator for the stream.
            - -
            -
            - -

            ◆ putCRLF()

            - -
            -
            - - - - - -
            - - - - - - - -
            int StdioStream::putCRLF ()
            -
            -inline
            -
            -

            Write a CR/LF.

            -
            Returns
            two, the number of bytes written, for success or -1 for failure.
            - -
            -
            - -

            ◆ rewind()

            - -
            -
            - - - - - - - -
            bool StdioStream::rewind ()
            -
            -

            Set position of a stream to the beginning.

            -

            The rewind function sets the file position to the beginning of the file. It is equivalent to fseek(0L, SEEK_SET) except that the error indicator for the stream is also cleared.

            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ ungetc()

            - -
            -
            - - - - - - - - -
            int StdioStream::ungetc (int c)
            -
            -

            Push a byte back into an input stream.

            -
            Parameters
            - - -
            [in]cthe byte (converted to an unsigned char) to be pushed back.
            -
            -
            -

            One character of push-back is guaranteed. If the ungetc function is called too many times without an intervening read or file positioning operation on that stream, the operation may fail.

            -

            A successful intervening call to a file positioning function (fseek, fsetpos, or rewind) discards any pushed-back characters for the stream.

            -
            Returns
            Upon successful completion, ungetc() returns the byte pushed back after conversion. Otherwise it returns EOF.
            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/iostream/StdioStream.h
            • -
            • Arduino/libraries/SdFat/src/iostream/StdioStream.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream__coll__graph.png deleted file mode 100644 index af4919ecb14244daf507c51db4ffdef4a592705d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmeAS@N?(olHy`uVBq!ia0vp^wLo0J!3HFa`hsLRw96=LaC|z_3SfXGTpfX{C1DBt|pOrtjuJozy z?qprJa&dse%qf<0x$Ap8GzFIRbYyg#m*c8Q+B9?K-MM#X-aP%gTIKb-w6gSjcaML5 z_qucw8;4?xfYXVfMLN044Au;6oym%YJJ=sI-VBH^`z3H-y5}LqjgieqpI+E}_-w_- z2`+cGo8Ahusyw=|q%mNZgGQ{vKBsk>w=Sjqo@k)HO``EfVc6N#vhNpPm|7CPz>|NO zT4>?2Ioti>pBwDuUUK?N-r<<1-Pb>z(%(MyyQ}Mb%f8%m6GBCV+(YB9)~tK$e7xk+ z)RNCj^zCl{%2hu(_227nH@C6=`F-ordh4>;60ya*R!A9l=!Nfk%dnbhO*Mn>@yx2f zCjM!YCrf4DUU9_h{lcTOSD#w@>a|q-)>!ks$NN-g+_+jDTyuTvDv`UQzL$zBZ%eG+ z`PuMy%--Ecp2d9hefI9{s{YUuGvBK1>v`Zk_vx!WXAg!SeK~t|UeD8g0ZBcQYbUI} zoPT>?9^*6bmHW;swkF?J+IViy!q2Q1pMUXFa(u}I4~8jv0$$=B@1K9!ni4o6Vh!Vu zwRbWm|NHUd>-7~6Q(PE-{JUdmQ}d0dUQXr-pSqdT;le`G*XfB!r+RXDQwWP`=aa=m!F$c$QU29poJ;(z~^f7+*M`e@1g z%3oiSmtK)%2sqIAtNv=YB-!8xPt<&q*(L=mwu()ClG4$>3uf5Y*C{(kL<%VXeevM~_tH1t7nv+raK*gS`Ba<4%czy_ zxBTWyVO(p!qx#<;jm&_V0*Zf+fBd1#5dP5q-r^*SJySK7tm&ArZtAYiSNDy1wgyFO zK04|9=Kt1P+$JB)85~yH_dF9_`_(?HaIxEKbH+dO?5rmBy!{xF-+z32@$rewf-mRp z;aJMua*5RmJ>;n&tlnE8|KGMFUvvLG+uEr4vOJrPUwo9kxlctpcb?^EK87{x*Ke0- zYT2-LYwORNe`PQJt(7;~vTN6^GLB0V_U^UyS$_G!-%4L`xKlj;9XW9_(TTIKP8>HNRWWWY4}WK7IB1QXWfv?UUR)Kb_Rr9{N^# zmzC4Ax2v{osGa;&<@M)##kJep&qYtooYoo_^8U2Z`fQ$PtM|rxHJ(fpoPJ{;H@lH| zQQGd#^&G3Mw^^p0*t78Q_LbH_fnSg3)ZAe!urCi(nt1lCFVI)<3@m?l1}rOwW_WN) zhj{YRuV-hD9di>eoWSzopr0Hbw@Y5)KL diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stdio_stream__inherit__graph.png deleted file mode 100644 index af4919ecb14244daf507c51db4ffdef4a592705d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmeAS@N?(olHy`uVBq!ia0vp^wLo0J!3HFa`hsLRw96=LaC|z_3SfXGTpfX{C1DBt|pOrtjuJozy z?qprJa&dse%qf<0x$Ap8GzFIRbYyg#m*c8Q+B9?K-MM#X-aP%gTIKb-w6gSjcaML5 z_qucw8;4?xfYXVfMLN044Au;6oym%YJJ=sI-VBH^`z3H-y5}LqjgieqpI+E}_-w_- z2`+cGo8Ahusyw=|q%mNZgGQ{vKBsk>w=Sjqo@k)HO``EfVc6N#vhNpPm|7CPz>|NO zT4>?2Ioti>pBwDuUUK?N-r<<1-Pb>z(%(MyyQ}Mb%f8%m6GBCV+(YB9)~tK$e7xk+ z)RNCj^zCl{%2hu(_227nH@C6=`F-ordh4>;60ya*R!A9l=!Nfk%dnbhO*Mn>@yx2f zCjM!YCrf4DUU9_h{lcTOSD#w@>a|q-)>!ks$NN-g+_+jDTyuTvDv`UQzL$zBZ%eG+ z`PuMy%--Ecp2d9hefI9{s{YUuGvBK1>v`Zk_vx!WXAg!SeK~t|UeD8g0ZBcQYbUI} zoPT>?9^*6bmHW;swkF?J+IViy!q2Q1pMUXFa(u}I4~8jv0$$=B@1K9!ni4o6Vh!Vu zwRbWm|NHUd>-7~6Q(PE-{JUdmQ}d0dUQXr-pSqdT;le`G*XfB!r+RXDQwWP`=aa=m!F$c$QU29poJ;(z~^f7+*M`e@1g z%3oiSmtK)%2sqIAtNv=YB-!8xPt<&q*(L=mwu()ClG4$>3uf5Y*C{(kL<%VXeevM~_tH1t7nv+raK*gS`Ba<4%czy_ zxBTWyVO(p!qx#<;jm&_V0*Zf+fBd1#5dP5q-r^*SJySK7tm&ArZtAYiSNDy1wgyFO zK04|9=Kt1P+$JB)85~yH_dF9_`_(?HaIxEKbH+dO?5rmBy!{xF-+z32@$rewf-mRp z;aJMua*5RmJ>;n&tlnE8|KGMFUvvLG+uEr4vOJrPUwo9kxlctpcb?^EK87{x*Ke0- zYT2-LYwORNe`PQJt(7;~vTN6^GLB0V_U^UyS$_G!-%4L`xKlj;9XW9_(TTIKP8>HNRWWWY4}WK7IB1QXWfv?UUR)Kb_Rr9{N^# zmzC4Ax2v{osGa;&<@M)##kJep&qYtooYoo_^8U2Z`fQ$PtM|rxHJ(fpoPJ{;H@lH| zQQGd#^&G3Mw^^p0*t78Q_LbH_fnSg3)ZAe!urCi(nt1lCFVI)<3@m?l1}rOwW_WN) zhj{YRuV-hD9di>eoWSzopr0Hbw@Y5)KL diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class-members.html deleted file mode 100644 index 1b164a44..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class-members.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            StreamBaseClass Member List
            -
            -
            - -

            This is the complete list of members for StreamBaseClass, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            FatFile::open(FatVolume *vol, const char *path, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            FatFile::write(const char *str)FatFileinlineprivate
            FatFile::write(uint8_t b)FatFileinlineprivate
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class.html deleted file mode 100644 index 7b59e6a1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class.html +++ /dev/null @@ -1,1595 +0,0 @@ - - - - - - - -SdFat: StreamBaseClass Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            base type for FAT and exFAT streams - More...

            - -

            #include <fstream.h>

            -
            -Inheritance diagram for StreamBaseClass:
            -
            -
            Inheritance graph
            - - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for StreamBaseClass:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            bool good () const
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            int precision () const
             
            int precision (unsigned int n)
             
            iostate rdstate () const
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            - - - - - - - - - - - -

            -Private Member Functions

            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            size_t write (const char *str)
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            base type for FAT and exFAT streams

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/fstream.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_base_class__coll__graph.png deleted file mode 100644 index 850ba6664832863428b4b179ebe36b6cf8ecd1e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3884 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file-members.html deleted file mode 100644 index 90db6d40..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            StreamFile< BaseFile, PosType > Member List
            -
            - - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file.html deleted file mode 100644 index de1c597c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file.html +++ /dev/null @@ -1,515 +0,0 @@ - - - - - - - -SdFat: StreamFile< BaseFile, PosType > Class Template Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            StreamFile< BaseFile, PosType > Class Template Reference
            -
            -
            - -

            StreamFile class. - More...

            - -

            #include <ArduinoFiles.h>

            -
            -Inheritance diagram for StreamFile< BaseFile, PosType >:
            -
            -
            Inheritance graph
            - - - - - -
            [legend]
            -
            -Collaboration diagram for StreamFile< BaseFile, PosType >:
            -
            -
            Collaboration graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            int available ()
             
            void flush ()
             
            bool isDirectory ()
             
            const char * name () const
             
            int peek ()
             
            PosType position ()
             
            int read ()
             
            void rewindDirectory ()
             
            bool seek (PosType pos)
             
            PosType size ()
             
            size_t write (const uint8_t *buffer, size_t size)
             
            size_t write (uint8_t b)
             
            -

            Detailed Description

            -

            template<class BaseFile, typename PosType>
            -class StreamFile< BaseFile, PosType >

            - -

            StreamFile class.

            -

            Member Function Documentation

            - -

            ◆ available()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            int StreamFile< BaseFile, PosType >::available ()
            -
            -inline
            -
            -
            Returns
            number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
            - -
            -
            - -

            ◆ flush()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            void StreamFile< BaseFile, PosType >::flush ()
            -
            -inline
            -
            -

            Ensure that any bytes written to the file are saved to the SD card.

            - -
            -
            - -

            ◆ isDirectory()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            bool StreamFile< BaseFile, PosType >::isDirectory ()
            -
            -inline
            -
            -

            This function reports if the current file is a directory or not.

            Returns
            true if the file is a directory.
            - -
            -
            - -

            ◆ name()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            const char* StreamFile< BaseFile, PosType >::name () const
            -
            -inline
            -
            -

            No longer implemented due to Long File Names.

            -

            Use getName(char* name, size_t size).

            Returns
            a pointer to replacement suggestion.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            int StreamFile< BaseFile, PosType >::peek ()
            -
            -inline
            -
            -

            Return the next available byte without consuming it.

            -
            Returns
            The byte if no error and not at eof else -1;
            - -
            -
            - -

            ◆ position()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            PosType StreamFile< BaseFile, PosType >::position ()
            -
            -inline
            -
            -
            Returns
            the current file position.
            - -
            -
            - -

            ◆ read()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            int StreamFile< BaseFile, PosType >::read ()
            -
            -inline
            -
            -

            Read the next byte from a file.

            -
            Returns
            For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
            - -
            -
            - -

            ◆ rewindDirectory()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            void StreamFile< BaseFile, PosType >::rewindDirectory ()
            -
            -inline
            -
            -

            Rewind a file if it is a directory

            - -
            -
            - -

            ◆ seek()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - - -
            bool StreamFile< BaseFile, PosType >::seek (PosType pos)
            -
            -inline
            -
            -

            Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

            -
            Parameters
            - - -
            [in]posthe new file position.
            -
            -
            -
            Returns
            true for success or false for failure.
            - -
            -
            - -

            ◆ size()

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - -
            PosType StreamFile< BaseFile, PosType >::size ()
            -
            -inline
            -
            -
            Returns
            the file's size.
            - -
            -
            - -

            ◆ write() [1/2]

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            size_t StreamFile< BaseFile, PosType >::write (const uint8_t * buffer,
            size_t size 
            )
            -
            -inline
            -
            -

            Write data to an open file.

            -
            Note
            Data is moved to the cache but may not be written to the storage device until sync() is called.
            -
            Parameters
            - - - -
            [in]bufferPointer to the location of the data to be written.
            [in]sizeNumber of bytes to write.
            -
            -
            -
            Returns
            For success write() returns the number of bytes written, always size.
            - -
            -
            - -

            ◆ write() [2/2]

            - -
            -
            -
            -template<class BaseFile, typename PosType>
            - - - - - -
            - - - - - - - - -
            size_t StreamFile< BaseFile, PosType >::write (uint8_t b)
            -
            -inline
            -
            -

            Write a byte to a file. Required by the Arduino Print class.

            Parameters
            - - -
            [in]bthe byte to be written. Use getWriteError to check for errors.
            -
            -
            -
            Returns
            1 for success and 0 for failure.
            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/common/ArduinoFiles.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_stream_file__coll__graph.png deleted file mode 100644 index 43b23b3587aca19c299db2768ca4ea457582882a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3405 zcmV-T4YKlyP)q8+S-Vz{$))=O@+I*iXNC^+XRyqmB_I>aHz-+ zkGtEQr+*x$%Q8E=JG(RQ?9B5?Hn8*KeZKqd_nvv)nRjLZK@bE%5ClOG1VPAw@)vY< zb;STA0Yto)Q&VICv?me?!;Qvw?AWoEh`#Pd+d+be{xEy?>{oM_Y55y5^Be&4JyTV? z%s<^%u0TZh0hs4j`vGAdEW8>mv~?npxY<=XHBMJo7rPyUnQxslXUshC5J&wx-{_h%InA(#MQUQL~R}NO6 z!;8;n*S_a{E9Hj}II5Yca}Pt5x6JAgl)o&0U%Phm+p&sSN`|n~7j&HTb+L8D;uYH7 zX`8lG%hdV8N8aa~*J}Gh`xaYgwJmJ+wW5%|TE(iqEvNq~`5p?zw9{(WreoZysY@}F z8|?(eoK7iLQTT4Y$GgDV`D6y-# z><)86d6ZK&meh>NUoZ?2C0Ng7-?3P(w!XfnPAHb=TXcQFDAOFZg$OqTOhg2LHD>KC)!Hhh<}-C~Z}NR+ z9M4�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�r+7wTGtbgFS}5cEvvQM^CPj?(ga}c0caZ0nMZ0O+M7yk_Vg^08wA1B&@|c!U@&(XGwPUm zjA>GruD9K(NSd$E_0}as=Ia2DAwpg5IwA}L{C8E_s!7e))WgtjfE&(QN)!PAX8a}| zZ@oC3PAvys&U&v;Et4mAoHH%Q z2@_f;x-Q5^==!p+3=ACo2*53{IV(g2EfUeh)PA9_?{Nbl+n=dmCXEO)G>tCzN|!$v znhIb%z_#Bt5r5pLl z+HL@5fz3?Q#G78~a+AQAng~5aXMSnS7-B|-h#%E7nwm-_UoEtMkU4ZH`5(g=GZUbD z06qmEle?aXvzkU?YQJHc+HU4AM)W2C5aGX?#>a_`ovP6F*6RU!NYl*u2M#>;zvIW>{-C90=4NJ&Fw>{$^rq)kYpfQbnE0dXtvi^t z=5)GuMi|dij~~CVDH^Tc3(()v>E!LI^|(!7$`5;@3yFAoEO!1~s+Fi98m<2&fJW1d zEK{w;3j$Mq*m3;$TSpojXEqY?&zqXQz2(G-T{S7@Wa2XMP#B>$mWj~9d_ zQv=!Tz-j=;G%fPDYAxQ;p)s4!0O(1lH$10WjaP)m)WdVDc_}mQh{xN%t6Gm2#9~M9 zA;P81bQePO)YwoA6myBkTemTjZWt}!0y;9q_oz)SxZqwrn~m;e=BLx?4fm-nU)`O10#E5?q!{P|g!w90`zev6J4iTOSRGU1*3@YBoSUR zjLvPU^{60}rry85rVm9AkyvzIttwk5DG$VY5-_#%&r5FW~QWS zEl!EW7LNz$R{)+!rPl9Jtw%MXH}$@K8wZH!UI0Ii$J@WJT8|TmqU!;i%wz^1Qmw@g zgnFQui>|l7#LVApXlR+fe}Bg*)p|;0(xfGGO;h_T5&bBYO1`36j~@tqrXGPPvlKx5 z)TyJ(Rck4g$&)+IF-`3$0Dlrge~Fm-GzSlE>}BSMiTM7B6Yrg(T2Cnq4jx?rKqt}y zeaXLE#MC($Mt>)ueGrL6H>%cB3|()X#*7sJJ(xgUv(Cyoeb;7`~^^ zw-A7*0p6QVkMaEWehw=>h#%-Y>So<8doF|`Gm zO#Lzd+vgM>VkA+h|EO* zu8GB3eej!-3+ezo1K=-)k*tZI15|~W+J;o>iJi>+J0ePsAHT3krIvWSaXG+~O*6Ad zrH)!aOkEW77XZ$!t7~{rm4XQq7Jm)kRYdg2>6wLs4Pxpd7{6ZEf#CPNQH(- zB(e#>`>E8)U#o~;Ylx{!z%W{#WyZgV_(^y?2~5}9=L5Kw2zLkJ?i?==Q=I@He%`$NvD(V0K6ICb>qe@ZuTPP;2_pABNB;V zg%|OHf|$AtA`xvRK#_)qsOt}inK-d^1~cvgcv)|6@)Nh?1qr!HpiFeV?M`NF)-+sx z@L=b=?nLQ`#^XodVWuO7k^G)JF@lR^>M}{CI)4jLk7?2-xRexPv7>DOPm4rop&RWB z)~v?xQ#3>Qs;e8%mG}EoGgbkn%$jg|ebhIi8juR^(>sk$>|ucmA^ceMcy?F1H=4nB`<3yKHHv zEq|M8WIZQ+QL4^D@hbW3Ug4Rkb4@k!-fF$o7f`4?DRrIIwz(Rtw$0a8j8fv4+Lo1u z{C%DFMX5TiV%ll7Ytw5y&D2i5|DMZQaPme#-DQefFb} zas7}r?6PQnCard?a@r1J)>bx9%w3*~T}HP%tmYr$z3$jzhkUE;?I_k)cAvM@ekw&r zDU?#~c$vwa-nsF@+_`gaS+#0aRmBLwq+C<4UcDOIw{PDH;8rK`YP$Ro1S`bUg6nua zh!j%`fkXLaauv8W3(jtE>Zem)K_`@^2Hcqi=ch}>VMfZ2fT8*vu^$jq+mJ{kzIc_h z&aS;e?{jASe60~$Q&;oWvT|k;TFnu!G=4E% zVXN;$YwAh|gkDdIcT!GBrWVS=>oXlrrssyu%p=G^(E*hV!U~lh<+NLDPWi}8z_22j zx&U6!bjxqoX}mC-d4y1!x*E5LRqHmiQuh - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            SysCall Member List
            -
            -
            - -

            This is the complete list of members for SysCall, including all inherited members.

            - - - - -
            curTimeMS()SysCallinlinestatic
            halt()SysCallinlinestatic
            yield()SysCallinlinestatic
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sys_call.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sys_call.html deleted file mode 100644 index 5c05f557..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/class_sys_call.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -SdFat: SysCall Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            - -
            -
            SysCall Class Reference
            -
            -
            - -

            SysCall - Class to wrap system calls. - More...

            - -

            #include <SysCall.h>

            - - - - - - - - -

            -Static Public Member Functions

            static SdMillis_t curTimeMS ()
             
            static void halt ()
             
            static void yield ()
             
            -

            Detailed Description

            -

            SysCall - Class to wrap system calls.

            -

            Member Function Documentation

            - -

            ◆ curTimeMS()

            - -
            -
            - - - - - -
            - - - - - - - -
            SdMillis_t SysCall::curTimeMS ()
            -
            -inlinestatic
            -
            -
            Returns
            the time in milliseconds.
            - -
            -
            - -

            ◆ halt()

            - -
            -
            - - - - - -
            - - - - - - - -
            static void SysCall::halt ()
            -
            -inlinestatic
            -
            -

            Halt execution of this thread.

            - -
            -
            - -

            ◆ yield()

            - -
            -
            - - - - - -
            - - - - - - - -
            void SysCall::yield ()
            -
            -inlinestatic
            -
            -

            Yield to other threads.

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/common/SysCall.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classes.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classes.html deleted file mode 100644 index 790dc164..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classes.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -SdFat: Class Index - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            -
            Class Index
            -
            -
            -
            a | b | c | d | e | f | i | m | o | p | s
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              a  
            -
            ExFatFormatter   FsCache   ofstream   SdSpiBaseClass   
            ExFatPartition   FsFile   ostream   SdSpiCard   
            ArduinoInStream   ExFatPos_t   fstream   
              p  
            -
            SdSpiConfig   
            ArduinoOutStream   ExFatVolume   FsVolume   SdSpiSoftDriver   
              b  
            -
            ExFile   
              i  
            -
            PrintFile   setfill   
            ExName_t   
              s  
            -
            setprecision   
            BlockDeviceInterface   
              f  
            -
            ibufstream   setw   
            BufferedPrint   ifstream   SdBase   SoftSpiDriver   
              c  
            -
            FatCache   ios   SdCardFactory   StdioStream   
            FatFile   ios_base   SdCardInterface   StreamBaseClass   
            cache_t   FatFormatter   iostream   SdExFat   StreamFile   
            CID   FatPartition   istream   SdFat32   SysCall   
              d  
            -
            FatPos_t   
              m  
            -
            SdFile   
            FatVolume   SdFs   
            DirPos_t   File32   MinimumSerial   SdioCard   
              e  
            -
            fname_t   
              o  
            -
            SdioConfig   
            FsBaseFile   SdSpiArduinoDriver   
            ExFatFile   obufstream   
            -
            a | b | c | d | e | f | i | m | o | p | s
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream-members.html deleted file mode 100644 index 1f51f940..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream-members.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            fstream Member List
            -
            -
            - -

            This is the complete list of members for fstream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)fstreaminline
            close()fstreaminline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            flush()ostreaminline
            fmtflags typedefios_base
            fstream() (defined in fstream)fstreaminline
            fstream(const char *path, openmode mode=in|out)fstreaminlineexplicit
            gcount() constistreaminline
            get()istream
            get(char &ch)istream
            get(char *str, streamsize n, char delim='\n')istream
            getline(char *str, streamsize n, char delim='\n')istream
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            ignore(streamsize n=1, int delim=-1)istream
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            is_open()fstreaminline
            istream() (defined in istream)istreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            open(const char *path, openmode mode=in|out)fstreaminline
            FatFile::open(FatVolume *vol, const char *path, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator<<(ostream &(*pf)(ostream &str))ostreaminline
            operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
            operator<<(bool arg)ostreaminline
            operator<<(const char *arg)ostreaminline
            operator<<(const signed char *arg)ostreaminline
            operator<<(const unsigned char *arg)ostreaminline
            operator<<(const String &arg)ostreaminline
            operator<<(char arg)ostreaminline
            operator<<(signed char arg)ostreaminline
            operator<<(unsigned char arg)ostreaminline
            operator<<(double arg)ostreaminline
            operator<<(float arg)ostreaminline
            operator<<(short arg)ostreaminline
            operator<<(unsigned short arg)ostreaminline
            operator<<(int arg)ostreaminline
            operator<<(unsigned int arg)ostreaminline
            operator<<(long arg)ostreaminline
            operator<<(unsigned long arg)ostreaminline
            operator<<(long long arg)ostreaminline
            operator<<(unsigned long long arg)ostreaminline
            operator<<(const void *arg)ostreaminline
            operator<<(const __FlashStringHelper *arg)ostreaminline
            operator>>(istream &(*pf)(istream &str))istreaminline
            operator>>(ios_base &(*pf)(ios_base &str))istreaminline
            operator>>(ios &(*pf)(ios &str))istreaminline
            operator>>(char *str)istreaminline
            operator>>(char &ch)istreaminline
            operator>>(signed char *str)istreaminline
            operator>>(signed char &ch)istreaminline
            operator>>(unsigned char *str)istreaminline
            operator>>(unsigned char &ch)istreaminline
            operator>>(bool &arg)istreaminline
            operator>>(short &arg)istreaminline
            operator>>(unsigned short &arg)istreaminline
            operator>>(int &arg)istreaminline
            operator>>(unsigned int &arg)istreaminline
            operator>>(long &arg)istreaminline
            operator>>(unsigned long &arg)istreaminline
            operator>>(double &arg)istreaminline
            operator>>(float &arg)istreaminline
            operator>>(void *&arg)istreaminline
            ostream() (defined in ostream)ostreaminline
            outios_basestatic
            peek()istream
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            put(char ch)ostreaminline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekg(pos_type pos)istreaminline
            seekg(off_type off, seekdir way)istreaminline
            seekp(pos_type pos)ostreaminline
            seekp(off_type off, seekdir way)ostreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipWhite()istream
            skipwsios_basestatic
            streamsize typedefios_base
            tellg()istreaminline
            tellp()ostreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream.html deleted file mode 100644 index 44c2d916..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream.html +++ /dev/null @@ -1,3784 +0,0 @@ - - - - - - - -SdFat: fstream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            file input/output stream. - More...

            - -

            #include <fstream.h>

            -
            -Inheritance diagram for fstream:
            -
            -
            Inheritance graph
            - - - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for fstream:
            -
            -
            Collaboration graph
            - - - - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            void close ()
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            ostreamflush ()
             
             fstream (const char *path, openmode mode=in|out)
             
            streamsize gcount () const
             
            int get ()
             
            istreamget (char &ch)
             
            istreamget (char *str, streamsize n, char delim='\n')
             
            istreamgetline (char *str, streamsize n, char delim='\n')
             
            bool good () const
             
            istreamignore (streamsize n=1, int delim=-1)
             
            bool is_open ()
             
            void open (const char *path, openmode mode=in|out)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            ostreamoperator<< (bool arg)
             
            ostreamoperator<< (char arg)
             
            ostreamoperator<< (const __FlashStringHelper *arg)
             
            ostreamoperator<< (const char *arg)
             
            ostreamoperator<< (const signed char *arg)
             
            ostreamoperator<< (const String &arg)
             
            ostreamoperator<< (const unsigned char *arg)
             
            ostreamoperator<< (const void *arg)
             
            ostreamoperator<< (double arg)
             
            ostreamoperator<< (float arg)
             
            ostreamoperator<< (int arg)
             
            ostreamoperator<< (ios_base &(*pf)(ios_base &str))
             
            ostreamoperator<< (long arg)
             
            ostreamoperator<< (long long arg)
             
            ostreamoperator<< (ostream &(*pf)(ostream &str))
             
            ostreamoperator<< (short arg)
             
            ostreamoperator<< (signed char arg)
             
            ostreamoperator<< (unsigned char arg)
             
            ostreamoperator<< (unsigned int arg)
             
            ostreamoperator<< (unsigned long arg)
             
            ostreamoperator<< (unsigned long long arg)
             
            ostreamoperator<< (unsigned short arg)
             
            istreamoperator>> (bool &arg)
             
            istreamoperator>> (char &ch)
             
            istreamoperator>> (char *str)
             
            istreamoperator>> (double &arg)
             
            istreamoperator>> (float &arg)
             
            istreamoperator>> (int &arg)
             
            istreamoperator>> (ios &(*pf)(ios &str))
             
            istreamoperator>> (ios_base &(*pf)(ios_base &str))
             
            istreamoperator>> (istream &(*pf)(istream &str))
             
            istreamoperator>> (long &arg)
             
            istreamoperator>> (short &arg)
             
            istreamoperator>> (signed char &ch)
             
            istreamoperator>> (signed char *str)
             
            istreamoperator>> (unsigned char &ch)
             
            istreamoperator>> (unsigned char *str)
             
            istreamoperator>> (unsigned int &arg)
             
            istreamoperator>> (unsigned long &arg)
             
            istreamoperator>> (unsigned short &arg)
             
            istreamoperator>> (void *&arg)
             
            int peek ()
             
            int precision () const
             
            int precision (unsigned int n)
             
            ostreamput (char ch)
             
            iostate rdstate () const
             
            istreamseekg (off_type off, seekdir way)
             
            istreamseekg (pos_type pos)
             
            ostreamseekp (off_type off, seekdir way)
             
            ostreamseekp (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void skipWhite ()
             
            pos_type tellg ()
             
            pos_type tellp ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            - - - - - - - -

            -Private Member Functions

            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            -

            Detailed Description

            -

            file input/output stream.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ fstream()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fstream::fstream (const char * path,
            openmode mode = in | out 
            )
            -
            -inlineexplicit
            -
            -

            Constructor with open

            Parameters
            - - - -
            [in]pathfile to open
            [in]modeopen mode
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void fstream::clear (iostate state = goodbit)
            -
            -inline
            -
            -

            Clear state and writeError

            Parameters
            - - -
            [in]statenew state for stream
            -
            -
            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            void fstream::close ()
            -
            -inline
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            ostream& ostream::flush ()
            -
            -inlineinherited
            -
            -

            Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ gcount()

            - -
            -
            - - - - - -
            - - - - - - - -
            streamsize istream::gcount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of characters extracted by the last unformatted input function.
            - -
            -
            - -

            ◆ get() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::get ()
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Returns
            The character or -1 if a failure occurs. A failure is indicated by the stream state.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ get() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream & istream::get (char & ch)
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Parameters
            - - -
            [out]chlocation to receive the extracted character.
            -
            -
            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ get() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::get (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters.

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ getline()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::getline (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

            -

            The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ ignore()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream & istream::ignore (streamsize n = 1,
            int delim = -1 
            )
            -
            -inherited
            -
            -

            Extract characters and discard them.

            -
            Parameters
            - - - -
            [in]nmaximum number of characters to ignore.
            [in]delimDelimiter.
            -
            -
            -

            Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

            -

            Failures are indicated by the state of the stream.

            -
            Returns
            *this
            - -
            -
            - -

            ◆ is_open()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool fstream::is_open ()
            -
            -inline
            -
            -
            Returns
            True if stream is open else false.
            - -
            -
            - -

            ◆ open()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void fstream::open (const char * path,
            openmode mode = in | out 
            )
            -
            -inline
            -
            -

            Open a fstream

            Parameters
            - - - -
            [in]pathpath to open
            [in]modeopen mode
            -
            -
            -

            Valid open modes are (at end, ios::ate, and/or ios::binary may be added):

            -

            ios::in - Open file for reading.

            -

            ios::out or ios::out | ios::trunc - Truncate to 0 length, if existent, or create a file for writing only.

            -

            ios::app or ios::out | ios::app - Append; open or create file for writing at end-of-file.

            -

            ios::in | ios::out - Open file for update (reading and writing).

            -

            ios::in | ios::out | ios::trunc - Truncate to zero length, if existent, or create file for update.

            -

            ios::in | ios::app or ios::in | ios::out | ios::app - Append; open or create text file for update, writing at end of file.

            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator<<() [1/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (bool arg)
            -
            -inlineinherited
            -
            -

            Output bool

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [2/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [3/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const __FlashStringHelper * arg)
            -
            -inlineinherited
            -
            -

            Output a string from flash using the Arduino F() macro.

            Parameters
            - - -
            [in]argpointing to flash string
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [4/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [5/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const signed char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [6/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const String & arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [7/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const unsigned char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [8/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const void * arg)
            -
            -inlineinherited
            -
            -

            Output pointer

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [9/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (double arg)
            -
            -inlineinherited
            -
            -

            Output double

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [10/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (float arg)
            -
            -inlineinherited
            -
            -

            Output float

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [11/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (int arg)
            -
            -inlineinherited
            -
            -

            Output signed int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [12/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [13/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long arg)
            -
            -inlineinherited
            -
            -

            Output signed long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [14/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long long arg)
            -
            -inlineinherited
            -
            -

            Output signed long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [15/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [16/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (short arg)
            -
            -inlineinherited
            -
            -

            Output signed short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [17/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (signed char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [18/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [19/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned int arg)
            -
            -inlineinherited
            -
            -

            Output unsigned int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [20/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [21/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [22/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned short arg)
            -
            -inlineinherited
            -
            -

            Output unsigned short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [1/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (bool & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type bool.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [2/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [3/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [4/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (double & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type double.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [5/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (float & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type float.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [6/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [7/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios &(*)(ios &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [8/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [9/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (istream &(*)(istream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [10/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [11/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [12/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [13/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [14/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [15/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [16/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [17/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [18/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [19/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (void *& arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type void*.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::peek ()
            -
            -inherited
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ put()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::put (char ch)
            -
            -inlineinherited
            -
            -

            Puts a character in a stream.

            -

            The unformatted output function inserts the element ch. It returns *this.

            -
            Parameters
            - - -
            [in]chThe character
            -
            -
            -
            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekg() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream& istream::seekg (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekg() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::seekg (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the read pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ostream& ostream::seekp (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::seekp (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the write pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ skipWhite()

            - -
            -
            - - - - - -
            - - - - - - - -
            void istream::skipWhite ()
            -
            -inherited
            -
            -

            used to implement ws()

            - -
            -
            - -

            ◆ tellg()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type istream::tellg ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ tellp()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type ostream::tellp ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/fstream.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream__coll__graph.png deleted file mode 100644 index 22415e6ee30bef2253e4a9c7f9daae9a69b20785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9457 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classfstream__inherit__graph.png deleted file mode 100644 index 22415e6ee30bef2253e4a9c7f9daae9a69b20785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9457 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream-members.html deleted file mode 100644 index d9c9191f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream-members.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ibufstream Member List
            -
            -
            - -

            This is the complete list of members for ibufstream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            gcount() constistreaminline
            get()istream
            get(char &ch)istream
            get(char *str, streamsize n, char delim='\n')istream
            getline(char *str, streamsize n, char delim='\n')istream
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            ibufstream()ibufstreaminline
            ibufstream(const char *str)ibufstreaminlineexplicit
            ignore(streamsize n=1, int delim=-1)istream
            inios_basestatic
            init(const char *str)ibufstreaminline
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            istream() (defined in istream)istreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator>>(istream &(*pf)(istream &str))istreaminline
            operator>>(ios_base &(*pf)(ios_base &str))istreaminline
            operator>>(ios &(*pf)(ios &str))istreaminline
            operator>>(char *str)istreaminline
            operator>>(char &ch)istreaminline
            operator>>(signed char *str)istreaminline
            operator>>(signed char &ch)istreaminline
            operator>>(unsigned char *str)istreaminline
            operator>>(unsigned char &ch)istreaminline
            operator>>(bool &arg)istreaminline
            operator>>(short &arg)istreaminline
            operator>>(unsigned short &arg)istreaminline
            operator>>(int &arg)istreaminline
            operator>>(unsigned int &arg)istreaminline
            operator>>(long &arg)istreaminline
            operator>>(unsigned long &arg)istreaminline
            operator>>(double &arg)istreaminline
            operator>>(float &arg)istreaminline
            operator>>(void *&arg)istreaminline
            outios_basestatic
            peek()istream
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekg(pos_type pos)istreaminline
            seekg(off_type off, seekdir way)istreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipWhite()istream
            skipwsios_basestatic
            streamsize typedefios_base
            tellg()istreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream.html deleted file mode 100644 index 07ad224c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream.html +++ /dev/null @@ -1,2766 +0,0 @@ - - - - - - - -SdFat: ibufstream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            parse a char string - More...

            - -

            #include <bufstream.h>

            -
            -Inheritance diagram for ibufstream:
            -
            -
            Inheritance graph
            - - - - - - - -
            [legend]
            -
            -Collaboration diagram for ibufstream:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            streamsize gcount () const
             
            int get ()
             
            istreamget (char &ch)
             
            istreamget (char *str, streamsize n, char delim='\n')
             
            istreamgetline (char *str, streamsize n, char delim='\n')
             
            bool good () const
             
             ibufstream ()
             
             ibufstream (const char *str)
             
            istreamignore (streamsize n=1, int delim=-1)
             
            void init (const char *str)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            istreamoperator>> (bool &arg)
             
            istreamoperator>> (char &ch)
             
            istreamoperator>> (char *str)
             
            istreamoperator>> (double &arg)
             
            istreamoperator>> (float &arg)
             
            istreamoperator>> (int &arg)
             
            istreamoperator>> (ios &(*pf)(ios &str))
             
            istreamoperator>> (ios_base &(*pf)(ios_base &str))
             
            istreamoperator>> (istream &(*pf)(istream &str))
             
            istreamoperator>> (long &arg)
             
            istreamoperator>> (short &arg)
             
            istreamoperator>> (signed char &ch)
             
            istreamoperator>> (signed char *str)
             
            istreamoperator>> (unsigned char &ch)
             
            istreamoperator>> (unsigned char *str)
             
            istreamoperator>> (unsigned int &arg)
             
            istreamoperator>> (unsigned long &arg)
             
            istreamoperator>> (unsigned short &arg)
             
            istreamoperator>> (void *&arg)
             
            int peek ()
             
            int precision () const
             
            int precision (unsigned int n)
             
            iostate rdstate () const
             
            istreamseekg (off_type off, seekdir way)
             
            istreamseekg (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void skipWhite ()
             
            pos_type tellg ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            parse a char string

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ ibufstream() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            ibufstream::ibufstream ()
            -
            -inline
            -
            -

            Constructor

            - -
            -
            - -

            ◆ ibufstream() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ibufstream::ibufstream (const char * str)
            -
            -inlineexplicit
            -
            -

            Constructor

            Parameters
            - - -
            [in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ gcount()

            - -
            -
            - - - - - -
            - - - - - - - -
            streamsize istream::gcount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of characters extracted by the last unformatted input function.
            - -
            -
            - -

            ◆ get() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::get ()
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Returns
            The character or -1 if a failure occurs. A failure is indicated by the stream state.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ get() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream & istream::get (char & ch)
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Parameters
            - - -
            [out]chlocation to receive the extracted character.
            -
            -
            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ get() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::get (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters.

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ getline()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::getline (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

            -

            The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ ignore()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream & istream::ignore (streamsize n = 1,
            int delim = -1 
            )
            -
            -inherited
            -
            -

            Extract characters and discard them.

            -
            Parameters
            - - - -
            [in]nmaximum number of characters to ignore.
            [in]delimDelimiter.
            -
            -
            -

            Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

            -

            Failures are indicated by the state of the stream.

            -
            Returns
            *this
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ibufstream::init (const char * str)
            -
            -inline
            -
            -

            Initialize an ibufstream

            Parameters
            - - -
            [in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
            -
            -
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator>>() [1/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (bool & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type bool.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [2/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [3/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [4/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (double & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type double.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [5/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (float & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type float.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [6/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [7/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios &(*)(ios &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [8/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [9/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (istream &(*)(istream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [10/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [11/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [12/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [13/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [14/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [15/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [16/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [17/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [18/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [19/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (void *& arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type void*.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::peek ()
            -
            -inherited
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekg() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream& istream::seekg (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekg() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::seekg (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the read pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ skipWhite()

            - -
            -
            - - - - - -
            - - - - - - - -
            void istream::skipWhite ()
            -
            -inherited
            -
            -

            used to implement ws()

            - -
            -
            - -

            ◆ tellg()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type istream::tellg ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classibufstream__coll__graph.png deleted file mode 100644 index d91bbc79bff177eb422b79a9450119a3f9730fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2455 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 - - - - - - -SdFat: Member List - - - - - - - - - -

            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ifstream Member List
            -
            -
            - -

            This is the complete list of members for ifstream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            close()ifstreaminline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            gcount() constistreaminline
            get()istream
            get(char &ch)istream
            get(char *str, streamsize n, char delim='\n')istream
            getline(char *str, streamsize n, char delim='\n')istream
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            ifstream() (defined in ifstream)ifstreaminline
            ifstream(const char *path, openmode mode=in)ifstreaminlineexplicit
            ignore(streamsize n=1, int delim=-1)istream
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            is_open()ifstreaminline
            istream() (defined in istream)istreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            open(const char *path, openmode mode=in)ifstreaminline
            FatFile::open(FatVolume *vol, const char *path, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator>>(istream &(*pf)(istream &str))istreaminline
            operator>>(ios_base &(*pf)(ios_base &str))istreaminline
            operator>>(ios &(*pf)(ios &str))istreaminline
            operator>>(char *str)istreaminline
            operator>>(char &ch)istreaminline
            operator>>(signed char *str)istreaminline
            operator>>(signed char &ch)istreaminline
            operator>>(unsigned char *str)istreaminline
            operator>>(unsigned char &ch)istreaminline
            operator>>(bool &arg)istreaminline
            operator>>(short &arg)istreaminline
            operator>>(unsigned short &arg)istreaminline
            operator>>(int &arg)istreaminline
            operator>>(unsigned int &arg)istreaminline
            operator>>(long &arg)istreaminline
            operator>>(unsigned long &arg)istreaminline
            operator>>(double &arg)istreaminline
            operator>>(float &arg)istreaminline
            operator>>(void *&arg)istreaminline
            outios_basestatic
            peek()ifstream
            istream::peek()istream
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekg(pos_type pos)istreaminline
            seekg(off_type off, seekdir way)istreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipWhite()istream
            skipwsios_basestatic
            streamsize typedefios_base
            tellg()istreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream.html deleted file mode 100644 index 29dad34b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream.html +++ /dev/null @@ -1,2848 +0,0 @@ - - - - - - - -SdFat: ifstream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            file input stream. - More...

            - -

            #include <fstream.h>

            -
            -Inheritance diagram for ifstream:
            -
            -
            Inheritance graph
            - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for ifstream:
            -
            -
            Collaboration graph
            - - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            void close ()
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            streamsize gcount () const
             
            int get ()
             
            istreamget (char &ch)
             
            istreamget (char *str, streamsize n, char delim='\n')
             
            istreamgetline (char *str, streamsize n, char delim='\n')
             
            bool good () const
             
             ifstream (const char *path, openmode mode=in)
             
            istreamignore (streamsize n=1, int delim=-1)
             
            bool is_open ()
             
            void open (const char *path, openmode mode=in)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            istreamoperator>> (bool &arg)
             
            istreamoperator>> (char &ch)
             
            istreamoperator>> (char *str)
             
            istreamoperator>> (double &arg)
             
            istreamoperator>> (float &arg)
             
            istreamoperator>> (int &arg)
             
            istreamoperator>> (ios &(*pf)(ios &str))
             
            istreamoperator>> (ios_base &(*pf)(ios_base &str))
             
            istreamoperator>> (istream &(*pf)(istream &str))
             
            istreamoperator>> (long &arg)
             
            istreamoperator>> (short &arg)
             
            istreamoperator>> (signed char &ch)
             
            istreamoperator>> (signed char *str)
             
            istreamoperator>> (unsigned char &ch)
             
            istreamoperator>> (unsigned char *str)
             
            istreamoperator>> (unsigned int &arg)
             
            istreamoperator>> (unsigned long &arg)
             
            istreamoperator>> (unsigned short &arg)
             
            istreamoperator>> (void *&arg)
             
            int peek ()
             
            int peek ()
             
            int precision () const
             
            int precision (unsigned int n)
             
            iostate rdstate () const
             
            istreamseekg (off_type off, seekdir way)
             
            istreamseekg (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void skipWhite ()
             
            pos_type tellg ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            - - - - - - - -

            -Private Member Functions

            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            -

            Detailed Description

            -

            file input stream.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ ifstream()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ifstream::ifstream (const char * path,
            openmode mode = in 
            )
            -
            -inlineexplicit
            -
            -

            Constructor with open

            Parameters
            - - - -
            [in]pathfile to open
            [in]modeopen mode
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ifstream::close ()
            -
            -inline
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ gcount()

            - -
            -
            - - - - - -
            - - - - - - - -
            streamsize istream::gcount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of characters extracted by the last unformatted input function.
            - -
            -
            - -

            ◆ get() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::get ()
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Returns
            The character or -1 if a failure occurs. A failure is indicated by the stream state.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ get() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream & istream::get (char & ch)
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Parameters
            - - -
            [out]chlocation to receive the extracted character.
            -
            -
            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ get() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::get (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters.

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ getline()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::getline (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

            -

            The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ ignore()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream & istream::ignore (streamsize n = 1,
            int delim = -1 
            )
            -
            -inherited
            -
            -

            Extract characters and discard them.

            -
            Parameters
            - - - -
            [in]nmaximum number of characters to ignore.
            [in]delimDelimiter.
            -
            -
            -

            Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

            -

            Failures are indicated by the state of the stream.

            -
            Returns
            *this
            - -
            -
            - -

            ◆ is_open()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ifstream::is_open ()
            -
            -inline
            -
            -
            Returns
            True if stream is open else false.
            - -
            -
            - -

            ◆ open()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void ifstream::open (const char * path,
            openmode mode = in 
            )
            -
            -inline
            -
            -

            Open an ifstream

            Parameters
            - - - -
            [in]pathfile to open
            [in]modeopen mode
            -
            -
            -

            mode See fstream::open() for valid modes.

            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator>>() [1/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (bool & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type bool.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [2/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [3/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [4/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (double & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type double.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [5/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (float & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type float.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [6/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [7/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios &(*)(ios &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [8/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [9/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (istream &(*)(istream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [10/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [11/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [12/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [13/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [14/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [15/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [16/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [17/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [18/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [19/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (void *& arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type void*.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ peek() [1/2]

            - -
            -
            - - - - -
            int istream::peek
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ peek() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::peek ()
            -
            -inherited
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekg() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream& istream::seekg (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekg() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::seekg (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the read pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ skipWhite()

            - -
            -
            - - - - - -
            - - - - - - - -
            void istream::skipWhite ()
            -
            -inherited
            -
            -

            used to implement ws()

            - -
            -
            - -

            ◆ tellg()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type istream::tellg ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/fstream.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream__coll__graph.png deleted file mode 100644 index df2931c1e0385f0599cb2be83b5a4336b625e381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6167 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classifstream__inherit__graph.png deleted file mode 100644 index df2931c1e0385f0599cb2be83b5a4336b625e381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6167 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios-members.html deleted file mode 100644 index 167d53c0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios-members.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ios Member List
            -
            -
            - -

            This is the complete list of members for ios, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios.html deleted file mode 100644 index e557868a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios.html +++ /dev/null @@ -1,1614 +0,0 @@ - - - - - - - -SdFat: ios Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Error and state information for all streams. - More...

            - -

            #include <ios.h>

            -
            -Inheritance diagram for ios:
            -
            -
            Inheritance graph
            - - - - - - - - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for ios:
            -
            -
            Collaboration graph
            - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            bool good () const
             
             ios ()
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            int precision () const
             
            int precision (unsigned int n)
             
            iostate rdstate () const
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Error and state information for all streams.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ ios()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::ios ()
            -
            -inline
            -
            -

            Create ios with no error flags set

            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inline
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inline
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inline
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inline
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inline
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicit
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inline
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inline
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inline
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inline
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/ios.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base-members.html deleted file mode 100644 index 16640c87..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base-members.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ios_base Member List
            -
            -
            - -

            This is the complete list of members for ios_base, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eofbitios_basestatic
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            internalios_basestatic
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rightios_basestatic
            seekdir enum nameios_base
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base.html deleted file mode 100644 index eb39a69d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base.html +++ /dev/null @@ -1,1222 +0,0 @@ - - - - - - - -SdFat: ios_base Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Base class for all streams. - More...

            - -

            #include <ios.h>

            -
            -Inheritance diagram for ios_base:
            -
            -
            Inheritance graph
            - - - - - - - - - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            int precision () const
             
            int precision (unsigned int n)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Base class for all streams.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - -
            enum ios_base::seekdir
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inline
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inline
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inline
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inline
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inline
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inline
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inline
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inline
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inline
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inline
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inline
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -static
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -static
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -static
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -static
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -static
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -static
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -static
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -static
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -static
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -static
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -static
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -static
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -static
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -static
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -static
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -static
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -static
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -static
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -static
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -static
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -static
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -static
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -static
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -static
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/ios.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__base__inherit__graph.png deleted file mode 100644 index 90170c98a2004a8265aa65b5e3555de41397b5ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18294 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__coll__graph.png deleted file mode 100644 index d817f0a07a15d3ce2935c5a87b33d9f5ff5b9b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmeAS@N?(olHy`uVBq!ia0vp^p+H=~!3HGrr`X&FQfx`y?k)`fL2$v|<&zm0n6G-e zIEGZrc{}%fwy>i_+x_*OK{~FQ9ho637O0=E`mmr^NrQtcsy@`VYTKgcQ5&BBvhNVL zt=hUI;Xlv8<___N3UOCTjys25Dly)@`uDpt$G$fP8O=Vkr*cMqnVD~p1BYTuhlF=# zHe&?ig%uXwv6XxeO6w0toSJ)%X-A~zoL|Q6BH_O0nb&>Z)Wf5HN$PUisvqtuQyZ2D zO$cF1^(CS} zr*MvCpXf{T{P}Bi;+&?}PgFO2voG~apjOY!SBDR1?o8a>yym0E?ygl!nVwFclW%)o zs^6%1wch_#-#5D+)7F(vUiQoDUHmC~|M{7JjW<{i?9t-VY*{T=Sd5Kh>VmQ&nLl3((E)T};CxyM7t5Ke(EZJnKsN{<{53 zj%l_eX1(ItS5w&?_rCarLGvE@oE1mImR*gqNPc#WVb9MmFK_<5P`PQv(OFs3&M-F= zTQJ_aFKXp4cG26m?$61*=Wo~;W+cA<^5w|R3o|!$#JxIp>=>)D4^u<&55@$$f+aqS zrq5E@@l>XYA)zg{VfU@P`}c*druVN{DrfN_;}B2ywv>N~HlAvFtlU$ZS1dJ?nmwKI z_TBr>=HxPYUh#Ig5;WKQ9aG-z(@kmXIBy)CIg|aj)6-K*Q7hZ|bbT1hYQ>_bicu?P&)#A7XGP?s8*^V>5>bv?*|7WhoeSFg42|d9+yB3C^(7C>&Y-N_ ze?J&J@SFMbQ{<(bZ+Ripwd@1Ee1*zoH}qUrjS)Ujq}s?Obo%~^ZHd!rSb5TZ+_-M@ zP-frE+*l5a_GSjV7EcQ$AAkFTx8DxEyHnsEBQ=l?YrboBIu+J9J2n?C*G>#uzqel4$`kW^MS z&DJIH+V$%jckS|e9iI)i-ytN(damCKj->)qujFl)wsO*RQ7sMWc*VSbu3!4?oVW3O zZ0Q@{M`SFTbjyF%gZtZSk0&LloU&J2=y1gNs{8iap+AiSeops!^ZRB-`l|IuLjSQ! zOnE$6boPn5tjK>GmBA?s;l&HzS9*JUzft7cyltD?+xb7`HKQ297~cF?cF&^%n6q98 gIB_VtJpIE`-|>Ct+>ZI?z%0+;>FVdQ&MBb@0Olp>#{d8T diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classios__inherit__graph.png deleted file mode 100644 index 58fb612dd7507e9a0151443a59dcbdf39f78cfcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18281 zcmdqJWmr^U_cywS2B{G#k#JB@x=TtK1O%jJ2wt^w(8q(Mcb8A?Ks z?vAs^=l`7RJ?}Z^I^WOsgBP2<_r30Qul%jG2-SS5L_v0w3;+NM6=k?K0O0ii07R37 z2)vW&h3*9ZBeGCcf&*8$f9XwmF#x~@sK6g0e3I9veFJWJUdU~a`FpwVJ1MAoJ=e*1 zQ@Qr)Rc5*yN#9-Xy2;(8GsQ62-K1ZYDB_b)BXwJ`8+A7nC*4TH+moS^!4_w$m3=|CCQNa@M-A3v5;5+){&g8m3^QOU#q-!B7b2|in9 z7&YEcBDOhCw!0RRDB?!SSLl3gMiXLrIPGr%AkUu}9{QQoi5mvfAZ(&Up}G1BOo%n{ zbp4nCs8)_8l@JuXv~F_r{9DHMGaC)=MvnO_HQbF)??{E9C$VwIr=jS4xZpz$Sc^r9 z7Yw#bKw||1uS}7m*J|*fobhIQ$v|cJ)yz^xYJYZ0ba91d88tMTO5h z_{W3i^*o;QM54oNbH^Z`PzgZLswXuZ z9{V2T7j1iC)78v^?F}q+cq9e&fr(WKRyMk3cIw~02B6VgjQwm-Ek&}oiIjAMN|5sz z*GwfJW-2K3gt!~rh~jlu8wiR^mhjt`T`3lj)l}fwAY7k+dr_bpI|RrR(5Sh8qi>1` zMWfGOgR3EvJ=aE=@4s>d(!*GQ3TaC47Xfc@zqmEl$%s(~P$U>YW}^I0#Gw=)_&H+S z=d@PW=-)%zNDDfS1FMQ3{LvqH1#Zz4cj~lvsg+r%ls!)^F&_zxC@a`tFaTs^{@46^ zcVJ|{8!kf9qcxPP$l*szkE0pn28MxxLfsQ}3!>LwUc=p21*ca75IQQvj>ru0)gpgp&UuXa1{8Uf}?o+SURtr$%qyAH>uYuxwPe9#RG<*o^0E~+W>P^E&{g7wlw;*Qa zx{CVE%rF7e$P8Q=C&i0`L+|sgMN|HI-U5H%zhwbR-2ce-|EKW(|Nj9v9FZwYA-{K^ zW7v>HgtxF;Eep(YFS2UD;hoTZDFBuU9j68O8rFqM7LKF1i)-;h;q&Y!-5?X|EWx9^ zyBwuJxg+(4%6C4Lb2~)tylqVYR1+!*qW?`_Kq>mCbN{PC^-X4ku&jELfJ9i}PT#

            V*07^|j!xxCcSslT5Hy`5+5_~uW)SB3; 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 I&MBb@0Qb#u?f?J) diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream-members.html deleted file mode 100644 index 52ab13f7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream-members.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -

            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            iostream Member List
            -
            -
            - -

            This is the complete list of members for iostream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            flush()ostreaminline
            fmtflags typedefios_base
            gcount() constistreaminline
            get()istream
            get(char &ch)istream
            get(char *str, streamsize n, char delim='\n')istream
            getline(char *str, streamsize n, char delim='\n')istream
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            ignore(streamsize n=1, int delim=-1)istream
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            istream() (defined in istream)istreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator<<(ostream &(*pf)(ostream &str))ostreaminline
            operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
            operator<<(bool arg)ostreaminline
            operator<<(const char *arg)ostreaminline
            operator<<(const signed char *arg)ostreaminline
            operator<<(const unsigned char *arg)ostreaminline
            operator<<(const String &arg)ostreaminline
            operator<<(char arg)ostreaminline
            operator<<(signed char arg)ostreaminline
            operator<<(unsigned char arg)ostreaminline
            operator<<(double arg)ostreaminline
            operator<<(float arg)ostreaminline
            operator<<(short arg)ostreaminline
            operator<<(unsigned short arg)ostreaminline
            operator<<(int arg)ostreaminline
            operator<<(unsigned int arg)ostreaminline
            operator<<(long arg)ostreaminline
            operator<<(unsigned long arg)ostreaminline
            operator<<(long long arg)ostreaminline
            operator<<(unsigned long long arg)ostreaminline
            operator<<(const void *arg)ostreaminline
            operator<<(const __FlashStringHelper *arg)ostreaminline
            operator>>(istream &(*pf)(istream &str))istreaminline
            operator>>(ios_base &(*pf)(ios_base &str))istreaminline
            operator>>(ios &(*pf)(ios &str))istreaminline
            operator>>(char *str)istreaminline
            operator>>(char &ch)istreaminline
            operator>>(signed char *str)istreaminline
            operator>>(signed char &ch)istreaminline
            operator>>(unsigned char *str)istreaminline
            operator>>(unsigned char &ch)istreaminline
            operator>>(bool &arg)istreaminline
            operator>>(short &arg)istreaminline
            operator>>(unsigned short &arg)istreaminline
            operator>>(int &arg)istreaminline
            operator>>(unsigned int &arg)istreaminline
            operator>>(long &arg)istreaminline
            operator>>(unsigned long &arg)istreaminline
            operator>>(double &arg)istreaminline
            operator>>(float &arg)istreaminline
            operator>>(void *&arg)istreaminline
            ostream() (defined in ostream)ostreaminline
            outios_basestatic
            peek()istream
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            put(char ch)ostreaminline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekg(pos_type pos)istreaminline
            seekg(off_type off, seekdir way)istreaminline
            seekp(pos_type pos)ostreaminline
            seekp(off_type off, seekdir way)ostreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipWhite()istream
            skipwsios_basestatic
            streamsize typedefios_base
            tellg()istreaminline
            tellp()ostreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream.html deleted file mode 100644 index 01889077..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream.html +++ /dev/null @@ -1,3616 +0,0 @@ - - - - - - - -SdFat: iostream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Input/Output stream. - More...

            - -

            #include <iostream.h>

            -
            -Inheritance diagram for iostream:
            -
            -
            Inheritance graph
            - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for iostream:
            -
            -
            Collaboration graph
            - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            ostreamflush ()
             
            streamsize gcount () const
             
            int get ()
             
            istreamget (char &ch)
             
            istreamget (char *str, streamsize n, char delim='\n')
             
            istreamgetline (char *str, streamsize n, char delim='\n')
             
            bool good () const
             
            istreamignore (streamsize n=1, int delim=-1)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            ostreamoperator<< (bool arg)
             
            ostreamoperator<< (char arg)
             
            ostreamoperator<< (const __FlashStringHelper *arg)
             
            ostreamoperator<< (const char *arg)
             
            ostreamoperator<< (const signed char *arg)
             
            ostreamoperator<< (const String &arg)
             
            ostreamoperator<< (const unsigned char *arg)
             
            ostreamoperator<< (const void *arg)
             
            ostreamoperator<< (double arg)
             
            ostreamoperator<< (float arg)
             
            ostreamoperator<< (int arg)
             
            ostreamoperator<< (ios_base &(*pf)(ios_base &str))
             
            ostreamoperator<< (long arg)
             
            ostreamoperator<< (long long arg)
             
            ostreamoperator<< (ostream &(*pf)(ostream &str))
             
            ostreamoperator<< (short arg)
             
            ostreamoperator<< (signed char arg)
             
            ostreamoperator<< (unsigned char arg)
             
            ostreamoperator<< (unsigned int arg)
             
            ostreamoperator<< (unsigned long arg)
             
            ostreamoperator<< (unsigned long long arg)
             
            ostreamoperator<< (unsigned short arg)
             
            istreamoperator>> (bool &arg)
             
            istreamoperator>> (char &ch)
             
            istreamoperator>> (char *str)
             
            istreamoperator>> (double &arg)
             
            istreamoperator>> (float &arg)
             
            istreamoperator>> (int &arg)
             
            istreamoperator>> (ios &(*pf)(ios &str))
             
            istreamoperator>> (ios_base &(*pf)(ios_base &str))
             
            istreamoperator>> (istream &(*pf)(istream &str))
             
            istreamoperator>> (long &arg)
             
            istreamoperator>> (short &arg)
             
            istreamoperator>> (signed char &ch)
             
            istreamoperator>> (signed char *str)
             
            istreamoperator>> (unsigned char &ch)
             
            istreamoperator>> (unsigned char *str)
             
            istreamoperator>> (unsigned int &arg)
             
            istreamoperator>> (unsigned long &arg)
             
            istreamoperator>> (unsigned short &arg)
             
            istreamoperator>> (void *&arg)
             
            int peek ()
             
            int precision () const
             
            int precision (unsigned int n)
             
            ostreamput (char ch)
             
            iostate rdstate () const
             
            istreamseekg (off_type off, seekdir way)
             
            istreamseekg (pos_type pos)
             
            ostreamseekp (off_type off, seekdir way)
             
            ostreamseekp (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void skipWhite ()
             
            pos_type tellg ()
             
            pos_type tellp ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Input/Output stream.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            ostream& ostream::flush ()
            -
            -inlineinherited
            -
            -

            Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ gcount()

            - -
            -
            - - - - - -
            - - - - - - - -
            streamsize istream::gcount () const
            -
            -inlineinherited
            -
            -
            Returns
            The number of characters extracted by the last unformatted input function.
            - -
            -
            - -

            ◆ get() [1/3]

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::get ()
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Returns
            The character or -1 if a failure occurs. A failure is indicated by the stream state.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ get() [2/3]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream & istream::get (char & ch)
            -
            -inherited
            -
            -

            Extract a character if one is available.

            -
            Parameters
            - - -
            [out]chlocation to receive the extracted character.
            -
            -
            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ get() [3/3]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::get (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters.

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ getline()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::getline (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -inherited
            -
            -

            Extract characters

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

            -

            The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ ignore()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream & istream::ignore (streamsize n = 1,
            int delim = -1 
            )
            -
            -inherited
            -
            -

            Extract characters and discard them.

            -
            Parameters
            - - - -
            [in]nmaximum number of characters to ignore.
            [in]delimDelimiter.
            -
            -
            -

            Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

            -

            Failures are indicated by the state of the stream.

            -
            Returns
            *this
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator<<() [1/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (bool arg)
            -
            -inlineinherited
            -
            -

            Output bool

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [2/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [3/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const __FlashStringHelper * arg)
            -
            -inlineinherited
            -
            -

            Output a string from flash using the Arduino F() macro.

            Parameters
            - - -
            [in]argpointing to flash string
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [4/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [5/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const signed char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [6/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const String & arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [7/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const unsigned char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [8/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const void * arg)
            -
            -inlineinherited
            -
            -

            Output pointer

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [9/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (double arg)
            -
            -inlineinherited
            -
            -

            Output double

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [10/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (float arg)
            -
            -inlineinherited
            -
            -

            Output float

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [11/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (int arg)
            -
            -inlineinherited
            -
            -

            Output signed int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [12/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [13/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long arg)
            -
            -inlineinherited
            -
            -

            Output signed long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [14/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long long arg)
            -
            -inlineinherited
            -
            -

            Output signed long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [15/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [16/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (short arg)
            -
            -inlineinherited
            -
            -

            Output signed short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [17/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (signed char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [18/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [19/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned int arg)
            -
            -inlineinherited
            -
            -

            Output unsigned int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [20/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [21/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [22/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned short arg)
            -
            -inlineinherited
            -
            -

            Output unsigned short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [1/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (bool & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type bool.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [2/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [3/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [4/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (double & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type double.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [5/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (float & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type float.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [6/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [7/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios &(*)(ios &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [8/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [9/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (istream &(*)(istream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [10/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [11/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [12/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [13/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [14/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char & ch)
            -
            -inlineinherited
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [15/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char * str)
            -
            -inlineinherited
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [16/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned int & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [17/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned long & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [18/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned short & arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type unsigned short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [19/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (void *& arg)
            -
            -inlineinherited
            -
            -

            Extract a value of type void*.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - -
            - - - - - - - -
            int istream::peek ()
            -
            -inherited
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ put()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::put (char ch)
            -
            -inlineinherited
            -
            -

            Puts a character in a stream.

            -

            The unformatted output function inserts the element ch. It returns *this.

            -
            Parameters
            - - -
            [in]chThe character
            -
            -
            -
            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekg() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream& istream::seekg (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekg() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::seekg (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the read pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ostream& ostream::seekp (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::seekp (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the write pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ skipWhite()

            - -
            -
            - - - - - -
            - - - - - - - -
            void istream::skipWhite ()
            -
            -inherited
            -
            -

            used to implement ws()

            - -
            -
            - -

            ◆ tellg()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type istream::tellg ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ tellp()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type ostream::tellp ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/iostream.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classiostream__coll__graph.png deleted file mode 100644 index 749d6536cf084968c1134487676cd901a7c38ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5739 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 bQ - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            istream Member List
            -
            -
            - -

            This is the complete list of members for istream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            fmtflags typedefios_base
            gcount() constistreaminline
            get()istream
            get(char &ch)istream
            get(char *str, streamsize n, char delim='\n')istream
            getline(char *str, streamsize n, char delim='\n')istream
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            ignore(streamsize n=1, int delim=-1)istream
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            istream() (defined in istream)istreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator>>(istream &(*pf)(istream &str))istreaminline
            operator>>(ios_base &(*pf)(ios_base &str))istreaminline
            operator>>(ios &(*pf)(ios &str))istreaminline
            operator>>(char *str)istreaminline
            operator>>(char &ch)istreaminline
            operator>>(signed char *str)istreaminline
            operator>>(signed char &ch)istreaminline
            operator>>(unsigned char *str)istreaminline
            operator>>(unsigned char &ch)istreaminline
            operator>>(bool &arg)istreaminline
            operator>>(short &arg)istreaminline
            operator>>(unsigned short &arg)istreaminline
            operator>>(int &arg)istreaminline
            operator>>(unsigned int &arg)istreaminline
            operator>>(long &arg)istreaminline
            operator>>(unsigned long &arg)istreaminline
            operator>>(double &arg)istreaminline
            operator>>(float &arg)istreaminline
            operator>>(void *&arg)istreaminline
            outios_basestatic
            peek()istream
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekg(pos_type pos)istreaminline
            seekg(off_type off, seekdir way)istreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipWhite()istream
            skipwsios_basestatic
            streamsize typedefios_base
            tellg()istreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream.html deleted file mode 100644 index 66d76df1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream.html +++ /dev/null @@ -1,2616 +0,0 @@ - - - - - - - -SdFat: istream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Input Stream. - More...

            - -

            #include <istream.h>

            -
            -Inheritance diagram for istream:
            -
            -
            Inheritance graph
            - - - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for istream:
            -
            -
            Collaboration graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            streamsize gcount () const
             
            int get ()
             
            istreamget (char &ch)
             
            istreamget (char *str, streamsize n, char delim='\n')
             
            istreamgetline (char *str, streamsize n, char delim='\n')
             
            bool good () const
             
            istreamignore (streamsize n=1, int delim=-1)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            istreamoperator>> (bool &arg)
             
            istreamoperator>> (char &ch)
             
            istreamoperator>> (char *str)
             
            istreamoperator>> (double &arg)
             
            istreamoperator>> (float &arg)
             
            istreamoperator>> (int &arg)
             
            istreamoperator>> (ios &(*pf)(ios &str))
             
            istreamoperator>> (ios_base &(*pf)(ios_base &str))
             
            istreamoperator>> (istream &(*pf)(istream &str))
             
            istreamoperator>> (long &arg)
             
            istreamoperator>> (short &arg)
             
            istreamoperator>> (signed char &ch)
             
            istreamoperator>> (signed char *str)
             
            istreamoperator>> (unsigned char &ch)
             
            istreamoperator>> (unsigned char *str)
             
            istreamoperator>> (unsigned int &arg)
             
            istreamoperator>> (unsigned long &arg)
             
            istreamoperator>> (unsigned short &arg)
             
            istreamoperator>> (void *&arg)
             
            int peek ()
             
            int precision () const
             
            int precision (unsigned int n)
             
            iostate rdstate () const
             
            istreamseekg (off_type off, seekdir way)
             
            istreamseekg (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            void skipWhite ()
             
            pos_type tellg ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Input Stream.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ gcount()

            - -
            -
            - - - - - -
            - - - - - - - -
            streamsize istream::gcount () const
            -
            -inline
            -
            -
            Returns
            The number of characters extracted by the last unformatted input function.
            - -
            -
            - -

            ◆ get() [1/3]

            - -
            -
            - - - - - - - -
            int istream::get ()
            -
            -

            Extract a character if one is available.

            -
            Returns
            The character or -1 if a failure occurs. A failure is indicated by the stream state.
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            - -
            -
            - -

            ◆ get() [2/3]

            - -
            -
            - - - - - - - - -
            istream & istream::get (char & ch)
            -
            -

            Extract a character if one is available.

            -
            Parameters
            - - -
            [out]chlocation to receive the extracted character.
            -
            -
            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ get() [3/3]

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::get (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -

            Extract characters.

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ getline()

            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            istream & istream::getline (char * str,
            streamsize n,
            char delim = '\n' 
            )
            -
            -

            Extract characters

            -
            Parameters
            - - - - -
            [out]strLocation to receive extracted characters.
            [in]nSize of str.
            [in]delimDelimiter
            -
            -
            -

            Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

            -

            The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

            -
            Returns
            always returns *this. A failure is indicated by the stream state.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ ignore()

            - -
            -
            - - - - - - - - - - - - - - - - - - -
            istream & istream::ignore (streamsize n = 1,
            int delim = -1 
            )
            -
            -

            Extract characters and discard them.

            -
            Parameters
            - - - -
            [in]nmaximum number of characters to ignore.
            [in]delimDelimiter.
            -
            -
            -

            Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

            -

            Failures are indicated by the state of the stream.

            -
            Returns
            *this
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator>>() [1/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (bool & arg)
            -
            -inline
            -
            -

            Extract a value of type bool.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [2/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char & ch)
            -
            -inline
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [3/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (char * str)
            -
            -inline
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [4/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (double & arg)
            -
            -inline
            -
            -

            Extract a value of type double.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [5/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (float & arg)
            -
            -inline
            -
            -

            Extract a value of type float.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [6/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (int & arg)
            -
            -inline
            -
            -

            Extract a value of type int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [7/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios &(*)(ios &str) pf)
            -
            -inline
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [8/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
            -
            -inline
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [9/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (istream &(*)(istream &str) pf)
            -
            -inline
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator>>() [10/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (long & arg)
            -
            -inline
            -
            -

            Extract a value of type long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [11/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (short & arg)
            -
            -inline
            -
            -

            Extract a value of type short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [12/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char & ch)
            -
            -inline
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [13/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (signed char * str)
            -
            -inline
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [14/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char & ch)
            -
            -inline
            -
            -

            Extract a character

            Parameters
            - - -
            [out]chlocation to store the character.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [15/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned char * str)
            -
            -inline
            -
            -

            Extract a character string

            Parameters
            - - -
            [out]strlocation to store the string.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [16/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned int & arg)
            -
            -inline
            -
            -

            Extract a value of type unsigned int.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [17/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned long & arg)
            -
            -inline
            -
            -

            Extract a value of type unsigned long.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [18/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (unsigned short & arg)
            -
            -inline
            -
            -

            Extract a value of type unsigned short.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ operator>>() [19/19]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::operator>> (void *& arg)
            -
            -inline
            -
            -

            Extract a value of type void*.

            Parameters
            - - -
            [out]arglocation to store the value.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ peek()

            - -
            -
            - - - - - - - -
            int istream::peek ()
            -
            -

            Return the next available character without consuming it.

            -
            Returns
            The character if the stream state is good else -1;
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekg() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            istream& istream::seekg (off_type off,
            seekdir way 
            )
            -
            -inline
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekg() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            istream& istream::seekg (pos_type pos)
            -
            -inline
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the read pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ skipWhite()

            - -
            -
            - - - - - - - -
            void istream::skipWhite ()
            -
            -

            used to implement ws()

            - -
            -
            - -

            ◆ tellg()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type istream::tellg ()
            -
            -inline
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/iostream/istream.h
            • -
            • Arduino/libraries/SdFat/src/iostream/istream.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classistream__coll__graph.png deleted file mode 100644 index d4c4e3ab6e65ad39821426b40276c6e1f44602ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1704 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 Nz*o!-ia<9W{0DP_9NPc@ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream-members.html deleted file mode 100644 index 19e771e0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream-members.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            obufstream Member List
            -
            -
            - -

            This is the complete list of members for obufstream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            buf()obufstreaminline
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            flush()ostreaminline
            fmtflags typedefios_base
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            init(char *buf, size_t size)obufstreaminline
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            leftios_basestatic
            length()obufstreaminline
            obufstream()obufstreaminline
            obufstream(char *buf, size_t size)obufstreaminline
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator<<(ostream &(*pf)(ostream &str))ostreaminline
            operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
            operator<<(bool arg)ostreaminline
            operator<<(const char *arg)ostreaminline
            operator<<(const signed char *arg)ostreaminline
            operator<<(const unsigned char *arg)ostreaminline
            operator<<(const String &arg)ostreaminline
            operator<<(char arg)ostreaminline
            operator<<(signed char arg)ostreaminline
            operator<<(unsigned char arg)ostreaminline
            operator<<(double arg)ostreaminline
            operator<<(float arg)ostreaminline
            operator<<(short arg)ostreaminline
            operator<<(unsigned short arg)ostreaminline
            operator<<(int arg)ostreaminline
            operator<<(unsigned int arg)ostreaminline
            operator<<(long arg)ostreaminline
            operator<<(unsigned long arg)ostreaminline
            operator<<(long long arg)ostreaminline
            operator<<(unsigned long long arg)ostreaminline
            operator<<(const void *arg)ostreaminline
            operator<<(const __FlashStringHelper *arg)ostreaminline
            ostream() (defined in ostream)ostreaminline
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            put(char ch)ostreaminline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekp(pos_type pos)ostreaminline
            seekp(off_type off, seekdir way)ostreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            tellp()ostreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream.html deleted file mode 100644 index f160b80d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream.html +++ /dev/null @@ -1,2698 +0,0 @@ - - - - - - - -SdFat: obufstream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            format a char string - More...

            - -

            #include <bufstream.h>

            -
            -Inheritance diagram for obufstream:
            -
            -
            Inheritance graph
            - - - - - - -
            [legend]
            -
            -Collaboration diagram for obufstream:
            -
            -
            Collaboration graph
            - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            char * buf ()
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            ostreamflush ()
             
            bool good () const
             
            void init (char *buf, size_t size)
             
            size_t length ()
             
             obufstream ()
             
             obufstream (char *buf, size_t size)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            ostreamoperator<< (bool arg)
             
            ostreamoperator<< (char arg)
             
            ostreamoperator<< (const __FlashStringHelper *arg)
             
            ostreamoperator<< (const char *arg)
             
            ostreamoperator<< (const signed char *arg)
             
            ostreamoperator<< (const String &arg)
             
            ostreamoperator<< (const unsigned char *arg)
             
            ostreamoperator<< (const void *arg)
             
            ostreamoperator<< (double arg)
             
            ostreamoperator<< (float arg)
             
            ostreamoperator<< (int arg)
             
            ostreamoperator<< (ios_base &(*pf)(ios_base &str))
             
            ostreamoperator<< (long arg)
             
            ostreamoperator<< (long long arg)
             
            ostreamoperator<< (ostream &(*pf)(ostream &str))
             
            ostreamoperator<< (short arg)
             
            ostreamoperator<< (signed char arg)
             
            ostreamoperator<< (unsigned char arg)
             
            ostreamoperator<< (unsigned int arg)
             
            ostreamoperator<< (unsigned long arg)
             
            ostreamoperator<< (unsigned long long arg)
             
            ostreamoperator<< (unsigned short arg)
             
            int precision () const
             
            int precision (unsigned int n)
             
            ostreamput (char ch)
             
            iostate rdstate () const
             
            ostreamseekp (off_type off, seekdir way)
             
            ostreamseekp (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            pos_type tellp ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            format a char string

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ obufstream() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            obufstream::obufstream ()
            -
            -inline
            -
            -

            constructor

            - -
            -
            - -

            ◆ obufstream() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            obufstream::obufstream (char * buf,
            size_t size 
            )
            -
            -inline
            -
            -

            Constructor

            Parameters
            - - - -
            [in]bufbuffer for formatted string
            [in]sizebuffer size
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ buf()

            - -
            -
            - - - - - -
            - - - - - - - -
            char* obufstream::buf ()
            -
            -inline
            -
            -
            Returns
            a pointer to the buffer
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            ostream& ostream::flush ()
            -
            -inlineinherited
            -
            -

            Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ init()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void obufstream::init (char * buf,
            size_t size 
            )
            -
            -inline
            -
            -

            Initialize an obufstream

            Parameters
            - - - -
            [in]bufbuffer for formatted string
            [in]sizebuffer size
            -
            -
            - -
            -
            - -

            ◆ length()

            - -
            -
            - - - - - -
            - - - - - - - -
            size_t obufstream::length ()
            -
            -inline
            -
            -
            Returns
            the length of the formatted string
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator<<() [1/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (bool arg)
            -
            -inlineinherited
            -
            -

            Output bool

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [2/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [3/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const __FlashStringHelper * arg)
            -
            -inlineinherited
            -
            -

            Output a string from flash using the Arduino F() macro.

            Parameters
            - - -
            [in]argpointing to flash string
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [4/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [5/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const signed char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [6/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const String & arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [7/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const unsigned char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [8/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const void * arg)
            -
            -inlineinherited
            -
            -

            Output pointer

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [9/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (double arg)
            -
            -inlineinherited
            -
            -

            Output double

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [10/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (float arg)
            -
            -inlineinherited
            -
            -

            Output float

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [11/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (int arg)
            -
            -inlineinherited
            -
            -

            Output signed int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [12/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [13/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long arg)
            -
            -inlineinherited
            -
            -

            Output signed long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [14/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long long arg)
            -
            -inlineinherited
            -
            -

            Output signed long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [15/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [16/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (short arg)
            -
            -inlineinherited
            -
            -

            Output signed short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [17/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (signed char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [18/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [19/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned int arg)
            -
            -inlineinherited
            -
            -

            Output unsigned int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [20/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [21/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [22/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned short arg)
            -
            -inlineinherited
            -
            -

            Output unsigned short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ put()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::put (char ch)
            -
            -inlineinherited
            -
            -

            Puts a character in a stream.

            -

            The unformatted output function inserts the element ch. It returns *this.

            -
            Parameters
            - - -
            [in]chThe character
            -
            -
            -
            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekp() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ostream& ostream::seekp (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::seekp (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the write pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ tellp()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type ostream::tellp ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file: -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream__coll__graph.png deleted file mode 100644 index 24cb78cb28b14e96e6aa58a9602d0913eb7ec08a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2474 zcmcK6c{J1u8wc>;FqWY#Q;lr#G7^Ldy2Gxh|||=LYF2J zEsiRW0%$aO1h91OEpiD!A}uSgTzuc=-8g&2*wApByGkf5)EWH7)cZ`;HjSD47D(Xm zC5V{|n#C)fGZYxH1b)W(Nb2JF=iSLk6mY>k{tz{1{joM7s7#er>TaVvpMpzcSF#uw ztGGjg82RH+!CPRSRMLpiT+`lE(yejC*+6@Qf_z7qIaEd@J!yE6Womt&^m@Ry%OovT zNz)QLsdVD{>r?8~y6v+H4)h$$FtILXW{M>i-`T4%+1*_;le1QlX329a zM(8?1ZubzbLNQ)RHYeIR^K4{dMyeLd+)3z7R{H3o1^Yht{lghE&;}(EawS;b&=3?_3Qn0fbPgA`ko;@aNv>P#@e|<5ZR}AHC|5v~uP= zV|Y3kn&@~aDKAeue0$T>%b!c=ZC?C=XD8uez~uaw-<`FIy!7cg>W{7m&TZMS>h}bCR`lr{;u=z7o#v9B>0PS~oj5i+z>pDo2N{Uxacy^*Tc20R7~P0Qazn zitezrAdk_63<03;+7s&$L{akZ$G;6`rQUA>oSnIuWhQrs=PSs@;+iA z5crgMFZ8)E7*_^YSJIa_4Y03OH*}oltqGPjr7hJ~j#{S?p)lAJCa`qKD>-OLE0jVQ zI_fI!3ZrJ%yiA+hg$sazmwt<2jmHzA0Fl*j&2>#zJ8EK*CHFo@%E5}7^&#MlG5-q` z^Zw}bB38eF2hM3=!P;Exg)&I`dvxvvV8u-ZGyz`U)|8_kS&{S7Xl;tb+ZiSwt?Nw8 z54|HWPtX-lSLxu~y+C>L$VCCazc^}?k&)bphYcrC=~3@` zr zsr?fIT>_$LKYU4yhMr$recU>4*@7Nx=e2sLD(42Fp(hh7&-xy?aRqT-0$4GC-api6 z<$mDCUGVX*<(H|{d-IpzCvyUsyq@q6q(El8Jr;#i_~)_CIAt+sHMTz={jgu~;z`|f zXt*ey=koqU{PGE%eA83>fmNSqVak!`Rtyo)txOBg+J)Jvr@8ph8J<{A!(`K@^;xWE zCF0(*m8-Td1Ofa?%f`mCTsh*-v+%>-gr(IC-cwUF(KyVUkW|=$OWZ)G&=O5^rlU-6fpaEPaSnc`*R>#Y=u5i> zOC^0uf`-x1Ccb5^Iobzj3*>jmU8PZPJsrzQ7#OG$HS`y@xJ!w~VsM!9UP592I@jfu z4rC-i2~_qfw~z_|N(H92}i#tZ=~N4{SpK z9Vt`>Z#ZS}T-Vr7gJy#$34mFnuSc9fzW!3e@PPdIaX~cCTO1&V4&i4jDt)cf>Y)VU z3^|ViqB9RN*-GK=&V8;Bey{{NH2afe=fDnJ_X#;z*GOrC%XEW!zFSo=!B8;dc~-2} zXepTP(jn68o)2bs)2;XQe$@U_oFE}(7VFGy33xof``Bgrw^dEQR>K{>F-<{9>#d|P ztK?FeZ<#7J8yJat$l!RB>r&+D-$zI59Q_1x_^RR0+;ivn*q70KgV9Wl=;ffXAwNdW zzG^tQdC?b`mF!}IX7jX0-wId5?=&R)=v0ALtXQ?L$y&OJg~1p3nvC`9mm~mF zzPQgsF4%0oFv~(Z`2R=In>fV;g^R~Z==s$T)dziQT<@C$={trU(TtF!Uue{Bfs^?| zW_v0e{lK?*>p?OelSTq*`O`i`SW3CsrYps2k$Fa%i?dhT|0ZLlkY>i*z z4&of;1|zSMe8ebq&J)JqaPZ@Z#tPL(P5RSiDKDix*qhg}Dqjy(dyOqg5F;_`ZzD~A z4__!RnDvaBTZbb{MU(ctlz;-rvYYVfB`E1?B|Xg!6>)%EE-K=j*^b^%QsX~5?WvC4 zj^7%5@Nwo0Opl}>7)f7Njh(hENMPjs{23M)7)a$Aq1SmdqEQdh|Cs~3sHcY3Z{B#5 xnXebj2#SRE=Gw|koHu?B`OnT{bNl@^=y|M_x_@c?`<>?tz*yQMpO|~a{Q-ivIaUAw diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classobufstream__inherit__graph.png deleted file mode 100644 index 24cb78cb28b14e96e6aa58a9602d0913eb7ec08a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2474 zcmcK6c{J1u8wc>;FqWY#Q;lr#G7^Ldy2Gxh|||=LYF2J zEsiRW0%$aO1h91OEpiD!A}uSgTzuc=-8g&2*wApByGkf5)EWH7)cZ`;HjSD47D(Xm zC5V{|n#C)fGZYxH1b)W(Nb2JF=iSLk6mY>k{tz{1{joM7s7#er>TaVvpMpzcSF#uw ztGGjg82RH+!CPRSRMLpiT+`lE(yejC*+6@Qf_z7qIaEd@J!yE6Womt&^m@Ry%OovT zNz)QLsdVD{>r?8~y6v+H4)h$$FtILXW{M>i-`T4%+1*_;le1QlX329a zM(8?1ZubzbLNQ)RHYeIR^K4{dMyeLd+)3z7R{H3o1^Yht{lghE&;}(EawS;b&=3?_3Qn0fbPgA`ko;@aNv>P#@e|<5ZR}AHC|5v~uP= zV|Y3kn&@~aDKAeue0$T>%b!c=ZC?C=XD8uez~uaw-<`FIy!7cg>W{7m&TZMS>h}bCR`lr{;u=z7o#v9B>0PS~oj5i+z>pDo2N{Uxacy^*Tc20R7~P0Qazn zitezrAdk_63<03;+7s&$L{akZ$G;6`rQUA>oSnIuWhQrs=PSs@;+iA z5crgMFZ8)E7*_^YSJIa_4Y03OH*}oltqGPjr7hJ~j#{S?p)lAJCa`qKD>-OLE0jVQ zI_fI!3ZrJ%yiA+hg$sazmwt<2jmHzA0Fl*j&2>#zJ8EK*CHFo@%E5}7^&#MlG5-q` z^Zw}bB38eF2hM3=!P;Exg)&I`dvxvvV8u-ZGyz`U)|8_kS&{S7Xl;tb+ZiSwt?Nw8 z54|HWPtX-lSLxu~y+C>L$VCCazc^}?k&)bphYcrC=~3@` zr zsr?fIT>_$LKYU4yhMr$recU>4*@7Nx=e2sLD(42Fp(hh7&-xy?aRqT-0$4GC-api6 z<$mDCUGVX*<(H|{d-IpzCvyUsyq@q6q(El8Jr;#i_~)_CIAt+sHMTz={jgu~;z`|f zXt*ey=koqU{PGE%eA83>fmNSqVak!`Rtyo)txOBg+J)Jvr@8ph8J<{A!(`K@^;xWE zCF0(*m8-Td1Ofa?%f`mCTsh*-v+%>-gr(IC-cwUF(KyVUkW|=$OWZ)G&=O5^rlU-6fpaEPaSnc`*R>#Y=u5i> zOC^0uf`-x1Ccb5^Iobzj3*>jmU8PZPJsrzQ7#OG$HS`y@xJ!w~VsM!9UP592I@jfu z4rC-i2~_qfw~z_|N(H92}i#tZ=~N4{SpK z9Vt`>Z#ZS}T-Vr7gJy#$34mFnuSc9fzW!3e@PPdIaX~cCTO1&V4&i4jDt)cf>Y)VU z3^|ViqB9RN*-GK=&V8;Bey{{NH2afe=fDnJ_X#;z*GOrC%XEW!zFSo=!B8;dc~-2} zXepTP(jn68o)2bs)2;XQe$@U_oFE}(7VFGy33xof``Bgrw^dEQR>K{>F-<{9>#d|P ztK?FeZ<#7J8yJat$l!RB>r&+D-$zI59Q_1x_^RR0+;ivn*q70KgV9Wl=;ffXAwNdW zzG^tQdC?b`mF!}IX7jX0-wId5?=&R)=v0ALtXQ?L$y&OJg~1p3nvC`9mm~mF zzPQgsF4%0oFv~(Z`2R=In>fV;g^R~Z==s$T)dziQT<@C$={trU(TtF!Uue{Bfs^?| zW_v0e{lK?*>p?OelSTq*`O`i`SW3CsrYps2k$Fa%i?dhT|0ZLlkY>i*z z4&of;1|zSMe8ebq&J)JqaPZ@Z#tPL(P5RSiDKDix*qhg}Dqjy(dyOqg5F;_`ZzD~A z4__!RnDvaBTZbb{MU(ctlz;-rvYYVfB`E1?B|Xg!6>)%EE-K=j*^b^%QsX~5?WvC4 zj^7%5@Nwo0Opl}>7)f7Njh(hENMPjs{23M)7)a$Aq1SmdqEQdh|Cs~3sHcY3Z{B#5 xnXebj2#SRE=Gw|koHu?B`OnT{bNl@^=y|M_x_@c?`<>?tz*yQMpO|~a{Q-ivIaUAw diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream-members.html deleted file mode 100644 index 9f2fbcf4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream-members.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ofstream Member List
            -
            -
            - -

            This is the complete list of members for ofstream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)ofstreaminline
            close()ofstreaminline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            flush()ostreaminline
            fmtflags typedefios_base
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            is_open()ofstreaminline
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            ofstream() (defined in ofstream)ofstreaminline
            ofstream(const char *path, openmode mode=out)ofstreaminlineexplicit
            open(const char *path, openmode mode=out)ofstreaminline
            FatFile::open(FatVolume *vol, const char *path, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
            FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator<<(ostream &(*pf)(ostream &str))ostreaminline
            operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
            operator<<(bool arg)ostreaminline
            operator<<(const char *arg)ostreaminline
            operator<<(const signed char *arg)ostreaminline
            operator<<(const unsigned char *arg)ostreaminline
            operator<<(const String &arg)ostreaminline
            operator<<(char arg)ostreaminline
            operator<<(signed char arg)ostreaminline
            operator<<(unsigned char arg)ostreaminline
            operator<<(double arg)ostreaminline
            operator<<(float arg)ostreaminline
            operator<<(short arg)ostreaminline
            operator<<(unsigned short arg)ostreaminline
            operator<<(int arg)ostreaminline
            operator<<(unsigned int arg)ostreaminline
            operator<<(long arg)ostreaminline
            operator<<(unsigned long arg)ostreaminline
            operator<<(long long arg)ostreaminline
            operator<<(unsigned long long arg)ostreaminline
            operator<<(const void *arg)ostreaminline
            operator<<(const __FlashStringHelper *arg)ostreaminline
            ostream() (defined in ostream)ostreaminline
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            put(char ch)ostreaminline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekp(pos_type pos)ostreaminline
            seekp(off_type off, seekdir way)ostreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            tellp()ostreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream.html deleted file mode 100644 index e1ad7032..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream.html +++ /dev/null @@ -1,2684 +0,0 @@ - - - - - - - -SdFat: ofstream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            file output stream. - More...

            - -

            #include <fstream.h>

            -
            -Inheritance diagram for ofstream:
            -
            -
            Inheritance graph
            - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for ofstream:
            -
            -
            Collaboration graph
            - - - - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            void close ()
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            ostreamflush ()
             
            bool good () const
             
            bool is_open ()
             
             ofstream (const char *path, openmode mode=out)
             
            void open (const char *path, openmode mode=out)
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            ostreamoperator<< (bool arg)
             
            ostreamoperator<< (char arg)
             
            ostreamoperator<< (const __FlashStringHelper *arg)
             
            ostreamoperator<< (const char *arg)
             
            ostreamoperator<< (const signed char *arg)
             
            ostreamoperator<< (const String &arg)
             
            ostreamoperator<< (const unsigned char *arg)
             
            ostreamoperator<< (const void *arg)
             
            ostreamoperator<< (double arg)
             
            ostreamoperator<< (float arg)
             
            ostreamoperator<< (int arg)
             
            ostreamoperator<< (ios_base &(*pf)(ios_base &str))
             
            ostreamoperator<< (long arg)
             
            ostreamoperator<< (long long arg)
             
            ostreamoperator<< (ostream &(*pf)(ostream &str))
             
            ostreamoperator<< (short arg)
             
            ostreamoperator<< (signed char arg)
             
            ostreamoperator<< (unsigned char arg)
             
            ostreamoperator<< (unsigned int arg)
             
            ostreamoperator<< (unsigned long arg)
             
            ostreamoperator<< (unsigned long long arg)
             
            ostreamoperator<< (unsigned short arg)
             
            int precision () const
             
            int precision (unsigned int n)
             
            ostreamput (char ch)
             
            iostate rdstate () const
             
            ostreamseekp (off_type off, seekdir way)
             
            ostreamseekp (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            pos_type tellp ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            - - - - - - - -

            -Private Member Functions

            bool open (FatFile *dirFile, const char *path, oflag_t oflag)
             
            bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
             
            bool open (FatVolume *vol, const char *path, oflag_t oflag)
             
            -

            Detailed Description

            -

            file output stream.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Constructor & Destructor Documentation

            - -

            ◆ ofstream()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ofstream::ofstream (const char * path,
            openmode mode = out 
            )
            -
            -inlineexplicit
            -
            -

            Constructor with open

            Parameters
            - - - -
            [in]pathfile to open
            [in]modeopen mode
            -
            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ofstream::clear (iostate state = goodbit)
            -
            -inline
            -
            -

            Clear state and writeError

            Parameters
            - - -
            [in]statenew state for stream
            -
            -
            - -
            -
            - -

            ◆ close()

            - -
            -
            - - - - - -
            - - - - - - - -
            void ofstream::close ()
            -
            -inline
            -
            -

            Close a file and force cached data and directory information to be written to the storage device.

            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            ostream& ostream::flush ()
            -
            -inlineinherited
            -
            -

            Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ is_open()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ofstream::is_open ()
            -
            -inline
            -
            -
            Returns
            True if stream is open else false.
            - -
            -
            - -

            ◆ open()

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            void ofstream::open (const char * path,
            openmode mode = out 
            )
            -
            -inline
            -
            -

            Open an ofstream

            Parameters
            - - - -
            [in]pathfile to open
            [in]modeopen mode
            -
            -
            -

            mode See fstream::open() for valid modes.

            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator<<() [1/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (bool arg)
            -
            -inlineinherited
            -
            -

            Output bool

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [2/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [3/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const __FlashStringHelper * arg)
            -
            -inlineinherited
            -
            -

            Output a string from flash using the Arduino F() macro.

            Parameters
            - - -
            [in]argpointing to flash string
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [4/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [5/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const signed char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [6/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const String & arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [7/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const unsigned char * arg)
            -
            -inlineinherited
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [8/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const void * arg)
            -
            -inlineinherited
            -
            -

            Output pointer

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [9/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (double arg)
            -
            -inlineinherited
            -
            -

            Output double

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [10/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (float arg)
            -
            -inlineinherited
            -
            -

            Output float

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [11/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (int arg)
            -
            -inlineinherited
            -
            -

            Output signed int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [12/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [13/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long arg)
            -
            -inlineinherited
            -
            -

            Output signed long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [14/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long long arg)
            -
            -inlineinherited
            -
            -

            Output signed long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [15/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
            -
            -inlineinherited
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [16/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (short arg)
            -
            -inlineinherited
            -
            -

            Output signed short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [17/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (signed char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [18/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned char arg)
            -
            -inlineinherited
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [19/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned int arg)
            -
            -inlineinherited
            -
            -

            Output unsigned int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [20/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [21/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long long arg)
            -
            -inlineinherited
            -
            -

            Output unsigned long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [22/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned short arg)
            -
            -inlineinherited
            -
            -

            Output unsigned short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ put()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::put (char ch)
            -
            -inlineinherited
            -
            -

            Puts a character in a stream.

            -

            The unformatted output function inserts the element ch. It returns *this.

            -
            Parameters
            - - -
            [in]chThe character
            -
            -
            -
            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekp() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ostream& ostream::seekp (off_type off,
            seekdir way 
            )
            -
            -inlineinherited
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::seekp (pos_type pos)
            -
            -inlineinherited
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the write pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ tellp()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type ostream::tellp ()
            -
            -inlineinherited
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following file:
              -
            • Arduino/libraries/SdFat/src/iostream/fstream.h
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream__coll__graph.png deleted file mode 100644 index ecc360599b8ff3a1a909064030eda5b206420b26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6737 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream__inherit__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classofstream__inherit__graph.png deleted file mode 100644 index ecc360599b8ff3a1a909064030eda5b206420b26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6737 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream-members.html deleted file mode 100644 index 518fa3b0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream-members.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            -
            -
            -
            ostream Member List
            -
            -
            - -

            This is the complete list of members for ostream, including all inherited members.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            adjustfieldios_basestatic
            appios_basestatic
            ateios_basestatic
            bad() constiosinline
            badbitios_basestatic
            basefieldios_basestatic
            beg enum valueios_base
            binaryios_basestatic
            boolalphaios_basestatic
            clear(iostate state=goodbit)iosinline
            cur enum valueios_base
            decios_basestatic
            end enum valueios_base
            eof() constiosinline
            eofbitios_basestatic
            fail() constiosinline
            failbitios_basestatic
            fill()ios_baseinline
            fill(char c)ios_baseinline
            flags() constios_baseinline
            flags(fmtflags fl)ios_baseinline
            flush()ostreaminline
            fmtflags typedefios_base
            good() constiosinline
            goodbitios_basestatic
            hexios_basestatic
            inios_basestatic
            internalios_basestatic
            ios()iosinline
            ios_base() (defined in ios_base)ios_baseinline
            iostate typedefios_base
            leftios_basestatic
            octios_basestatic
            off_type typedefios_base
            openmode typedefios_base
            operator bool() constiosinlineexplicit
            operator const void *() constiosinline
            operator!() constiosinline
            operator<<(ostream &(*pf)(ostream &str))ostreaminline
            operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
            operator<<(bool arg)ostreaminline
            operator<<(const char *arg)ostreaminline
            operator<<(const signed char *arg)ostreaminline
            operator<<(const unsigned char *arg)ostreaminline
            operator<<(const String &arg)ostreaminline
            operator<<(char arg)ostreaminline
            operator<<(signed char arg)ostreaminline
            operator<<(unsigned char arg)ostreaminline
            operator<<(double arg)ostreaminline
            operator<<(float arg)ostreaminline
            operator<<(short arg)ostreaminline
            operator<<(unsigned short arg)ostreaminline
            operator<<(int arg)ostreaminline
            operator<<(unsigned int arg)ostreaminline
            operator<<(long arg)ostreaminline
            operator<<(unsigned long arg)ostreaminline
            operator<<(long long arg)ostreaminline
            operator<<(unsigned long long arg)ostreaminline
            operator<<(const void *arg)ostreaminline
            operator<<(const __FlashStringHelper *arg)ostreaminline
            ostream() (defined in ostream)ostreaminline
            outios_basestatic
            pos_type typedefios_base
            precision() constios_baseinline
            precision(unsigned int n)ios_baseinline
            put(char ch)ostreaminline
            rdstate() constiosinline
            rightios_basestatic
            seekdir enum nameios_base
            seekp(pos_type pos)ostreaminline
            seekp(off_type off, seekdir way)ostreaminline
            setf(fmtflags fl)ios_baseinline
            setf(fmtflags fl, fmtflags mask)ios_baseinline
            setstate(iostate state)iosinline
            showbaseios_basestatic
            showpointios_basestatic
            showposios_basestatic
            skipwsios_basestatic
            streamsize typedefios_base
            tellp()ostreaminline
            truncios_basestatic
            unsetf(fmtflags fl)ios_baseinline
            uppercaseios_basestatic
            width()ios_baseinline
            width(unsigned n)ios_baseinline
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream.html deleted file mode 100644 index fb4d97c1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream.html +++ /dev/null @@ -1,2527 +0,0 @@ - - - - - - - -SdFat: ostream Class Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - -
            - -
            - -

            Output Stream. - More...

            - -

            #include <ostream.h>

            -
            -Inheritance diagram for ostream:
            -
            -
            Inheritance graph
            - - - - - - - - - - -
            [legend]
            -
            -Collaboration diagram for ostream:
            -
            -
            Collaboration graph
            - - - - - -
            [legend]
            - - - - - - - - - - - - - - - - -

            -Public Types

            typedef unsigned int fmtflags
             
            typedef unsigned char iostate
             
            typedef int32_t off_type
             
            typedef uint8_t openmode
             
            typedef uint32_t pos_type
             
            enum  seekdir { beg, -cur, -end - }
             
            typedef uint32_t streamsize
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Public Member Functions

            bool bad () const
             
            void clear (iostate state=goodbit)
             
            bool eof () const
             
            bool fail () const
             
            char fill ()
             
            char fill (char c)
             
            fmtflags flags () const
             
            fmtflags flags (fmtflags fl)
             
            ostreamflush ()
             
            bool good () const
             
             operator bool () const
             
             operator const void * () const
             
            bool operator! () const
             
            ostreamoperator<< (bool arg)
             
            ostreamoperator<< (char arg)
             
            ostreamoperator<< (const __FlashStringHelper *arg)
             
            ostreamoperator<< (const char *arg)
             
            ostreamoperator<< (const signed char *arg)
             
            ostreamoperator<< (const String &arg)
             
            ostreamoperator<< (const unsigned char *arg)
             
            ostreamoperator<< (const void *arg)
             
            ostreamoperator<< (double arg)
             
            ostreamoperator<< (float arg)
             
            ostreamoperator<< (int arg)
             
            ostreamoperator<< (ios_base &(*pf)(ios_base &str))
             
            ostreamoperator<< (long arg)
             
            ostreamoperator<< (long long arg)
             
            ostreamoperator<< (ostream &(*pf)(ostream &str))
             
            ostreamoperator<< (short arg)
             
            ostreamoperator<< (signed char arg)
             
            ostreamoperator<< (unsigned char arg)
             
            ostreamoperator<< (unsigned int arg)
             
            ostreamoperator<< (unsigned long arg)
             
            ostreamoperator<< (unsigned long long arg)
             
            ostreamoperator<< (unsigned short arg)
             
            int precision () const
             
            int precision (unsigned int n)
             
            ostreamput (char ch)
             
            iostate rdstate () const
             
            ostreamseekp (off_type off, seekdir way)
             
            ostreamseekp (pos_type pos)
             
            fmtflags setf (fmtflags fl)
             
            fmtflags setf (fmtflags fl, fmtflags mask)
             
            void setstate (iostate state)
             
            pos_type tellp ()
             
            void unsetf (fmtflags fl)
             
            unsigned width ()
             
            unsigned width (unsigned n)
             
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Static Public Attributes

            static const fmtflags adjustfield = left | right | internal
             
            static const openmode app = 0X4
             
            static const openmode ate = 0X8
             
            static const iostate badbit = 0X01
             
            static const fmtflags basefield = dec | hex | oct
             
            static const openmode binary = 0X10
             
            static const fmtflags boolalpha = 0x0100
             
            static const fmtflags dec = 0x0008
             
            static const iostate eofbit = 0x02
             
            static const iostate failbit = 0X04
             
            static const iostate goodbit = 0x00
             
            static const fmtflags hex = 0x0010
             
            static const openmode in = 0X20
             
            static const fmtflags internal = 0x0004
             
            static const fmtflags left = 0x0001
             
            static const fmtflags oct = 0x0020
             
            static const openmode out = 0X40
             
            static const fmtflags right = 0x0002
             
            static const fmtflags showbase = 0x0200
             
            static const fmtflags showpoint = 0x0400
             
            static const fmtflags showpos = 0x0800
             
            static const fmtflags skipws = 0x1000
             
            static const openmode trunc = 0X80
             
            static const fmtflags uppercase = 0x4000
             
            -

            Detailed Description

            -

            Output Stream.

            -

            Member Typedef Documentation

            - -

            ◆ fmtflags

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned int ios_base::fmtflags
            -
            -inherited
            -
            -

            type for format flags

            - -
            -
            - -

            ◆ iostate

            - -
            -
            - - - - - -
            - - - - -
            typedef unsigned char ios_base::iostate
            -
            -inherited
            -
            -

            typedef for iostate bitmask

            - -
            -
            - -

            ◆ off_type

            - -
            -
            - - - - - -
            - - - - -
            typedef int32_t ios_base::off_type
            -
            -inherited
            -
            -

            type for relative seek offset

            - -
            -
            - -

            ◆ openmode

            - -
            -
            - - - - - -
            - - - - -
            typedef uint8_t ios_base::openmode
            -
            -inherited
            -
            -

            typedef for iostream open mode

            - -
            -
            - -

            ◆ pos_type

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::pos_type
            -
            -inherited
            -
            -

            type for absolute seek position

            - -
            -
            - -

            ◆ streamsize

            - -
            -
            - - - - - -
            - - - - -
            typedef uint32_t ios_base::streamsize
            -
            -inherited
            -
            -

            unsigned size that can represent maximum file size. (violates spec - should be signed)

            - -
            -
            -

            Member Enumeration Documentation

            - -

            ◆ seekdir

            - -
            -
            - - - - - -
            - - - - -
            enum ios_base::seekdir
            -
            -inherited
            -
            -

            enumerated type for the direction of relative seeks

            - - - - -
            Enumerator
            beg 

            seek relative to the beginning of the stream

            -
            cur 

            seek relative to the current stream position

            -
            end 

            seek relative to the end of the stream

            -
            - -
            -
            -

            Member Function Documentation

            - -

            ◆ bad()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::bad () const
            -
            -inlineinherited
            -
            -
            Returns
            true if bad bit is set else false.
            - -
            -
            - -

            ◆ clear()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::clear (iostate state = goodbit)
            -
            -inlineinherited
            -
            -

            Clear iostate bits.

            -
            Parameters
            - - -
            [in]stateThe flags you want to set after clearing all flags.
            -
            -
            - -
            -
            - -

            ◆ eof()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::eof () const
            -
            -inlineinherited
            -
            -
            Returns
            true if end of file has been reached else false.
            -

            Warning: An empty file returns false before the first read.

            -

            Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

            - -
            -
            - -

            ◆ fail()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::fail () const
            -
            -inlineinherited
            -
            -
            Returns
            true if any iostate bit other than eof are set else false.
            - -
            -
            - -

            ◆ fill() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            char ios_base::fill ()
            -
            -inlineinherited
            -
            -
            Returns
            fill character
            - -
            -
            - -

            ◆ fill() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            char ios_base::fill (char c)
            -
            -inlineinherited
            -
            -

            Set fill character

            Parameters
            - - -
            [in]cnew fill character
            -
            -
            -
            Returns
            old fill character
            - -
            -
            - -

            ◆ flags() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            fmtflags ios_base::flags () const
            -
            -inlineinherited
            -
            -
            Returns
            format flags
            - -
            -
            - -

            ◆ flags() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::flags (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flag
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ flush()

            - -
            -
            - - - - - -
            - - - - - - - -
            ostream& ostream::flush ()
            -
            -inline
            -
            -

            Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ good()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::good () const
            -
            -inlineinherited
            -
            -
            Returns
            True if no iostate flags are set else false.
            - -
            -
            - -

            ◆ operator bool()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator bool () const
            -
            -inlineexplicitinherited
            -
            -
            Returns
            false if fail() else true.
            -
            - -
            -
            - -

            ◆ operator const void *()

            - -
            -
            - - - - - -
            - - - - - - - -
            ios::operator const void * () const
            -
            -inlineinherited
            -
            -
            Returns
            null pointer if fail() is true.
            - -
            -
            - -

            ◆ operator!()

            - -
            -
            - - - - - -
            - - - - - - - -
            bool ios::operator! () const
            -
            -inlineinherited
            -
            -
            Returns
            true if fail() else false.
            -
            - -
            -
            - -

            ◆ operator<<() [1/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (bool arg)
            -
            -inline
            -
            -

            Output bool

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [2/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (char arg)
            -
            -inline
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [3/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const __FlashStringHelper * arg)
            -
            -inline
            -
            -

            Output a string from flash using the Arduino F() macro.

            Parameters
            - - -
            [in]argpointing to flash string
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [4/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const char * arg)
            -
            -inline
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [5/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const signed char * arg)
            -
            -inline
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [6/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const String & arg)
            -
            -inline
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [7/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const unsigned char * arg)
            -
            -inline
            -
            -

            Output string

            Parameters
            - - -
            [in]argstring to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [8/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (const void * arg)
            -
            -inline
            -
            -

            Output pointer

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [9/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (double arg)
            -
            -inline
            -
            -

            Output double

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [10/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (float arg)
            -
            -inline
            -
            -

            Output float

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [11/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (int arg)
            -
            -inline
            -
            -

            Output signed int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [12/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
            -
            -inline
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [13/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long arg)
            -
            -inline
            -
            -

            Output signed long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [14/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (long long arg)
            -
            -inline
            -
            -

            Output signed long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [15/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
            -
            -inline
            -
            -

            call manipulator

            Parameters
            - - -
            [in]pffunction to call
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [16/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (short arg)
            -
            -inline
            -
            -

            Output signed short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [17/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (signed char arg)
            -
            -inline
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [18/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned char arg)
            -
            -inline
            -
            -

            Output character

            Parameters
            - - -
            [in]argcharacter to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [19/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned int arg)
            -
            -inline
            -
            -

            Output unsigned int

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [20/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long arg)
            -
            -inline
            -
            -

            Output unsigned long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [21/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned long long arg)
            -
            -inline
            -
            -

            Output unsigned long long

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ operator<<() [22/22]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::operator<< (unsigned short arg)
            -
            -inline
            -
            -

            Output unsigned short

            Parameters
            - - -
            [in]argvalue to output
            -
            -
            -
            Returns
            the stream
            - -
            -
            - -

            ◆ precision() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            int ios_base::precision () const
            -
            -inlineinherited
            -
            -
            Returns
            precision
            - -
            -
            - -

            ◆ precision() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            int ios_base::precision (unsigned int n)
            -
            -inlineinherited
            -
            -

            set precision

            Parameters
            - - -
            [in]nnew precision
            -
            -
            -
            Returns
            old precision
            - -
            -
            - -

            ◆ put()

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::put (char ch)
            -
            -inline
            -
            -

            Puts a character in a stream.

            -

            The unformatted output function inserts the element ch. It returns *this.

            -
            Parameters
            - - -
            [in]chThe character
            -
            -
            -
            Returns
            A reference to the ostream object.
            - -
            -
            - -

            ◆ rdstate()

            - -
            -
            - - - - - -
            - - - - - - - -
            iostate ios::rdstate () const
            -
            -inlineinherited
            -
            -
            Returns
            The iostate flags for this file.
            - -
            -
            - -

            ◆ seekp() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            ostream& ostream::seekp (off_type off,
            seekdir way 
            )
            -
            -inline
            -
            -

            Set the stream position.

            -
            Parameters
            - - - -
            [in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
            [in]wayOne of ios::beg, ios::cur, or ios::end.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ seekp() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            ostream& ostream::seekp (pos_type pos)
            -
            -inline
            -
            -

            Set the stream position

            Parameters
            - - -
            [in]posThe absolute position in which to move the write pointer.
            -
            -
            -
            Returns
            Is always *this. Failure is indicated by the state of *this.
            - -
            -
            - -

            ◆ setf() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            set format flags

            Parameters
            - - -
            [in]flnew flags to be or'ed in
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setf() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - - - - - - - - - - - -
            fmtflags ios_base::setf (fmtflags fl,
            fmtflags mask 
            )
            -
            -inlineinherited
            -
            -

            modify format flags

            Parameters
            - - - -
            [in]maskflags to be removed
            [in]flflags to be set after mask bits have been cleared
            -
            -
            -
            Returns
            old flags
            - -
            -
            - -

            ◆ setstate()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios::setstate (iostate state)
            -
            -inlineinherited
            -
            -

            Set iostate bits.

            -
            Parameters
            - - -
            [in]stateBitts to set.
            -
            -
            - -
            -
            - -

            ◆ tellp()

            - -
            -
            - - - - - -
            - - - - - - - -
            pos_type ostream::tellp ()
            -
            -inline
            -
            -
            Returns
            the stream position
            - -
            -
            - -

            ◆ unsetf()

            - -
            -
            - - - - - -
            - - - - - - - - -
            void ios_base::unsetf (fmtflags fl)
            -
            -inlineinherited
            -
            -

            clear format flags

            Parameters
            - - -
            [in]flflags to be cleared
            -
            -
            - -
            -
            - -

            ◆ width() [1/2]

            - -
            -
            - - - - - -
            - - - - - - - -
            unsigned ios_base::width ()
            -
            -inlineinherited
            -
            -
            Returns
            width
            - -
            -
            - -

            ◆ width() [2/2]

            - -
            -
            - - - - - -
            - - - - - - - - -
            unsigned ios_base::width (unsigned n)
            -
            -inlineinherited
            -
            -

            set width

            Parameters
            - - -
            [in]nnew width
            -
            -
            -
            Returns
            old width
            - -
            -
            -

            Member Data Documentation

            - -

            ◆ adjustfield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::adjustfield = left | right | internal
            -
            -staticinherited
            -
            -

            mask for adjustfield

            - -
            -
            - -

            ◆ app

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::app = 0X4
            -
            -staticinherited
            -
            -

            seek to end before each write

            - -
            -
            - -

            ◆ ate

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::ate = 0X8
            -
            -staticinherited
            -
            -

            open and seek to end immediately after opening

            - -
            -
            - -

            ◆ badbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::badbit = 0X01
            -
            -staticinherited
            -
            -

            iostate bad bit for a nonrecoverable error.

            - -
            -
            - -

            ◆ basefield

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::basefield = dec | hex | oct
            -
            -staticinherited
            -
            -

            mask for basefield

            - -
            -
            - -

            ◆ binary

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::binary = 0X10
            -
            -staticinherited
            -
            -

            perform input and output in binary mode (as opposed to text mode)

            - -
            -
            - -

            ◆ boolalpha

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::boolalpha = 0x0100
            -
            -staticinherited
            -
            -

            use strings true/false for bool

            - -
            -
            - -

            ◆ dec

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::dec = 0x0008
            -
            -staticinherited
            -
            -

            base 10 flag

            - -
            -
            - -

            ◆ eofbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::eofbit = 0x02
            -
            -staticinherited
            -
            -

            iostate bit for end of file reached

            - -
            -
            - -

            ◆ failbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::failbit = 0X04
            -
            -staticinherited
            -
            -

            iostate fail bit for nonfatal error

            - -
            -
            - -

            ◆ goodbit

            - -
            -
            - - - - - -
            - - - - -
            const iostate ios_base::goodbit = 0x00
            -
            -staticinherited
            -
            -

            iostate for no flags

            - -
            -
            - -

            ◆ hex

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::hex = 0x0010
            -
            -staticinherited
            -
            -

            base 16 flag

            - -
            -
            - -

            ◆ in

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::in = 0X20
            -
            -staticinherited
            -
            -

            open for input

            - -
            -
            - -

            ◆ internal

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::internal = 0x0004
            -
            -staticinherited
            -
            -

            fill between sign/base prefix and number

            - -
            -
            - -

            ◆ left

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::left = 0x0001
            -
            -staticinherited
            -
            -

            left adjust fields

            - -
            -
            - -

            ◆ oct

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::oct = 0x0020
            -
            -staticinherited
            -
            -

            base 8 flag

            - -
            -
            - -

            ◆ out

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::out = 0X40
            -
            -staticinherited
            -
            -

            open for output

            - -
            -
            - -

            ◆ right

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::right = 0x0002
            -
            -staticinherited
            -
            -

            right adjust fields

            - -
            -
            - -

            ◆ showbase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showbase = 0x0200
            -
            -staticinherited
            -
            -

            use prefix 0X for hex and 0 for oct

            - -
            -
            - -

            ◆ showpoint

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpoint = 0x0400
            -
            -staticinherited
            -
            -

            always show '.' for floating numbers

            - -
            -
            - -

            ◆ showpos

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::showpos = 0x0800
            -
            -staticinherited
            -
            -

            show + sign for nonnegative numbers

            - -
            -
            - -

            ◆ skipws

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::skipws = 0x1000
            -
            -staticinherited
            -
            -

            skip initial white space

            - -
            -
            - -

            ◆ trunc

            - -
            -
            - - - - - -
            - - - - -
            const openmode ios_base::trunc = 0X80
            -
            -staticinherited
            -
            -

            truncate an existing stream when opening

            - -
            -
            - -

            ◆ uppercase

            - -
            -
            - - - - - -
            - - - - -
            const fmtflags ios_base::uppercase = 0x4000
            -
            -staticinherited
            -
            -

            use uppercase letters in number representations

            - -
            -
            -
            The documentation for this class was generated from the following files:
              -
            • Arduino/libraries/SdFat/src/iostream/ostream.h
            • -
            • Arduino/libraries/SdFat/src/iostream/ostream.cpp
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream__coll__graph.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/classostream__coll__graph.png deleted file mode 100644 index 361df37d0ab91e39727a94e5e238ea681177e86d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1705 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000004_000009.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000004_000009.html deleted file mode 100644 index ff4d397a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000004_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src -> iostream Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            src → iostream Relation

            File in Arduino/libraries/SdFat/srcIncludes file in Arduino/libraries/SdFat/src/iostream
            sdios.hArduinoStream.h
            sdios.hfstream.h
            sdios.hStdioStream.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000006_000005.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000006_000005.html deleted file mode 100644 index 370f8ad5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000006_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/ExFatLib -> common Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            ExFatLib → common Relation

            File in Arduino/libraries/SdFat/src/ExFatLibIncludes file in Arduino/libraries/SdFat/src/common
            ExFatFormatter.hSysCall.h
            ExFatPartition.hSysCall.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000007_000005.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000007_000005.html deleted file mode 100644 index 4b481922..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000007_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib -> common Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            FatLib → common Relation

            File in Arduino/libraries/SdFat/src/FatLibIncludes file in Arduino/libraries/SdFat/src/common
            FatFormatter.hSysCall.h
            FatPartition.hSysCall.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000009_000008.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000009_000008.html deleted file mode 100644 index 8deee93b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000009_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream -> FsLib Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            iostream → FsLib Relation

            File in Arduino/libraries/SdFat/src/iostreamIncludes file in Arduino/libraries/SdFat/src/FsLib
            ios.hFsLib.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000005.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000005.html deleted file mode 100644 index 39ed57fe..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard -> common Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            SdCard → common Relation

            File in Arduino/libraries/SdFat/src/SdCardIncludes file in Arduino/libraries/SdFat/src/common
            SdCardInfo.hSysCall.h
            SdCardInterface.hBlockDeviceInterface.h
            SdioCard.hSysCall.h
            SdSpiCard.hSysCall.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000011.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000011.html deleted file mode 100644 index a20faf38..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000010_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard -> SpiDriver Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            SdCard → SpiDriver Relation

            File in Arduino/libraries/SdFat/src/SdCardIncludes file in Arduino/libraries/SdFat/src/SpiDriver
            SdSpiCard.hSdSpiDriver.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000011_000005.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000011_000005.html deleted file mode 100644 index afadbe75..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_000011_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver -> common Relation - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -

            SpiDriver → common Relation

            File in Arduino/libraries/SdFat/src/SpiDriverIncludes file in Arduino/libraries/SdFat/src/common
            SdSpiDriver.hSysCall.h
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f.html deleted file mode 100644 index a27ea57d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            iostream Directory Reference
            -
            -
            -
            -Directory dependency graph for iostream:
            -
            -
            Arduino/libraries/SdFat/src/iostream
            - - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - -

            -Files

            file  ArduinoStream.h
             ArduinoInStream and ArduinoOutStream classes.
             
            file  bufstream.h
             ibufstream and obufstream classes
             
            file  fstream.h
             iostreams for files.
             
            file  ios.h
             ios_base and ios classes
             
            file  iostream.h
             iostream class
             
            file  istream.h
             istream class
             
            file  ostream.h
             ostream class
             
            file  StdioStream.h
             StdioStream class.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_05631d2e79636c8b95a1e5d165caf51f_dep.png deleted file mode 100644 index 15c81729938c81da9b13403502bfbf5a04be1863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1463 zcmeAS@N?(olHy`uVBq!ia0vp^wLpB5gAGXX-L`cDQfx`y?k)`fL2$v|<&zm0SaUpG z978JRyuIt6A(P6`_R+jE$aTuD3rzvGJMP(VCFxgju&y)>?CcO--zdjyJGCmPYSpre zl`LPxSl%9#xi#7S;9`&NI3Lvq2b=XoSbd#)+jD1~O-UZ4JrT6oU3_q zvS#`I^%=%L5neIP7Zp{uUkM~`kVG`p!OEghd-_b*geN9XFk zwF~llVxpt3U%GU2!t6IaaqC|h&hL6`NQ|`s*^Ar%{N6PCnwvaNnfCf-`8g$Pd;5NE zF{>)lfBQ8}ZqB7?zW273?>kYNdTn-$|E*oO)(NxozxkTR=ktB>^v!wFJZ1cM!@lf$ zoaY@K7WAz4_Oh+jzm^=U-Q0alWA{8WcfVIh=FLmb@0Z&f<94s)PV34lp}GBfn&nb@ z#rFd5L&tsJS60_u{Hiwn^{#7f`k!4i^-SFQ4LG;_PDXLL?#b#kT15>Gv;xea&~u6VhyQwJ*Fb#t-#6}95K zyS^^=n^WQD-fwsFOMr@J`nf$zC#%QvZCaaf@%;S%3RjkKz5HGs6}eO3$%0?Ghm+yS z2A+TxZ_!tITa@+0WaFy&Tk4}Od5d1ZIAy&`t=7xk%h-(?@2k|_|Dv!fBYe`+{|rxY zM~ZFqZvGEZj2ADvO2;Tw&58~E|2lcK;NJ}^n!R1Nqj+}h-+bTTZ!4B84_arh_wwe% z)8#6EEC1Jg*}v=PJ7Lxe`^xYgZ(iDqM5Kl9nQo)i@BJ(MXY~(T&-Z4g4p$z}S|Xe3 z{@?vla&Ir+){5Xu^f84RC=kO`u^p5Q*)CmFN=Ax$Kjj~bO1{Khsr!)YDQ|8q)3Ryl-w*mG zHexKFCbk`{&#hAM<@kB)x2orP);n?Y)Zf+Dx*SeEzvZBR*w9*^%2!Yi@o`=iPrZ_d{P>y~M7YUmTX5{C2>OmG$?(539RS@+~|9kn*z9u7&IB zvrJzvKI&>0J+FMvj*GV!S+9$^zS#RKOQ%+m(B<8V?Jp+Fq$=g!%;*adJp5%IkKyDU zy6=l-=DK{AkazxK#HiML_2mgqLznZ$i<^xdLq4jBR+nU2U9JvEs#g*}D!e|kyVhUc zeDCtV0ZY!Z1lqck*j7zsh&=t|Zn@gy8j+;=_a-*IXzR%9Ad=AdQvKwb>R!Q$*&ZB~ vd%i1k6)^nf+pYQ1*t6c;R)B%w0`Gt3QjrTry;axcL4}~FtDnm{r-UW|s1dca diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf.html deleted file mode 100644 index c247c4c6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            SdFat Directory Reference
            -
            -
            -
            -Directory dependency graph for SdFat:
            -
            -
            Arduino/libraries/SdFat
            - - - - - - -
            - - -

            -Directories

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png deleted file mode 100644 index 4e8b76acfcb5e5e239c4d48b1360d12abc3e6592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmeAS@N?(olHy`uVBq!ia0y~yUYhW{YAVDIwD3=FK6 zo-U3d6?5L+wa*tWmpJh8_=!%JrFwFKf$e)b_AyKd5>Q;Bly$Xh>fGxWL^}mLdlyPB z@GuPhq$DvzQc7i;&&x|o4JYs&S^0X-`Sjl(Z+@(`oBa0k-;3uzP5(VtR)!I1B|7N6 zFstzI+K!3|g$fMZUo@5ET#sDbBAs!*g2CSP$ho(-ZyV>aB^2`U?GhBMcRBKI%k3Ga z%L>20`&;qp$;~yh86##iH=jFmd&i^#8HQf_WC~ zyl6Rp8vng{DUlcdYMo!bi+9E}^Q3@qYdAP`|LKDCqXT7-KxvHbw2<67Tx^?d%`Fo|Sjo^*r6SPp)3}ukm!> z{k6Z<@}&L;y?*_=&}8|?=bxf>&4{b~|9rZ%ew@xXhiO;es2RCH_0@ z-o1OH`EiK4dAC2B|7oq-yYtwV{Nq2wUwy4g@>0C+Lvknx1UImp{{4UEC6BdX+J652 z;v-l?*nE7&M z*z5f-&pa^MZ2wkfPF-J>-sPA5=@%oW^=`eMSamqP=kLouCh3!!r!%$b^P9YU6XNsu zQR%KtzaP&#o#OUa*>umE7dzwHKlb(eb0?c;+%diM@HpFcLz&b6{{E|*Ep&;)P}k(o zGM(zlRm{&{o@ZDVJ3Z;}M(MhoA3IY&>fA27+?g3uBV3)lX%*Xfhs{nFuY~_E6TED^ ztY^)lO8>3h%YOPkz5HiK#oBf2N>4s6jo72sZgOa5ri+i+*>X>X@SCNVHf{W76%t&+ zyXF6n9nXDs{ay6d9lF-Z{8J`SI5`xe0W_={L!nMKYnlZpK<2W(Jk96)&JG~(~6pJulp-t+O_A|_s`_s zo;|z#(a+D}A8-EXFUjqDeE#Xy62smy>#AsbonIPKtMBF=pZ2l6b7vYTw_-~HE524Q zyZi2RM0E7(;^_{~rMvYXUt9b3*0=CzpX=AICD+&MfBXLZ)h*Qv1=rWtN8jF;)%|jJ zxqInbt_5Z5W`arw9NFmLnfP1ve}8@d@nhrkLLG+b*VfoO?i3Z|H{xSSXtZ-Zvbf{J g@>%Fb7?2zopr0Qa?yjsO4v diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html deleted file mode 100644 index 8d061292..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            libraries Directory Reference
            -
            -
            -
            -Directory dependency graph for libraries:
            -
            -
            Arduino/libraries
            - - - - - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png deleted file mode 100644 index c1c424991eede3d84344e051f58ba8a6dbd64f28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1277 zcmeAS@N?(olHy`uVBq!ia0vp^pMiJ^2OE%dW0$`Rq}Y|gW!U_%O^81ux#>l zaSW-L^Y*TNzHqt3fse;E9J7|{$*o?*S1DM_7?S1Kx`6A-Dp76g^$WFw+?M3Xo?=)l z60EAf$T_`@t+Q7%c9#j`9mbin9_Pdtef#;I(`d&{IrNWXRA%)d*w&xzP{eAJH4^a+DgjR<&T_Tzuqpl+cO?N zJ9~TM_U-q}BwuV@yg2c-sh;jbn+B#1$w>mnDvD_yPG?we-`sh_cjB_&u_d*qRGvA# zeZ%wk$B&ey2W92wugS^Xr4CXgol&%P-oC8&Z+NoTKf3yS)$c27EwkrFt`BUxw%_E? zCttTW9TnzT;qH%KK3{eFw8gtMZ+9J^a&T&;^VzPIz9~$1bJm?{T`9d#z5nPjnS`&R`4Ez#Teb*~QJ|L#e| z+@pU!JdAU3dGqex%U2UNge|@}`NpkV=fsO$j{N(lU-Mot{c2h6DZ-4y1-S0LpFgSX&=H<`$d~-Sbxc8k?UR_+= z(cD}*pOsZh?^*e~AF}VF($kZcO*?;vNZ&yGf3bT8d-Fl|da=Fr_x5#vd%yW%!G?nB z(BrRn7ww;u;K|nP*mL~xvGdn6f9*3ne&WTGl&|&Q_4+nyRu!hU*}cd;b5%QS_Q#!h zf9B&%7%62{Lf5m*=`}xt_?Pj0PcBlW^ z>N-(Z`B09c`xljGnU}*Kq_*C89#|EsXT^2?*83+Zf9_=`-E&wiSNi%`&aIWwowKv5 zzMi*8`~HpXh89QV&s%rayn6Kfj;d#U>bl=NHkEZ3tIzGOyK9x#^mqNs8P>K!;m03W zKI^@7?2XE-BPQ?LZd87oyY;U4=DZYB+4}Rl&n-Ic8-M!13|=x44J4QY@02(6+W-3T zwk>~GOR=Wjv(4-Gb=KGY(`Cz#TmL(x>+7@2=daariLBT$BRO09TwV<@#v6Jc8$+`e zYLu4zDt>nHg=bEFetD%w#B3llX7{$+H$Pf+S62Tnl97`;^6;T!czes%-9=A7pX<9C zdFK4Qy>DIxT=2Ft#*xT7fw}L~mzV25zPftT=p1Xt!nffG_c}UupSBQuvGclMp}o?d hRVqjY2m`}}ll9kMb}63E{@Dl;_jL7hS?83{1OTIAZ?XUY diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_4944048bb6fb9e219242a59a3faf7f85.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_4944048bb6fb9e219242a59a3faf7f85.html deleted file mode 100644 index a625c40a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_4944048bb6fb9e219242a59a3faf7f85.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/doc Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            doc Directory Reference
            -
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a.html deleted file mode 100644 index 2a824b4a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/ExFatLib Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            ExFatLib Directory Reference
            -
            -
            -
            -Directory dependency graph for ExFatLib:
            -
            -
            Arduino/libraries/SdFat/src/ExFatLib
            - - - - - - -
            - - - - - - - - -

            -Files

            file  ExFatFile.h
             ExFatFile class.
             
            file  ExFatPartition.h
             ExFatPartition include file.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_6ad57a83f04f6188f18545163430419a_dep.png deleted file mode 100644 index 274fa69071c809d0a662cd23070ef1ffca785317..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1484 zcmeAS@N?(olHy`uVBq!ia0vp^4M2R7gAGW&&a}!0Qfx`y?k)`fL2$v|<&zm0SQ|ZE z978JRyuG_WTRNTL*vI3&+_F|I@7)B>FU;2b$=sy)G0Cyxq}GWbgOsyZOcP!ReVDLN zG47Sq+zCBzZ|z^;e2_7DQx=b+*CM`2k59Xn@4D>yzWTlGeSVJcYkv>DH-8`7S~Cr3 zF$~CVxmNHudeS@H#||4dET0sov+GmU;koxGUb%noUgi!-okv$!3wugwCNb=)tqx~r zZ}&BCW?i$M|I44Bg^P1*HZMtbT*PrehH-{6LorK2AHx~J2Fq@SZQIQ3>_6QX!7F9a(b877vSC$r`8V}8&0yU0i8;#bK&*Vt$pkhFTiH6pxz;>cvUB+zCf(f< z=lp}PVh$o*~N z2KWBDi#Kn+4%qD-wZ7b!U(SYS)A|HPo4OhW&s#TNw%o4S3$ms8>n_8NlyEJno%w%&v$(O z^4F1<%j*8VdHwUL{yg#A)#nVCm-t?I#Sm7>yJ1yh=I@5*Tdf+jX8q~*O`R3Dbjf-~ zmD)nCh?KqE?W>?)otc)L}k4b!d ze9H2kHZjb|$p~TzL$A$5lV^foKc>9Xn3_?Q-Q(+NZ+6Gc$KHScKdG-8vwpf?s(jPz zadq>{!(!KQrh=I4_o8>0eoFr@`!wwli^1&(Sy@mNY>wpF=fdy}lypKS--~Zr(ZTTS z^%qt}#woAAJn&`-SoXPD|D&D5#KL#0uUwS4!}P*)*QCmSf4^jZ>*JBXdhuY{_sOg3 zul;NHINl+;Yt<{pnBJ0}h>gOY%A)*#GIsG;Wrbf-7iIsD31q&q_RJ5JIdJ=>k=dPl z>=o)S`F)rD+H>*C)^f*wj)QkYKJpY8KPpt5Q0nPiYx~3b=U)A!a;^zW_$T$Lq~=Hd zs{6HIBTy~dtcgn;P;wEzT1uJwO+cenA>W{dS~Jl{ypc7>b-wye{)RvV)|2( zRrvA$>VB2Ct~c_zn(l8n^;JnA7?z_^;v0vc-c*K7`ws+u-CFqW>z_~Edb>~9MQgX- zZ#{i~t@iIdZ?;CBUiD~K>gj8D(^uC&RGBKNu=*Uo$^M+1yGp06-F!aG+mJy=ka32$ zVS|d^x}b@NTp!HpdVeGGTU5_uPd_e3kFR?7y7t9?+jDM{@3)&)n)8@8xZrRIq!7Y% z^3fkY4`MyA}^NzLCd PP!Z|r>gTe~DWM4f+jNur diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a.html deleted file mode 100644 index bf9d1643..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SpiDriver Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            SpiDriver Directory Reference
            -
            -
            -
            -Directory dependency graph for SpiDriver:
            -
            -
            Arduino/libraries/SdFat/src/SpiDriver
            - - - - - - -
            - - - - - - - - - - - - - - - - - -

            -Files

            file  SdSpiArduinoDriver.h
             SpiDriver classes for Arduino compatible systems.
             
            file  SdSpiBaseClass.h
             Base class for external SPI driver.
             
            file  SdSpiDriver.h
             SpiDriver classes.
             
            file  SdSpiLibDriver.h
             Class using only simple SPI library functions.
             
            file  SdSpiSoftDriver.h
             Class for software SPI.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_72a7f5d5cdfff657f3dd19b69595124a_dep.png deleted file mode 100644 index d38032c9a69f99f45c3ea260df77e353c52dc30d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1510 zcmeAS@N?(olHy`uVBq!ia0vp^4M2R7gAGW&&a}!0Qfx`y?k)`fL2$v|<&zm0SZ8~> zIEGZrd3$$%wsbnfv5&{?xn!+a8aK~$ux(#g${D$7#)BIIZ-kiu@~i0D%XcNGe&4G;|DE~Jw31!lKm5LW z_vA!TPN4NraKW*dSH9l!($&Zuj%8)>mlkKr@3~R%L3`3R{kS_hJEVLbpPU@)DW#Fb zaO=j6OXtqbUAFq5h?w~L*AEZJORY_=bGzN-BG_QbWZ=&5jN^a|;|yhnVll=wYrg#3 z|0Mr>-P|oX;imsw18%Qf^JUBS>+4JQ=G@fVbb~qNsd~vJmh#$9s?D|s?#2C|dw1vI zCD$(gWKg;J_S)+ge-sy-JUQoZXTtOE45fUGeeK=n*cC+mpX|6Tt7g0Ub322N8^Su4 zgg%Bd=x#s}Y}%{(=4f|)>FaCPtt={}vred-J+J@b+1dQ9TS}}>R2*cg`1Qr#w(iet zGxP1vyfc^Fy*t13;h|Y(X4{&2#Q*p%{QmB*NY#lYU#fiVcdV5=$B5rHSTL;pKVe1T zf4h6{<-_XUT-#|B2T!jNllRlk(vVQv7<*z5}&y;8S_4n|D_Xjd(t1zFi zGwxU0aDBG5;mlHX^WEzTMgm5)%=V<(=#sWS=O(~-}HLj=O2GIrCz_i z;wq!ZkAI8ooxb;NhS6)EtlR4GUJ4CsB5hBnuY9}vhtXQT1-`C>l~C!&jTYX5Eu3qQ{;tslYQ?Y+G8_qXp0+g3k0*86(W zlDTuOCvI248ukrt@4T#@2z@QuUNTKBXFPBA?s0PGaaPt^1_Pq*1iu+5ezfEKCyTlYra}NXeTeVcpmN z**ALTPTVqK=f8_DULT)%`<_>o*{^%go-SxUAM$taxA`u&-1fLH53y|sp14i${mpet z8oSi%45HX%x2nE$ILau~GtJSxR^#Q;F6Ii$sAFxnPag=MRCl!?e7?EF-S1j2#1wa! zioR#Orj#en6glO}^^+&xpML*csjQvBvr748%5&pI2`=lkS8;`Gf zH2a41ghF7R4`^<+V~Lr#MYiIM=f4SGs^9dUxN+@6x`dzh5y& ze<$Vm7X@)RtSbK$R`Pqv>(XhtMrp5?RB#;N!CMT#V;Wvyh(ES%jQ9AZaA=1n(8HIn zG)HR0rz~UhdfvOj@Xy*rhW|(I2{15R$o - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            FatLib Directory Reference
            -
            -
            -
            -Directory dependency graph for FatLib:
            -
            -
            Arduino/libraries/SdFat/src/FatLib
            - - - - - - -
            - - - - - - - - - - - - - - -

            -Files

            file  FatFile.h
             FatFile class.
             
            file  FatLibConfig.h
             configuration definitions
             
            file  FatPartition.h
             FatPartition class.
             
            file  FatVolume.h
             FatVolume class.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png deleted file mode 100644 index 826801b941fd10a78b151aa49466ea368b651609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1440 zcmeAS@N?(olHy`uVBq!ia0vp^wLpB5gAGXX-L`cDQfx`y?k)`fL2$v|<&zm0SVKKs z978JRyuIt6Ars1Q{A0Y((k_kCjjRi+3ieit9EtlPz!j9eNJvmSj@wr6OUNtFmn)?{ z264X7<+#;sxkbId$$g^O-Wgs8n%QFoSbd#i`Cpq&K6x&sT>W#}z2CL=8*<9Z%kC%d zpKE_oFPIbP0w^eG*x7Zy-u04oyP=@ZQ*}@A^xC4UFJ4bNH_vWw%*RxNmD1*BZuaNy zyxX^Gazs?r#aFMQu1-JL;x~8Kvbgs#ORvwcU$Rp{$;I5I#2G<&y1y^8{;v1)_vY)V zrw77?D$Fh^^2(HEZ_f2EXV3m?JNwlYXFuheFD9)q zyLs88>~q}H2A!|XJ5#QI$uxVPx4S82vG>uB$L`Lrda)+O{Jn-7vTX=^v9S*B(<^;? zs`}QgU9wp_UYt3v|Kifp(^h3~D&8iucGrD=vs-HNV{cu(eM^=uoqFpy z*RP`|wr(w5yJilrWr~T_+*QwOX36{}%GSVn87p3FeqL8^a5-DlR{wXz&7zH+M!QU+ z6Eb&ItaLe-{5enK=8L)K?(Fscw(reXmGyyNb{Te;eV$kUc=PN>f7EJ9cHfr|xn;h5 zQ-8l%)lKQR@SX_e=dRL!6*lHKy`GZtrEqrn8?SE;c`XlqtL|LZ&v)aKeZS8pRf+BY z&*_PO{%3pY#pFE?Z>DzD*}d3$YM%J!C+6>O^uK89$m<}I(0Eb){A`<>d-vM8b8`cnr|l|zT|L+0*?)C4`d!@lB6Sjvp5R`OO$SvM^-nG-=)8aVGuzJB6PNrG+~HCmaOrXKJA1vC zE6=<=uJTtd#cjpicCHV#pCWdwd3oP=!x@K~={B1D-oM-ecGPgOv;2 zx~2AK#%C7=t+?K_Ki$55Twi~CT-sLF{9nti+2daEE#7^)FPqbrHwSFnBK_}X z+w&%ed)EzqocHx#!m0TGTV3R(%Z$ghKcD!2oj;@E-AuC`+AEhoG;~`l_DW9Sakl4q zk6(%pX1H!M{j>RXztp~)xgVCb$@ARJsZwe``R$0EFxR(#A69oME|ON-MI4b;{biG} zi-@h+3EO$`b=OkUB{xsKRioDRCvx7V?Wg6Wx35vF$-BAfa^KBclZCg|`ktTl%=e6b z^tU^i)8?j~xz?p=#m9M(_o&F;uk0QhGd?%one(k}-s}$>)t(7YHFKZ7%$h-a*Zw!( zOiqVMZVpYlwde5!NW5WH2#Gt;R|Aw#Ue2-tNUv@Gu cG+6v$KQnK;n)OVbeW23L)78&qol`;+0K&bx*#H0l diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_954f1cc1f567c84d567c4e2ef94e5c23.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_954f1cc1f567c84d567c4e2ef94e5c23.html deleted file mode 100644 index 549a9ebb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_954f1cc1f567c84d567c4e2ef94e5c23.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FsLib Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            FsLib Directory Reference
            -
            -
            - - - - - - - - - - - -

            -Files

            file  FsFile.h
             FsBaseFile include file.
             
            file  FsLib.h
             FsLib include file.
             
            file  FsVolume.h
             FsVolume include file.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html deleted file mode 100644 index b29efa93..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            SdCard Directory Reference
            -
            -
            -
            -Directory dependency graph for SdCard:
            -
            -
            Arduino/libraries/SdFat/src/SdCard
            - - - - - - - - - -
            - - - - - -

            -Files

            file  SdSpiCard.h
             SdSpiCard class for V2 SD/SDHC cards.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png deleted file mode 100644 index 9d9db67d2c991b562ba0ac0c32958fdf822f518e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3682 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 mdo6q`il$;_JSlm(E9O3I7J6g&-^d diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html deleted file mode 100644 index f6467ec3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -SdFat: Arduino Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            Arduino Directory Reference
            -
            -
            -
            -Directory dependency graph for Arduino:
            -
            -
            Arduino
            - - - - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png deleted file mode 100644 index d3e87478ff1f2a7756325c6216ea8eb6485a17dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#SgAGWYjD5xgq}Y|gW!U_%O^81FiUv4 zIEGZrd3$$b-{lCAhKI%J;R@T7uiCK-dDt+rcF$;9I73jEpHbJ}k^k(4B`&w5I?EkG zGEQf{U{lF&Y-%bLQup&Kn)`mT(#^t}+|*B}%{!-b0xd#-Zwq+t{10@oxqYnD!PU<7 zNVjjfoYdXf9TxR}e&jqb2xx!#rD)rZLhE`y+fH@=bC18iHg|4s)Y?=1-E5xyehHIf zC#Ribec@R$!3P87e3<^Y_U^ymX-B@6UVFIe%h&t;AOD`)TRWf4dYV{lOuYM?d2Vy& zFPGh<;upi=_ANd7-3q?p)oS2OX9E>?d7_Myop3P1#gb8Gih6_~esm=Y8-0 zHIv=17V2WYK66%}%wo66o}H^#r!7y6iS7NrbG@F`irCVNrM`c?H22@NkIwgZ|827^ zyZUTR-Ial%?FGA&RX^}^>)PK*R!n7T{|vube*hkNo?@JeZS&-kK62h)3tir z_n`Jgzg|97YpZ!N@uTfS#mF+#+h4Dy6*j#ygIEL^ThNv=Wtc(Tt4lq!(Al3 zaoh0~nX{r@OS)!`5DZq_KSZ2LDCP zDP*9X7h_{wraZb<+THQ&TKvj-zHiEJ+dKE|`!AsWzxJe6OzEu2_K$8i*MF;(Qt{}1 z_xtYe$o8h@XST8`!Wc;UkL}%(DoK9%d3ldx9z5_}KE3(4#4q{3ajr*BA53Qy)m&PW mJ?q)Aedn1GNtS^j;`IOXD_BZ9ax`XvggssTT-G@yGywn!K$flm diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html deleted file mode 100644 index 8399cda4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            src Directory Reference
            -
            -
            -
            -Directory dependency graph for src:
            -
            -
            Arduino/libraries/SdFat/src
            - - - - - - - - - - - - - - - - - - -
            - - -

            -Directories

            - - - - - - - - - - - - - - - - - - - -

            -Files

            file  BufferedPrint.h
             Fast buffered print.
             
            file  FreeStack.h
             FreeStack() function.
             
            file  MinimumSerial.h
             Minimal AVR Serial driver.
             
            file  SdFat.h
             main SdFs include file.
             
            file  SdFatConfig.h
             configuration definitions
             
            file  sdios.h
             C++ IO Streams features.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png deleted file mode 100644 index 4caaf07b9d4a39421b018601027178b335850fea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10229 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf.html deleted file mode 100644 index 13a3635a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/common Directory Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            -
            -
            common Directory Reference
            -
            -
            -
            -Directory dependency graph for common:
            -
            -
            Arduino/libraries/SdFat/src/common
            - - - - -
            - - - - - - - - - - - -

            -Files

            file  BlockDeviceInterface.h
             BlockDeviceInterface include file.
             
            file  PrintTemplates.h
             templates for printf
             
            file  SysCall.h
             SysCall class.
             
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf_dep.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dir_f9735b46fbe6c50afc1ee0ea5d409dcf_dep.png deleted file mode 100644 index 54011a26ed9f2f3edbd5d979668c9e76ce7eccd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmeAS@N?(olHy`uVBq!ia0vp^wLo0Y!3HD`d7RY)Qfx`y?k)`fL2$v|<&zm0m=1cn zIEGZrd3$GL*6jd>)`!X4{S`d6`_*-(y%b_nU1BCu?)ft7M8*k`ODivEJ}`W+FnU?p ziuNa>zl2H;T)4@9f#=vUf}d9gycLPDgp+PdmT>EkkeXa7Za-(?v{w8^ot%F6u<*?*tg z%B|S@d6SglF2zOCN^ru?!Ww8 z*X>OAtfB(VhvmO2Y-)>E`q`#Po^+d@QhHKP`R3{B6U>pX_=`{OyL>w4-rYP_piJ2D z=xG7sB?;M@Au58v>@m)K9EZe&`{JdTGmKWjS z%$`BZKO0_~veiiH?}dX0t+(F3n?7Ir6}xi#;q21g>W0hL^y+Z`J-7VPj^#-HL--Us zYoV9>`Ax?j2bJ7D{Oi%S3ma#ji42|k_tOEL>qD=p6<~#PM>;J&1zfwi?%G`y?p#0rGYoucfKt7rt;;Ft#STsy>rX+ zw4`ITzB6ol^>xozqh#l2Yi8Ywxwp}lr~rWlT%f)3_1CqR&YoRABRHuuz^b?ZIT rzNmeW(0IRo$^G4SoUoL|z~FJC{^VXmzm30Gok4=0u6{1-oD!M7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.css b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.css deleted file mode 100644 index 5bc13aac..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.css +++ /dev/null @@ -1,1766 +0,0 @@ -/* The standard CSS for doxygen 1.8.16 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/doxygen.png deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dynsections.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dynsections.js deleted file mode 100644 index ea0a7b39..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - 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., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -SdFat: File List - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            -
            File List
            -
            -
            -
            Here is a list of all documented files with brief descriptions:
            -
            [detail level 123456]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              Arduino
              libraries
              SdFat
              src
              common
             BlockDeviceInterface.hBlockDeviceInterface include file
             PrintTemplates.hTemplates for printf
             SysCall.hSysCall class
              ExFatLib
             ExFatFile.hExFatFile class
             ExFatPartition.hExFatPartition include file
              FatLib
             FatFile.hFatFile class
             FatLibConfig.hConfiguration definitions
             FatPartition.hFatPartition class
             FatVolume.hFatVolume class
              FsLib
             FsFile.hFsBaseFile include file
             FsLib.hFsLib include file
             FsVolume.hFsVolume include file
              iostream
             ArduinoStream.hArduinoInStream and ArduinoOutStream classes
             bufstream.hibufstream and obufstream classes
             fstream.hIostreams for files
             ios.hios_base and ios classes
             iostream.hiostream class
             istream.histream class
             ostream.hostream class
             StdioStream.hStdioStream class
              SdCard
             SdSpiCard.hSdSpiCard class for V2 SD/SDHC cards
              SpiDriver
             SdSpiArduinoDriver.hSpiDriver classes for Arduino compatible systems
             SdSpiBaseClass.hBase class for external SPI driver
             SdSpiDriver.hSpiDriver classes
             SdSpiLibDriver.hClass using only simple SPI library functions
             SdSpiSoftDriver.hClass for software SPI
             BufferedPrint.hFast buffered print
             FreeStack.hFreeStack() function
             MinimumSerial.hMinimal AVR Serial driver
             SdFat.hMain SdFs include file
             SdFatConfig.hConfiguration definitions
             sdios.hC++ IO Streams features
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/folderclosed.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h.html deleted file mode 100644 index d1bbe6e0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/fstream.h File Reference - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - - -
            -
            - - -
            - -
            - - -
            -
            - -
            -
            fstream.h File Reference
            -
            -
            - -

            iostreams for files. -More...

            -
            #include "iostream.h"
            -
            -Include dependency graph for fstream.h:
            -
            -
            - - - - - - - - - - -
            -
            -This graph shows which files directly or indirectly include this file:
            -
            -
            - - - - -
            -
            - - - - - - - - - - - - - -

            -Classes

            class  fstream
             file input/output stream. More...
             
            class  ifstream
             file input stream. More...
             
            class  ofstream
             file output stream. More...
             
            class  StreamBaseClass
             base type for FAT and exFAT streams More...
             
            -

            Detailed Description

            -

            iostreams for files.

            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h__dep__incl.png deleted file mode 100644 index 132c33d04b00921185cd882adcafce69829a73ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1991 zcmb`Ido&wZ9>+sb44D*d7fqX}XB9J?if34jCC01CDAuFu-G-!|(+XOTmS}0~*;c%V z5U-;3h@y>nWE2xYB$O>pNS4?tT1nM%c6)Zto;h>&kG;Qh@9+HXKfiOn-~0Pqg1f7O zqP&_s002-#IwDZ}nY6#NWo7oy3Fy@q`$;D72L}XT?;y&1NO=Ij;Y1|j&p%!#u9aBh z!1gM4#{I<{%_E&JsUNi^p%1fwPzk%7V3>-m{S}2_IfJ9+2s;&7x}GyQSpw|n4z-XU z`Jx>A5Jiz!(j{ozoU8usc=NPL+lQ!7-s-B@(Q|&>BrJZR#KZ)jt0lSLet+FcLFu)- zWUfdYG0@zWRw&9qY)0a%oQSiCP3GX>Um`L9Yyl3&cXtwV`OwiQAv9<6w z8Ka{voP~wGJ)A-y+a<*2qACR=j5bQ#&5G+gtUetCx2@By0BYwF(8ujODyn)K^;e&) zcHYs+15ZU!ehs&{_`IwQ=)zf4Y^mO`_tXK-P!m4rP2b+;wQn0cbWuX45^9rJ8xj3Y zI53a(qHEsc_|%v7QA3-c_$4nf(Qn4z3s|h(DY`tG@)4YG!!ViR_$*_Ar?hz*6Gm6^-_&xt2YWR;|UO>}z` zH}@bwIjn*3c20S$MfbTs5rHv}WDYqGks~)!*$pjGQ|l-)ABHgG z2lduP!cG0qJHAOC)j!8+1w2a<(_c$yJT5fFntEEEK&nk7e*6Aa zfv$lL3%};eolSr1waNYoTd9>y3zt9_;AR&GDD0%|l003#80b-4{Fu2h!H&V+FzBz@ z8{`3SyMsiXtX<-QUKNU*^r`n&f_m%f-;SbWy$u(9qJ zo%Vj2#@`g4)<`JH?6tA_{I>hGP(?ySRB$F;>TwC9YF3Kch`sqzG&(iBI5TIgu%4xz zhhGnlBY_}e0mA#4E2c*bN*X;KJUnpAo3$#CFu#m;d=8_zM!?6bh5QZ!ZC@)D&9UUx)6cxNA;fRoDL} zN8{6}RJu#$RrY8E`Tv)U-SNR@B?ev(%(omb-Q5vZ|A13E63N}J4kIct))BFRce>Fa zLrb2mVg|EpqY6kVjCq`ytexmE^n|@?J{me6)6H>)uq`~Q$V*fS$F7oOI+K<|Nc8d=ff)}ew-_TG z!m6dmHqJ)0f#0Riw7h4wpYXAqTc#+;l&Fd{tw0L@=FowbT3KjRR`F=QyX-{GikIF6 zB1(0_$M~4j0fP8*%JXTOA2kyrV)Iz!^zb5j0<(n@{0+0-rbJQwl5@!RliUG*ZZ9vl zFcdR1dFtIp_21|G(I~HV%J;pvVBa;)%ui5zwNghXta;abJ?X#?oUS(!fi)aJV; zn2MrOgk@>zGj}hus#jm3qeoP8uk!E>krq#IS##xoWuRz$3*Gm~sy4PT+Eqc_Ualkm zDNtVOH&pq}19tvE^g(R;oN)kzS1B)_)=*PsG|MGP^m8v`5C7{Q1lX$VNn+BhWM7CS Q3=gi5_O6H~yMWYx0#1U&T>t<8 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/fstream_8h__incl.png deleted file mode 100644 index 3f96943ad48c624f9ebe77895bccbecceeb47d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9855 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions.html deleted file mode 100644 index 1264a9c7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - a -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_b.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_b.html deleted file mode 100644 index b24b1082..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_b.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - b -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_c.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_c.html deleted file mode 100644 index 63157251..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_c.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - c -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_d.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_d.html deleted file mode 100644 index 22ac0a9a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_d.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - d -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_e.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_e.html deleted file mode 100644 index ccd8a58b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_e.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - e -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_enum.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_enum.html deleted file mode 100644 index 9c2fef85..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_enum.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -SdFat: Class Members - Enumerations - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_eval.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_eval.html deleted file mode 100644 index c1c6239e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_eval.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - Enumerator - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_f.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_f.html deleted file mode 100644 index 6493845f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_f.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - f -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func.html deleted file mode 100644 index 100a8c92..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - a -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_b.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_b.html deleted file mode 100644 index 4e384375..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_b.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - b -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_c.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_c.html deleted file mode 100644 index 1fedf23b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_c.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - c -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_d.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_d.html deleted file mode 100644 index c7f5c700..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_d.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - d -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_e.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_e.html deleted file mode 100644 index 0b0d279c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_e.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - e -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_f.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_f.html deleted file mode 100644 index b04cb3da..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_f.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - f -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_g.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_g.html deleted file mode 100644 index ada9aa9e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_g.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - g -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_h.html deleted file mode 100644 index e6cc7895..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_h.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - h -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_i.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_i.html deleted file mode 100644 index 64111e3d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_i.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - i -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_k.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_k.html deleted file mode 100644 index e41b6764..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - k -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_l.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_l.html deleted file mode 100644 index 2075380f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_l.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - l -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_m.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_m.html deleted file mode 100644 index 004fad78..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_m.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - m -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_n.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_n.html deleted file mode 100644 index e4730929..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_n.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - n -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_o.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_o.html deleted file mode 100644 index 5250338d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_o.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - o -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_p.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_p.html deleted file mode 100644 index acd0c299..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_p.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - p -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_r.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_r.html deleted file mode 100644 index 64ab1bf0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_r.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - r -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_s.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_s.html deleted file mode 100644 index a8f3d78b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_s.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - s -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_t.html deleted file mode 100644 index 3ba5480a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_t.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - t -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_u.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_u.html deleted file mode 100644 index b837ba84..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_u.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - u -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_v.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_v.html deleted file mode 100644 index 7814010b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_v.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - v -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_w.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_w.html deleted file mode 100644 index e713ae53..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_w.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - w -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_y.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_y.html deleted file mode 100644 index a10f07a7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_func_y.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - y -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_g.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_g.html deleted file mode 100644 index 25b3dae4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_g.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - g -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_h.html deleted file mode 100644 index 62559d77..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - h -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_i.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_i.html deleted file mode 100644 index c3227103..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_i.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - i -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_k.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_k.html deleted file mode 100644 index 4a58ec67..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - k -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_l.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_l.html deleted file mode 100644 index ed8a97b6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_l.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - l -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_m.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_m.html deleted file mode 100644 index 22d43e0f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_m.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - m -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_n.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_n.html deleted file mode 100644 index d2658d7c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_n.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - n -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_o.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_o.html deleted file mode 100644 index 356f0ce4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_o.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - o -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_p.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_p.html deleted file mode 100644 index b1a6581f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_p.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - p -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_r.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_r.html deleted file mode 100644 index 5db13a9a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_r.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - r -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_rela.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_rela.html deleted file mode 100644 index 04c0e75f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_rela.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - Related Functions - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_s.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_s.html deleted file mode 100644 index 714167b0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_s.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - s -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_t.html deleted file mode 100644 index abe4658a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_t.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - t -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_type.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_type.html deleted file mode 100644 index c22361b7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_type.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - Typedefs - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_u.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_u.html deleted file mode 100644 index 44031b59..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_u.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - u -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_v.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_v.html deleted file mode 100644 index 9abad90a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_v.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - v -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_vars.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_vars.html deleted file mode 100644 index 548c8658..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_vars.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - -SdFat: Class Members - Variables - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - a -

            - - -

            - b -

            - - -

            - c -

            - - -

            - d -

            - - -

            - e -

            - - -

            - f -

            - - -

            - g -

            - - -

            - h -

            - - -

            - i -

            - - -

            - l -

            - - -

            - m -

            - - -

            - o -

            - - -

            - p -

            - - -

            - r -

            - - -

            - s -

            - - -

            - t -

            - - -

            - u -

            - - -

            - w -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_w.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_w.html deleted file mode 100644 index 45baba71..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_w.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - w -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_y.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_y.html deleted file mode 100644 index ef82013d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/functions_y.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented class members with links to the class documentation for each member:
            - -

            - y -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals.html deleted file mode 100644 index 0e68d4d2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            Here is a list of all documented file members with links to the documentation:
            - -

            - _ -

            - - -

            - b -

              -
            • boolalpha() -: ios.h -
            • -
            - - -

            - c -

            - - -

            - d -

            - - -

            - e -

            - - -

            - f -

            - - -

            - h -

            - - -

            - i -

            - - -

            - l -

            - - -

            - m -

            - - -

            - n -

            - - -

            - o -

            - - -

            - p -

            - - -

            - r -

            - - -

            - s -

            - - -

            - u -

            - - -

            - v -

            - - -

            - w -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_defs.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_defs.html deleted file mode 100644 index 7ed456cd..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_defs.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - c -

            - - -

            - d -

            - - -

            - e -

            - - -

            - f -

            - - -

            - h -

            - - -

            - i -

            - - -

            - m -

            - - -

            - n -

            - - -

            - p -

            - - -

            - s -

            - - -

            - u -

            - - -

            - w -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_func.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_func.html deleted file mode 100644 index 9f91746b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_func.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -  - -

            - b -

              -
            • boolalpha() -: ios.h -
            • -
            - - -

            - d -

            - - -

            - e -

            - - -

            - f -

            - - -

            - h -

            - - -

            - i -

              -
            • internal() -: ios.h -
            • -
            - - -

            - l -

            - - -

            - m -

            - - -

            - n -

              -
            • noboolalpha() -: ios.h -
            • -
            • noshowbase() -: ios.h -
            • -
            • noshowpoint() -: ios.h -
            • -
            • noshowpos() -: ios.h -
            • -
            • noskipws() -: ios.h -
            • -
            • nouppercase() -: ios.h -
            • -
            - - -

            - o -

            - - -

            - r -

            - - -

            - s -

            - - -

            - u -

            - - -

            - v -

            - - -

            - w -

            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_type.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_type.html deleted file mode 100644 index 7d7281ec..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_type.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_vars.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_vars.html deleted file mode 100644 index dc602d9d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/globals_vars.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.html deleted file mode 100644 index 59cc13ca..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -SdFat: Graph Legend - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            -
            Graph Legend
            -
            -
            -

            This page explains how to interpret the graphs that are generated by doxygen.

            -

            Consider the following example:

            /*! Invisible class because of truncation */
            -
            class Invisible { };
            -
            -
            /*! Truncated class, inheritance relation is hidden */
            -
            class Truncated : public Invisible { };
            -
            -
            /* Class not documented with doxygen comments */
            -
            class Undocumented { };
            -
            -
            /*! Class that is inherited using public inheritance */
            -
            class PublicBase : public Truncated { };
            -
            -
            /*! A template class */
            -
            template<class T> class Templ { };
            -
            -
            /*! Class that is inherited using protected inheritance */
            -
            class ProtectedBase { };
            -
            -
            /*! Class that is inherited using private inheritance */
            -
            class PrivateBase { };
            -
            -
            /*! Class that is used by the Inherited class */
            -
            class Used { };
            -
            -
            /*! Super class that inherits a number of other classes */
            -
            class Inherited : public PublicBase,
            -
            protected ProtectedBase,
            -
            private PrivateBase,
            -
            public Undocumented,
            -
            public Templ<int>
            -
            {
            -
            private:
            -
            Used *m_usedClass;
            -
            };
            -

            This will result in the following graph:

            -

            The boxes in the above graph have the following meaning:

            -
              -
            • -A filled gray box represents the struct or class for which the graph is generated.
            • -
            • -A box with a black border denotes a documented struct or class.
            • -
            • -A box with a gray border denotes an undocumented struct or class.
            • -
            • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
            • -
            -

            The arrows have the following meaning:

            -
              -
            • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
            • -
            • -A dark green arrow is used for protected inheritance.
            • -
            • -A dark red arrow is used for private inheritance.
            • -
            • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
            • -
            • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
            • -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/graph_legend.png deleted file mode 100644 index c0d711ba6f78dafb39c78e211932334862e961a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13883 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/hierarchy.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/hierarchy.html deleted file mode 100644 index 62b85dc0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/hierarchy.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -SdFat: Class Hierarchy - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            -
            Class Hierarchy
            -
            -
            -
            -

            Go to the graphical class hierarchy

            -This inheritance list is sorted roughly, but not completely, alphabetically:
            -
            [detail level 12345]
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
             CBlockDeviceInterfaceBlockDeviceInterface class
             CSdCardInterfaceAbstract interface for an SD card
             CSdioCardRaw SDIO access to SD and SDHC flash memory cards
             CBufferedPrint< WriteClass, BUF_DIM >Fast buffered print template
             Ccache_tCache for an raw data sector
             CCIDCard IDentification (CID) register
             CDirPos_tInternal type for position in directory file
             CExFatFileBasic file class
             CStreamFile< ExFatFile, uint64_t >
             CExFileExFAT file with Arduino Stream
             CExFatFormatterFormat an exFAT volume
             CExFatPartitionAccess exFat partitions on raw file devices
             CExFatVolumeExFAT volume
             CSdBase< ExFatVolume >
             CSdExFatSD file system class for exFAT volumes
             CExFatPos_tInternal type for file position - do not use in user apps
             CExName_tInternal type for file name - do not use in user apps
             CFatCacheSector cache
             CFatFileBasic file class
             CPrintFile< SdBaseFile >
             CSdFileFAT16/FAT32 file with Print
             CStdioStreamStdioStream implements a minimal stdio stream
             CStreamBaseClassBase type for FAT and exFAT streams
             CfstreamFile input/output stream
             CifstreamFile input stream
             CofstreamFile output stream
             CStreamFile< FatFile, uint32_t >
             CFile32FAT16/FAT32 file with Arduino Stream
             CFatFormatterFormat a FAT volume
             CFatPartitionAccess FAT16 and FAT32 partitions on raw file devices
             CFatVolumeIntegration class for the FatLib library
             CSdBase< FatVolume >
             CSdFat32SD file system class for FAT volumes
             CFatPos_tInternal type for file position - do not use in user apps
             Cfname_tInternal type for Short File Name - do not use in user apps
             CFsBaseFileFsBaseFile class
             CStreamFile< FsBaseFile, uint64_t >
             CFsFileFsBaseFile file with Arduino Stream
             CFsCacheSector cache
             CFsVolumeFsVolume class
             CSdBase< FsVolume >
             CSdFsSD file system class for FAT16, FAT32, and exFAT volumes
             Cios_baseBase class for all streams
             CiosError and state information for all streams
             CistreamInput Stream
             CibufstreamParse a char string
             CArduinoInStreamInput stream for Arduino Stream objects
             CifstreamFile input stream
             CiostreamInput/Output stream
             CfstreamFile input/output stream
             CostreamOutput Stream
             CArduinoOutStreamOutput stream for Arduino Print objects
             CiostreamInput/Output stream
             CobufstreamFormat a char string
             CofstreamFile output stream
             CStreamBaseClassBase type for FAT and exFAT streams
             Cprint_t
             CMinimumSerialMini serial class for the SdFat library
             CPrintFile< BaseFile >PrintFile class
             CPrintFile< SdBaseFile >
             CSdCardFactorySetup a SPI card or SDIO card
             CSdioConfigSDIO card configuration
             CSdSpiArduinoDriverOptimized SPI class for access to SD and SDHC flash memory cards
             CSdSpiBaseClassBase class for external SPI drivers
             CSdSpiCardRaw access to SD and SDHC flash memory cards via SPI protocol
             CSdSpiConfigSPI card configuration
             CSdSpiSoftDriverBase class for external soft SPI
             CSoftSpiDriver< MisoPin, MosiPin, SckPin >Class for external soft SPI
             CsetfillType for setfill manipulator
             CsetprecisionType for setprecision manipulator
             CsetwType for setw manipulator
             Cstream_t
             CStreamFile< BaseFile, PosType >StreamFile class
             CStreamFile< ExFatFile, uint64_t >
             CStreamFile< FatFile, uint32_t >
             CStreamFile< FsBaseFile, uint64_t >
             CSysCallSysCall - Class to wrap system calls
             CBaseFile
             CPrintFile< BaseFile >PrintFile class
             CStreamFile< BaseFile, PosType >StreamFile class
             CVol
             CSdBase< Vol >Base SD file system template class
            -
            -
            - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/index.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/index.html index eabe3e04..54887899 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/index.html +++ b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/index.html @@ -1,205 +1,4 @@ - - - - - - - -SdFat: Arduino SdFat Library - - - - - - - - - -
            -
            - - - - - - -
            -
            SdFat -
            -
            -
            - - - - - - - -
            - -
            -
            - - -
            - -
            - -
            -
            -
            Arduino SdFat Library
            -
            -
            -

            Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

            -

            MIT License

            -

            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

            -

            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

            -

            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

            -

            -Warnings for SdFat V2

            -

            This is a major new version of SdFat. It is mostly backward compatible with SdFat Version 1 for FAT16/FAT32 cards.

            -

            You should edit SdFatConfig.h to select features. The default version of SdFatConfig.h is suitable for UNO and other small AVR boards.

            -

            -Introduction

            -

            The Arduino SdFat library supports FAT16, FAT32, and exFAT file systems on Standard SD, SDHC, and SDXC cards.

            -

            In SdFat version 1, SdFat and File are the main classes.

            -

            In SdFat version 2, SdFat and File are defined by typedefs in terms of the following classes.

            -

            The file system classes in the SdFat library are SdFat32, SdExFat, and SdFs. SdFat32 supports FAT16 and FAT32. SdExFat supports exFAT, SdFs supports FAT16, FAT32, and exFAT.

            -

            The corresponding file classes are File32, ExFile, and FsFile.

            -

            The types for SdFat and File are defined in SdFatConfig.h. This version uses FAT16/FAT32 for small AVR boards and FAT16/FAT32/exFAT for all other boards.

            -
            // File types for SdFat, File, SdFile, SdBaseFile, fstream,
            -
            // ifstream, and ofstream.
            -
            //
            -
            // Set SDFAT_FILE_TYPE to:
            -
            // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.
            -
            //
            -
            #if defined(__AVR__) && FLASHEND < 0X8000
            -
            // FAT16/FAT32 for 32K AVR boards.
            -
            #define SDFAT_FILE_TYPE 1
            -
            #else // defined(__AVR__) && FLASHEND < 0X8000
            -
            // FAT16/FAT32 and exFAT for all other boards.
            -
            #define SDFAT_FILE_TYPE 3
            -
            #endif // defined(__AVR__) && FLASHEND < 0X8000
            -

            It is possible to use option three, support or FAT16/FAT32 and exFat on an Uno or other AVR board with 32KB flash and 2KB SRAM but memory will be very limited.

            -

            Uno memory use for a simple data logger is:

            -
            -

            option 1, FAT16/FAT32, 11902 bytes of flash and 855 bytes of SRAM.

            -

            option 2, exFAT, 14942 bytes of flash and 895 bytes of SRAM.

            -

            option 3, FAT16/FAT32 and exFAT, 21834 bytes of flash and 908 bytes of SRAM.

            -
            -

            Please read documentation under the above classes tab for more information.

            -

            A number of example are provided in the SdFat/examples folder. These were developed to test SdFat and illustrate its use.

            -

            -exFAT Features

            -

            exFAT has many features not available in FAT16/FAT32.

            -

            Files larger than 4GiB, 64-bit file size and file position.

            -

            Free space allocation performance improved by using a free space bitmap.

            -

            Removal of the physical "." and ".." directory entries that appear in FAT16/FAT32 subdirectories.

            -

            Better support for large flash pages with boundary alignment offsets for the FAT table and data region.

            -

            exFAT files have two separate 64-bit length fields. The DataLength field indicate how much space is allocate to the file. The ValidDataLength field indicates how much actual data has been written to the file.

            -

            An exFAT file can be contiguous with pre-allocate clusters and bypass the use of the FAT table. In this case the contiguous flag is set in the directory entry. This allows an entire file to be written as one large multi-block write.

            -

            -Paths and Working Directories

            -

            Relative paths in SdFat are resolved in a manner similar to Windows.

            -

            Each instance of SdFat32, SdExFat, and SdFs has a current directory.
            - This directory is called the volume working directory, vwd.
            - Initially this directory is the root directory for the volume.

            -

            The volume working directory is changed by calling the chdir(path).

            -

            The call sd.chdir("/2014") will change the volume working directory for sd to "/2014", assuming "/2014" exists.

            -

            Relative paths for member functions are resolved by starting at the volume working directory.

            -

            For example, the call sd.mkdir("April") will create the directory "/2014/April" assuming the volume working directory is "/2014".

            -

            There is current working directory, cwd, that is used to resolve paths for file.open() calls.

            -

            For a single SD card, the current working directory is always the volume working directory for that card.

            -

            For multiple SD cards the current working directory is set to the volume working directory of a card by calling the chvol() member function. The chvol() call is like the Windows <drive letter>: command.

            -

            The call sd2.chvol() will set the current working directory to the volume working directory for sd2.

            -

            If the volume working directory for sd2 is "/music" the call

            -

            file.open("BigBand.wav", O_READ);

            -

            will open "/music/BigBand.wav" on sd2.

            -

            -Installation

            -

            You must manually install SdFat by renaming the download folder SdFat and copy the SdFat folder to the Arduino libraries folder in your sketchbook folder.

            -

            It will be necessary to unzip and rename the folder if you download a zip file from GitHub.

            -

            See the Manual installation section of this guide.

            -

            http://arduino.cc/en/Guide/Libraries

            -

            -SdFat Configuration

            -

            Several configuration options may be changed by editing the SdFatConfig.h file in the SdFat/src folder.

            -

            Here are a few of the key options.

            -

            If the symbol ENABLE_DEDICATED_SPI is nonzero, multi-block SD I/O may be used for better performance. The SPI bus may not be shared with other devices in this mode.

            -

            The symbol SPI_DRIVER_SELECT is used to select the SPI driver.

            -
            -

            If the symbol SPI_DRIVER_SELECT is:

            -

            0 - An optimized custom SPI driver is used if it exists else the standard library driver is used.

            -

            1 - The standard library driver is always used.

            -

            2 - The software SPI driver is always used.

            -

            3 - An external SPI driver derived from SdSpiBaseClass is always used.

            -
            -

            To enable SD card CRC checking in SPI mode set USE_SD_CRC nonzero.

            -

            See SdFatConfig.h for other options.

            -

            -Hardware Configuration

            -

            The hardware interface to the SD card should not use a resistor based level shifter. Resistor based level shifters results in signal rise times that are too slow for many newer SD cards.

            -

            -How to format SD Cards

            -

            The best way to restore an SD card's format on a PC or Mac is to use SDFormatter which can be downloaded from:

            -

            http://www.sdcard.org/downloads

            -

            A formatter program, SdFormatter.ino, is included in the SdFat/examples/SdFormatter directory. This program attempts to emulate SD Association's SDFormatter.

            -

            SDFormatter aligns flash erase boundaries with file system structures which reduces write latency and file system overhead.

            -

            The PC/Mac SDFormatter does not have an option for FAT type so it may format very small cards as FAT12. Use the SdFormatter example to force FAT16 formatting of small cards.

            -

            Do not format the SD card with an OS utility, OS utilities do not format SD cards in conformance with the SD standard.

            -

            You should use a freshly formatted SD card for best performance. FAT file systems become slower if many files have been created and deleted. This is because the directory entry for a deleted file is marked as deleted, but is not deleted. When a new file is created, these entries must be scanned before creating the file. Also files can become fragmented which causes reads and writes to be slower.

            -

            -Examples

            -

            A number of examples are provided in the SdFat/examples folder.

            -

            To access these examples from the Arduino development environment go to: File -> Examples -> SdFat -> <program Name>

            -

            Compile, upload to your Arduino and click on Serial Monitor to run the example.

            -

            Here is a list:

            -

            AvrAdcLogger - Fast AVR ADC logger using Timer/ADC interrupts.

            -

            BackwardCompatibility - Demonstrate SD.h compatibility with SdFat.h.

            -

            bench - A read/write benchmark.

            -

            BufferedPrint - Demo a buffered print class for AVR loggers.

            -

            debug folder - Some of my debug programs - will be remove in the future.

            -

            DirectoryFunctions - Use of chdir(), ls(), mkdir(), and rmdir().

            -

            examplesV1 folder - Examples from SdFat V1 for compatibility tests.

            -

            ExFatFormatter - Produces optimal exFAT format for smaller SD cards.

            -

            ExFatLogger - A data-logger optimized for exFAT features.

            -

            ExFatUnicodeTest - Test program for Unicode file names.

            -

            OpenNext - Open all files in the root dir and print their filename.

            -

            QuickStart - Quick hardware test for SPI card access.

            -

            ReadCsvFile - Function to read a CSV text file one field at a time.

            -

            rename - demonstrates use of rename().

            -

            RtcTimestampTest - Demonstration of timestamps with RTClib.

            -

            SdErrorCodes - Produce a list of error codes.

            -

            SdFormatter - This program will format an SD, SDHC, or SDXC card.

            -

            SdInfo - Initialize an SD card and analyze its structure for trouble shooting.

            -

            SoftwareSpi - Demo of limited Software SPI support in SdFat V2.

            -

            STM32Test - Example use of two SPI ports on an STM32 board.

            -

            TeensyRtcTimestamp - File timestamps for Teensy3.

            -

            TeensySdioDemo - Demo of SDIO and SPI modes for the Teensy 3.5/3.6 built-in SD.

            -

            UserChipSelectFunction - Useful for port expanders or replacement of the standard GPIO functions.

            -

            UserSPIDriver - An example of an external SPI driver.

            -
            -
            - - - - +

            Replace the content of the html folder by unzipping html.zip.

            +

            I have zipped the documentation since Doxygen changes every file each time it runs.

            +

            This makes viewing changes on GitHub difficult.

            +

             

            \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_0.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_0.png deleted file mode 100644 index d6eb612ad3fa7bcfaac3f26e73bcfd2deeb41367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1672 zcmZ{l`#0MM1IE9xEv$+~u_{4TUDhe_4nZp}i7YLemRJ{Rlq$KECMk8BqkD@e+Oko% zD#~0!TOuwcSd&z$?w1mA9Vrn-@gkzL-*$G+`#k4-p65LOz>|XYM5`P+b_f6f70ma@ zO8@|3AM}$--~)DemVbQ^;H&4+NZ`}oE@~~$JQ&Vmkj~yw`BKq^P+hu);_3(Ca#<<4 z&)B0*C(%1aV{N*_kn8GfL15LJ`sUS;DX3qrmeix1U!x!v7&E0qdZj~m3|XNaL2A)o zF`^z;c5Dri2x{kpF)hOGkIzPGgpWi!Z#h#vf6AJ&R+jfBg*&a?!kxMn0P-(g)QPxV ztrVcw?$p_YwaNctl_@n+7+0QtCN(luCjucLZ?cJcpCV93GI^k$3QS64Eye4vu7h;% zorMaDtp=_*DE3FIWW_7?k7qv}b_g)vz34{t6`4$3d-~bhpDx(X@HO`7vdCv+9f`47PJ`4*qNO6+r^!(iap_rx-Xr-qWMN-VGKR z2auML&#|GpST4lr@lXukFpNaOU_4sKNfePPQLeWR9xI{*#k3xYh?zKLfv{s|2(_n9 zsj*=W{6#<8(87oULi_f%Z_7=)0&qT~GJWCZfH&&6;Ak9=DBKm*#EW@MANebMHmmX4 zn+nCdcaK>(r0YS#R(v!S$x}R|;vb3`!zOzpPrBNAj6B6JiZ%(~3Kl|cwy}kQ%qiE& zqBQgOGc*mm7^Zmmd-?vw`)=dm|pg2ApSw;BZk!1>wm3mNb&(QdC^06ncZb1CyUvvA*CObgfZ~ zdQ>ldH|1?!q$8)HtTs77>ArQa?2`Kg{iu;z=KO<&EMAJLY<4cU56)Au4;hev02|Uf zM|-OmpX_kUEwY^CZF`p^9g$B5)+}dSsrkdZ>+2?8yQt35Hy}QKbe+i9Q!KbWo;Mw^ z7|j2}aVv5?yn;5d)xcX?(i|d8C21Sh*l)bqwQ&!kDm#Qlc+hm`z}j`frjPJhdHL8& zf8Q(ex&Ni<=;Lt9Sd`bR4~u9yRuhqwqCX-KWZd}tvUyDbx^|F;Igc~1srKu9{rWtI zaTsBg=n*PEm+)9FQo+SJxG$RyNjR}#jSQyof)+=A$y)QRd3Wh1o*mcJW!B{%#J?Eo zTnht32jPWt-;EGhso6wpZ)4-hiQ|TYl{uhi(EH$`!t#^2`6L3pV@vcUf~2qrivRVIT6ApYu`bbaFnWZVr3Kn8sp^~H-H78``2@I4xj??>ahfJ z2$~kxE3tQGlZC{46gtt~2m9!EE|>csHYi^)JYF)A`Nw}nWI?z3(Mbz%F?4Ry=7(aWhezRL?YnP5qGD8uYpq!rH>yjD0r=pVq6D%I77-YWJNmj5?6*wnt%mn~5Uw2clJWXvQ{88Aphkgua9Xjb$> zErGs2N1z90CsTUoH_ie?!`)2jgsEdvpT2n0EUxFc2yr=gYj05xMf~YEpRitpS)rVP zrXZ17cBKD9k)znh^IK&B!z!Wv=N4D(cH4$b1D7hTyoSv8)WSFcv&np4R=XIP2LZL? zgkSy=uIU7-mRDb1mS?pMJ4qzdq}Y>wn}@7dd?Z diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_1.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_1.png deleted file mode 100644 index 01767e92f48a34c8b0a1a8089b2a603881acdc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 zcmV+}1JV46P)H?`x#W4RQ#jF=se1 zes;kH1Z3Z9WC6r-1$_cPfZ$jJ00000003YCZke*LBJy2CK2OdCz>7a3@{$(j#QrQI zuOjkubVdLJczS=$Y5N1uB61&>3&2o{`u#LH5rBt**dYvv9m0UvAq-!f;*=(|su^(- zw+zP@#w)`MRq z9bt2JPrH;{d#|l?W#$C6XW7bfiL+cPXVMbL?2$d^{Y$y@_J6KjuZ?m0L3@e4=LScq zTszsymG_8ByJA#&Z>j6$N*}cHY2|3?)1L29lY1nh#kUEo1p%fmIZ(xPo;|7Klc4ABHx5j sANJ(8i2M?fw?`)e00000005BXAJ?C}laql{UjP6A07*qoM6N<$f}Hq?8~^|S diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_10.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_10.png deleted file mode 100644 index 1a4e3f40544ceb371f5c831c15c47244d3b9b3f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^IY6w+!3HFk8}eiVDYhhUcNd2LAh=-f^2rPgjG>+` zjv*P1Z>Rs|Z88uzD*sC0++#keYXw5z3)I*OID`KO2(55``TXR}@7_FHwoDI~zq6G= zu|>eCgK6%Ca+U(-4dK_Ep4l+QFxo7eYn}Lj(_#I>4wjc6za<@0G)Lc*)X4P9O(IOym! zoxHVjdPnmjC$BoXF7t*|XpmE~m&vL%{-+HzU2}SadbM^Ri+>}uJ!6{x%42ESSAHEj z=JfV{{}PeZ`nt8|)}f2H2(DcFvOB8nD90P6cg0Dqzr1g)lnOO7wy}_IZj(eq$|Zc( xt5+&q^l0Oq|2j69Ls0TsyMPmiVvETG)`Z)>onq1kQ-MLw;OXk;vd$@?2>_z3s7e3; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_11.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_11.png deleted file mode 100644 index 44052554e360ae39adee10189934777ea7616b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2143 zcmV-l2%z_gP)8rj-~E0dgqeHqIlsNc$IoJFpnGnvQyFs5 z!FXb!9!)y{1C9cCHtiq^=S9n6GB}5Bxv1k_4S_{wkvFWW@xp zPJtoM7m3tr4}BRZ%>z2GD$@WUQh5!)Z&QwKt4kvPije<_#96N|eB83^1|Ut_)~|Hy z6adKMWF;$xwOg!hn&f0<@bZxJ(o~q_bt`YMEOmL#ZTqlUqu)A=HPYh;sNSe6_X(G#jt6Opzmw)Hl5 zOxBeVUgtK->Tp!qLAN>giQ48{CI4d?I{~0tedLC6*}7X*k6D)90SHtfBGRvC$z**Q zV6vZ>&Of6}PF6CHxzA!NV|8La9$G5q;pKe=OS^JJ{>rs)-yH#Zy02{rZ zjFCvaFf-!lCsAIbV_TScN$Nc-QC0+QWsE8>iIW$xjuIv(zxsuViCe#?ihBWjyNFmQ z_N}?pE+IzXj4ReS%jK!<)#?vU**1=g;EN*KQAKZp(w(RjP>>0LbI|tMcW{6W(q=&> z9zk<~`R`qR!1F1Xn7Hk;lapV1>dKYXLn4?gmCzaJBSrkAYaIQ=&o)1?jOv4txfRs^ zy4xU?_zBAE#D!e}ge}j+sw(oTW%ur;Rw_3IIi&9jfKUgTboJ_=aqZgWAYT`4GDnX(v|rSf^{|yppq!{wZhB$&?&du~j_K(D*aWa6#IeR~Y`k}Ib@k=9VCL)g!?uyz zKK;joytWNH#%sIZ@rwC>y--(Hrl!8FJ9o|nIi&C30B#I(ph@fNZ)0ukFDAZjKWaa5 zmNm%lv3~N;FVFc$Qmgn;14r8BC2no)RZLGGc&}8N_ym9*s<1?Swa2omJ`i_&qik+2 zUoc!`?%Na*R}r1g%ErdV#dmh>n6m)ArJEC4_IV-u532fVl=`DuUw`-eAr3RT`tn&v zkjvqT+{$pNx9IsF>70G^(Hj^a-~YE#>BdLxp_BixEt=8G+5)C$a ze%sV*Rhb1L;<9yh^_90*S6?|=tDT-z#UVgW0GJy!7^~v18OVz;SA~-1%&j2pw)a$j)%0NHKx?%Yj<|>O3 zNljJ;@1MEdOAGo3jw;V7OviDS8%qOx@WGi40M7$>etP=Rsqyh^_o_-$1m6T;1HM<* zc^7An^dI}#FD#?^vbcEmp8%c&@Z`+Qsn3a2jsSWbz$}0^fTF&^cJTR8`}74l-mRUy z+AV0CMrre{l>Y|Dv!^y&ExZKarFwngWT%5W0X+ubyCPcZjh#h!|B8uz;)bC$yP0ZJ=6}q33%?5hF5GRFc1^9UD19UGZ5kDR^_Bxe-ebDdXtk3Wl^>HW*AyvI-Z zk@xW@@A1dQbN*3;dwE1eL{wm$tPl|qQKoUSLPSJFna0Tq5fKq(8Ye46L`0Nn!#=v) zNGuA(--v6e5`-QG|Y4k3c)kgR0 z)${Nb>v?iH?EoUU3}6f#J17|(KZ~iIb^t^~L_|bHL_|bHL_|bHL_|bHL_|cH_g}+8 Vvr|_x1`7ZH002ovPDHLkV1l?wDggih diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_12.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_12.png deleted file mode 100644 index 9ac44585c99b291f77ee63702835233e1e419cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)suJdHa0SF<4kOk8TwmpC|fUR>bYvlsqF*a<3j}8D%F6peF9)ec8h{Mq?m!IJ( z8Kp`kl~7azD5?Pz)qvQb%3+wWOIJ3}SWVCp6)4~IAoxnLr0+CQi_i8qK(kWk7`Js7 z*h;EIikGq$i=|SnnxckhVHd1P@13xg`md?@v9&2m^APbmQ){ZQG)ApoF|FEvjv67p zRi_cF2rp5kmb4_d{Z(l({jCMHjz5c6rH)%NY)>G+nqnED{zS*tq8{z+7~8vxti0E%h=MKyq;8W0;)y;~ORr3Y{ijgqL(&+}%Q j&hPMQod6+(5R%0kE!QkvOOWu600000NkvXXu0mjfPxY#! diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_13.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_13.png deleted file mode 100644 index aeccc5230047bc140871e5bbc2fa786513aa5df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP) z)O}KQirFdb(cm+-p6@!g9;^LB&edmw zc~@Gdt!C$#bYbbv^B?X0TC$I?Q&9^IE%TbldaRy%U#Lz&b=3JMS%5{_=49wIpdK(w zGp}d@b8H3BJOMOM0L>FH6d3KmwKWm-A(T!>0JnTvs^kG+Z!LllLP(`N0sO-?m=AVJ QH2?qr07*qoM6N<$f=n5hApigX diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_14.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_14.png deleted file mode 100644 index 47b5280daaf18af104261c8c3733238b69e029c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmV-_0f7FAP)XtVC7u2mA!xNzE*$-G`5CT~ zQL0q35Q^#mMRkCpI-o789Hxj}da})lk#jE<(<;_%tV9KtB_IC$Dq>jCLiq001Qj1^@s6Shjwm00006VoOIv0RI60 z0RN!9r;`8x1*1tsK~#90?cLjpRaG1Z@b7QWnW+hLHWRim2$RA|Iko zV_si^>cMghje;J8=pkrS1fPUJs)r(^KOhK#C|{&rDiI>kV7m z(8xQGh&}_bA@3l_O6LH4oOcir*;*fs^~y2q_yT}!Swv*HZRlOgvib->E$<-6IyLli ztE_CTkH&gc@j2j)^kTUyXx;%NU0`9+^+v60jS z0Wfi6nV6V+XlMxU0D87wKXM}Pcp~sBUSWz_+~c!Sw0JC58=9Dye$H|5mWUpz*N^_4 zcSI4SH8xV0BD zqxVtkaRBIcuvmqV5dcSv4v1CFp2~%|4gT`xLcY%!(i=QZiiMj4Q!3^X$qgcE4?RNp$t*To9box)x zwPj-X3SUdJU7=iQR)k*?YB@Z|mD)f zChp3Wuh4E^jdO~m$3~DRlt{9C4!o*csTk=MRS+}YWj>xsm?xOf_ii>Eiu%*;)9 zIyx(YU8>k9f|jcH5|b)^FTmI+;u2VDxm1)TrlgKHt=&bD*dyDybH|zhP60SIK7Mel zQfa;_f}Mc$e_B^y$2Z!&uD$y%-mibc9B=9)uRaUgpK%78&AFav5jubV@C5+#0OqHs z_dnd}bl()wJ%FqqG+C5P5@RFG`3twi6eOUy`}hr%B=$@F4eYB|KVJZF62Qr7b?+LW zQUi3i2sW#tErQ{0SEiC~H$!pyIOz5ETQ`bM+>>W~2}pZvq|%2r+_{!gqjBs?qjC6nqjBU(U}(ML=qCU=BKS4$*og8}ug{;U z*N+^yc=5q0Re2uJFMC^@e{&6t0QCMtkK8{+V*y3)T9#GW|ktbTgMK% z)FSvXIfzmaKL|=khw7jdp_5y>>EIxAP%)dd7D}OmZAoqKacBeQ^)9))yq8PP{|_?s z&AquN_dd_vy>G7th=_=Yh=_=YA|}p;LZQ$N;3ja6IlH zD3l_Ad(OrdXM?Jq0WegLh-x&n7i+V+3m_MF5ENJryJNRc+N(!4o4pcQI0h671&uof z14aP6i8}}iRfUjA7jbUv~woQ zQq0bNKiS(m@v2l>yA0qEpgRE4l8D-I6(m8O#pkuHJrRQ(IltRB>YU8$L=c+EVzQr6 zB0qprQy;OguyV)I?C1OR_w-D}zKXTE`3-ApA8Pps4%3R`= zscd-o1Qr)ReO+BG^^0gbcAp~m^L)N^ZQv*-~(=8hb>-kwgk4geShb z978JRyq$jAm&K6BHNQb=MZ28CZMLZw*iCa8O&Z(ye{f9uT#)1*Skk{`)=Zn6{C7t_ zGPDRdaVQ>{yJU+k^ACm(J1oSEj+-}>GsIUuZZ`VBdLY-;<;Ya&x~;#D2d5s2j?qzR z@Xo$cW?;#|RbwIYqd?=s!z*1n+P4(f*S0-F^p^ax9oi>w>$3su{3@5)u#PHWXj10sk3FWMR#tM5Q{gBp5{7VP^0rV z_pffF*5wB*mzvj23r+uIn7;qIq|8=@PjkF)>UV|KP21otx_0TsTkr0ts#hO-IB#C# z4khjU{9etk*X?Gn*`{;l&z7V!tgkd}4tHv8ayuUJ%lo@-^fimE;%l$J^Wo8ZGii~h zKwzlJ#*4q!$h0xNcZ@id)@3Jy6as6mrv^?iFll^WfBpQ_Mgj46ZxzAenlelNxncC= U9kpBT0i%q;)78&qol`;+05|W~Y5)KL diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_18.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_18.png deleted file mode 100644 index bd80900b1c59f4cd9686847f87fdd794017a3a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmV;Y0a*TtP)m23~GBp2@`v*Y#3 zzsP8S_gw&6NaA560}w(8A!ImC7`p-Z1aMwCmp$_YaE}Ki@n--J0AHgsItbJIC~5tV z8Gs*`%i&1sd0IIU5+n99_XXQrtd{$%{EBFapAxTD)K=kL z=DHUxKh
              _`GRY;MNC?+yg8v zE2aCTUgHG2l)W07E8pSogX9ujwYDn8R?T}<*$H0)NuVXZwaC`-yV%-pNBWx9+#;&J zfRz9AIf5Q=X|uHjCZIZ{tjN2!Z{0Qer4%OQCIxLPMc2qAO`Lop0RU0?|2VFysxU=sFVrVhXoRrvsl&^)&TnXl+9+ zIi>m1+Ir?C+Bz-vinNaCn*7Y(-%?vtGXqO|yE$4+kydA>fwt6~620=h<9(XT=KzM> zp?W`sjmp>Twa|NF$YxpXDXe4y&xp%B*+_dkD#dsE-n}l-+woFNZN84nKCxPBi|AVy zdL7?$zBGDWqL0KxE`TTJv)Z^LwdoDw<N8@0+5jKoa15Q<3{g(o912P5%<7p>aD{W7yZ z>~~Sv9ct>q&;W!GLP!LI<=hFt6~Ml5FD>%~a9N(T$(sP&0NitT)CuF~*XHVn3Ba7M zm+o--*cEPMQ&64&$`e3&0$P^Wd}y^SF9)hO_(Z zLA2y88#0gAuKD(c>TC>=`=ZG;wu9q;N?mGgaWu!)M~>vIp2j8Q*+xu*>Q7~^v2_Uw ziCZhS%2TNIiL14%F#NP@vY5)Y2Pw4$U`vED>~t9{N_uK2b38f8Df zoKwE@RConL?j@}+KWZ<>jQAQs3-DG^w>)?0-MD=A&l^ z*3x-TpGNJdJVJvBuV9cnpq8fPZn4;FK1$;>jhdgDUu$10GidmOXJ*if!JJ4feOl~$ zGRofPR_Jf><$;%m=`w@FvU?-#EtGB@))ak)25S~=Ci*sUl>O*@wJaqUV`MIG4Q}6V zwcA8QWiEZT%prHE=F57uwrU8wokSIo`}W!xtGyg&tz4!9Wr#1;aA`_*Z46U?9OT7)XM_KoSfFk|_OWxD@)x zx@6Z?tI(eTe8g!X6YvG#@oW)<5JCtcWO2R$e8^+RMixUT00000NkvXXu0mjf3DMu( diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_21.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_21.png deleted file mode 100644 index 5cca3cb5051039775cac51dd2e2bcbcdc3295cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmV;r0Y(0aP)ODO|;ZUQs~uir{lFb-t}@`DPwC5TtN-7(r zdEcKjjwP#lj;t0CLI@#*AQUq84B#EWeA2;_{;#d+3j5anqy#-=Bdr6{L31mJzKCM_RU-h%IajpG%<8cvH z;_4kbSFY+W;IU^u)|Q*O63EsmWS%uYjL0T|?RG1HtmJs?N7esZ)(I`Ay-M74$Nh)> z-4G?vt%)2V#3sewS{LVS2G{{UsywDVgRF8?9CN((^}JTX=b8?0Q{ttLD_s`{touQ^ z)ZUus9rHYIH73?)&w8uaT8Ya_xAQIX4car&CG(dp2{iOSuobAp?GXu-90`;h36z{x xlkhq$3Sq(o`uw?mj0{8o_{+TzLI@#5n{R%PO_Oy*zYhQa002ovPDHLkV1m4f$T9!` diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_23.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_23.png deleted file mode 100644 index d289adaf745319cf41a6a374dddcb716c7d35edf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)epeqvN85F(Sa z05(boK?~^|H2?ON3Isyr;(X}=eiOV_d0bBm2rcYUC=+xzv)x-2E=fLd{JZpvLt!q! zP|8465~#bkxbQe9N%KtCYioYm&p~q1nDGK{iQT z-B)*Qb?w`Z?R#z1HXLRY{p7ecu60!vNR)bG6mpziZybrQMotrg@d~8V}+13rRw` zlV#Deos?1~$&@7+A^WE++31?%7+MKOr}g#8iM_r3S5BUseSP=t^*>9;Gf<(4z<22E zQ@hyJmhbkl_wyiexE-%_2}hvGXm$0$%Rx9e)#){d{3p>2xeo7yzR6dSLPB==?RBxxG1#!Ncv+Hfsp(8bdJo33QS_d=@^ z+@=X{wa2Q9GiI_}Yjt(=MIponu>T%_XQafT5LgBPAx4j>p6Qm^wDL)vGKYAloEFlgKwpZ@m`=VqBA!_}1MG2((SYqr=p7J9_**>0>kx+gj zEb-f$h!Psw>UNF2!BQn0T8D?fJeW?eVr}ixbIouYP>0)w;Dq>OXXna|&|@cZ0l=$0 zA2aJ~qG`kQMxJyoT4~F6tgd}+YXmyE&ZCH23pefOyS8!NU)|1UzOyS9pBtpM5)Q5H z?dw|rE(5qc9&erzLcefB|FG59rrYbx0hB{X5W>LY5=-E6p(XXF{Dx>rf#@vyAVF-q0ZqJ=~)gbNmkMI zo=11?Ob!5iQ#y_cgx0d!+B5N8Oo@rbw{F-cLH2PTMa%exlq892=d%b`>PMS*{4s1z1 zW!-S9xmp*+lVgKPlE}ZdHDs>QR)6cey>9|ZRX40Y?)yB7&?U(~j(^wCFNoC`u|7ljOEs38pCy6x( zIB6{m%yDNBXZZaf!e%G4h4*5$ear={1)uvgI=-1^N8NwHpt3*W(9A2Fx%rl8XzUBq z*k^DlfhYIYS1rCU{a=$>K8mTlkJT)EdU%7#`lZ?Drl+0Di|BlRd8>TTl4sd=XWmsT zt)0@S|g$4is diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_25.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_25.png deleted file mode 100644 index 6815203efb00c8d6b4a63e3aa36f83be01d30cc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)wCXYA?KnNj(kkzwEv>gFl0qhpeWz9SRT;j%*IA;Ji0C($*2moOCyi;2I zaRxBjW%cGgSQk)ULWgz^{*)|EAwC^07H18U}(%8*dm9;s^mHM{E zwcck;_9v~C^IZkucZk)-KR51F-d)iW2PiLls~@cqS5nrxpjFmt{=rket*fEbFK6q1 zmnpGCS(B8!od4AR(>kV=pDI>mO=_!Ym$uc$Udpc;UP2v1aUA1K95*K=4|o%Y1W+8u zP#nil9LJRIIYYrl^vKS0>U4Ah@UY8;BzOTh^iF~hLI@!ac>^bHP?e+Bm`?xz002ov JPDHLkV1i5Gv+Mu> diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_26.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_26.png deleted file mode 100644 index 509288571e3f819a76ddc3afbbffab26f90f09e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^HbAV(!3HGdRJ#;`6kC$Fy9>jA5L~c#`DCETTTd6q zkc`H+(-Zj)De$!3zv5gmN%nwsMj5aFBh$St2j$ZQJrr-}c(=XxK5=Q9YVA@3HUXy- zeG)A9B@ZwkxM(S!8^`dDVcy2i3O;)nX4n`Rr5$qjKD6@Fp|g78;!RJcgzd=I*ijBd zQQTtwLEcf^W$wWR9mgg`XxMzNIC;>Id^i7?~wOX-NM5BblSOO--}rIt&wii%wf5b`OWwEcu4P^mRh8-U>ABt2 zqz{iST8rEPp?dWl-(>ggO1(Hk@a6y4^Nz2Gk#^$v_>?#3M|i}Bh0mFQ9%t}$^>bP0 Hl+XkKL2ZYk diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_27.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_27.png deleted file mode 100644 index 1171b4283effc72a4151f42d090b9a9bae66b63d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56840 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_3.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_3.png deleted file mode 100644 index 4035b529012c96af1ca208f577603fa4cb617150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmV+`0o4A9P)00006VoOIv0RI60 z0RN!9r;`8x0N_bPK~z|U?Ulg|!Y~v=UCI#5!w#v~iXjjeICdQ*MhO=VQTRZJ%xQ=w?-IVNR#6I$C(5;QW002ovPDHLkV1g$%eM0~M diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_4.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_4.png deleted file mode 100644 index 45215929d3707d81f61606acacbd77d0fff33c18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=38P)$s^CN=^gtzC%q546Sg-B) zOOEaTW->`6S+jb|Y85cX7-LqT3))_R58%`|mM!rEyqArU%nR@deASL=c73u8kI~Kmp3LR>d!Vnfpq?w zY2I;Rl3sB1iJ;bd+`O7R9q!yW_@{%-{ZMsV4lwh(8{M5x{38=0Iqa?W;EF$Y zVZt=ErRH;N3`}e!AZX{ZwJaMQcPQ8X%6x3P(YDxDCajJ5E&mp?Iof4@n)tDfflIcxkMXPe|@Udzflv}wuvw{wN-yk~}7y7VK4Gv?T| zohFY}-)|}OT^x8R#%kR&jp~ZbcVfELe-DJcn^(OlGSB<4Y0ln>Qa)Z$=}{)T?#$o* zaOb3Tozea7i$fQCU#~l&SL?DlILfqaxBK~Jx$6s0Zd~Jk{`&ve$=PeyPYvq5^m)Uz zFZ|kvO__?%`e)YYZFB233qQFdWU;q##gR#VQVSj)L_;TP+xPEYsgUQ<7XR+JzQ5uU l?&*J3fg#7Cm|{`K5H&xtzvWPVIxu1wJYD@<);T3K0RYU2$%+5~ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_6.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_6.png deleted file mode 100644 index 735ee5fe9fe2082c3563b4c28b4af98f50994f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2149 zcmZvedpy&N8^^yB&9PMOxs@NGW|hiin52d@gyu4aat)dLt;JB{$LS)Ma%b)nlFX&C zbRoHn!n7zt`{g*YA9u*X#3np68F}-}m!xTN?{;F$FOI0K_dXA?*P` z$ZfY*7u~z-F*mXGyRp|3Wq|~C{;raas!RY7Rj@>wqGJk{C#-K`hh)Hi?#TB|j{fdr zaIDcdSF{@Dj83&KSDjDF5k=bGNwi7z%D?O;jNA;y?O59Vh+Un)Be>&6a~-io zpwxd>dnz2ECp0OVP?Y6W8sY-@0x)moOGv7Sc24BMh+GrUhU>5?lC1^|V8Eu*z{u)K z$k$sgVWSHv0H;cFe^=v?EF6d0(^bUhzb+tpPVy!;l|}|$&_Vpi>B;-P zJlmsvO_CP4d*cZuFA~^GxfkUwF(W^+`gyLk$k1&;^>4j(j*!?@MS_{!ZrF+accd+v z^Ry{Au?U`XS_vI&pw~klABzs`4OHyPe4@lsoK`WQA$sJh#zhU^TQ=xdhHTpoKYr>L z9~85$%yurbl5smPm@GTIsskzCXvbyVd1Sh%tp4k&)ySExE zv%PmXs0Vf$iC6LYO#2ji0of=B!c1xW4O^?c1g;+s#27Y{D_hb_25}yGJm)h*PWxrl z=}Y|9uB9AJT&z?%^;o$hULXrd<)~+>9zqW}NTBy|GW2nMK?O}dRPtL~)2dYTM+1U@ z&m8r=y}UP}v{Vy}$LCK2m1b-(={fSHpVyY`>p2a6FDR1*3*KDp_GZj*ixy_jDph&V z;wdAUEx(#ZFqt0DOvj?f$OfI-+-S1}wURs885!G5GwmAabV9S4u&hcU$H6AH=X4eQ z&9+k3K%BTutQU!jiduq4l#y(N3@g&?B(TtzhSifVimz?DC5C=5rQ#jleB9FZQs9WB zvF4be^jwp85$v@QENk(EmX;qEcq=yP9O1mC*}8=M*F0X zu6?!L`XY>T4%h-*RQr2c1V>Nz5jjVE^X>c(gcOh%bsr)Z>E8IZv+x)#9zPhd4^Un9 zQ12cBOJrGC6n6`vO$gf;3yiq#lGatZUhaMlm{i?*S2ETFp%XC|1aNQ^`8tx5@K5KN zLIy)~DkAuuK)`7AKzYvpWcg4&_uuL4n2##xfg2Er%2LqnI#)V_iC^yvI>7HdTHW8C^2E=hE*4o%m}DoI7!xR`1*Ozx;LS5 ztWV5`W^mYjx!ct7wOjdW*)6R~yg9)y*+m1B=oMo$)M@Lgcgabj18_nZZ|rVAlv2j_ zw{MDtF7XN-uNU$KC#EW_2CkS($bp~LZGrth3;ysg`8CI2jNu%VfFE>#hh|8ID!MX~ zlgsE=#mO;Av&f>){mU2VJ{Y+XS-BnF>nT+Y3v=I2El=fx8DO*>SL-KAeUm;ueipN{ zJ{9wR3w*t=PJ8-CB*A}_{CIGIr5W|Hw$?9%$3{`*74htM$&d;oSgnpaF}iFk?^#Hj zF;e)`=B8h3yrvc-Pvw*1!ZH_r*AmOGV8bC!k2p(2E1HV_euWTJ29ZPQy&f2=Lxz?-J3)lc~#`eH; zHXiNcBHSYM{LA50Eo*jmB4XyLQ?V&I_d_Oft=s%c@%9!U_y$%;325d8yE zlIsaD%M7!gI&JzG7jhO?`96!KnZGGD>g3T8a+szCxPNV&_H$}>$&R~0hX$Ud z$dqB;AG+Glf~5<@>r#VH*#qh6S9auRy@30-jYq}~0idhP>U=Q0f>%|2Ikvh2n~ z2Rj+#Z5#Ga9+e2aB^WeL>)hU5=)mhO%m}UtyCkeW_|L5QA9^U~&JZ(PqzCI10LP~N zNhke*W4tOieSlIFc@XKAu-KwcUmvWQ&vV-`sabum7Vf(h-BYJA=E1bT+kjip&}`bT waxW8rPL7#%(biwFWMYlg|AV;yv$R#hzCe;@`p40}-M;~_G_yh0U$~a^7sV(YZU6uP diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_7.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/inherit_graph_7.png deleted file mode 100644 index d46652cdf03d72844d4e0bb4b3250eb5f09e79be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)zd!!Qhl&rOEtJl(-Xx5^MfU)sm6Q=p?HFEJ`86s;eM zmXrH{Ah2j27@bAQ0SF<45c050!q_W-6M%zrEzimsz)v{vBHZ)_;KQXHGDDc_qmuC6 zuNHFSQyP?33fUN%G9WZ%KxoQHHI}C2(DFo;w1$?6Txzt?s>0h8t$pR>h1WePZC|GB@$}W( zkly;Mcy9FJ6IZ%g!j=-Zmsq=0FRXDbwuZ^7vN9#75bXu8G+)atF}fyZnIp2t_Vw_1 zZ}fYn_5ZzWXi7eACos0J0ih`aLQ@8WrVNO-(a&yGJTEhV?|4u$<@fge)wLY5@V9jV egb+dqapVdH>ONNFI$yK^00000y8PIiW(2SCvSpy&Z;jr1NCWlg%4O6R40CHq5TB|6Y9PVWMn#n)4LnV^3$ z!{8};F6b74m*kOrDYv2c_{@nCF7Ef(%#zouFd~rnF?!~pVB*+m6x7s zdaM6@z1#j^DS8bx8MBt{7KHW=Z_(GvOU>DIzLn6gpr_kQ%GyoFGE?2N-m{UWnR-u| zk>)MeOUZ97Ce74J^qN4lMprstduFYPS~OX+lGJN?85-|K+B2>HA5}xqZ@ArPSY864 z=mAjl04RC@S|gp^q8OJMz$rIMqF?^TSfaT`C)Bjk%EroMpgei@!^2n;bFA26yI_V6 zn7=KX$Fh=Bu;6H{lGjC8p#x75CF+Qru)lO2%B4#;E&WU>P?*#VjCKx|GP y-LmM15x_MJGL!G`=cQ^o{qks?fDl3m(UcdjTsc==;Y))60000 - - - - - - -SdFat: Class Hierarchy - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - -
              - -
              -
              - - -
              - -
              - -
              -
              -
              Class Hierarchy
              -
              -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              - - - - - -
              - - - -
              - - - -
              - - - -
              - - - -
              - - - -
              - - - - - - -
              - - - -
              - - - -
              - - - -
              - - - -
              - - - - - - -
              - - - -
              - - - -
              - - - -
              - - - - - -
              - - - - -
              - - - -
              - - - -
              - - - -
              - - - -
              - - - -
              - - - -
              - - - - -
              - - - -
              - - - -
              - - - -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              - - - -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h.html deleted file mode 100644 index a76af4ff..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h.html +++ /dev/null @@ -1,804 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/ios.h File Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - - -
              -
              - -
              -
              ios.h File Reference
              -
              -
              - -

              ios_base and ios classes -More...

              -
              #include "../FsLib/FsLib.h"
              -
              -Include dependency graph for ios.h:
              -
              -
              - - - - - - -
              -
              -This graph shows which files directly or indirectly include this file:
              -
              -
              - - - - - - - - - - - -
              -
              - - - - - - - -

              -Classes

              class  ios
               Error and state information for all streams. More...
               
              class  ios_base
               Base class for all streams. More...
               
              - - - - - -

              -Typedefs

              typedef fspos_t pos_t
               
              typedef FatFile StreamBaseFile
               
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

              -Functions

              ios_baseboolalpha (ios_base &str)
               
              ios_basedec (ios_base &str)
               
              ios_basehex (ios_base &str)
               
              ios_baseinternal (ios_base &str)
               
              ios_baseleft (ios_base &str)
               
              ios_basenoboolalpha (ios_base &str)
               
              ios_basenoshowbase (ios_base &str)
               
              ios_basenoshowpoint (ios_base &str)
               
              ios_basenoshowpos (ios_base &str)
               
              ios_basenoskipws (ios_base &str)
               
              ios_basenouppercase (ios_base &str)
               
              ios_baseoct (ios_base &str)
               
              ios_baseright (ios_base &str)
               
              ios_baseshowbase (ios_base &str)
               
              ios_baseshowpoint (ios_base &str)
               
              ios_baseshowpos (ios_base &str)
               
              ios_baseskipws (ios_base &str)
               
              ios_baseuppercase (ios_base &str)
               
              -

              Detailed Description

              -

              ios_base and ios classes

              -

              Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

              -

              MIT License

              -

              Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

              -

              The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

              -

              THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

              -

              Typedef Documentation

              - -

              ◆ pos_t

              - -
              -
              - - - - -
              typedef fspos_t pos_t
              -
              -

              For internal use in c++ streams

              - -
              -
              - -

              ◆ StreamBaseFile

              - -
              -
              - - - - -
              typedef FatFile StreamBaseFile
              -
              -

              Set File type for iostreams.

              - -
              -
              -

              Function Documentation

              - -

              ◆ boolalpha()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& boolalpha (ios_basestr)
              -
              -inline
              -
              -

              function for boolalpha manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ dec()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& dec (ios_basestr)
              -
              -inline
              -
              -

              function for dec manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ hex()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& hex (ios_basestr)
              -
              -inline
              -
              -

              function for hex manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ internal()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& internal (ios_basestr)
              -
              -inline
              -
              -

              function for internal manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ left()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& left (ios_basestr)
              -
              -inline
              -
              -

              function for left manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ noboolalpha()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& noboolalpha (ios_basestr)
              -
              -inline
              -
              -

              function for noboolalpha manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ noshowbase()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& noshowbase (ios_basestr)
              -
              -inline
              -
              -

              function for noshowbase manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ noshowpoint()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& noshowpoint (ios_basestr)
              -
              -inline
              -
              -

              function for noshowpoint manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ noshowpos()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& noshowpos (ios_basestr)
              -
              -inline
              -
              -

              function for noshowpos manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ noskipws()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& noskipws (ios_basestr)
              -
              -inline
              -
              -

              function for noskipws manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ nouppercase()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& nouppercase (ios_basestr)
              -
              -inline
              -
              -

              function for nouppercase manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ oct()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& oct (ios_basestr)
              -
              -inline
              -
              -

              function for oct manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ right()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& right (ios_basestr)
              -
              -inline
              -
              -

              function for right manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ showbase()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& showbase (ios_basestr)
              -
              -inline
              -
              -

              function for showbase manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ showpoint()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& showpoint (ios_basestr)
              -
              -inline
              -
              -

              function for showpoint manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ showpos()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& showpos (ios_basestr)
              -
              -inline
              -
              -

              function for showpos manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ skipws()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& skipws (ios_basestr)
              -
              -inline
              -
              -

              function for skipws manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ uppercase()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ios_base& uppercase (ios_basestr)
              -
              -inline
              -
              -

              function for uppercase manipulator

              Parameters
              - - -
              [in]strThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ios_8h__dep__incl.png deleted file mode 100644 index d36b5a1d934c5a9f80529fdc88e5b0d6d5fb7e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23118 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 KMrAkdMf?|eTY5kM diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h.html deleted file mode 100644 index 5ca3dadb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h.html +++ /dev/null @@ -1,522 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/iostream.h File Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - - -
              -
              - -
              -
              iostream.h File Reference
              -
              -
              - -

              iostream class -More...

              -
              #include "istream.h"
              -#include "ostream.h"
              -
              -Include dependency graph for iostream.h:
              -
              -
              - - - - - - - - - -
              -
              -This graph shows which files directly or indirectly include this file:
              -
              -
              - - - - - - - -
              -
              - - - - - - - - - - - - - -

              -Classes

              class  iostream
               Input/Output stream. More...
               
              struct  setfill
               type for setfill manipulator More...
               
              struct  setprecision
               type for setprecision manipulator More...
               
              struct  setw
               type for setw manipulator More...
               
              - - - - - - - - - - - - - - - - - - - -

              -Functions

              ostreamendl (ostream &os)
               
              ostreamflush (ostream &os)
               
              ostreamoperator<< (ostream &os, const setfill &arg)
               
              ostreamoperator<< (ostream &os, const setprecision &arg)
               
              ostreamoperator<< (ostream &os, const setw &arg)
               
              istreamoperator>> (istream &is, const setprecision &arg)
               
              istreamoperator>> (istream &is, const setw &arg)
               
              istreamoperator>> (istream &obj, const setfill &arg)
               
              istreamws (istream &is)
               
              -

              Detailed Description

              -

              iostream class

              -

              Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

              -

              MIT License

              -

              Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

              -

              The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

              -

              THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

              -

              Function Documentation

              - -

              ◆ endl()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ostream& endl (ostreamos)
              -
              -inline
              -
              -

              insert endline

              Parameters
              - - -
              [in]osThe Stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ flush()

              - -
              -
              - - - - - -
              - - - - - - - - -
              ostream& flush (ostreamos)
              -
              -inline
              -
              -

              flush manipulator

              Parameters
              - - -
              [in]osThe stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              - -

              ◆ operator<<() [1/3]

              - -
              -
              - - - - - -
              - - - - - - - - - - - - - - - - - - -
              ostream& operator<< (ostreamos,
              const setfillarg 
              )
              -
              -inline
              -
              -

              setfill manipulator

              Parameters
              - - - -
              [in]osthe stream
              [in]argset setfill object
              -
              -
              -
              Returns
              the stream
              - -
              -
              - -

              ◆ operator<<() [2/3]

              - -
              -
              - - - - - -
              - - - - - - - - - - - - - - - - - - -
              ostream& operator<< (ostreamos,
              const setprecisionarg 
              )
              -
              -inline
              -
              -

              setprecision manipulator

              Parameters
              - - - -
              [in]osthe stream
              [in]argset setprecision object
              -
              -
              -
              Returns
              the stream
              - -
              -
              - -

              ◆ operator<<() [3/3]

              - -
              -
              - - - - - -
              - - - - - - - - - - - - - - - - - - -
              ostream& operator<< (ostreamos,
              const setwarg 
              )
              -
              -inline
              -
              -

              setw manipulator

              Parameters
              - - - -
              [in]osthe stream
              [in]argset setw object
              -
              -
              -
              Returns
              the stream
              - -
              -
              - -

              ◆ operator>>() [1/3]

              - -
              -
              - - - - - -
              - - - - - - - - - - - - - - - - - - -
              istream& operator>> (istreamis,
              const setprecisionarg 
              )
              -
              -inline
              -
              -

              setprecision manipulator

              Parameters
              - - - -
              [in]isthe stream
              [in]argset setprecision object
              -
              -
              -
              Returns
              the stream
              - -
              -
              - -

              ◆ operator>>() [2/3]

              - -
              -
              - - - - - -
              - - - - - - - - - - - - - - - - - - -
              istream& operator>> (istreamis,
              const setwarg 
              )
              -
              -inline
              -
              -

              setw manipulator

              Parameters
              - - - -
              [in]isthe stream
              [in]argset setw object
              -
              -
              -
              Returns
              the stream
              - -
              -
              - -

              ◆ operator>>() [3/3]

              - -
              -
              - - - - - -
              - - - - - - - - - - - - - - - - - - -
              istream& operator>> (istreamobj,
              const setfillarg 
              )
              -
              -inline
              -
              -

              setfill manipulator

              Parameters
              - - - -
              [in]objthe stream
              [in]argset setfill object
              -
              -
              -
              Returns
              the stream
              - -
              -
              - -

              ◆ ws()

              - -
              -
              - - - - - -
              - - - - - - - - -
              istream& ws (istreamis)
              -
              -inline
              -
              -

              Skip white space

              Parameters
              - - -
              [in]isthe Stream
              -
              -
              -
              Returns
              The stream
              - -
              -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h__dep__incl.png deleted file mode 100644 index fc62696a07b7884cb0ba0c1f89e259f798c31e3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10781 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 ZPPkit#v@NAfqGBSb2$}6p{%k0{{x@a4{!hg diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/iostream_8h__incl.png deleted file mode 100644 index b3863b3e1e21a35477c5230db3904dbac3da7299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8962 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 - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/istream.h File Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - - -
              -
              - -
              -
              istream.h File Reference
              -
              -
              - -

              istream class -More...

              -
              #include "ios.h"
              -
              -Include dependency graph for istream.h:
              -
              -
              - - - - - - - -
              -
              -This graph shows which files directly or indirectly include this file:
              -
              -
              - - - - - - - - -
              -
              - - - - -

              -Classes

              class  istream
               Input Stream. More...
               
              -

              Detailed Description

              -

              istream class

              -

              Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

              -

              MIT License

              -

              Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

              -

              The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

              -

              THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/istream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/istream_8h__dep__incl.png deleted file mode 100644 index 5e0ad2927de5a2e06412d90a09d3c0efb815a259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12005 zcmd6NXH-*L*KTMcC?JBMNLM5j0qKM;L8SNIks`f?E>)2(ARtmgQ(BN3Ahb{q(xgb0 z-i3gncL?0gdEf8e^OZZs{dwbXut)aJUTe)Y=Unr7o*AW~ra(qYM+yRg$P`~fwLl=e zaNvL1%^Scswjxi9fIl~^log<$tLuL`=)xorh#8~^mDTah#LfnMeryxSyR%*1uvT?! zYT?u1|H9-)G<_6137w%!FPj(#KS7`e&Q@DLRUrl4sNLT%uqF!mbu}D zN~D{L&XFRa-Y6AsTh3imYgA)uIJyFf6c?C16c7I4B!1g;Om|inr>7e%Jt#1!;-lYk z7#L8nF>$DOC=R0hPajQ?6$JDEN!iLd!cz1~2k$l>ID`E8oB=f?6~DE9Ez42#hF2JN z8b#1*1KJYIct_WhPA>C%#;t>_ZXxWJN>>g!pEflZk9!0!G7>ChKph!b^jP^_zE7~77dc+z8{a(gL{FF2 zGQk3aB7D-Z9hDPrj<7ERi;qucgdeWP`qw2ah0BLNU-gNgd68k(PG^^mGx&1U{>xsN z^NuIev5_l!V#d|H*s~Ixz-!jQ3a=I*Iq&6?-oBizV{onxlY{=1C(~R{rVoqu@8AkL z4UE{Tc^lsVLJdnRQDnU?cpnz)*(EFf!OTcfVYrB4M8U%S9Ikb~^D>lmS(mRJ{G{|Y z`p0in+~nr1kMmr12~u^XBPD2Ny2C+OZr;(tmG-(xZ!xmi)Ry%2RrYgyx0A?!*!v%s z_)-1{OtmR#+WR0jF>#`Cv?i~8 zwiAjE1IXS&C7~Zz{v-zhBUgjxc2SPFp!r3Gnj}>ZZzU0OCQUh)<(bmzwQ-jr;r4}b zJ>=$&fE3fG3MAF;%h2@U-sC~q@7=Rm6Gf`!49I!!FK6bI?t=qVJ@7bfJ0Bi3xT>>& zc8;i*_y65S|1cMDd9qkT?!6o*vNSz^S&O+J<*~EiZcw-Lz?%Qwh-M^f8%4QSSsX|& zjXd%3?CjCfa(wW<M?fJh^r$&K5d=eeVcOhTG+j{G6bWJ6nqK1Zt_#DmXhqQI=&q)@Vh9%ayhpn;0c>W23UivuwY z5v#sORdzT?QeY1Zb#5owjWn_5|0OEKmYo)uZG*W2jVCOxOEWd{X22zWUBaMH>r7`_ z!EC0bCWT}pdMQ@cJUZYVtO&qp|NmcJr%UG~BDZHDu^47W5vj{=45&b5?PVPUD2tCF ztSHG8U*>ddN?(71wC0=HvY6J+p-+y%QsVQq&(iy*u>~*dii_D*6<)p-2OWGSmp$Cg z#HXYjs{r4j)Fg}f=jCZWrF8k^5qfGEavY8>^WP+EEcMsluHKs|I#cIpEs5`@=seI> z?rK(G*(k}Iav#&B1|q!w?FCPI|Gm}i46A4b(qv)#Uy1p-6v-MuJaVFP)BWYBJ+~bN zo0iAahAi)tdv82l6DC})aYA=>{ONG=jCsN3Jl3}~&aNZ|#OfpDd`$xxOMkQL)}ZCL z3GA9b%Gg5AQFrc&Dji z^uRx@-}NDKg7$HX{s42Jn{lCjfUMv~Hs-m!^Y=U%my0ZmQk01RyD(a9OSl2MCe^|o zZ*1SCuGX@-JFWI>kj&#FTr09e0SeXW$dmbdKL5B}Q5e-$EyQYdS08PDu0D!s&6C-^ z^Iez6eMU1MNV8VJZ6i08xEF}MIlnwZo%PxHTPMS4B5g1^7NXy(NS6U0%hZtrg1rv?~jP~hF`yOJ)&x| z#6sKC$04u9HPy{%Q9(5yL+`#D55T-i4FrX1Hf0*eKlgC2BlIZLYa9bfs&2Fj1Eq=-P58j>uOG*}4^%B> zT(>#7jlC&BIXZOCeUPV)jC$XE**`Gi9vp4Apq_53d^QK7@URjL`w;QdGFt+>$(8A9 zSVz=q56X#l#jDF<*!0eHM7D+&&&?$z_Mu-JyKaB%^Vy=8n)={HRTH*G4fb*hm{s36OG}H!iyys#)S^N<W|q6pnITs?o`ypSGb?fswJgL)a&soxAbM577@ORt#IrQ8EWbne73p$EFZ7A zT4I!5$#`(g0>v{)72$x_f+f+a*nxb6v<{rHN?Shl<{8($&45}-m|7$9&S__!OqADB z)VA5DzI!eRovId{6zLlYn(`Bwoz$(%t9!%cDDi9?v8yPtPDR37I)@pj7eo2j0l5`o zV8D;gv~yBIV@P$vO*~kPMB#n<<;Vp+i(mG3QlQW2h>M#;^;aFtkHUC#abeCBb3Z^BfnwTw5m}f8nVB88fHE3T zgA;pKP0KYq?Q|FY33H-3C~>0)1C!LJWeP8DwdSi!2kw}wOYF|}O{GP519^>YwAP_s z;*7j+n6mC7Ly@xImVX@UOfEbT9G$bY>#GMf7ZaPr&DOH9?g7E2SfKFX;4=JX^q`;2 zv;63C?3B=+0h+xw264#_DqqY+aFQF*%*~dmK+S-eRO*${Z^1=em$(E9JzPP5iFsT3 zoc)EIaS&tbDHYW~We^1`gf0qs4QmB>UO1FUmZ<+~sD2Y>J@zImkR2MNgj7yJ|1nrNg>B~=1N zi0hBYNTZ}dT9-;}JCp}?=~aL{NgSjwbDSpXU%TbnsX|$S%}t&3&Q0$lL-)8zAY zQY$6D30jBf;*>$DsY+jbJ`apUziHlipqrW9)6LQ79Y_BR9&vMFhmtMQnW9-)R|K)N z@s*Yk*z%1A#?~q&`SNG*@b%BJ7!Wk**U`d5&}l3psLo{0=>n0*7aK1vTI;*}fOLUC z`P0SL8aadi$%B!!NZ+qAl@k;CqD%?m@;ei&d%xp94^S1H?sGi~`QuK%`DDZ}5(L=b z$KfGamW!bWQ%HHT(wA*PIJ?vNk)(-f^?Iy1-boD6t$~ZP#SRKAKRgQZ5J)?<9`(7} zPnEYcJ8@kMr~~x{ez^Q_iqa#Wn04Uq79lPmo8hUlHvH^w9ap^2Q0)A89ySCk@a|r_g%T&f ztT2MVNt{eGElvVTOe>qoD#z4F>n);?;^H!WA0=53sH-^WCE-4DvTRe;E_a}ls-OBH zmp=Ki(fDGpUZ>*Zw+plSHzm{3MT+^Al@VREPmLt;76xg#PiDm_n1W71Fe;;dfT5mM zKJh$Q59P)8Ek-nrA0$r{Br7dvgDOU<8e9O=L#Sf#J7s4{wjd+p9AiIj$jm47l}Zo7 z=r$xIeyV(5-Io(7*~md0o_Y9*Ia+&5z0AbWzyWg0i=2@o zfpUau27^UFOnBmhhGAKv8<;jekc!#{+50aV#EWdjquzmm;rsF{E|gABQ-sYOA?hX! zq7}>Q?cpU|P;1}aC4m;-^&vU+i~%U7>k*Md35H~AM;%mqFXoG*>RMEzhu^UtC>{aH zPyuWRgs^i`Uuj^aO^+mNm1IBFOt_=*nEN+bU6a?-ZvjtyKOCR>Rm=F`xSYW)^M_o> zh0@ASNpxrFa)AI_6tMCe2gzFYlgc5B(HMzjGXP+8uX;G9>X)RQ%U4{j|J<6WWF}k_ zt-?!4+B?PRrwu&EdZvT8pCFQ^pRY9I0{ za+m=dOlg>e*)rR+q0C$q^^h$V+$+LB6@6B^JE(5aX6*_xGnrK^tokrXUBKB@?eY#5 z6Y=F`J?bwCp*sPrC%A#E1s)S1br0g5gxVNBDnM#LD#04-d#AY>&=r1N$NsI^FBEA5 zNjx1NZjyp{0N+jhtR{!)P}btm5uloJCfqsFvOgdn@f+@~z2$@NI~hhamMU@d>l4X{ zA6OEYUT!5emrK{{3+G%%*qx`8XmXjW6JOgQ7>yDwfKWAlc`wF;F3_A(T0HTWDHsWR zpYYx?B*DIyov6CX*g{h1FQkp-SJl`=nxd?CtvH-EVAnIwH% z`R70zWEW<)t6a0s$U;InwmCNIk7@G-T5Os}BB}4*<%~7CQnM%%hY9HdImnft;ayRv zILL{>Ev@H{02BR%XCI>Z_3_rzMitxKmELsng$`kW3ZaYagi-CU>AxUn8Zg6%j;r#S zZ@Cqk~!-Kw2EH48b7L zr>PGcW`I3mq#?>no~&`)kB3&=8;a{oHLn?hF)Do$q$P?w@$0YM9{V(2&-=$~%-Hpp z^H`%b@|s(@8uiHBh=B4*XJ8xVfR}u#rXlJ)@O4NQPb%tioPNeg-wFAEKJsh{yWrW7 zoZoIBk*RO8;SHf6Fqoh4IaDmz*YNmS1Ag3734i?&Kn2CxoN>YUt!jO}b54+3Yzpi& zMAr~un}2O?;lmEOGLdM~!+Y%b3Z&ABrtKWCKssUwz8u!0{!P9N+emnhl#_HB+y?-L z>U{-E&t1eiktFspP0 z(Nm{*k7wbb<;q7NZpEW2-{uH@veBoV@$&|cS|Yh1BVfNa27CXWKk$^cHltGhz+M3?~`_}bc*@`BoB#Q?!FkUn9n!N3&JCo9>vMC zARO0J&6Ai?0GL4srb&H6(@MeJM+Y2&*LN*>%A>~k)`D6l1|}T)uzo>y2e;F^)LS-c zRwMKqUHl%ds##@gyZoY*#cL%xeY1EMSRUiB8TD_qC=FLTR;g5H+iOG>Xxr|}*n&$x zm*thlkybgOn_ykB&z;kF z$t7=b)YE6{^W2h#1y!4Fs*tR2FF#8YPyJkv+l7HPaT6~v;+itTNLZ_-M?aVJjNqq( z%k4CNn_m-h7;#+tjhe0S`4e=$^kgg0R@PnfI)!$V11U8AJ47!%I&7M$aymf{y}J2y zvoa*m&mPjC>%=pYRcG5()`(r6QpyF}-JZp5$%2RPBX;n5a4pPTieyxVMR zt40e(V$=-CX$SPzDG@ZOT?!G&7GpAY&aYnNWYXYvyW6 zKi|LxhGx078^^7!hmE9R-#${t7G z+rGdDNgR%v>Z_vWkw?5|{A-Yii3&V8!7aiFMqmY;k6~LR|O& z%OYRtyZHrC$1wCzzl@t(2p-Yi1w1x}I8+?NJbGuI6pQ#Km>4l!Tu9sjvc67Z@bK#= z?$$~k_*2%ugf?WI7nL~$Fe{b9#T6)umfnVZ+uSw}t^%?m4^23=LG7O@wvbCQP?t@j ziTJ+8SxR3c3g1^}Y|b1DxhsGdAQ}5N%}0O0*#cuj4k3FU0nvE_eipAnW)yh1UEz)FKBot z36r7(2o2A#%evNE|1RqmEi_+>>el187Rv8<%6R?W>Jf|4g`OA^k3H705i`^UunKf#GSiBz)QanXBL&B{@%rc&E4*>n#i&m?ltm}Q!xApJG~bhc^ITy zUsdip>k1U(rHkCf#r&BySOQ{sm?;1$U4aFw@jFc(g>HjHH8|s%dtr1AjPcZ3k5i|w z#6iCaCW(O*swVI!G6%E}_NLh_3L`iw0hpSya)59L25hJLHTKZv{vZWfVA65lN9Z~R zsI2Awt^j|H&MJ*2eum>^jha$}mJxiQVvVQG$cp`=EHlQ zbq%Dht8Z2h$(-#9tQRlfQel>wFXNG*)5`&PhXO!=bJ8em;ad}1#D%0bvy;X=SBmU5 z6v(!E5=}tFcXQ#JiOcIa4BrY<%yUwJxxwDm&FtMLp=Qq??mmX@_)(&5EG%AUVI)>4 zfCml^R5D3gJu*1~Z`Ug*XecA7_@?#KQN@lW7>F7fLOZ+@d!TSB2apXCkk^zAp~BG% z4WXgAK_h-e&j734`6-|)27~Sj1_#*?CP?#Db|BD2$7h4n2d+C~?4F;4U2 zSr9P0VmFOjreKVF-vM9CB#i$EkV^H&P?RwsFZo6}e5(XM&Wy|?THsI%Q*gKYN0H_M zgv=Ye;w2WhyAsj$rj5c^H;2^m8r)C!N@xHl0O+U3^z3b49&36@fx}KGohA-}sy>jL zlw^EDAxa0dV?W5)ID$M_>zlH#X>G5Y9F+2Rv>sw}LfdGKM;7s{0jb~A4W8)X) za2vRtp4qRs1NN&`E4CE|`M%=O7oC97`3uv86H>LMUC+Ph-}Mq7{OPXIx&v96hk2bi0*5S0Vvq;U<@xrZX~U+zr_&o9^?5~K-#xAfRI z`G%zA{Ts|lN&as!+=9R%o-0binBO)4|3a*@D=Ra8cw8<$31hULo#(Qh04&J2oxT;Y#L;F=2}Vy&4t#v2Xu{)l2dk4 zpwRX+N6+v6P7Ir7(Jn0ViChDu0ur-eYt3y!BMg&#%-@5(bI%j&HZZ2IUS`lKS+0(o zdWPfSb7>h->vS%^gtYs*bh!jPxst7&U~;}6JXA`5+5bOEvj^XwU%F41v~Z&&-)U1{ zWUUlm3kdp6YJ5Wf5)dkk?7N2Mk_SN`@(6BR4!aP!#Kr;o0$xs9`;>zEgXN#kFoO zs{~{QpLX#)jp2V~P@X$_y5|WOVbeB3p(lg;;y!KOv;^w+GHvzE!)<#kZ4DC&Z81Dm zt^xJ?x*+^bW7}F#CGac6{;Z^Qa&9%d8w+SeGaIj7rdsEBKC? zbHicj&qB$hJ;*uESoy9?z~$AG-?mCx-qM@)N}rKmZ=71^%-eKKy~YLY3H*#N3xmn)p>(Dyfdeq3YC0lNQZ%mw8 z(p#KFywY~Qxcb~{i*V*BJ$21rNWEBqNR!!XoNoON{5tQ?l2Zd+V>srBv{f3Cv{@or5{?;X>xj!w#MxgIq$ zv;PXKUPPIqve7QYlEo{4tTK2w65NvZwwmc{DcF21r|$_RN-`LGWAgn{y5xG5s`3F%`G0ke|E58iWow^kO>1cwN5Sl9c%?R19w{*TS$XXBJR9-5YfTm+{>ZE=AJo8V zrZ63KU`@+whI^1^H4Z8qLmf(L6QuXiM8)Ygq|L zqf7Kadih#@4!7N`t|;Gh1chPZ*6k>3q{CmYJ#uW!%35PW`R;O=HNh|?gMT)v&bdnz zKG6GBzlPA_xt#{6ov}lT6>HI#w?aJAI1#KB&;yV~Af4M~t-;KNHc&y;-?;JqgD3r( zGia`qvoO*^$?I&rtExcl7y6t^LMswD(a8^+)=c5$It`2ju(`@>xjT$Igc$FQM_brN zDpP<{-@E$cWcm(0so|*x=R#M*I>ek`&u6hs2|UXk=S-((3|_7 z?8Df%RWFL>OZEsXDWrX)kZJ7RPGi*f-6-d*zg`jao*Ca-9E!RH$gfjYsGmtU%qX5NR(hW|4DA1|C>y-O+o=O9Ypey9F*orGwj86p9x;qt#)8SYhTVaB_r={^{> z=gELmT+W*jZ`AH-doh+pc1x!yWz5eXSx`F$9K~K3KzZe7Enn;E&fba*{)TNUV&f(y z1QqEumQnc~-5G`@CS>DzxbW!v<`+9rs|N<^XMg2^lasfvVra89i4G)WxB+2IU3B0=-GjA+DJ`Q`5xL8C@P(L%&_q6Yf zCgg3J${~GMj|!fsHX(jaUUY?kIpRf4ajCvm`TG_WyLHE~YnW*rdovib*oKvHlWC)d|W#!HH(Vah^7Eoyl0{TV84oAV3hc;xT)&@QSIRsMOyaSM~JFIkWmVM4A`@ zX#N$1N_P@caf79cXbYZE>)|Fqs z9Iq^Y=0#EAy>Z%I8at<8nA)wtn2a_6veHw8KMHXXPy_MOEdJ{%bcn-%x=4N+URlX- z%x(7O`&Z6O2VfVKyS`@~lP$0}(Lc*|3fQ>;Vj|wz^{DslJUOvDl@@~BR2S5Ky?5Fs zQnIv-H^c6+;(Q_KSe5C&;dXq9Bfflb&sD$E0uaYYM$)cH1+We<^-08@F6c_TbfZ&U zs@^Xi&{BT2whp3c{S?lMs}9pqw|CICtX`7x(*WjaEr#!?3IG+Zr zEp|K6yE6c<4;F$)Ek($OPDLkS(wz42U0)Tljw0Z(X+b$0qfWnepUZkuDgg#b!4COW**{0VaCT)^oth4v=h*LY(d< zCIVEx>7WGiRWA%24G=;6kx3YN%hle+xw*Odv!+NBjxcF18UBy9@N zf}+0zNx4*>!IHKA+`rV~ZPYgY4!Q1yJ>X#_7?oslzz-Z>y%KM(eEkz+Ls@SR#0Wdw zcgb;ky3r?K491fLfN4X`(hu|Oti1X)JUpoi%?=Q%eBy|BFr{eP+%=1(Lpk#(k36Bi z$e`&^6WAJ4U~BH?nlPdVt9D2!C2g$m=WDTKgCg+aSwQ+QwJ+`_#V)GUDF^A{$$=Kwf(e?K+gbEnNoB{=(_WxsC=OzS%Ka)%|; z=C0|?D4iDag?xmECSZr_@OvQo1{#%G+jDSs_TJ3O@QfGqg#W=>yJ@4#c|CAj?0QM% zz_~6@*+iP4Uo_AX+!@^_HIkN|GDv}jB>lVs?f5=ROUma*xMlr>X0BLokZ(KeCaZ@JNr8_<@%i1JjrMR}{lwT^?x2>2 zhBMe)lXmP{=ktbflNH+&I$$4 z!1rItqDyx>l+)bHCIgNx}q&ny4xFBdRY&3uQ)=15E7Dm7C1Isxvd#_ zhA8qj@w(RunK9dEZi%t=ls`Q$_zd(Y<(txZTidS_umOER;r-4<1#@>gXU^%!wtZ`; zVE6wjf&2H>lePIiHQwIkJLj98$@{5fd{|X?7^U^TLxFnqk58$K+{^!tw>rfCfw!n% zN#mk`Hdm`K`Ov(D|J~+Fo0|Q$c3J-m{=DVU4x{TLwlg zMyqMM`gZcRY!9KmcQk1i^v)DGTB-V1^b_2-L|=FPR4!S2Nmujg>?XHMi?#y+aAc1* zk-oU!`85UTTDYiv77!@A7qEJJm>A{dUvn*Yr19ubKLdKd`nE~N{riMGtwuIiT)s>P zZS4o_)unh}tQ<5lwqW1kW|-M0Ifwuc{I3mI|AJ16)P==mI1{5OQZpJQXMk*`W;BD# zMFFITBGs7JUejgP&5KNYw(RMM<_+AV9A+kueWP*byO44Y)|siDq)taTG}lTq=kYE6 zIIjduF|Kx5XpTwm(~Chi(tAJ{E7D=_WZ($hhrDssOi=NHiSe(Y$|i?K~T6o2Z4)VA3# z3XKKE{Cd;B3YCVb#?3ITh-p^0g~=u^?Ern-|5M}NfBtsIlN69bK}u*LP;DBy>}3TQ vR@P|9in*K{Fv02bC2>2+P_Y-0&oVyqKSlNnjd8nQI@B1}mhDIrtJZf1xXF&Im- z8?sE+A=zgv$u8dMeV+Guf1lsyegAvk`}}dA&$-Vz_xWDe^}X)zxs$9RCOn*?oB#mu zn3)>cGWr$(U;=TlG0w6s{ODnHY%bSKjDW-6$D6u>GypiRXJ%wzAC^rY4}S(5jAUP3 zvATgtt~*Byt1|syCik`F2 zKl4PUh4QwIGM7o}>%`S30+VNe=)vWO%^WRWK$c?t_P1j- zxrL+kk$Yn}U;oj_diyVNF#kHWQmkB)V(sdcQYRweow|$e;FSSYVNMwqLjyNwxkT=s z1eckP^jKZ&_~sHGI-XBiiQ;sToQ=Bd|5``AaAym4+Y>!f9ynvJvoT=jzt4Ten*L}o z$~rRa!us_gV`4CCb$!;~n%ccHDfknaJmZ#5sTjp1ck#M^mm z;ZB;?-SHk@nbWaXHS9No;l0)}3zRjrBZ{Mjeu!Ry9+LORQ=;mka2ufo^r{g=MRQij z+%3OX4u|8n;a=nZgyF)THwm5Hchy1Nw?pE0`#iu=$rU9l-UB&OVwUe>GPWp7RYNNN zA#kT@H@QU~uAA_TsP(-rm@4@IUc0IO`tF9$^R%}>Z79XY#yhO9)C2u?$#>E~k11Fs z+8}6IpO_wib!*XW-Uc(QUcBd>cYq8gsPMrf zhrDru$+Kh+Yr}9orH{M zh7=3UcE*pq<~8o!*EluXWPV9a8=*L~%)q3df!MG5ZZ!;g<7e8vEIvqsXb|RM4xLEbI zpCMzOq}EAN3cHbF9u;)94LCo=J9N!nMM;wZt0qwL1$aozly*ChjV(CH)IFcqbFkTE;(^ z{@d%6K}Kx<4fy}{;IYq?aGT>_7SxD_9lKQQsPI6qXXeA952lx6 zzQPIUPO9UvE_AuG5e>cQ_$xFo_i;1k98x19u(g%xRgqqj*ZC7vQHW+=i?v3s{TKFF z)ZFE^;#}so{^~JLI9CN$&P7hV+#jK?Btt!7T@*}8RFLM2yLtWeMG&MfIR+VFS*Cw_ z^X|tDqvM8C&kmyQ8$rEj@|E24l)!53&3FX#r!t85{>}`I39tf`c|RH(xonLV%A8a-@o!2iiwWA3n?xh=Igx~s6`U0NDChj88YlQQUO`^>T?_ow>z zs4r{LEw1I9WUctbw|Ad;xj*I*s35s|t$k}r8O6$*3v;pyawedyTMU3>jSq<-$x;h78L+?hu<({;uU3em7<6RHvKdjx@;92}Jq@NYTo*L>bTiHJFk$P~s~zB_L_{pZW6-oyK80ibq4S-EFRNP0f5s^8&xc zgu9(!67XXp7dh{`Y`i!=HyBdUZ_C0RFM(&4u^gimVy^bv9%m4Mc$b`ga#dstw9H?r z8zCcg5#;CPzHOvCz1j|rpf{>4%hL)k8x@C2ZHb)KHF!|jRU8ymJ`n$P~@ znSTrTUloVi6mOw4%9Vee>i=QTUnTIMDjrY5nUYkqvM&BD37dmFP zwSZ_zmpiG=Q)#OA-f@^)T5KmbTuah;)Fe`Vq1bdF>xy6kXMD3&9Ms1CBIs$`oK>W) zQS@RkNx@uZSE&KqO|vXyP^J3WQz8AUEWhUUB{=_Sd)KTctO7%_37=eQpwK;UYDxT+ zsR92-Fq=ykLA>oVAFN8ediF^i<}yD3Wq7%b!+D%s$l`GjO5MD#$6`W_5OPsRWRTMLBJ*6F z5@9&R(x%B;qtG_>LUF~*$;8R{aUzA}M$DJHB`1DKv--fKIE){#4?xqAx%pX29Q!c9 zb68PE&Lri4T)VSQjjanOeH3U&q$8Q{>BZo_D(2p}jL^ciM(euaQ89@>TXy$U+uxZW zz|O=M0EW3tq+yW2wIImpjHk;Kp2~Vk&2Do2H=e^(F}r^(4VjB2FMH>MDT{YJN3dVI zadvSh6YYjxS1#NDgOkEhY4T$urZ-E@3J9ZmDz%=x3V-6DJ?@x-z-vEjF4*l#_l;7v zt0Tb{488UzE^J)V_N6$>K??D5!2}zU;*i}^Jp{t6k^H}AQZF56SIV5Z`@<-(U*YHcT*z=BXu`km-u{XH zgM+;KN;Urpm_!Epsh_uZDXauJ3vKiJ6OuB{Ht$$n>VMd7rEWnOg(w7156i3x*_Y>A zw?z$+Mc>p29G{zt?`22RuL>ntoirwngx-A7>3%p$Ch$q+$no-Gw-sZo&ZKpQ zT3OQf323?rk0JkqVHTJB!oAv@@jM8Q+!U99Z+Wq?f(3xEl(_f~#U;Q6aqO27Q-T$f z_Vkmr9sP*MiS^IOO7&`O^_=kwR)ycR0m%+G-CF6kdZdUUf7vM$-qOb{s|0gnEc0j2 z2XuPQpQif?`YOd-6^)yNM2!f}-a7@D`-t8nj(LltRybGDtzm;p3goF~TUoP37HXmaxmxC0onC5^|G8 zL+GMB(a8E+oP0*RDB?(ZAvX>Hm1YFxptIlc%0!?XJ2*ALyJG=+xGF%M_+c2Vhe64 zhLUd${t%4G$ugI?xBQC>J9ROh&$g&f)o2w89n;pVzV(of^pZb;9?r5*L?5}kH#zwu z$t7U!a0J^99kaXVQ_I&dYtD-6LX+lCj1CT@b^31WynzA38Vo=QPAMhADBiq&c7MS} z957P?kGj9la0^lS^jRmqN#|&iAM^Eq_tq?ieX$I@W%LgPo@H^y6YD*RIUcmpDnIkn zA$i3&pP9Ss`Vl3C)?VdWcD_iiGlrspGBBDv;X};1ZedB6JDt|a2mAxKLvd7pVvhP9nE;v= z|8x6Ju|}alYQvP><1Y(+2;h6FG}Tz>#Y6VPrM9McAqz%fG1?U0nF4yOjV3syaS5YN zWCsr=ubbz6otCLNi$+B7l-0Qq^C6a2D__AH8iDpky4B8&tca|fiSp49OG3c*z=MT_ z`d}c6a8nV-d*F0$ied86IMi9!@{Sj(J;F|IM9EQMlx&{uyA{@-SNV6++S`fIK150M zoxCrh7=_&w$w927z;0}Ffh;#4H5=7>E`?>=Ru^5@9RfDU$caKCot?kKWPY^A#->sp zwIFz#KC0h zlss2F*qe#QSX@LzYutN7!0O7N;P?HmbKSZ@i&PM&n2btx*tDyLkjaLt#(j&aTVdOe zVja&P9ElP7vBN_d#h$fD;Ijg;vt12InzUo&nKwhqsk_3AGF|86u3}9Yh;umFAw9VG zqxU9j=e)C=*WDebd$&-Ft#_{?x1U2&qQV(5bh)gB63BI0<2)<5T;!ni#zsWAKts3w zx1S8-C<)s79lg0MnVM;#s06X3(~7K)Cee(YUv*_x6?dEi-k?08p4jYcapZ+`tyLa? zYmSVltQDKM1bW0sI~9E?{>H)Tn<3X^D`qc4%UPeD0dmN572x1q^$%}N^FI3>>(gfX z1ho+`IQr}m_*n(*B#m6~7v=06YrTtdPAi71BdV|{LY0x-wI3C-vXY6 zPJiFgtEW6)pI$oaMS%;B%givhm%Z*5hd{PV5p>0Rn6W*i^u z5=$9(uV?>)TC{|R)AApJWVfp;*9Vmz&rhy_i;MW4QNc^4Vsr6uxW0@CCo~exp`-Lm zmtT0H{qbQY{@%hDgl!AjB}D0lC#=s7)$++d4(iaGE6mCCU0^VijBH2}T9ka+>Tc#} zTz#9ILtB?Y9*y}`EO+1Xa(M0)C7$w1edA@CoviAvB2>p=seX9t+_Z2^%J=nQ%abo> zOD$&ePY(XjWBMpwVI`_Y5Q_w(5&NnQVHA?sMN~M7x)nB5Qs{EUi0mN^dC@suu7oB> z=^J5fTLx$g-f8DG>6M0a35eH+xx%Q<5L3ay4s}O42JQPmX@GL5cz_4v$vNMl znFLd(V;aiJA9xxfpxuurf5kUFBCk*nErvs!#)}=t0?Hh-KPtTvAI71!5~UR%d>t6* zY4xGZR;^#uhSRD?dwZqkS6A^0U;OJ%Oovnsr}yXM4akNFs*GiUiQ22$w#^T;uxg4{ zz9WzG@tAY9FE8%gR*SjDPg@(81xkRM63$ZNpM$C?dk3l|RGP@iqg~kSH{c`Key^NP zur2$DQTOj%j=wAR?G5AU#kIq$p7xcEmy(zLLo%g@m-Xc6*nSVm5=l~(Oxet`gIvtS zm~t*QE%?StImG`QA;F4y#WNiq$tK&nQ(bWTJ#yMVG<0}=&EuIDJ%4Vb=pY)S4#QAN zUc-l$wJ=+8o{`miBAn|YRPX6ahcDQ+F0Y54Q$xnTozSRCcSXZTn(;)47?=Q$9(qZ{ zxN^e8l814K;GgCk7OzYDm0u*SvyW_KwDRIlyvf~!H=n?{N@Nb+eog4y4dh$TXiAx~ z%D9Omvl^7zEp>uRE3CTTQ}gQL+IK5nK5TN7z5arDuK6rU60ripA%0bhj+L=qj0kk8 z-V;Q5py>B9kp`=-HE%{1uD>qDT}=^8p~CK{md*I>wP?%C{m(xc8}NcKSEzuF<6sbdEL!Y{|z QTLS+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
              "],col:[2,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
              ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
              ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
              "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
              ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
              "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
              "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
              ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/menu.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/menu.js deleted file mode 100644 index 433c15b8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - 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., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
            1. '); - } else { - $('#main-menu').append('
            2. '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/menudata.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/menudata.js deleted file mode 100644 index f48182c8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/menudata.js +++ /dev/null @@ -1,156 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -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., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html"}, -{text:"Functions",url:"namespacemembers_func.html"}, -{text:"Variables",url:"namespacemembers_vars.html"}]}]}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions_b.html#index_b"}, -{text:"c",url:"functions_c.html#index_c"}, -{text:"d",url:"functions_d.html#index_d"}, -{text:"e",url:"functions_e.html#index_e"}, -{text:"f",url:"functions_f.html#index_f"}, -{text:"g",url:"functions_g.html#index_g"}, -{text:"h",url:"functions_h.html#index_h"}, -{text:"i",url:"functions_i.html#index_i"}, -{text:"k",url:"functions_k.html#index_k"}, -{text:"l",url:"functions_l.html#index_l"}, -{text:"m",url:"functions_m.html#index_m"}, -{text:"n",url:"functions_n.html#index_n"}, -{text:"o",url:"functions_o.html#index_o"}, -{text:"p",url:"functions_p.html#index_p"}, -{text:"r",url:"functions_r.html#index_r"}, -{text:"s",url:"functions_s.html#index_s"}, -{text:"t",url:"functions_t.html#index_t"}, -{text:"u",url:"functions_u.html#index_u"}, -{text:"v",url:"functions_v.html#index_v"}, -{text:"w",url:"functions_w.html#index_w"}, -{text:"y",url:"functions_y.html#index_y"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"a",url:"functions_func.html#index_a"}, -{text:"b",url:"functions_func_b.html#index_b"}, -{text:"c",url:"functions_func_c.html#index_c"}, -{text:"d",url:"functions_func_d.html#index_d"}, -{text:"e",url:"functions_func_e.html#index_e"}, -{text:"f",url:"functions_func_f.html#index_f"}, -{text:"g",url:"functions_func_g.html#index_g"}, -{text:"h",url:"functions_func_h.html#index_h"}, -{text:"i",url:"functions_func_i.html#index_i"}, -{text:"k",url:"functions_func_k.html#index_k"}, -{text:"l",url:"functions_func_l.html#index_l"}, -{text:"m",url:"functions_func_m.html#index_m"}, -{text:"n",url:"functions_func_n.html#index_n"}, -{text:"o",url:"functions_func_o.html#index_o"}, -{text:"p",url:"functions_func_p.html#index_p"}, -{text:"r",url:"functions_func_r.html#index_r"}, -{text:"s",url:"functions_func_s.html#index_s"}, -{text:"t",url:"functions_func_t.html#index_t"}, -{text:"u",url:"functions_func_u.html#index_u"}, -{text:"v",url:"functions_func_v.html#index_v"}, -{text:"w",url:"functions_func_w.html#index_w"}, -{text:"y",url:"functions_func_y.html#index_y"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars.html#index_b"}, -{text:"c",url:"functions_vars.html#index_c"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"e",url:"functions_vars.html#index_e"}, -{text:"f",url:"functions_vars.html#index_f"}, -{text:"g",url:"functions_vars.html#index_g"}, -{text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"l",url:"functions_vars.html#index_l"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"o",url:"functions_vars.html#index_o"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}, -{text:"u",url:"functions_vars.html#index_u"}, -{text:"w",url:"functions_vars.html#index_w"}]}, -{text:"Typedefs",url:"functions_type.html"}, -{text:"Enumerations",url:"functions_enum.html"}, -{text:"Enumerator",url:"functions_eval.html"}, -{text:"Related Functions",url:"functions_rela.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"_",url:"globals.html#index__5F"}, -{text:"b",url:"globals.html#index_b"}, -{text:"c",url:"globals.html#index_c"}, -{text:"d",url:"globals.html#index_d"}, -{text:"e",url:"globals.html#index_e"}, -{text:"f",url:"globals.html#index_f"}, -{text:"h",url:"globals.html#index_h"}, -{text:"i",url:"globals.html#index_i"}, -{text:"l",url:"globals.html#index_l"}, -{text:"m",url:"globals.html#index_m"}, -{text:"n",url:"globals.html#index_n"}, -{text:"o",url:"globals.html#index_o"}, -{text:"p",url:"globals.html#index_p"}, -{text:"r",url:"globals.html#index_r"}, -{text:"s",url:"globals.html#index_s"}, -{text:"u",url:"globals.html#index_u"}, -{text:"v",url:"globals.html#index_v"}, -{text:"w",url:"globals.html#index_w"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"b",url:"globals_func.html#index_b"}, -{text:"d",url:"globals_func.html#index_d"}, -{text:"e",url:"globals_func.html#index_e"}, -{text:"f",url:"globals_func.html#index_f"}, -{text:"h",url:"globals_func.html#index_h"}, -{text:"i",url:"globals_func.html#index_i"}, -{text:"l",url:"globals_func.html#index_l"}, -{text:"m",url:"globals_func.html#index_m"}, -{text:"n",url:"globals_func.html#index_n"}, -{text:"o",url:"globals_func.html#index_o"}, -{text:"r",url:"globals_func.html#index_r"}, -{text:"s",url:"globals_func.html#index_s"}, -{text:"u",url:"globals_func.html#index_u"}, -{text:"v",url:"globals_func.html#index_v"}, -{text:"w",url:"globals_func.html#index_w"}]}, -{text:"Variables",url:"globals_vars.html"}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Macros",url:"globals_defs.html",children:[ -{text:"c",url:"globals_defs.html#index_c"}, -{text:"d",url:"globals_defs.html#index_d"}, -{text:"e",url:"globals_defs.html#index_e"}, -{text:"f",url:"globals_defs.html#index_f"}, -{text:"h",url:"globals_defs.html#index_h"}, -{text:"i",url:"globals_defs.html#index_i"}, -{text:"m",url:"globals_defs.html#index_m"}, -{text:"n",url:"globals_defs.html#index_n"}, -{text:"p",url:"globals_defs.html#index_p"}, -{text:"s",url:"globals_defs.html#index_s"}, -{text:"u",url:"globals_defs.html#index_u"}, -{text:"w",url:"globals_defs.html#index_w"}]}]}]}]} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespace_fs_date_time.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespace_fs_date_time.html deleted file mode 100644 index 60bb0bb7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespace_fs_date_time.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -SdFat: FsDateTime Namespace Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              FsDateTime Namespace Reference
              -
              -
              - - - - - - - - -

              -Functions

              void clearCallback ()
               
              void setCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
               
              void setCallback (void(*dateTime)(uint16_t *date, uint16_t *time, uint8_t *ms10))
               
              - - - - - -

              -Variables

              void(* callback )(uint16_t *date, uint16_t *time, uint8_t *ms10) = NULL
               
              void(* callback2 )(uint16_t *date, uint16_t *time) = NULL
               
              -

              Detailed Description

              -

              Date time callback.

              -

              Date time callback

              -

              Function Documentation

              - -

              ◆ clearCallback()

              - -
              -
              - - - - - - - -
              void FsDateTime::clearCallback ()
              -
              -

              Cancel callback.

              - -
              -
              - -

              ◆ setCallback() [1/2]

              - -
              -
              - - - - - - - - -
              void FsDateTime::setCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
              -
              -

              Set the date/time callback function.

              -
              Parameters
              - - -
              [in]dateTimeThe user's call back function. The callback. function is of the form:
              -
              -
              -
              void dateTime(uint16_t* date, uint16_t* time) {
              -
              uint16_t year;
              -
              uint8_t month, day, hour, minute, second;
              -
              -
              // User gets date and time from GPS or real-time clock here.
              -
              -
              // Return date using FS_DATE macro to format fields.
              -
              *date = FS_DATE(year, month, day);
              -
              -
              // Return time using FS_TIME macro to format fields.
              -
              *time = FS_TIME(hour, minute, second);
              -
              }
              -

              Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

              - -
              -
              - -

              ◆ setCallback() [2/2]

              - -
              -
              - - - - - - - - -
              void FsDateTime::setCallback (void(*)(uint16_t *date, uint16_t *time, uint8_t *ms10) dateTime)
              -
              -

              Set the date/time callback function.

              -
              Parameters
              - - -
              [in]dateTimeThe user's call back function. The callback function is of the form:
              -
              -
              -
              void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) {
              -
              uint16_t year;
              -
              uint8_t month, day, hour, minute, second;
              -
              -
              // User gets date and time from GPS or real-time clock here.
              -
              -
              // Return date using FS_DATE macro to format fields
              -
              *date = FS_DATE(year, month, day);
              -
              -
              // Return time using FS_TIME macro to format fields
              -
              *time = FS_TIME(hour, minute, second);
              -
              -
              // Return tenths of milliseconds since last even second.
              -
              // The granularity of the seconds part of FS_TIME is 2 seconds so
              -
              // this field is a count of tenths of a second and its valid value
              -
              // range is 0-199 inclusive.
              -
              // For a simple RTC return 100*(seconds & 1).
              -
              *ms10 = <tens of ms since even second>
              -
              }
              -

              Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

              - -
              -
              -

              Variable Documentation

              - -

              ◆ callback

              - -
              -
              - - - - -
              void(* FsDateTime::callback = NULL
              -
              -

              Date time callback.

              - -
              -
              - -

              ◆ callback2

              - -
              -
              - - - - -
              void(* FsDateTime::callback2 = NULL
              -
              -

              Date time callback.

              - -
              -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers.html deleted file mode 100644 index abc2effe..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -SdFat: Namespace Members - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - -
              - -
              -
              - - -
              - -
              - -
              -
              Here is a list of all documented namespace members with links to the namespaces they belong to:
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_func.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_func.html deleted file mode 100644 index 584610af..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_func.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Namespace Members - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - -
              - -
              -
              - - -
              - -
              - -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_vars.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_vars.html deleted file mode 100644 index 8a0fbf51..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespacemembers_vars.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Namespace Members - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - -
              - -
              -
              - - -
              - -
              - -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespaces.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespaces.html deleted file mode 100644 index 6d7c844f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/namespaces.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Namespace List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - -
              - -
              -
              - - -
              - -
              - -
              -
              -
              Namespace List
              -
              -
              -
              Here is a list of all documented namespaces with brief descriptions:
              - - -
               NFsDateTime
              -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_f.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_g.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/ostream.h File Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - - -
              -
              - -
              -
              ostream.h File Reference
              -
              -
              - -

              ostream class -More...

              -
              #include "ios.h"
              -
              -Include dependency graph for ostream.h:
              -
              -
              - - - - - - - -
              -
              -This graph shows which files directly or indirectly include this file:
              -
              -
              - - - - - - - - -
              -
              - - - - -

              -Classes

              class  ostream
               Output Stream. More...
               
              -

              Detailed Description

              -

              ostream class

              -

              Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

              -

              MIT License

              -

              Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

              -

              The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

              -

              THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h__dep__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h__dep__incl.png deleted file mode 100644 index af88ac33585489ae80d6760bc62a70ea19989a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12001 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/ostream_8h__incl.png deleted file mode 100644 index c12090eaa42a6d70f38f85f6be6ec1ff39df4615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5000 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 - - - - - - -SdFat: Arduino/libraries/SdFat/src/sdios.h File Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - - -
              -
              -
              -
              sdios.h File Reference
              -
              -
              - -

              C++ IO Streams features. -More...

              -
              -Include dependency graph for sdios.h:
              -
              -
              - - - - - - - - - - - - - - - - - - - - -
              -

              Detailed Description

              -

              C++ IO Streams features.

              -

              Copyright (c) 2011-2020 Bill Greiman This file is part of the SdFat library for SD memory cards.

              -

              MIT License

              -

              Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

              -

              The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

              -

              THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/sdios_8h__incl.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/sdios_8h__incl.png deleted file mode 100644 index 132c50d9454b21cc549832fbe9d5debab04a2fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27532 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 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.html deleted file mode 100644 index a52d5f05..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.js deleted file mode 100644 index 577a4e45..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fbrkval_0',['__brkval',['../_free_stack_8h.html#ad193a2cc121e0d4614a1c21eb463fb56',1,'FreeStack.h']]], - ['_5f_5fbss_5fend_1',['__bss_end',['../_free_stack_8h.html#adbad17f740c2d7f2bc4833681c93c932',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.html deleted file mode 100644 index 0fcb7040..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.js deleted file mode 100644 index 12e0f76f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_1.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['activate_2',['activate',['../class_sd_spi_arduino_driver.html#abb6b88c5c8b87fc344a69f23f6eab3d9',1,'SdSpiArduinoDriver::activate()'],['../class_sd_spi_base_class.html#ace7d46253efcaaab8b6be50cc17233e4',1,'SdSpiBaseClass::activate()'],['../class_sd_spi_soft_driver.html#abed1f06be38711517f622f537657c89f',1,'SdSpiSoftDriver::activate()']]], - ['adjustfield_3',['adjustfield',['../classios__base.html#adaaf735381254aa096ebe3605e8bbd0a',1,'ios_base']]], - ['always1_4',['always1',['../struct_c_i_d.html#ae9d4ba51ed4102255aa87bb92882f119',1,'CID']]], - ['app_5',['app',['../classios__base.html#a8380aac3c405730708888fdc68905820',1,'ios_base']]], - ['arduinoinstream_6',['ArduinoInStream',['../class_arduino_in_stream.html',1,'ArduinoInStream'],['../class_arduino_in_stream.html#a61ee22a5824849ec3261ee2f814dfb93',1,'ArduinoInStream::ArduinoInStream()']]], - ['arduinooutstream_7',['ArduinoOutStream',['../class_arduino_out_stream.html',1,'ArduinoOutStream'],['../class_arduino_out_stream.html#a228b667f9f53dc91c6ed7735d34f04a8',1,'ArduinoOutStream::ArduinoOutStream()']]], - ['arduinostream_2eh_8',['ArduinoStream.h',['../_arduino_stream_8h.html',1,'']]], - ['ate_9',['ate',['../classios__base.html#aa434355c165500065276d955d8b36e99',1,'ios_base']]], - ['available_10',['available',['../class_minimum_serial.html#a2abe4370989968938b5dc4872d51c3df',1,'MinimumSerial::available()'],['../class_ex_fat_file.html#a1eae02704b69e903ea174c5d0744debb',1,'ExFatFile::available()'],['../class_fat_file.html#a4baea142c9cd53293a93ef3d6a67aa16',1,'FatFile::available()'],['../class_stream_file.html#a0112cc39b64aac6f1ec47741397a7582',1,'StreamFile::available()'],['../class_fs_base_file.html#a5762772ce4e72776c2806af21c1251b8',1,'FsBaseFile::available()']]], - ['available32_11',['available32',['../class_fat_file.html#a651ffa37e7e586fc3c2de8cbbd500ea6',1,'FatFile']]], - ['available64_12',['available64',['../class_ex_fat_file.html#adcf47e15b819fe2d6faac2a027ab30f5',1,'ExFatFile']]], - ['arduino_20_25sdfat_20library_13',['Arduino %SdFat Library',['../index.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.html deleted file mode 100644 index c234738e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.js deleted file mode 100644 index b4f2976d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_10.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['rdstate_331',['rdstate',['../classios.html#afe4d084ba0d2704a27525147d1463c36',1,'ios']]], - ['read_332',['read',['../class_minimum_serial.html#a4890dd60f2ffb61eba0821cc80d411ad',1,'MinimumSerial::read()'],['../class_ex_fat_file.html#a77f4fea0aae0c8bae926fdfbba260a55',1,'ExFatFile::read()'],['../class_ex_fat_file.html#a5ae5477efe55179cf07e173c62654313',1,'ExFatFile::read(void *buf, size_t count)'],['../class_fat_file.html#a60ae55ff6fe158c2340071d702a363c5',1,'FatFile::read()'],['../class_fat_file.html#aba893af8107a18017482d2311b066187',1,'FatFile::read(void *buf, size_t count)'],['../class_fat_cache.html#a9c3d0dfa0d987f2c8dbad2d35024b56b',1,'FatCache::read()'],['../class_stream_file.html#a249a5d428f303e2a8e7c3ae476e74829',1,'StreamFile::read()'],['../class_fs_base_file.html#acbe2d203d212a50871db77a9b2ba01f6',1,'FsBaseFile::read()'],['../class_fs_base_file.html#ae8d8cb4cceda9d56e8dae692d04a46e6',1,'FsBaseFile::read(void *buf, size_t count)']]], - ['readcid_333',['readCID',['../class_sd_card_interface.html#ab61ea0c742074271de0552c46be8ae51',1,'SdCardInterface::readCID()'],['../class_sdio_card.html#a2490b07ee400aaf799ea5c37052041bf',1,'SdioCard::readCID()'],['../class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea',1,'SdSpiCard::readCID()']]], - ['readcsd_334',['readCSD',['../class_sd_card_interface.html#a8aaf7a014423034652f2a1ded1aaa127',1,'SdCardInterface::readCSD()'],['../class_sdio_card.html#a72bbb4fda29fb6313981a63ea2f43d5f',1,'SdioCard::readCSD()'],['../class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290',1,'SdSpiCard::readCSD()']]], - ['readdata_335',['readData',['../class_sdio_card.html#a9dc1cd99d0136e514faaecf56a6318d2',1,'SdioCard::readData()'],['../class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770',1,'SdSpiCard::readData()']]], - ['readdir_336',['readDir',['../class_fat_file.html#a29502cd34ef186763d2196daef27df1f',1,'FatFile']]], - ['readline_337',['readline',['../class_arduino_in_stream.html#ad4c60f813b8df6dd1d6696a3458de09c',1,'ArduinoInStream']]], - ['readocr_338',['readOCR',['../class_sd_card_interface.html#abb2742e6e81d18552308519a0dfb72a6',1,'SdCardInterface::readOCR()'],['../class_sdio_card.html#adc583f7a27f57ce55ce474b1379b9303',1,'SdioCard::readOCR()'],['../class_sd_spi_card.html#ab446e49338b3ce834a750ac6dae35f61',1,'SdSpiCard::readOCR()']]], - ['readsector_339',['readSector',['../class_block_device_interface.html#a537ffdf8645666ee60d9bee0d7e3d17e',1,'BlockDeviceInterface::readSector()'],['../class_sdio_card.html#a77ae4fbe24bb04b74af5d388d4139dde',1,'SdioCard::readSector()'],['../class_sd_spi_card.html#adbdb4df6d74ffa21df7f19a46c781f17',1,'SdSpiCard::readSector()']]], - ['readsectors_340',['readSectors',['../class_block_device_interface.html#aeee2944296d4aaabd00ee7be90596c5c',1,'BlockDeviceInterface::readSectors()'],['../class_sdio_card.html#a1ed4229446a5a2fe815d460b027243b9',1,'SdioCard::readSectors()'],['../class_sd_spi_card.html#a248a56a6b15182c4d558f497c99fbf15',1,'SdSpiCard::readSectors()']]], - ['readsingle_341',['readSingle',['../class_sd_spi_card.html#a6eb6241369637ca07c0d1c3fe303750d',1,'SdSpiCard']]], - ['readstart_342',['readStart',['../class_sdio_card.html#a9fde1fb0e6603e7140cac16395815df0',1,'SdioCard::readStart(uint32_t sector)'],['../class_sdio_card.html#a54732c9d38998ddd42b72b720e0ee54c',1,'SdioCard::readStart(uint32_t sector, uint32_t count)'],['../class_sd_spi_card.html#a6f10180a070fa01834cef47e70649a8e',1,'SdSpiCard::readStart()']]], - ['readstatus_343',['readStatus',['../class_sd_spi_card.html#a91d0413599efe0d63c8c2dfe4a12d9ae',1,'SdSpiCard']]], - ['readstop_344',['readStop',['../class_sdio_card.html#a5bd3f206d790149340783135d08eb701',1,'SdioCard::readStop()'],['../class_sd_spi_card.html#afdac7c399fa1ba3f904cf503526e007e',1,'SdSpiCard::readStop()']]], - ['receive_345',['receive',['../class_sd_spi_arduino_driver.html#a8d6bc852a52e9d69c4b1e48ee062e8d1',1,'SdSpiArduinoDriver::receive()'],['../class_sd_spi_arduino_driver.html#a4f5be313b836ca937a5b5be6432987ec',1,'SdSpiArduinoDriver::receive(uint8_t *buf, size_t count)'],['../class_sd_spi_base_class.html#a537c71fb2cdb8a825215c0faeb6f7dbd',1,'SdSpiBaseClass::receive()=0'],['../class_sd_spi_base_class.html#a45693c18a8bb44ec9e5b9b1dee39b393',1,'SdSpiBaseClass::receive(uint8_t *buf, size_t count)=0'],['../class_sd_spi_soft_driver.html#a189c85920acdcb3ad90b68a998ffeb2a',1,'SdSpiSoftDriver::receive()=0'],['../class_sd_spi_soft_driver.html#a94c6dc242a83a91be44f994a67a7f583',1,'SdSpiSoftDriver::receive(uint8_t *buf, size_t count)'],['../class_soft_spi_driver.html#a0c2a84b8b0f7b4eaa9d970aa3f31a6d8',1,'SoftSpiDriver::receive()']]], - ['remove_346',['remove',['../class_ex_fat_file.html#a8e88c8e79551a72cc98310038514c47a',1,'ExFatFile::remove()'],['../class_ex_fat_file.html#ad10417a851dba3d40a78eb2c0eb11fff',1,'ExFatFile::remove(const ExChar_t *path)'],['../class_ex_fat_volume.html#a58061d05f5dc5a52706cdd61a1a86e80',1,'ExFatVolume::remove(const ExChar_t *path)'],['../class_ex_fat_volume.html#adc22ad4ce966654944b18d31fc6ac5ee',1,'ExFatVolume::remove(const String &path)'],['../class_fat_file.html#ac837a537fbcca14c7aa390c5fc9f4e7c',1,'FatFile::remove()'],['../class_fat_file.html#a75d3276f0b02b03e863afafe5731fedb',1,'FatFile::remove(const char *path)'],['../class_fat_volume.html#abb11d05ef407775bcdb9b14a6c608433',1,'FatVolume::remove(const char *path)'],['../class_fat_volume.html#a994411f55df474be6be87f06100c2c39',1,'FatVolume::remove(const String &path)'],['../class_fs_base_file.html#a8d21f9df86e846e34c3bb11cf7db21bc',1,'FsBaseFile::remove()'],['../class_fs_base_file.html#a64feff69c4f09e56247c7f9dc7c74f34',1,'FsBaseFile::remove(const char *path)'],['../class_fs_volume.html#aaaa53cfc48602b3d1524508944bd112e',1,'FsVolume::remove(const char *path)'],['../class_fs_volume.html#a069e1d9b3a6bba07b7edc5dcde434e0c',1,'FsVolume::remove(const String &path)']]], - ['rename_347',['rename',['../class_ex_fat_file.html#aab50b2646035f76834c75230d2b55c64',1,'ExFatFile::rename(const ExChar_t *newPath)'],['../class_ex_fat_file.html#aea570a3b6afbe633d874803b137a46b8',1,'ExFatFile::rename(ExFatFile *dirFile, const ExChar_t *newPath)'],['../class_ex_fat_volume.html#a8dcd1b108167803a24f7314f5fce6bc4',1,'ExFatVolume::rename(const ExChar_t *oldPath, const ExChar_t *newPath)'],['../class_ex_fat_volume.html#a1396c06f6c5e138889125d2f62cdbdcb',1,'ExFatVolume::rename(const String &oldPath, const String &newPath)'],['../class_fat_file.html#a4cebcac13c1f4c9de7a055ae73133599',1,'FatFile::rename(const char *newPath)'],['../class_fat_file.html#a4b42f2454ff462555c07ea094a92a1e0',1,'FatFile::rename(FatFile *dirFile, const char *newPath)'],['../class_fat_volume.html#a5e4ea6c91569dc435c7aacd7ba704911',1,'FatVolume::rename(const char *oldPath, const char *newPath)'],['../class_fat_volume.html#aa7015c0f694261780081c79c05d0882d',1,'FatVolume::rename(const String &oldPath, const String &newPath)'],['../class_fs_base_file.html#af532d87177e86995a053503eb9152115',1,'FsBaseFile::rename(const char *newPath)'],['../class_fs_base_file.html#a4e4347f6e89bf0b487824dbdc5b82068',1,'FsBaseFile::rename(FsBaseFile *dirFile, const char *newPath)'],['../class_fs_volume.html#aae3be08aff89f5a113cfa0b89c4a6004',1,'FsVolume::rename(const char *oldPath, const char *newPath)'],['../class_fs_volume.html#a7da5cf51eceaa2ea8799be05c3bf9258',1,'FsVolume::rename(const String &oldPath, const String &newPath)']]], - ['reserved_348',['reserved',['../struct_c_i_d.html#a7d489455802a3a9728a5cec60927a7c7',1,'CID']]], - ['rewind_349',['rewind',['../class_ex_fat_file.html#a3c1d3ef65284ffb13ed3ceee472adf9a',1,'ExFatFile::rewind()'],['../class_fat_file.html#a5aac6e0b3cb08fc8b8668e916a8b0ca5',1,'FatFile::rewind()'],['../class_stdio_stream.html#ad985866675193d2ee1dde9e27b0d08da',1,'StdioStream::rewind()'],['../class_fs_base_file.html#a22f8ef845d610493ebe314e19ddda561',1,'FsBaseFile::rewind()']]], - ['rewinddirectory_350',['rewindDirectory',['../class_stream_file.html#a91e8cfbde27d6879b4f51d2ceb2a9f06',1,'StreamFile::rewindDirectory()'],['../class_fs_base_file.html#a56bfeb031562a6fb30e057670e6b326d',1,'FsBaseFile::rewindDirectory()']]], - ['right_351',['right',['../classios__base.html#aec064a12730b5d87e718c1864e29ac64',1,'ios_base::right()'],['../ios_8h.html#aee80fd600c5c58a2bebbd48afdcf8280',1,'right(): ios.h']]], - ['rmdir_352',['rmdir',['../class_ex_fat_file.html#a0165e0fde12a53e419bd92cd37f9cfed',1,'ExFatFile::rmdir()'],['../class_ex_fat_volume.html#ab9e3e7d9538c905ca60b834e244943ee',1,'ExFatVolume::rmdir(const ExChar_t *path)'],['../class_ex_fat_volume.html#af0adfad817e085d676479fefbb343197',1,'ExFatVolume::rmdir(const String &path)'],['../class_fat_file.html#a9515bac181d33e7f0125e88fa2ccd283',1,'FatFile::rmdir()'],['../class_fat_volume.html#af1181990bcece7dbb7d19293dd4fe11a',1,'FatVolume::rmdir(const char *path)'],['../class_fat_volume.html#a105f437fb649b57ed3823f8ff1a2f37e',1,'FatVolume::rmdir(const String &path)'],['../class_fs_base_file.html#ac47870fd89b0849cda33f2780918a286',1,'FsBaseFile::rmdir()'],['../class_fs_volume.html#ad2457b491bf85495140fd4a8ca743513',1,'FsVolume::rmdir(const char *path)'],['../class_fs_volume.html#a32cdbc9c2d29ed95b2a7ff8d117dadc8',1,'FsVolume::rmdir(const String &path)']]], - ['rmrfstar_353',['rmRfStar',['../class_fat_file.html#ac780a80526f86d3def701ecdc99d8bfe',1,'FatFile']]], - ['rootdirectorycluster_354',['rootDirectoryCluster',['../class_ex_fat_partition.html#ac7ddc5d4efd1651816f1284980b6f790',1,'ExFatPartition']]], - ['rootdirentrycount_355',['rootDirEntryCount',['../class_fat_partition.html#a6ba99b9711269b5ab6ca091b88e81288',1,'FatPartition']]], - ['rootdirstart_356',['rootDirStart',['../class_fat_partition.html#a5d005e0f6fd4b84da8a5ebdea03aaf85',1,'FatPartition']]], - ['rootlength_357',['rootLength',['../class_ex_fat_partition.html#a9412bd687edc99266c88f8aa87f01c51',1,'ExFatPartition']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.html deleted file mode 100644 index 2f927fe5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.js deleted file mode 100644 index c1782d4d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_11.js +++ /dev/null @@ -1,107 +0,0 @@ -var searchData= -[ - ['sd_5fchip_5fselect_5fmode_358',['SD_CHIP_SELECT_MODE',['../_sd_fat_config_8h.html#ab81c0135853c34b24c8314849950f6ab',1,'SdFatConfig.h']]], - ['sd_5ffat_5fversion_359',['SD_FAT_VERSION',['../_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210',1,'SdFat.h']]], - ['sd_5fhas_5fcustom_5fspi_360',['SD_HAS_CUSTOM_SPI',['../_sd_fat_config_8h.html#a838861a01379e94361148d22e62b1977',1,'SdFatConfig.h']]], - ['sd_5fmax_5finit_5frate_5fkhz_361',['SD_MAX_INIT_RATE_KHZ',['../_sd_fat_config_8h.html#adb969469c422c2da5438963623bdfbd3',1,'SdFatConfig.h']]], - ['sd_5fsck_5fhz_362',['SD_SCK_HZ',['../_sd_spi_driver_8h.html#a7509778808cb232d96b7c45ad76034b0',1,'SdSpiDriver.h']]], - ['sd_5fsck_5fmhz_363',['SD_SCK_MHZ',['../_sd_spi_driver_8h.html#af9d0d377262ffe2bf47d8604381a5ec1',1,'SdSpiDriver.h']]], - ['sdbase_364',['SdBase',['../class_sd_base.html',1,'']]], - ['sdbase_3c_20exfatvolume_20_3e_365',['SdBase< ExFatVolume >',['../class_sd_base.html',1,'']]], - ['sdbase_3c_20fatvolume_20_3e_366',['SdBase< FatVolume >',['../class_sd_base.html',1,'']]], - ['sdbase_3c_20fsvolume_20_3e_367',['SdBase< FsVolume >',['../class_sd_base.html',1,'']]], - ['sdbasefile_368',['SdBaseFile',['../_sd_fat_8h.html#a3991b0f70199d1a17dbb837bb041e89c',1,'SdFat.h']]], - ['sdcardfactory_369',['SdCardFactory',['../class_sd_card_factory.html',1,'']]], - ['sdcardinterface_370',['SdCardInterface',['../class_sd_card_interface.html',1,'']]], - ['sdcsinit_371',['sdCsInit',['../_sd_spi_driver_8h.html#ad4854101780daaa378827ecb62ef86d9',1,'SdSpiChipSelect.cpp']]], - ['sdcspin_5ft_372',['SdCsPin_t',['../_sd_fat_config_8h.html#a7a489fb14a59adf251794342604fc5ea',1,'SdFatConfig.h']]], - ['sdcswrite_373',['sdCsWrite',['../_sd_spi_driver_8h.html#ac469bbe2d31ffde9b00ffc68258d7428',1,'SdSpiChipSelect.cpp']]], - ['sderrorcode_374',['sdErrorCode',['../class_sd_base.html#af2bb8fea732f9272a2e98772fbcc4595',1,'SdBase']]], - ['sderrordata_375',['sdErrorData',['../class_sd_base.html#a5f8f363b6c23f1d8bfeb858c946f1994',1,'SdBase']]], - ['sdexfat_376',['SdExFat',['../class_sd_ex_fat.html',1,'']]], - ['sdfat_377',['SdFat',['../_sd_fat_8h.html#a6e295d38f798fdc044c3282818cdb064',1,'SdFat.h']]], - ['sdfat_2eh_378',['SdFat.h',['../_sd_fat_8h.html',1,'']]], - ['sdfat32_379',['SdFat32',['../class_sd_fat32.html',1,'']]], - ['sdfat_5ffile_5ftype_380',['SDFAT_FILE_TYPE',['../_sd_fat_config_8h.html#acdbec9ae1f12e4154878ac10672103fb',1,'SdFatConfig.h']]], - ['sdfatconfig_2eh_381',['SdFatConfig.h',['../_sd_fat_config_8h.html',1,'']]], - ['sdfile_382',['SdFile',['../class_sd_file.html',1,'SdFile'],['../class_sd_file.html#ad05be3a1fb635448d15a154424b6c33f',1,'SdFile::SdFile()']]], - ['sdfs_383',['SdFs',['../class_sd_fs.html',1,'']]], - ['sdiocard_384',['SdioCard',['../class_sdio_card.html',1,'']]], - ['sdioconfig_385',['SdioConfig',['../class_sdio_config.html',1,'SdioConfig'],['../class_sdio_config.html#a1eaa863465cec6f67210b4888532b3dd',1,'SdioConfig::SdioConfig()']]], - ['sdios_2eh_386',['sdios.h',['../sdios_8h.html',1,'']]], - ['sdmillis_5ft_387',['SdMillis_t',['../_sys_call_8h.html#a94fe72e6e55572f63ac9d8fbad429980',1,'SysCall.h']]], - ['sdspiarduinodriver_388',['SdSpiArduinoDriver',['../class_sd_spi_arduino_driver.html',1,'']]], - ['sdspiarduinodriver_2eh_389',['SdSpiArduinoDriver.h',['../_sd_spi_arduino_driver_8h.html',1,'']]], - ['sdspibaseclass_390',['SdSpiBaseClass',['../class_sd_spi_base_class.html',1,'']]], - ['sdspibaseclass_2eh_391',['SdSpiBaseClass.h',['../_sd_spi_base_class_8h.html',1,'']]], - ['sdspicard_392',['SdSpiCard',['../class_sd_spi_card.html',1,'SdSpiCard'],['../class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8',1,'SdSpiCard::SdSpiCard()']]], - ['sdspicard_2eh_393',['SdSpiCard.h',['../_sd_spi_card_8h.html',1,'']]], - ['sdspiconfig_394',['SdSpiConfig',['../class_sd_spi_config.html',1,'SdSpiConfig'],['../class_sd_spi_config.html#a3c68a4b6ddc549abfb62fa662b59ef10',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t *port)'],['../class_sd_spi_config.html#adb0a2a3d7dc801305fef5167d538abe1',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed)'],['../class_sd_spi_config.html#a30087e90e8c4043aed90693c3be5855b',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs, uint8_t opt)'],['../class_sd_spi_config.html#a038e3578396f4682f1b8cd0b934f42f1',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs)']]], - ['sdspidriver_395',['SdSpiDriver',['../_sd_spi_arduino_driver_8h.html#a737a41f87fd0d1824d87d83a1f976c14',1,'SdSpiDriver(): SdSpiArduinoDriver.h'],['../_sd_spi_soft_driver_8h.html#a8990c69a7a6a738c2e74dc155a98430b',1,'SdSpiDriver(): SdSpiSoftDriver.h']]], - ['sdspidriver_2eh_396',['SdSpiDriver.h',['../_sd_spi_driver_8h.html',1,'']]], - ['sdspilibdriver_2eh_397',['SdSpiLibDriver.h',['../_sd_spi_lib_driver_8h.html',1,'']]], - ['sdspisoftdriver_398',['SdSpiSoftDriver',['../class_sd_spi_soft_driver.html',1,'']]], - ['sdspisoftdriver_2eh_399',['SdSpiSoftDriver.h',['../_sd_spi_soft_driver_8h.html',1,'']]], - ['sector_400',['sector',['../class_fs_cache.html#a5b90e145400de8687d9f34536b134130',1,'FsCache::sector()'],['../class_fat_cache.html#a1a9d892b5a68463598bb39d2732cb664',1,'FatCache::sector()']]], - ['sectorcount_401',['sectorCount',['../class_block_device_interface.html#a1531ba16d499510ae60be288112faae1',1,'BlockDeviceInterface::sectorCount()'],['../class_sd_card_interface.html#a1a8c37709b578bffc556240f6f03a8da',1,'SdCardInterface::sectorCount()'],['../class_sdio_card.html#a49a502cf7b59dc559a6c75a3285e6c1a',1,'SdioCard::sectorCount()'],['../class_sd_spi_card.html#a463ee796cf57c7e3e93f7817895fc492',1,'SdSpiCard::sectorCount()']]], - ['sectormask_402',['sectorMask',['../class_fat_partition.html#a6b970fa2e06de1a826b09e251dc3119b',1,'FatPartition']]], - ['sectorspercluster_403',['sectorsPerCluster',['../class_ex_fat_partition.html#a12798377b4d3cb16891607c543d0bded',1,'ExFatPartition::sectorsPerCluster()'],['../class_fat_partition.html#a836546c368e6ffe117e6ab8775d23eba',1,'FatPartition::sectorsPerCluster()'],['../class_fs_volume.html#acf62acd37d3f59dedd3e34b3e7d64da0',1,'FsVolume::sectorsPerCluster()']]], - ['sectorsperclustershift_404',['sectorsPerClusterShift',['../class_ex_fat_partition.html#aa4ff8402ba78a2de52ed61175a044ee3',1,'ExFatPartition::sectorsPerClusterShift()'],['../class_fat_partition.html#a593a27482ff8d993542d6f82bd92e26c',1,'FatPartition::sectorsPerClusterShift()']]], - ['sectorsperfat_405',['sectorsPerFat',['../class_fat_partition.html#a1f5c7599333dbe152a3cdd60623ce6d1',1,'FatPartition']]], - ['seek_406',['seek',['../class_stream_file.html#a773ee6f661fc689a5187f51cb5498086',1,'StreamFile::seek()'],['../class_fs_base_file.html#ae86486f4e20f4924797124f9c6042bfd',1,'FsBaseFile::seek()']]], - ['seek_5fcur_407',['SEEK_CUR',['../_stdio_stream_8h.html#a4c8d0b76b470ba65a43ca46a88320f39',1,'StdioStream.h']]], - ['seek_5fend_408',['SEEK_END',['../_stdio_stream_8h.html#ad2a2e6c114780c3071efd24f16c7f7d8',1,'StdioStream.h']]], - ['seek_5fset_409',['SEEK_SET',['../_stdio_stream_8h.html#a0d112bae8fd35be772185b6ec6bcbe64',1,'StdioStream.h']]], - ['seekcur_410',['seekCur',['../class_ex_fat_file.html#ab42494880cf229adfb0fc8edb0647686',1,'ExFatFile::seekCur()'],['../class_fat_file.html#a5812037ea30777cc350698ad26f2c73f',1,'FatFile::seekCur()'],['../class_fs_base_file.html#a5fa242a4598eab5caa6efd4bdf62f5c0',1,'FsBaseFile::seekCur()']]], - ['seekdir_411',['seekdir',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191e',1,'ios_base']]], - ['seekend_412',['seekEnd',['../class_ex_fat_file.html#a2994a71751ed4f137f48b2e9a7d94091',1,'ExFatFile::seekEnd()'],['../class_fat_file.html#a84f677f4e75ef6fa2eb632f4cdf6b486',1,'FatFile::seekEnd()'],['../class_fs_base_file.html#ade9f9a9ac4d3e0a392a6cc45c9551767',1,'FsBaseFile::seekEnd()']]], - ['seekg_413',['seekg',['../classistream.html#a52d637b1aeca9946085a4a72e0208aec',1,'istream::seekg(pos_type pos)'],['../classistream.html#a60dd48a3b374fb9cbdc59e1f930dea95',1,'istream::seekg(off_type off, seekdir way)']]], - ['seekp_414',['seekp',['../classostream.html#a18b453d2770a8852c312cbda919c4687',1,'ostream::seekp(pos_type pos)'],['../classostream.html#af6265a5be29237517b30673667ba4213',1,'ostream::seekp(off_type off, seekdir way)']]], - ['seekset_415',['seekSet',['../class_ex_fat_file.html#a9834c4da2f14c66f4bda26938ebb36f6',1,'ExFatFile::seekSet()'],['../class_fat_file.html#ab067190d25733ed7e697d9890f61fd7a',1,'FatFile::seekSet()'],['../class_fs_base_file.html#a460f7598c903b8a4b4fe868dacccb6dd',1,'FsBaseFile::seekSet()']]], - ['send_416',['send',['../class_sd_spi_arduino_driver.html#a3c4842e47f98fe5d3799cd6028778ab5',1,'SdSpiArduinoDriver::send(uint8_t data)'],['../class_sd_spi_arduino_driver.html#a0516f7cd20263f90f83c57c4c6ce14e4',1,'SdSpiArduinoDriver::send(const uint8_t *buf, size_t count)'],['../class_sd_spi_base_class.html#a28001200e3d464f5c6e910837924c577',1,'SdSpiBaseClass::send(uint8_t data)=0'],['../class_sd_spi_base_class.html#a51923b03f35af4bac7c3bb7c8d13303d',1,'SdSpiBaseClass::send(const uint8_t *buf, size_t count)=0'],['../class_sd_spi_soft_driver.html#a89eff51e8313d9b27c3641cd8310d022',1,'SdSpiSoftDriver::send(uint8_t data)=0'],['../class_sd_spi_soft_driver.html#a5607c2b3773e25404880a93e5e7a23a1',1,'SdSpiSoftDriver::send(const uint8_t *buf, size_t count)'],['../class_soft_spi_driver.html#ae465952c49043991ec808c2f1eca8e9c',1,'SoftSpiDriver::send()']]], - ['seqpos_417',['seqPos',['../structfname__t.html#a96b7c779dec8dd568be3290451078a4e',1,'fname_t']]], - ['setcallback_418',['setCallback',['../namespace_fs_date_time.html#afae6e23c2ed7d8194023d19d87fb1b62',1,'FsDateTime::setCallback(void(*dateTime)(uint16_t *date, uint16_t *time))'],['../namespace_fs_date_time.html#aa48bd625d32aae8fcfe67aba1d080be3',1,'FsDateTime::setCallback(void(*dateTime)(uint16_t *date, uint16_t *time, uint8_t *ms10))']]], - ['setf_419',['setf',['../classios__base.html#ab5db835cb45bba7684ebf72d9a3cccb4',1,'ios_base::setf(fmtflags fl)'],['../classios__base.html#a74dbc93607ab7d68a87ec326b92b6c81',1,'ios_base::setf(fmtflags fl, fmtflags mask)']]], - ['setfill_420',['setfill',['../structsetfill.html',1,'setfill'],['../structsetfill.html#abcd87f0632678d277df55406d25c8325',1,'setfill::setfill()']]], - ['setprecision_421',['setprecision',['../structsetprecision.html',1,'setprecision'],['../structsetprecision.html#a73fce143591989f56ef887a2ea86ac45',1,'setprecision::setprecision()']]], - ['setsckspeed_422',['setSckSpeed',['../class_sd_spi_arduino_driver.html#acf0cc41d2bd80479237aa2799e119973',1,'SdSpiArduinoDriver::setSckSpeed()'],['../class_sd_spi_base_class.html#a937215f1dc238285bd140c11ab82bbc9',1,'SdSpiBaseClass::setSckSpeed()'],['../class_sd_spi_soft_driver.html#a6002aaab8f8a751cbfc3274b17856930',1,'SdSpiSoftDriver::setSckSpeed()']]], - ['setstate_423',['setstate',['../classios.html#aee5d194656bdfb0c8621b23ea2f51afb',1,'ios']]], - ['setw_424',['setw',['../structsetw.html',1,'setw'],['../structsetw.html#afd8bfd075474f63df3c8b44ad47517d2',1,'setw::setw()']]], - ['sfn_425',['sfn',['../structfname__t.html#a37ed0c108b1feb81be4f8c041a4336bd',1,'fname_t']]], - ['shared_5fspi_426',['SHARED_SPI',['../_sd_spi_driver_8h.html#a5601868235dd7041b2e6e0be9445fe5d',1,'SdSpiDriver.h']]], - ['showbase_427',['showbase',['../classios__base.html#a7e3373ab307feecfc228bc9bdb29cd01',1,'ios_base::showbase()'],['../ios_8h.html#a73159e1398939807aeae6015dd86f2f4',1,'showbase(): ios.h']]], - ['showpoint_428',['showpoint',['../classios__base.html#ac9bb172682e157f037bd7fb82a236ee6',1,'ios_base::showpoint()'],['../ios_8h.html#a322f5897ace09768cd782f0c8f222770',1,'showpoint(): ios.h']]], - ['showpos_429',['showpos',['../classios__base.html#a7bfa4a883933105d10f8ce2693cb9f21',1,'ios_base::showpos()'],['../ios_8h.html#a80798554dbfece679adb0e05eb855943',1,'showpos(): ios.h']]], - ['size_430',['size',['../class_stream_file.html#a5813d451e7f7ba57a04d177caffc5a9f',1,'StreamFile::size()'],['../class_fs_base_file.html#a1c27b009372668a9c2de4a57195b0b36',1,'FsBaseFile::size()']]], - ['skipwhite_431',['skipWhite',['../classistream.html#a0f7468be86d93de5d33fa99095898279',1,'istream']]], - ['skipws_432',['skipws',['../classios__base.html#a64977c777d6e45826d1be9763f17f824',1,'ios_base::skipws()'],['../ios_8h.html#a972282e5d9d894f61c8a54423858c0a4',1,'skipws(): ios.h']]], - ['softspidriver_433',['SoftSpiDriver',['../class_soft_spi_driver.html',1,'']]], - ['spi_5fdiv3_5fspeed_434',['SPI_DIV3_SPEED',['../_sd_spi_driver_8h.html#a2d3c9c75ba6bea3fbcb82c2d0fbc21bb',1,'SdSpiDriver.h']]], - ['spi_5fdiv6_5fspeed_435',['SPI_DIV6_SPEED',['../_sd_spi_driver_8h.html#acbca47c0a33eec35109cea773bb65ee0',1,'SdSpiDriver.h']]], - ['spi_5fdriver_5fselect_436',['SPI_DRIVER_SELECT',['../_sd_fat_config_8h.html#a6761799c8dffafbf5b7dd914772be28c',1,'SdFatConfig.h']]], - ['spi_5feighth_5fspeed_437',['SPI_EIGHTH_SPEED',['../_sd_spi_driver_8h.html#a4818fb924fd75160a3fcd5d14abdc375',1,'SdSpiDriver.h']]], - ['spi_5ffull_5fspeed_438',['SPI_FULL_SPEED',['../_sd_spi_driver_8h.html#a785afdf191e080f93703ad0a6f8f3d3b',1,'SdSpiDriver.h']]], - ['spi_5fhalf_5fspeed_439',['SPI_HALF_SPEED',['../_sd_spi_driver_8h.html#af7493f43efa1c1be2b718bd3cc759d0e',1,'SdSpiDriver.h']]], - ['spi_5fquarter_5fspeed_440',['SPI_QUARTER_SPEED',['../_sd_spi_driver_8h.html#a3bfd4f8b788952234111778be51087ae',1,'SdSpiDriver.h']]], - ['spi_5fsixteenth_5fspeed_441',['SPI_SIXTEENTH_SPEED',['../_sd_spi_driver_8h.html#a6d3bbc68aed8dc3948669d0d40f4eb11',1,'SdSpiDriver.h']]], - ['spiport_442',['spiPort',['../class_sd_spi_config.html#aedaada290c35b55d36671ca377620480',1,'SdSpiConfig']]], - ['spiport_5ft_443',['SpiPort_t',['../_sd_spi_driver_8h.html#a472d56ea7cb52ec5d68b3067baa000c3',1,'SdSpiDriver.h']]], - ['spistart_444',['spiStart',['../class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c',1,'SdSpiCard']]], - ['spistop_445',['spiStop',['../class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1',1,'SdSpiCard']]], - ['status_446',['status',['../class_sd_card_interface.html#a6315bf0d5852bc24563b7977f7c7e5b4',1,'SdCardInterface::status()'],['../class_sdio_card.html#a58880a055e58410f8b22658b88622f63',1,'SdioCard::status()']]], - ['stdiostream_447',['StdioStream',['../class_stdio_stream.html',1,'StdioStream'],['../class_stdio_stream.html#a96b2c027e76bfca6d6835c9ae1be2ad2',1,'StdioStream::StdioStream()']]], - ['stdiostream_2eh_448',['StdioStream.h',['../_stdio_stream_8h.html',1,'']]], - ['stream_5fbuf_5fsize_449',['STREAM_BUF_SIZE',['../_stdio_stream_8h.html#ad9a6150ef11e2616c1a99bc777df17d3',1,'StdioStream.h']]], - ['stream_5ft_450',['stream_t',['../_sys_call_8h.html#a708fe172ce8f40fdb50a2df8c567d07a',1,'SysCall.h']]], - ['streambaseclass_451',['StreamBaseClass',['../class_stream_base_class.html',1,'']]], - ['streambasefile_452',['StreamBaseFile',['../ios_8h.html#a77934df7b6e6d581c762dd387e2b5162',1,'ios.h']]], - ['streamfile_453',['StreamFile',['../class_stream_file.html',1,'']]], - ['streamfile_3c_20exfatfile_2c_20uint64_5ft_20_3e_454',['StreamFile< ExFatFile, uint64_t >',['../class_stream_file.html',1,'']]], - ['streamfile_3c_20fatfile_2c_20uint32_5ft_20_3e_455',['StreamFile< FatFile, uint32_t >',['../class_stream_file.html',1,'']]], - ['streamfile_3c_20fsbasefile_2c_20uint64_5ft_20_3e_456',['StreamFile< FsBaseFile, uint64_t >',['../class_stream_file.html',1,'']]], - ['streamsize_457',['streamsize',['../classios__base.html#a82836e1d3cc603fba8f0b54d323a2dff',1,'ios_base']]], - ['sync_458',['sync',['../class_buffered_print.html#a2253d1e7f231b94b18eab1281c123a49',1,'BufferedPrint::sync()'],['../class_ex_fat_file.html#a2cb3638069afd2d01b79e5dff1a66f55',1,'ExFatFile::sync()'],['../class_fs_cache.html#a5a2c8fb432d7b7590ebb43200ca21893',1,'FsCache::sync()'],['../class_fat_file.html#a67f3dc4896c542d695e11aac927f585e',1,'FatFile::sync()'],['../class_fat_cache.html#a4d76d4f46ce5994f6fc4678a7b4f8cf1',1,'FatCache::sync()'],['../class_fs_base_file.html#acf2d9261c5c1b1b022a0414cdfe0a17b',1,'FsBaseFile::sync()']]], - ['syncdevice_459',['syncDevice',['../class_block_device_interface.html#a23e30999f1cc03da99e285cf180dbbb7',1,'BlockDeviceInterface::syncDevice()'],['../class_sdio_card.html#a1201ec7a6fa91b73a1daa584a1b055f7',1,'SdioCard::syncDevice()'],['../class_sd_spi_card.html#ac9f3bfbfc5029f93da1fa233cbe617c4',1,'SdSpiCard::syncDevice()']]], - ['syscall_460',['SysCall',['../class_sys_call.html',1,'']]], - ['syscall_2eh_461',['SysCall.h',['../_sys_call_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.html deleted file mode 100644 index 6b0988c9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.js deleted file mode 100644 index 87bfc9e1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_12.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['tellg_462',['tellg',['../classistream.html#a18332bdcb7fbe33ca06045c786cac4c3',1,'istream']]], - ['tellp_463',['tellp',['../classostream.html#a92dec0e2bc8352df1419d1cdc434e619',1,'ostream']]], - ['timestamp_464',['timestamp',['../class_ex_fat_file.html#a6d3ab10983e206401ebd5c24a1c46174',1,'ExFatFile::timestamp()'],['../class_fat_file.html#a56dabdf73833b7e961c4530eb8e16d23',1,'FatFile::timestamp()'],['../class_fs_base_file.html#acea65e639feebaac01964af02a77d324',1,'FsBaseFile::timestamp()']]], - ['trunc_465',['trunc',['../classios__base.html#ae62b8972f37509819e1384214071194b',1,'ios_base']]], - ['truncate_466',['truncate',['../class_ex_fat_file.html#aca37955d3c7cce40f7f9e1ea078e5636',1,'ExFatFile::truncate()'],['../class_ex_fat_file.html#a6262b0d6d43d2a426953a0a7d90f624f',1,'ExFatFile::truncate(uint64_t length)'],['../class_ex_fat_volume.html#ae5cbcdd7907a882b4686cb3ba7e85bcc',1,'ExFatVolume::truncate(const ExChar_t *path, uint64_t length)'],['../class_ex_fat_volume.html#ae6d409b7f24593dca7aae70513e18b70',1,'ExFatVolume::truncate(const String &path, uint64_t length)'],['../class_fat_file.html#a7dda881dac19ea2aa9b2e85a229a98d7',1,'FatFile::truncate()'],['../class_fat_file.html#aa6e663098a578635d37d92e82d18d616',1,'FatFile::truncate(uint32_t length)'],['../class_fat_volume.html#a86a08bf789e33567418465b9b12751e2',1,'FatVolume::truncate(const char *path, uint32_t length)'],['../class_fat_volume.html#a97ef39ec02c38c0772f0029d42edcb46',1,'FatVolume::truncate(const String &path, uint32_t length)'],['../class_fs_base_file.html#a2a0bf00241df08a604f054512746986b',1,'FsBaseFile::truncate()'],['../class_fs_base_file.html#a47247cc54157ef79e0752f55ba01cf7e',1,'FsBaseFile::truncate(uint64_t length)']]], - ['type_467',['type',['../class_sd_card_interface.html#a80796bc06b4090c15b3d46e651dd38c8',1,'SdCardInterface::type()'],['../class_sdio_card.html#a22451464dba5275838908c2d19392850',1,'SdioCard::type()'],['../class_sd_spi_card.html#ac53e0f3575db5be26dcba825bab3ca12',1,'SdSpiCard::type()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.html deleted file mode 100644 index 7e5f42a9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.js deleted file mode 100644 index 137ffa5c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_13.js +++ /dev/null @@ -1,18 +0,0 @@ -var searchData= -[ - ['ungetc_468',['ungetc',['../class_stdio_stream.html#ac00e0dd906c2e857ece53794c6c92786',1,'StdioStream']]], - ['ungetc_5fbuf_5fsize_469',['UNGETC_BUF_SIZE',['../_stdio_stream_8h.html#a785dd413c0d7b05f95df82d3453ecacd',1,'StdioStream.h']]], - ['unsetf_470',['unsetf',['../classios__base.html#a3bf7d054a433ed15e8b984e16f630fa4',1,'ios_base']]], - ['unusedstack_471',['UnusedStack',['../_free_stack_8h.html#a0a6400cf785c9647c0bacb76b15851de',1,'FreeStack.cpp']]], - ['uppercase_472',['uppercase',['../classios__base.html#ade3db1fe3249e87f4c47a9a8916793d9',1,'ios_base::uppercase()'],['../ios_8h.html#af5d5e1a0effa1b500bb882feed5a2061',1,'uppercase(): ios.h']]], - ['use_5fblock_5fdevice_5finterface_473',['USE_BLOCK_DEVICE_INTERFACE',['../_sd_fat_config_8h.html#ae92cc0fb2a31925cfc5694feb048dca2',1,'SdFatConfig.h']]], - ['use_5fexfat_5fbitmap_5fcache_474',['USE_EXFAT_BITMAP_CACHE',['../_sd_fat_config_8h.html#a8d3fca2607182c1ba389dd61c283a3e2',1,'SdFatConfig.h']]], - ['use_5ffat_5ffile_5fflag_5fcontiguous_475',['USE_FAT_FILE_FLAG_CONTIGUOUS',['../_sd_fat_config_8h.html#ad42a354208ecb245adfc238266a612e5',1,'SdFatConfig.h']]], - ['use_5ffcntl_5fh_476',['USE_FCNTL_H',['../_sd_fat_config_8h.html#ab4b7255422e65730612f1f6af1a26752',1,'SdFatConfig.h']]], - ['use_5flong_5ffile_5fnames_477',['USE_LONG_FILE_NAMES',['../_sd_fat_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'SdFatConfig.h']]], - ['use_5fmulti_5fsector_5fio_478',['USE_MULTI_SECTOR_IO',['../_sd_fat_config_8h.html#ae477a983188d4370faff32b07a5cfacb',1,'SdFatConfig.h']]], - ['use_5fsd_5fcrc_479',['USE_SD_CRC',['../_sd_fat_config_8h.html#af2e76ffb2fdb830175abf513dd640fdd',1,'SdFatConfig.h']]], - ['use_5fseparate_5ffat_5fcache_480',['USE_SEPARATE_FAT_CACHE',['../_sd_fat_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'SdFatConfig.h']]], - ['use_5fsimple_5flittle_5fendian_481',['USE_SIMPLE_LITTLE_ENDIAN',['../_sd_fat_config_8h.html#a9d4fac424e31b4383a10211f0489d93b',1,'SdFatConfig.h']]], - ['usedma_482',['useDma',['../class_sdio_config.html#a07ddb8b18bf24fa61fdd289a112e79a8',1,'SdioConfig']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.html deleted file mode 100644 index ec7711ee..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.js deleted file mode 100644 index b9a15f0d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_14.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['validlength_483',['validLength',['../class_ex_fat_file.html#afc8af11ba8e3a830dff1dd5e59446243',1,'ExFatFile']]], - ['vfprintf_484',['vfprintf',['../_print_templates_8h.html#aa3bc14da82a850b0f8ce848a6d54045f',1,'PrintTemplates.h']]], - ['vmprintf_485',['vmprintf',['../_print_templates_8h.html#ad139f8bf9b6ead8bd28abf1dd412a8a4',1,'PrintTemplates.h']]], - ['vol_486',['vol',['../class_sd_base.html#a20ed1868a6498cd336364c22d1df28a5',1,'SdBase']]], - ['volumebegin_487',['volumeBegin',['../class_sd_base.html#a1f1de2aac5384475b67506f86199e4c8',1,'SdBase']]], - ['volumesectorcount_488',['volumeSectorCount',['../class_fat_partition.html#a916ba7d67711bb62daf12ecd47ca4b8e',1,'FatPartition']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.html deleted file mode 100644 index 2409e3c2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.js deleted file mode 100644 index 7999a55c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_15.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['w_489',['w',['../structsetw.html#ab48d915a24d3f3365c9eb76e138a6f4e',1,'setw']]], - ['wdt_5fyield_5ftime_5fmillis_490',['WDT_YIELD_TIME_MILLIS',['../_sd_fat_config_8h.html#a03b3cad4ee9ca6915330f41b2924bca1',1,'SdFatConfig.h']]], - ['width_491',['width',['../classios__base.html#afa30e7644b4eae5928ad9c487ad387de',1,'ios_base::width()'],['../classios__base.html#ab2ba0f005bbf3d8ebed93b64068492e0',1,'ios_base::width(unsigned n)']]], - ['write_492',['write',['../class_buffered_print.html#ab41de6eca77a04a49a6fc965b1950fc5',1,'BufferedPrint::write()'],['../class_minimum_serial.html#a0ca1d9631fe5f2f00878bd481dbbd3aa',1,'MinimumSerial::write()'],['../class_ex_fat_file.html#a6fb2905a5e363554a5118b5d1322cd87',1,'ExFatFile::write(const char *str)'],['../class_ex_fat_file.html#afd011d17d66707623c28927a63f81015',1,'ExFatFile::write(uint8_t b)'],['../class_ex_fat_file.html#abc1423c7b550614d1067e7173f8b46a8',1,'ExFatFile::write(const void *buf, size_t count)'],['../class_fat_file.html#a081dd810835f1ebf8c23ffe92706b485',1,'FatFile::write(const char *str)'],['../class_fat_file.html#ae51e724ac6cc3d67d64a5a666d5850f1',1,'FatFile::write(uint8_t b)'],['../class_fat_file.html#a5d84d871ac904a22aa48308713d14682',1,'FatFile::write(const void *buf, size_t count)'],['../class_print_file.html#a52f78f160083b416d66e23c680e0577d',1,'PrintFile::write()'],['../class_stream_file.html#a0695220134825199b39dee82f18ab1ec',1,'StreamFile::write(uint8_t b)'],['../class_stream_file.html#a0ace3aaaf6d0fb673a43059c0664fab6',1,'StreamFile::write(const uint8_t *buffer, size_t size)'],['../class_fs_base_file.html#a023c0392aa72b32652546f48ef8ba1e5',1,'FsBaseFile::write(uint8_t b)'],['../class_fs_base_file.html#aa763e83fea4889828effc3308f13113a',1,'FsBaseFile::write(const void *buf, size_t count)']]], - ['writedata_493',['writeData',['../class_sd_card_interface.html#ad12a0053d3e832da694bd8d3d66adbc1',1,'SdCardInterface::writeData()'],['../class_sdio_card.html#a8467e7ffafa45ff930b38a6f18e9547a',1,'SdioCard::writeData()'],['../class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa',1,'SdSpiCard::writeData()']]], - ['writesector_494',['writeSector',['../class_block_device_interface.html#a8a4be0a85c3771c705617fad98303e49',1,'BlockDeviceInterface::writeSector()'],['../class_sdio_card.html#a74919a168bac68028ce62222500cf238',1,'SdioCard::writeSector()'],['../class_sd_spi_card.html#a9a230924d82c5df07df592c571bc3fa5',1,'SdSpiCard::writeSector()']]], - ['writesectors_495',['writeSectors',['../class_block_device_interface.html#a5cb063692a65f092ccdfd14f8700b58a',1,'BlockDeviceInterface::writeSectors()'],['../class_sdio_card.html#a55e2fc82ef9ecf7272a94b565c50303b',1,'SdioCard::writeSectors()'],['../class_sd_spi_card.html#a4165166d5d038c8f1c00c5a04e9f8a63',1,'SdSpiCard::writeSectors()']]], - ['writesingle_496',['writeSingle',['../class_sd_spi_card.html#a3172d671447410f19447b78b856a9689',1,'SdSpiCard']]], - ['writestart_497',['writeStart',['../class_sd_card_interface.html#abf04f87ec5c49fe6d9e23c8ac4cf482d',1,'SdCardInterface::writeStart()'],['../class_sdio_card.html#a1edd70537e2d7fa556532790cf413b5c',1,'SdioCard::writeStart(uint32_t sector)'],['../class_sdio_card.html#a82fe097fdbae26b3c8f92f215499cdf3',1,'SdioCard::writeStart(uint32_t sector, uint32_t count)'],['../class_sd_spi_card.html#ae46068850a0cb9f142d5b0b0147716fa',1,'SdSpiCard::writeStart(uint32_t sector)'],['../class_sd_spi_card.html#a785250ef0281fbb1cbe5078de9e80be3',1,'SdSpiCard::writeStart(uint32_t sector, uint32_t eraseCount)']]], - ['writestop_498',['writeStop',['../class_sd_card_interface.html#a2eac04896a05bd57730e96708934970f',1,'SdCardInterface::writeStop()'],['../class_sdio_card.html#acb560c2ea1f30c646b96f02e728b0fe1',1,'SdioCard::writeStop()'],['../class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0',1,'SdSpiCard::writeStop()']]], - ['ws_499',['ws',['../iostream_8h.html#a8adf4c714b8c8f201dedc83ee04556b1',1,'iostream.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.html deleted file mode 100644 index 37b68745..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.js deleted file mode 100644 index b5331019..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['yield_500',['yield',['../class_sys_call.html#a2219ba5ea8e411b022a3a00df5f380e0',1,'SysCall']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.html deleted file mode 100644 index 19c530f2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.js deleted file mode 100644 index c3c95ed8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_2.js +++ /dev/null @@ -1,21 +0,0 @@ -var searchData= -[ - ['bad_14',['bad',['../classios.html#a78be4e3069a644ff36d83a70b080c321',1,'ios']]], - ['badbit_15',['badbit',['../classios__base.html#ac8c2c8f2f6bc9e6ce101c20e88ebce35',1,'ios_base']]], - ['basefield_16',['basefield',['../classios__base.html#a75ce5482aa207d7aa0265d138b50a102',1,'ios_base']]], - ['beg_17',['beg',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea6639b4dd9e9b57ffef4a176cd1a1e7bb',1,'ios_base']]], - ['begin_18',['begin',['../class_buffered_print.html#a1382e2cedf67d12aa3ba056b0e7b10d3',1,'BufferedPrint::begin()'],['../class_minimum_serial.html#a5c56beb3472bb97f949defeecacda52c',1,'MinimumSerial::begin()'],['../class_sd_base.html#abff5f318cfe072b80119f1938cd591bb',1,'SdBase::begin(SdCsPin_t csPin=SS)'],['../class_sd_base.html#a94081827e77063eacf6fa035143cfde1',1,'SdBase::begin(SdCsPin_t csPin, uint32_t maxSck)'],['../class_sd_base.html#a5748f43d73a4272ec8dc302fb0213556',1,'SdBase::begin(SdSpiConfig spiConfig)'],['../class_sd_base.html#ab6343925e4605897d4a1c39be6705760',1,'SdBase::begin(SdioConfig sdioConfig)'],['../class_ex_fat_volume.html#ade318d2517a1bd3abe56e9e530fdcd78',1,'ExFatVolume::begin()'],['../class_fat_volume.html#af3a219ea89bbbf310a61115c9a3d221a',1,'FatVolume::begin()'],['../class_sdio_card.html#afbb5ab075dfd16ceebfcba5a20e70434',1,'SdioCard::begin()'],['../class_sd_spi_card.html#a6c256f8dcfa7f9d1fac165eed942ab73',1,'SdSpiCard::begin()'],['../class_sd_spi_arduino_driver.html#ae837a6d51bfe5518cb4744581824db88',1,'SdSpiArduinoDriver::begin()'],['../class_sd_spi_base_class.html#ad0cef6e2a3d21e438a2b7f428a218c03',1,'SdSpiBaseClass::begin()'],['../class_sd_spi_soft_driver.html#acb6b99f42e9a1b3a66adf520291dd647',1,'SdSpiSoftDriver::begin()=0'],['../class_sd_spi_soft_driver.html#af122eab393d7336ae3a86d80ebd62627',1,'SdSpiSoftDriver::begin(SdSpiConfig spiConfig)'],['../class_soft_spi_driver.html#a10552c46ff7d74df7b90081547357a13',1,'SoftSpiDriver::begin()'],['../class_fs_volume.html#ae587e7c114b0af86ec0b2927300133b0',1,'FsVolume::begin()']]], - ['binary_19',['binary',['../classios__base.html#ac99947c17c2936d15243671366605602',1,'ios_base']]], - ['blockdeviceinterface_20',['BlockDeviceInterface',['../class_block_device_interface.html',1,'']]], - ['blockdeviceinterface_2eh_21',['BlockDeviceInterface.h',['../_block_device_interface_8h.html',1,'']]], - ['boolalpha_22',['boolalpha',['../classios__base.html#afa74acd95d4bbc7cc3551251aac2bf00',1,'ios_base::boolalpha()'],['../ios_8h.html#a0016daaaf730481e2ad36972fa7abb17',1,'boolalpha(): ios.h']]], - ['buf_23',['buf',['../classobufstream.html#a4f699181bd3727f4288f4f95a5ce207f',1,'obufstream']]], - ['buffer_24',['buffer',['../class_fat_cache.html#a50b61cdeeff5c5dfd2a4bd7430ef19ac',1,'FatCache']]], - ['bufferedprint_25',['BufferedPrint',['../class_buffered_print.html',1,'BufferedPrint< WriteClass, BUF_DIM >'],['../class_buffered_print.html#af879eab3e69cfd9d15768451e091c6a2',1,'BufferedPrint::BufferedPrint()']]], - ['bufferedprint_2eh_26',['BufferedPrint.h',['../_buffered_print_8h.html',1,'']]], - ['bufstream_2eh_27',['bufstream.h',['../bufstream_8h.html',1,'']]], - ['bytespercluster_28',['bytesPerCluster',['../class_ex_fat_partition.html#ac2b5adafda0a9b52ffedf964e355da31',1,'ExFatPartition::bytesPerCluster()'],['../class_fat_partition.html#a1c3ab374b425c27bb6b6ddd55752c056',1,'FatPartition::bytesPerCluster()'],['../class_fs_volume.html#a770e0dca5ed7f8d3ca63768da38042cb',1,'FsVolume::bytesPerCluster()']]], - ['bytesperclustershift_29',['bytesPerClusterShift',['../class_ex_fat_partition.html#aedaebff39e7cbae66f226e9c7593b5b6',1,'ExFatPartition::bytesPerClusterShift()'],['../class_fat_partition.html#aaf43a09e71689c257f4b189ee307db4f',1,'FatPartition::bytesPerClusterShift()']]], - ['bytespersector_30',['bytesPerSector',['../class_ex_fat_partition.html#a3859310dde1f70daaca0ebcf274cb558',1,'ExFatPartition::bytesPerSector()'],['../class_fat_partition.html#a1eba03c763bab44263735488435731f8',1,'FatPartition::bytesPerSector()']]], - ['bytespersectorshift_31',['bytesPerSectorShift',['../class_ex_fat_partition.html#a226e452b6ae5c6846059e4acd21be1f1',1,'ExFatPartition::bytesPerSectorShift()'],['../class_fat_partition.html#a4e513ab3fcfb95583092793116aa4df5',1,'FatPartition::bytesPerSectorShift()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.html deleted file mode 100644 index 1ae887fc..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.js deleted file mode 100644 index 423ade8a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_3.js +++ /dev/null @@ -1,40 +0,0 @@ -var searchData= -[ - ['c_32',['c',['../structsetfill.html#a42ffb4e6135c1274ae827cfed7793a82',1,'setfill']]], - ['cache_5ffor_5fread_33',['CACHE_FOR_READ',['../class_fs_cache.html#a1df1d63f86fcf36e1ae08a48a05ead8b',1,'FsCache::CACHE_FOR_READ()'],['../class_fat_cache.html#ab4b446515ff9a0cebc747630ddd10c93',1,'FatCache::CACHE_FOR_READ()']]], - ['cache_5ffor_5fwrite_34',['CACHE_FOR_WRITE',['../class_fs_cache.html#ade321e6538ffc77c7f36ea200decaa6f',1,'FsCache::CACHE_FOR_WRITE()'],['../class_fat_cache.html#a81cb572f33443bd6aee9aa33ec395d0f',1,'FatCache::CACHE_FOR_WRITE()']]], - ['cache_5foption_5fno_5fread_35',['CACHE_OPTION_NO_READ',['../class_fs_cache.html#ab694436995afb87d6e31693b47811243',1,'FsCache::CACHE_OPTION_NO_READ()'],['../class_fat_cache.html#adf974f55e53ee0aaa85abb0d7d67181c',1,'FatCache::CACHE_OPTION_NO_READ()']]], - ['cache_5freserve_5ffor_5fwrite_36',['CACHE_RESERVE_FOR_WRITE',['../class_fs_cache.html#ae960459db6fda0de3d67768d3b59331d',1,'FsCache::CACHE_RESERVE_FOR_WRITE()'],['../class_fat_cache.html#a49d2896ff525ab77852f76df5c2a09c2',1,'FatCache::CACHE_RESERVE_FOR_WRITE()']]], - ['cache_5fstatus_5fdirty_37',['CACHE_STATUS_DIRTY',['../class_fs_cache.html#a9d83a0401f452c0572c4c4f869b698ab',1,'FsCache::CACHE_STATUS_DIRTY()'],['../class_fat_cache.html#aac8c38e5c545d0f80b13d816117f626e',1,'FatCache::CACHE_STATUS_DIRTY()']]], - ['cache_5fstatus_5fmask_38',['CACHE_STATUS_MASK',['../class_fs_cache.html#abb6b6426373bb591f027ac29eca4bacb',1,'FsCache::CACHE_STATUS_MASK()'],['../class_fat_cache.html#ab70dc4a2e387f0e9bf392044c702ae32',1,'FatCache::CACHE_STATUS_MASK()']]], - ['cache_5fstatus_5fmirror_5ffat_39',['CACHE_STATUS_MIRROR_FAT',['../class_fat_cache.html#a45236e1c0a2a098f08d3add0e4b1467a',1,'FatCache']]], - ['cache_5ft_40',['cache_t',['../unioncache__t.html',1,'']]], - ['cachebuffer_41',['cacheBuffer',['../class_fs_cache.html#a1533fdfef219ae4f3d6fb9299f51a1ee',1,'FsCache']]], - ['cacheclear_42',['cacheClear',['../class_ex_fat_partition.html#a63fac808e421ed5c8e72a37616ac56ac',1,'ExFatPartition::cacheClear()'],['../class_fat_partition.html#abf74c1e3c714b396e6271aee304c2448',1,'FatPartition::cacheClear()']]], - ['callback_43',['callback',['../namespace_fs_date_time.html#ab4e1acabf30bc682af20e1cc93330a6a',1,'FsDateTime']]], - ['callback2_44',['callback2',['../namespace_fs_date_time.html#a1c19b53a8b6c93d38a4bb2f2981a4efa',1,'FsDateTime']]], - ['card_45',['card',['../class_sd_base.html#a1516a55bdab1ee7fe56848808986ae34',1,'SdBase']]], - ['cardbegin_46',['cardBegin',['../class_sd_base.html#a7a5e3b08f6cdd94cfaa19a1b43df6ed9',1,'SdBase::cardBegin(SdSpiConfig spiConfig)'],['../class_sd_base.html#a64cd10a3ce5ee342d0fd31738f385362',1,'SdBase::cardBegin(SdioConfig sdioConfig)']]], - ['chdir_47',['chdir',['../class_ex_fat_volume.html#abdc1addfc9474bf42cab31bcb49b4b65',1,'ExFatVolume::chdir()'],['../class_ex_fat_volume.html#a4e0a0e838088f31b15a36925f21c314c',1,'ExFatVolume::chdir(const ExChar_t *path)'],['../class_ex_fat_volume.html#afb7a1d7e4de9690b2c63cc8cd22ab4b5',1,'ExFatVolume::chdir(const String &path)'],['../class_fat_volume.html#a659d921b3efd52d310a33cba69eff18b',1,'FatVolume::chdir()'],['../class_fat_volume.html#ac0f6cf6ece2285af777c1fdf5cf8c219',1,'FatVolume::chdir(const char *path)'],['../class_fat_volume.html#ac591520e33ff8ba51e80782a87423872',1,'FatVolume::chdir(const String &path)'],['../class_fs_volume.html#abcc645df09441d40c476e4981393c944',1,'FsVolume::chdir()'],['../class_fs_volume.html#ac4f62724d5eeaec3582594bb3b4c3e65',1,'FsVolume::chdir(const char *path)'],['../class_fs_volume.html#a6c0758acb32b59c1861cc143612765d2',1,'FsVolume::chdir(const String &path)']]], - ['check_5fflash_5fprogramming_48',['CHECK_FLASH_PROGRAMMING',['../_sd_fat_config_8h.html#a63747c9ac4e3d78579690cf9eb38c4df',1,'SdFatConfig.h']]], - ['chvol_49',['chvol',['../class_ex_fat_volume.html#a6bcabab1ded2e71c1272c1baf009c2ab',1,'ExFatVolume::chvol()'],['../class_fat_volume.html#a36fbc19755b066068cac7c4ca578b27b',1,'FatVolume::chvol()'],['../class_fs_volume.html#a34a5bb7a97a081a7d74cf297f1fbee82',1,'FsVolume::chvol()']]], - ['cid_50',['CID',['../struct_c_i_d.html',1,'']]], - ['clear_51',['clear',['../class_fs_cache.html#a734ac2e9931f141c9ba9a3ef021a8691',1,'FsCache::clear()'],['../classfstream.html#a682b278a6a299ffb21b8737717ff12bf',1,'fstream::clear()'],['../classofstream.html#a09edfdb3dbda20aff105e751001313f0',1,'ofstream::clear()'],['../classios.html#aa49ed6670d1743e7a373b2d915ec739a',1,'ios::clear()']]], - ['clearcallback_52',['clearCallback',['../namespace_fs_date_time.html#af88a1ebd9c91a474c79a641e716729a0',1,'FsDateTime']]], - ['clearerr_53',['clearerr',['../class_stdio_stream.html#aa737e5680fc2808a03a603ea8559d82b',1,'StdioStream']]], - ['clearerror_54',['clearError',['../class_ex_fat_file.html#ac2004e7bf328b3edda7d4c3acba2726f',1,'ExFatFile::clearError()'],['../class_fat_file.html#a052e2c15a39b322a5307b693b8835b22',1,'FatFile::clearError()']]], - ['clearwriteerror_55',['clearWriteError',['../class_ex_fat_file.html#abc0d3863895c17df53930bdfa84cb06f',1,'ExFatFile::clearWriteError()'],['../class_fat_file.html#aeca2a2eff91e6aa55fe1b0e3860c9a05',1,'FatFile::clearWriteError()'],['../class_fs_base_file.html#a936fc1e3fb13a6ae1352d027bf0a70f7',1,'FsBaseFile::clearWriteError()']]], - ['close_56',['close',['../class_ex_fat_file.html#a7ba9e04099bdf8fd34220ebfdde72867',1,'ExFatFile::close()'],['../class_fat_file.html#afd16af325e0642e4bff6430b7d8bb18b',1,'FatFile::close()'],['../classfstream.html#ac5720ee620c09d63dd186823e688ea9a',1,'fstream::close()'],['../classifstream.html#ac5892f472afdef6160f5fe2401b16dce',1,'ifstream::close()'],['../classofstream.html#a240f3752c7ff7a78d10c143d2083715f',1,'ofstream::close()'],['../class_fs_base_file.html#aa669c695a839e68e417fb15eebe3de13',1,'FsBaseFile::close()']]], - ['cluster_57',['cluster',['../struct_ex_fat_pos__t.html#aef933f72a904d60398285bd0d833ee24',1,'ExFatPos_t::cluster()'],['../struct_dir_pos__t.html#a11898149ae53f0b189c6b13590c60a5f',1,'DirPos_t::cluster()'],['../struct_fat_pos__t.html#a7b50657b0debaf0e6231af2c74a655fe',1,'FatPos_t::cluster()']]], - ['clustercount_58',['clusterCount',['../class_ex_fat_partition.html#a17b72f8a437c5663a04473606fd36d58',1,'ExFatPartition::clusterCount()'],['../class_fat_partition.html#aba35645c23735c4833c07bc2b3adcd1f',1,'FatPartition::clusterCount()'],['../class_fs_volume.html#abc9731fa79598460a37f10a2e561f29c',1,'FsVolume::clusterCount()']]], - ['clusterheapstartsector_59',['clusterHeapStartSector',['../class_ex_fat_partition.html#a2f75613844b26a2a574a0ee31005b1a0',1,'ExFatPartition']]], - ['contiguousrange_60',['contiguousRange',['../class_ex_fat_file.html#add39a8c7f7961321ba647e8da8f3d461',1,'ExFatFile::contiguousRange()'],['../class_fat_file.html#a12b3c5a763416ca62c70e3db74033cd0',1,'FatFile::contiguousRange()'],['../class_fs_base_file.html#adff091db3361b34a3f63ffeb495c27c7',1,'FsBaseFile::contiguousRange()']]], - ['crc_61',['crc',['../struct_c_i_d.html#aa10cfc5aef8e979e47009474dfa3d940',1,'CID']]], - ['createcontiguous_62',['createContiguous',['../class_fat_file.html#a0afc2a1cffa238d1cb2049bfa2d8d199',1,'FatFile::createContiguous(FatFile *dirFile, const char *path, uint32_t size)'],['../class_fat_file.html#a0853fbd44aee2798d14d8e3aed78f8bf',1,'FatFile::createContiguous(const char *path, uint32_t size)']]], - ['cspin_63',['csPin',['../class_sd_spi_config.html#a0c1797197fbd4e4c4499daf4b51628e6',1,'SdSpiConfig']]], - ['cur_64',['cur',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea53910041525b9e2f33bfc3bb4482134c',1,'ios_base']]], - ['curcluster_65',['curCluster',['../class_fat_file.html#a526f3dd56ce205690e45ffc86ef6f891',1,'FatFile']]], - ['curposition_66',['curPosition',['../class_ex_fat_file.html#ab49396aad3f6500aa19f75490dc26719',1,'ExFatFile::curPosition()'],['../class_fat_file.html#a97e0620949f97e9b9c91ed1094d728aa',1,'FatFile::curPosition()'],['../class_fs_base_file.html#a856bccf55a40ebbea27072dcfea06191',1,'FsBaseFile::curPosition()']]], - ['curtimems_67',['curTimeMS',['../class_sys_call.html#aa508a9a3066020fc94765e4099490372',1,'SysCall']]], - ['cwv_68',['cwv',['../class_ex_fat_volume.html#a5b2a874ef0306425bf54c18454771b45',1,'ExFatVolume::cwv()'],['../class_fat_volume.html#a06acd4a434456b6a4644ff79a0bf0a24',1,'FatVolume::cwv()'],['../class_fs_volume.html#ab4fa0f21669b84e00d00fd54c3144a8f',1,'FsVolume::cwv()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.html deleted file mode 100644 index 14c90ef5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.js deleted file mode 100644 index dda54378..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_4.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['data_69',['data',['../unioncache__t.html#ae675b7a3a87d809070de111d1d1f1d81',1,'cache_t']]], - ['datalength_70',['dataLength',['../class_ex_fat_file.html#ada4dde9f2eed36bf556fcf1bd3d28ccf',1,'ExFatFile']]], - ['datastartsector_71',['dataStartSector',['../class_fat_partition.html#a7e89ec91780f7dfa060b261c605bf2e5',1,'FatPartition::dataStartSector()'],['../class_fs_volume.html#a79cebeb23cb3cdaa06550475fe24272a',1,'FsVolume::dataStartSector()']]], - ['datetimecallback_72',['dateTimeCallback',['../class_sd_file.html#a2d78e6a8cedbf8ce545af68457b43bf1',1,'SdFile']]], - ['datetimecallbackcancel_73',['dateTimeCallbackCancel',['../class_sd_file.html#ad266770d0a779d1a528a3997aee5142d',1,'SdFile']]], - ['dbgclearstats_74',['dbgClearStats',['../class_sd_spi_card.html#ab6cf8283dee415d9217eb758e75a98ef',1,'SdSpiCard']]], - ['dbgfat_75',['dbgFat',['../class_fat_partition.html#a0af1e91a311180119b4a2c85d7e6e87e',1,'FatPartition']]], - ['dbgprintstats_76',['dbgPrintStats',['../class_sd_spi_card.html#abdb02df511072aefb465a22858d92e06',1,'SdSpiCard']]], - ['deactivate_77',['deactivate',['../class_sd_spi_arduino_driver.html#ae88a255f533e3acb41d1221025a69b55',1,'SdSpiArduinoDriver::deactivate()'],['../class_sd_spi_base_class.html#ae3a5ede781e390263382fcf7765d665d',1,'SdSpiBaseClass::deactivate()'],['../class_sd_spi_soft_driver.html#a05315e4128ae7263d9e68119d6ae4308',1,'SdSpiSoftDriver::deactivate()']]], - ['dec_78',['dec',['../classios__base.html#a2826aed005e7c1f6858060cddae7971a',1,'ios_base::dec()'],['../ios_8h.html#ada38ab90e22f0ebb638cb864a35c562d',1,'dec(): ios.h']]], - ['dedicated_5fspi_79',['DEDICATED_SPI',['../_sd_spi_driver_8h.html#a666c394438267afda9b1e63f6b61459c',1,'SdSpiDriver.h']]], - ['destructor_5fcloses_5ffile_80',['DESTRUCTOR_CLOSES_FILE',['../_sd_fat_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'SdFatConfig.h']]], - ['dir_81',['dir',['../unioncache__t.html#a04a7472d08f2545d6db7804c82c99d7c',1,'cache_t']]], - ['direntry_82',['dirEntry',['../class_fat_file.html#a2f4e9ab3056125b07f15d14ca26d5346',1,'FatFile']]], - ['dirindex_83',['dirIndex',['../class_ex_fat_file.html#a5e3baa5d5269c2948cfaf604c42f6a16',1,'ExFatFile::dirIndex()'],['../class_fat_file.html#ae5ec24d4a94d3780384d3f2b731c7eb9',1,'FatFile::dirIndex()'],['../class_fs_base_file.html#ac05660570595552c72164a61001899d5',1,'FsBaseFile::dirIndex()']]], - ['dirpos_5ft_84',['DirPos_t',['../struct_dir_pos__t.html',1,'']]], - ['dirsize_85',['dirSize',['../class_fat_file.html#ae2ed15f05c9ccbce355e7a8d3ce8382d',1,'FatFile']]], - ['dirty_86',['dirty',['../class_fs_cache.html#af50f564561a2db190280769d4641147b',1,'FsCache::dirty()'],['../class_fat_cache.html#ab4d3b0c16bb6a116c7d01afff2dcb307',1,'FatCache::dirty()']]], - ['dmpfile_87',['dmpFile',['../class_fat_file.html#a4f01d27954ae49aeb6888ac7302f55d9',1,'FatFile']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.html deleted file mode 100644 index 60fa53e9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.js deleted file mode 100644 index 05c8717d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_5.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['enable_5farduino_5ffeatures_88',['ENABLE_ARDUINO_FEATURES',['../_sd_fat_config_8h.html#a9a8c1ea8596f35f7f33a24b642567206',1,'SdFatConfig.h']]], - ['enable_5farduino_5fserial_89',['ENABLE_ARDUINO_SERIAL',['../_sd_fat_config_8h.html#aa0a95c918e41f5cb3850231fc41fdcd0',1,'SdFatConfig.h']]], - ['enable_5farduino_5fstring_90',['ENABLE_ARDUINO_STRING',['../_sd_fat_config_8h.html#aae353ccb45df7772d8022763a57410d9',1,'SdFatConfig.h']]], - ['enable_5fdedicated_5fspi_91',['ENABLE_DEDICATED_SPI',['../_sd_fat_config_8h.html#a3ceb23f14263a17c56eac40e484cbbbb',1,'SdFatConfig.h']]], - ['end_92',['end',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191eaae47c0ae984e90b38907783a1a804811',1,'ios_base::end()'],['../class_sdio_card.html#aef8e287f0e2033d4afe5e7051c293334',1,'SdioCard::end()'],['../class_sd_spi_arduino_driver.html#a7f94ce98855bb3d1781bbad77741e494',1,'SdSpiArduinoDriver::end()'],['../class_fs_volume.html#acd5a0e50a30334785d75a8c8bfc3e1f9',1,'FsVolume::end()']]], - ['endl_93',['endl',['../iostream_8h.html#ab9868f8e151efc1705646437dbb59bb2',1,'iostream.h']]], - ['endl_5fcalls_5fflush_94',['ENDL_CALLS_FLUSH',['../_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'SdFatConfig.h']]], - ['eof_95',['eof',['../classios.html#a7aa5ea2f670d64eb3dcb3b62eddd576c',1,'ios::eof()'],['../_stdio_stream_8h.html#a59adc4c82490d23754cd39c2fb99b0da',1,'EOF(): StdioStream.h']]], - ['eofbit_96',['eofbit',['../classios__base.html#af75072b7ef2a931c77a2cb8e7ccda460',1,'ios_base']]], - ['erase_97',['erase',['../class_sd_card_interface.html#a6a57c5bced670759b7c278c7a5988fd1',1,'SdCardInterface::erase()'],['../class_sdio_card.html#a03b1cdcf988acbdee91bfa8974be50f9',1,'SdioCard::erase()'],['../class_sd_spi_card.html#a904d56312d7a9cfc8bf33e3ad041c9eb',1,'SdSpiCard::erase()']]], - ['erasesinglesectorenable_98',['eraseSingleSectorEnable',['../class_sd_spi_card.html#a1b137a1ab76da21379bc59efeac90e1f',1,'SdSpiCard']]], - ['error_99',['error',['../class_sd_spi_card.html#aa12ad53111abcb187d3c6119a3a77592',1,'SdSpiCard']]], - ['errorcode_100',['errorCode',['../class_sd_card_interface.html#af83618545960af2f1ceec84927c12fc9',1,'SdCardInterface::errorCode()'],['../class_sdio_card.html#a1d505c4fb461bb7103692054ef6f7f1f',1,'SdioCard::errorCode()'],['../class_sd_spi_card.html#ad14f9be4d9087db44309fdc6597c949e',1,'SdSpiCard::errorCode()']]], - ['errordata_101',['errorData',['../class_sd_card_interface.html#ab84d7a9506d49366d8ec105e239ab0e1',1,'SdCardInterface::errorData()'],['../class_sdio_card.html#a9c2da202da95162d2eb694363fbe8654',1,'SdioCard::errorData()'],['../class_sd_spi_card.html#aae2cc2a741646bb2aaabaf0547298de8',1,'SdSpiCard::errorData()']]], - ['errorhalt_102',['errorHalt',['../class_sd_base.html#ac9d239810a48c90bd0f3a3e9c4c606a9',1,'SdBase::errorHalt(print_t *pr)'],['../class_sd_base.html#a1691b7a85fc11851a6942de035d73772',1,'SdBase::errorHalt(print_t *pr, const char *msg)'],['../class_sd_base.html#ac530fe041855d994a53d2e1b9c33f22d',1,'SdBase::errorHalt(print_t *pr, const __FlashStringHelper *msg)'],['../class_sd_base.html#a3a0d626662aa29c5b942442d0f6ee0ff',1,'SdBase::errorHalt(const __FlashStringHelper *msg)'],['../class_sd_base.html#a841a42d2ddc34c21dfb208b9a377c777',1,'SdBase::errorHalt()'],['../class_sd_base.html#a65aab6f19ed26777c2b3a149bbed39b5',1,'SdBase::errorHalt(const char *msg)']]], - ['errorline_103',['errorLine',['../class_sdio_card.html#a37e477b39d2a9c874fd338b4f7ef6b0e',1,'SdioCard']]], - ['errorprint_104',['errorPrint',['../class_sd_base.html#a22d184b3266ae7cb31ab47b7203e91ac',1,'SdBase::errorPrint(print_t *pr)'],['../class_sd_base.html#a7d119e8ae896cc4caa073e9f54823f3e',1,'SdBase::errorPrint(print_t *pr, char const *msg)'],['../class_sd_base.html#a6793653198ce4c570ae92d2f9436dca9',1,'SdBase::errorPrint(Print *pr, const __FlashStringHelper *msg)'],['../class_sd_base.html#ab4d5db510feb64a9cd487defe5bb62d9',1,'SdBase::errorPrint(const char *msg)'],['../class_sd_base.html#afebeeb8af2027f1c9a0b4f1106be9c2a',1,'SdBase::errorPrint(const __FlashStringHelper *msg)']]], - ['exfatfile_105',['ExFatFile',['../class_ex_fat_file.html',1,'ExFatFile'],['../class_ex_fat_partition.html#a0ea68fb710b4ca007419acbf84ca6908',1,'ExFatPartition::ExFatFile()'],['../class_ex_fat_file.html#a3c1303c37cad370b33f0279524c93720',1,'ExFatFile::ExFatFile()']]], - ['exfatfile_2eh_106',['ExFatFile.h',['../_ex_fat_file_8h.html',1,'']]], - ['exfatformatter_107',['ExFatFormatter',['../class_ex_fat_formatter.html',1,'']]], - ['exfatpartition_108',['ExFatPartition',['../class_ex_fat_partition.html',1,'']]], - ['exfatpartition_2eh_109',['ExFatPartition.h',['../_ex_fat_partition_8h.html',1,'']]], - ['exfatpos_5ft_110',['ExFatPos_t',['../struct_ex_fat_pos__t.html',1,'']]], - ['exfatvolume_111',['ExFatVolume',['../class_ex_fat_volume.html',1,'ExFatVolume'],['../class_ex_fat_file.html#a064869383f7639b113eb0aaf0b84335c',1,'ExFatFile::ExFatVolume()']]], - ['exfile_112',['ExFile',['../class_ex_file.html',1,'']]], - ['exists_113',['exists',['../class_ex_fat_file.html#a22a717ddc6d2004c540c67a14264d9dd',1,'ExFatFile::exists()'],['../class_ex_fat_volume.html#a7fdcdffb720a1cca5cfa73f4cfa281df',1,'ExFatVolume::exists(const ExChar_t *path)'],['../class_ex_fat_volume.html#af705d3a2434d64efebaa5b3615131dc5',1,'ExFatVolume::exists(const String &path)'],['../class_fat_file.html#a50242f98dea0d4488ce4039a279f2a57',1,'FatFile::exists()'],['../class_fat_volume.html#a21541734ad76f64ea24b9f45e2bd6117',1,'FatVolume::exists(const char *path)'],['../class_fat_volume.html#afb7709e5b9e04265467305b43adf7cef',1,'FatVolume::exists(const String &path)'],['../class_fs_base_file.html#a76aea9766ffeae5454381a0704e62505',1,'FsBaseFile::exists()'],['../class_fs_volume.html#a9bece771399c97b136868f684c2b4496',1,'FsVolume::exists(const char *path)'],['../class_fs_volume.html#a5cabbe39ffc114d79ebe4e793024354e',1,'FsVolume::exists(const String &path)']]], - ['exname_5ft_114',['ExName_t',['../struct_ex_name__t.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.html deleted file mode 100644 index 71803631..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.js deleted file mode 100644 index 298558c8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_6.js +++ /dev/null @@ -1,75 +0,0 @@ -var searchData= -[ - ['f_115',['F',['../_sys_call_8h.html#a0e3009529aac180ed5f48296d6670d6b',1,'SysCall.h']]], - ['fail_116',['fail',['../classios.html#a15269e67d05d4fe83a6cf344d542f8ae',1,'ios']]], - ['failbit_117',['failbit',['../classios__base.html#a36157154001bcce17827db6786e35efd',1,'ios_base']]], - ['fat12_5fsupport_118',['FAT12_SUPPORT',['../_sd_fat_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'SdFatConfig.h']]], - ['fat16_119',['fat16',['../unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887',1,'cache_t']]], - ['fat32_120',['fat32',['../unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83',1,'cache_t']]], - ['fat_5ftype_5fexfat_121',['FAT_TYPE_EXFAT',['../_ex_fat_partition_8h.html#ad74089b317bc77bd1e8cbb56fef8046a',1,'ExFatPartition.h']]], - ['fat_5ftype_5ffat12_122',['FAT_TYPE_FAT12',['../_fat_partition_8h.html#a2914ab2ce1d4cff984ad93b922e99d50',1,'FatPartition.h']]], - ['fat_5ftype_5ffat16_123',['FAT_TYPE_FAT16',['../_fat_partition_8h.html#a586e7b4151f14bd56b78a836855c0f55',1,'FatPartition.h']]], - ['fat_5ftype_5ffat32_124',['FAT_TYPE_FAT32',['../_fat_partition_8h.html#a63da6e74b3bce481580263cebb591d5e',1,'FatPartition.h']]], - ['fatcache_125',['FatCache',['../class_fat_cache.html',1,'FatCache'],['../class_fat_partition.html#a1e97a7aed860b898c403cb29455b3fe7',1,'FatPartition::FatCache()']]], - ['fatcount_126',['fatCount',['../class_fat_partition.html#a56b37c3230818b9ae8e0a25c01a370a3',1,'FatPartition']]], - ['fatfile_127',['FatFile',['../class_fat_file.html',1,'FatFile'],['../class_fat_partition.html#a18fb15a715ea85037ab802286853103e',1,'FatPartition::FatFile()'],['../class_fat_file.html#a7b591c9b92165fa8e4eae8c30c30e533',1,'FatFile::FatFile()'],['../class_fat_file.html#a38f9a296138648d6135cbbbf41ef6b92',1,'FatFile::FatFile(const char *path, oflag_t oflag)']]], - ['fatfile_2eh_128',['FatFile.h',['../_fat_file_8h.html',1,'']]], - ['fatformatter_129',['FatFormatter',['../class_fat_formatter.html',1,'']]], - ['fatlength_130',['fatLength',['../class_ex_fat_partition.html#a12e390567f2217f804af9b1ea397780c',1,'ExFatPartition']]], - ['fatlibconfig_2eh_131',['FatLibConfig.h',['../_fat_lib_config_8h.html',1,'']]], - ['fatpartition_132',['FatPartition',['../class_fat_partition.html',1,'FatPartition'],['../class_fat_partition.html#a2c94db084d89355da7695d82ee612f72',1,'FatPartition::FatPartition()']]], - ['fatpartition_2eh_133',['FatPartition.h',['../_fat_partition_8h.html',1,'']]], - ['fatpos_5ft_134',['FatPos_t',['../struct_fat_pos__t.html',1,'']]], - ['fatstartsector_135',['fatStartSector',['../class_ex_fat_partition.html#ab63f9a3aacc0aeccae138a77cccbbb5b',1,'ExFatPartition::fatStartSector()'],['../class_fat_partition.html#a6a1ce7d707cf15bea08b63216413e055',1,'FatPartition::fatStartSector()'],['../class_fs_volume.html#ac5f4de35d2bfdd65bc38c2562b147a26',1,'FsVolume::fatStartSector()']]], - ['fattype_136',['fatType',['../class_ex_fat_partition.html#a3e63d87b4ef985f92c1793d269274f44',1,'ExFatPartition::fatType()'],['../class_fat_partition.html#ad45c276232d7093b82f1075e8c488bac',1,'FatPartition::fatType()'],['../class_fs_volume.html#ad26b5c171ca4c6e953cfbdbfe0b9a988',1,'FsVolume::fatType()']]], - ['fatvolume_137',['FatVolume',['../class_fat_volume.html',1,'FatVolume'],['../class_fat_file.html#a6ca3f436167f187097347a20ea221555',1,'FatFile::FatVolume()']]], - ['fatvolume_2eh_138',['FatVolume.h',['../_fat_volume_8h.html',1,'']]], - ['fclose_139',['fclose',['../class_stdio_stream.html#a4ddd4658d49182013d2fa2a181e96c5a',1,'StdioStream']]], - ['feof_140',['feof',['../class_stdio_stream.html#acb38c3211feedbf2206eb1d9a3a9d24f',1,'StdioStream']]], - ['ferror_141',['ferror',['../class_stdio_stream.html#afd64cec6440b923660b444f6d5f0586e',1,'StdioStream']]], - ['fflush_142',['fflush',['../class_stdio_stream.html#a7ce32ec7ea3f2fd8ea42b9633890f1c0',1,'StdioStream']]], - ['fgetc_143',['fgetc',['../class_stdio_stream.html#a160bd2828cb7e7370cffe1046eff8899',1,'StdioStream']]], - ['fgetpos_144',['fgetpos',['../class_ex_fat_file.html#a8614bcbf04b7bbfc70fe36d2fa7f70c1',1,'ExFatFile::fgetpos()'],['../class_fat_file.html#a33e0b0a8a342047f29ab8e8aae9cae14',1,'FatFile::fgetpos()'],['../class_fs_base_file.html#adda345ec539688e40e279a4e3020d208',1,'FsBaseFile::fgetpos()']]], - ['fgets_145',['fgets',['../class_ex_fat_file.html#abc69c9dfc8fdb4ebf9db3bc37c879dc6',1,'ExFatFile::fgets()'],['../class_fat_file.html#a9e05a51767f7c8f70c6f337eecbdca03',1,'FatFile::fgets()'],['../class_stdio_stream.html#aa240c1021a1aad1cc57f63a483541dc7',1,'StdioStream::fgets()'],['../class_fs_base_file.html#ab6b6b97a6382a763d6de882252412727',1,'FsBaseFile::fgets()']]], - ['file_146',['File',['../_sd_fat_8h.html#aa0ffd23c3e43af0bcbd2fb4d62f3286d',1,'SdFat.h']]], - ['file32_147',['File32',['../class_file32.html',1,'']]], - ['filesize_148',['fileSize',['../class_ex_fat_file.html#af2c08909b62b01f3edc4ee0c51ea7435',1,'ExFatFile::fileSize()'],['../class_fat_file.html#a874940574b9c99e763526465adf8dc28',1,'FatFile::fileSize()'],['../class_fs_base_file.html#aef21ae3af496d80f214918bb40b5b3ba',1,'FsBaseFile::fileSize()']]], - ['fill_149',['fill',['../classios__base.html#ade5bd46462e075999c3a5c2cff2015f1',1,'ios_base::fill()'],['../classios__base.html#aa5683f9bdf295311bd5a6d3cdc2fedd5',1,'ios_base::fill(char c)']]], - ['fillstack_150',['FillStack',['../_free_stack_8h.html#a534f4eab46987296c6951fc35a2f9a7f',1,'FreeStack.cpp']]], - ['firstblock_151',['firstBlock',['../class_fat_file.html#a5ac8a604863d18840f4a93c5c788b7c8',1,'FatFile']]], - ['firstsector_152',['firstSector',['../class_ex_fat_file.html#a883a36174d7753abbbdb7547e44b1739',1,'ExFatFile::firstSector()'],['../class_fat_file.html#af3108df387f30ca3d367dd390a04daaa',1,'FatFile::firstSector()'],['../class_fs_base_file.html#ad952b756b5bb3861472140fd5f733fe8',1,'FsBaseFile::firstSector()']]], - ['flags_153',['flags',['../structfname__t.html#a39c69edff13165c6e03b308104e7286d',1,'fname_t::flags()'],['../classios__base.html#a2a73a30a8b157cc1cc92bb55b0a62e4a',1,'ios_base::flags() const'],['../classios__base.html#ae67e900dc12e4c7cbc0741ad1c70d6c2',1,'ios_base::flags(fmtflags fl)']]], - ['flush_154',['flush',['../class_buffered_print.html#a3fcb4970129a6fbfbd125ed8f2869d9b',1,'BufferedPrint::flush()'],['../class_minimum_serial.html#a872f0ff70f0e256352004f83d13fff28',1,'MinimumSerial::flush()'],['../class_ex_fat_file.html#ab16f38103a13394bffd8aa5be830c4fe',1,'ExFatFile::flush()'],['../class_fat_file.html#a166b5ff04754cc925f2aee71bf92f800',1,'FatFile::flush()'],['../classostream.html#af6be1f30d824f5a65d27d5b5d20b8c6c',1,'ostream::flush()'],['../class_stream_file.html#a32f813e659414892a58aa5157fe14f82',1,'StreamFile::flush()'],['../class_fs_base_file.html#adba2e8ad2ec46ae0f7b8f93b33a2b262',1,'FsBaseFile::flush()'],['../iostream_8h.html#a2f6f5344fca38fd4fe7b6231fd992a0d',1,'flush(): iostream.h']]], - ['fmtflags_155',['fmtflags',['../classios__base.html#ac9a54e52cef4f01ac0afd8ae896a3413',1,'ios_base']]], - ['fname_5fflag_5flc_5fbase_156',['FNAME_FLAG_LC_BASE',['../_fat_file_8h.html#a79e43960e1b4eecf274f5faea9c3168c',1,'FatFile.h']]], - ['fname_5fflag_5flc_5fext_157',['FNAME_FLAG_LC_EXT',['../_fat_file_8h.html#a135b7572768b09661aa38afaceec7296',1,'FatFile.h']]], - ['fname_5fflag_5flost_5fchars_158',['FNAME_FLAG_LOST_CHARS',['../_fat_file_8h.html#acd45286b7dfc5ba68be18c8c3a9d298d',1,'FatFile.h']]], - ['fname_5fflag_5fmixed_5fcase_159',['FNAME_FLAG_MIXED_CASE',['../_fat_file_8h.html#a63994c21f3b723a55247f063a1b01c9c',1,'FatFile.h']]], - ['fname_5fflag_5fneed_5flfn_160',['FNAME_FLAG_NEED_LFN',['../_fat_file_8h.html#a1a041207a19d2fd9a1e2739343ccb29b',1,'FatFile.h']]], - ['fname_5ft_161',['fname_t',['../structfname__t.html',1,'']]], - ['fopen_162',['fopen',['../class_stdio_stream.html#a4ffc37225fb6deed98905aa71d1f9c4b',1,'StdioStream']]], - ['format_163',['format',['../class_sd_fat32.html#a303f00204805011d12e70c59ad24e42d',1,'SdFat32::format()'],['../class_sd_ex_fat.html#a6120786dcb0e7628301899f31af39e6b',1,'SdExFat::format()'],['../class_ex_fat_formatter.html#afe8c02e629e61bb4d83dee9076ef6d70',1,'ExFatFormatter::format()'],['../class_fat_formatter.html#a95c64e724b8b67eec1a476f21784540e',1,'FatFormatter::format()']]], - ['fprintf_164',['fprintf',['../_print_templates_8h.html#a3899b48e0eb6938ff58ca3accd53402a',1,'PrintTemplates.h']]], - ['fputc_165',['fputc',['../class_stdio_stream.html#a9f23cfa6b112a5da6ae08340af23c57b',1,'StdioStream']]], - ['fputs_166',['fputs',['../class_stdio_stream.html#a6adea52f55ef7d97cdb54e9e11fc2daa',1,'StdioStream']]], - ['fread_167',['fread',['../class_stdio_stream.html#a2d363b02abcef82b25ff025d50375bce',1,'StdioStream']]], - ['freeclustercount_168',['freeClusterCount',['../class_ex_fat_partition.html#ae6d4414d6440b79b6314cd1edbaa35b0',1,'ExFatPartition::freeClusterCount()'],['../class_fat_partition.html#ac9689f1e11f59acc5f1b21ed9bb71174',1,'FatPartition::freeClusterCount()'],['../class_fs_volume.html#af6dbe47dfe11adf752df95c351b10fdd',1,'FsVolume::freeClusterCount()']]], - ['freestack_169',['FreeStack',['../_free_stack_8h.html#a86da1fd0aa8dcc6a981803373bc8839d',1,'FreeStack.h']]], - ['freestack_2eh_170',['FreeStack.h',['../_free_stack_8h.html',1,'']]], - ['fs_5fdefault_5fdate_171',['FS_DEFAULT_DATE',['../_sd_fat_config_8h.html#af9e38fab77717460deffabaec90ffc9f',1,'SdFatConfig.h']]], - ['fs_5fdefault_5ftime_172',['FS_DEFAULT_TIME',['../_sd_fat_config_8h.html#aa881707cd0526be3a1d2e3f214db2d5e',1,'SdFatConfig.h']]], - ['fsbasefile_173',['FsBaseFile',['../class_fs_base_file.html',1,'FsBaseFile'],['../class_fs_volume.html#a1655636bca63e3ac7e7ab6a8d112a2f0',1,'FsVolume::FsBaseFile()'],['../class_fs_base_file.html#a6ddaf9a50682a50bacbddf541c35b017',1,'FsBaseFile::FsBaseFile()']]], - ['fscache_174',['FsCache',['../class_fs_cache.html',1,'']]], - ['fsdatetime_175',['FsDateTime',['../namespace_fs_date_time.html',1,'']]], - ['fseek_176',['fseek',['../class_stdio_stream.html#a71584fd5c5cda3c31ce6cdbcc56f104d',1,'StdioStream']]], - ['fsetpos_177',['fsetpos',['../class_ex_fat_file.html#aea1e4d0c0981081774dc3c7cd3c55264',1,'ExFatFile::fsetpos()'],['../class_fat_file.html#ac042c43d41ecfff4e101b88f3f82086e',1,'FatFile::fsetpos()'],['../class_fs_base_file.html#a4bc085bc1ef0569f4ca7f14fff3e5678',1,'FsBaseFile::fsetpos()']]], - ['fsfile_178',['FsFile',['../class_fs_file.html',1,'']]], - ['fsfile_2eh_179',['FsFile.h',['../_fs_file_8h.html',1,'']]], - ['fslib_2eh_180',['FsLib.h',['../_fs_lib_8h.html',1,'']]], - ['fstream_181',['fstream',['../classfstream.html',1,'fstream'],['../classfstream.html#aed23877c52f828cab8de7a23603b3b6c',1,'fstream::fstream()']]], - ['fstream_2eh_182',['fstream.h',['../fstream_8h.html',1,'']]], - ['fsvolume_183',['FsVolume',['../class_fs_volume.html',1,'']]], - ['fsvolume_2eh_184',['FsVolume.h',['../_fs_volume_8h.html',1,'']]], - ['ftell_185',['ftell',['../class_stdio_stream.html#a809639fc5fb4fa5b6789dc121659f386',1,'StdioStream']]], - ['fwrite_186',['fwrite',['../class_stdio_stream.html#ad79465afb52579cbc801f4585c3f9c25',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.html deleted file mode 100644 index ee6d2e4a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.js deleted file mode 100644 index c30368bc..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_7.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['gcount_187',['gcount',['../classistream.html#ad0a3db5199ca44b191a9675f2dd3a098',1,'istream']]], - ['get_188',['get',['../class_fs_cache.html#a2483025514ecc0f69cabffcbeb052678',1,'FsCache::get()'],['../classistream.html#a36573c9b7fc522e6c85a73221019fd11',1,'istream::get()'],['../classistream.html#a9c7313d6f21f1f7ac9b0e759e74b4db2',1,'istream::get(char &ch)'],['../classistream.html#a2c963fd04375e5faa1b7a4362986269a',1,'istream::get(char *str, streamsize n, char delim='\n')']]], - ['getaccessdate_189',['getAccessDate',['../class_fat_file.html#a5d085c695e920b658a1505e480bc467f',1,'FatFile']]], - ['getaccessdatetime_190',['getAccessDateTime',['../class_ex_fat_file.html#a0d935161fde4a3f8d2fcd13140073adc',1,'ExFatFile::getAccessDateTime()'],['../class_fat_file.html#af70c42baeb45e0d7047ae63de568d0d2',1,'FatFile::getAccessDateTime()'],['../class_fs_base_file.html#add0901e13594348e1919a9df2fbad985',1,'FsBaseFile::getAccessDateTime()']]], - ['getc_191',['getc',['../class_stdio_stream.html#a28ba31e7b526607744bfa41844ffce31',1,'StdioStream']]], - ['getcreatedatetime_192',['getCreateDateTime',['../class_ex_fat_file.html#a703397b32592631c189a23047cc44c09',1,'ExFatFile::getCreateDateTime()'],['../class_fat_file.html#a94d484b5198032a9e00194e72182cc57',1,'FatFile::getCreateDateTime()'],['../class_fs_base_file.html#a5101edd57ee4ac0cd771b97cd089e4be',1,'FsBaseFile::getCreateDateTime()']]], - ['geterror_193',['getError',['../class_ex_fat_file.html#ac697224450ca216c60585d25f5f6e310',1,'ExFatFile::getError()'],['../class_fat_file.html#ad0dbbd083180f44c7a3ce7124d4ce19c',1,'FatFile::getError()'],['../class_fs_base_file.html#a7553d4aeb68fe8d3f1b61a16c8005e34',1,'FsBaseFile::getError()']]], - ['getline_194',['getline',['../classistream.html#a7ea6a5edd6b44a6e1ed297fb278b5d52',1,'istream']]], - ['getmodifydatetime_195',['getModifyDateTime',['../class_ex_fat_file.html#ac0c15cff235937cdfd7860d5fb441728',1,'ExFatFile::getModifyDateTime()'],['../class_fat_file.html#a28537b48ed2cb886c5f22984d07492b7',1,'FatFile::getModifyDateTime()'],['../class_fs_base_file.html#aee20c403ceed3b036dae70838c9f1bbf',1,'FsBaseFile::getModifyDateTime()']]], - ['getname_196',['getName',['../class_ex_fat_file.html#aba93e2c18be9fa4df7e067b7d6ac5906',1,'ExFatFile::getName()'],['../class_fat_file.html#aafa565e286440aab612cdb430fc01da5',1,'FatFile::getName()'],['../class_fs_base_file.html#ad2099dbe6bb8f61e1bf933d8e97b2d86',1,'FsBaseFile::getName()']]], - ['getsfn_197',['getSFN',['../class_fat_file.html#aba30e92a66f8e0d2f815c85662772a58',1,'FatFile']]], - ['getwriteerror_198',['getWriteError',['../class_ex_fat_file.html#a01da9896a59671a61f90dd20c3ac5d07',1,'ExFatFile::getWriteError()'],['../class_fat_file.html#a8062c0d3a118e8d77d0310418703d5f5',1,'FatFile::getWriteError()'],['../class_fs_base_file.html#ab5525bef93bab61569225374d475f2cb',1,'FsBaseFile::getWriteError()']]], - ['good_199',['good',['../classios.html#a0192d754476f243d7f13dc16e851c7cc',1,'ios']]], - ['goodbit_200',['goodbit',['../classios__base.html#a07a00996a6e525b88bdfe7935d5ead05',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.html deleted file mode 100644 index 7829aa40..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.js deleted file mode 100644 index b92aa9f7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['halt_201',['halt',['../class_sys_call.html#a9b1ef8900e97f572ca561760b4dd4191',1,'SysCall']]], - ['has_5fsdio_5fclass_202',['HAS_SDIO_CLASS',['../_sd_fat_config_8h.html#a356309f8e0bad852d7a07ad0b9326a27',1,'SdFatConfig.h']]], - ['has_5funused_5fstack_203',['HAS_UNUSED_STACK',['../_free_stack_8h.html#acd5a8222ee7af79faab74b1df412d600',1,'FreeStack.h']]], - ['hex_204',['hex',['../classios__base.html#a3608e51eb0a80ea94ddadd5b713a3750',1,'ios_base::hex()'],['../ios_8h.html#ace2036d970905192360d622140bfe336',1,'hex(): ios.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.html deleted file mode 100644 index e4242c71..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.js deleted file mode 100644 index 417ad36e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_9.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['ibufstream_205',['ibufstream',['../classibufstream.html',1,'ibufstream'],['../classibufstream.html#afe28f27d24a62a21428b60fe8834dd05',1,'ibufstream::ibufstream()'],['../classibufstream.html#a819561105ef7dc3828e0cfedfed708d8',1,'ibufstream::ibufstream(const char *str)']]], - ['ifstream_206',['ifstream',['../classifstream.html',1,'ifstream'],['../classifstream.html#a11f4bfaa5c37cfcf8878c367fd861a88',1,'ifstream::ifstream()']]], - ['ignore_207',['ignore',['../classistream.html#a12597b03d86b66047a5581bbd26eb032',1,'istream']]], - ['in_208',['in',['../classios__base.html#ae5432e3c269064480652c4602f5f74ad',1,'ios_base']]], - ['include_5fsdios_209',['INCLUDE_SDIOS',['../_sd_fat_config_8h.html#a7cc6c9647297d65f8e823de70740630b',1,'SdFatConfig.h']]], - ['init_210',['init',['../class_fs_cache.html#a2e56c9443880e3db0b68cc50217e8abe',1,'FsCache::init()'],['../class_ex_fat_partition.html#adb1d277492dccba09031e2064f4fa66f',1,'ExFatPartition::init()'],['../class_fat_cache.html#a30790e03daad69b62ec6d7d643975454',1,'FatCache::init()'],['../class_fat_partition.html#ab827224f30eec57255d21cae589911ef',1,'FatPartition::init()'],['../classibufstream.html#a1d7bae17d9d2c79218085251946f322a',1,'ibufstream::init()'],['../classobufstream.html#a8f75dbadab2fed7770d01a2cc2628258',1,'obufstream::init()']]], - ['initerrorhalt_211',['initErrorHalt',['../class_sd_base.html#acb8180faf22cf72d97ec81330a700b05',1,'SdBase::initErrorHalt(print_t *pr)'],['../class_sd_base.html#aef6fd47c67b9b8498c1398e58422f169',1,'SdBase::initErrorHalt(print_t *pr, const char *msg)'],['../class_sd_base.html#a8a249b866a4b24ac0a0753f966aab299',1,'SdBase::initErrorHalt(Print *pr, const __FlashStringHelper *msg)'],['../class_sd_base.html#a5901169e4d6ae992b348df518da68a76',1,'SdBase::initErrorHalt()'],['../class_sd_base.html#a9b6c279ebcd8fa95d6b409d099986931',1,'SdBase::initErrorHalt(const char *msg)'],['../class_sd_base.html#a557ac64877bdd851cd27bf0a00f380c2',1,'SdBase::initErrorHalt(const __FlashStringHelper *msg)']]], - ['initerrorprint_212',['initErrorPrint',['../class_sd_base.html#a918474d623107f64b7ab9ca88d6fe46f',1,'SdBase::initErrorPrint(Print *pr)'],['../class_sd_base.html#abe8d75ba435b4decd6b2079b4272d0e5',1,'SdBase::initErrorPrint()']]], - ['internal_213',['internal',['../classios__base.html#afc720b7f6f461ec8e9cf5505059e5d7c',1,'ios_base::internal()'],['../ios_8h.html#a8dd76c1ce8fced364a98428ca1eea7a6',1,'internal(): ios.h']]], - ['invalidate_214',['invalidate',['../class_fs_cache.html#a963ea866ca2a9c4f63afd57cf287733d',1,'FsCache::invalidate()'],['../class_fat_cache.html#a70071a128d647b49b523dbb2f5f944a5',1,'FatCache::invalidate()']]], - ['ios_215',['ios',['../classios.html',1,'ios'],['../classios.html#adc5dbd7b69da79493ebc84aa1e681aaa',1,'ios::ios()']]], - ['ios_2eh_216',['ios.h',['../ios_8h.html',1,'']]], - ['ios_5fbase_217',['ios_base',['../classios__base.html',1,'']]], - ['iostate_218',['iostate',['../classios__base.html#aef19291eeae0f072ac42c6ba1fe3033c',1,'ios_base']]], - ['iostream_219',['iostream',['../classiostream.html',1,'']]], - ['iostream_2eh_220',['iostream.h',['../iostream_8h.html',1,'']]], - ['is_5fopen_221',['is_open',['../classfstream.html#ae4a71c6f3da2f168ec222739d796fc8b',1,'fstream::is_open()'],['../classifstream.html#aaa16c6422ea371995d02159f2e6707b2',1,'ifstream::is_open()'],['../classofstream.html#a9c97eb2eb6e35ae87cf7f7453a67e70a',1,'ofstream::is_open()']]], - ['isbusy_222',['isBusy',['../class_sd_card_interface.html#a26c31b07a866469098d702fed54f51b2',1,'SdCardInterface::isBusy()'],['../class_sdio_card.html#a560bdfc96932d073c2b0610600560f78',1,'SdioCard::isBusy()'],['../class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328',1,'SdSpiCard::isBusy()']]], - ['iscontiguous_223',['isContiguous',['../struct_dir_pos__t.html#a7bea047144551b24c5aa301dc8dd44d7',1,'DirPos_t::isContiguous()'],['../class_ex_fat_file.html#a7a167102bd47b7cf91167b69f8cc57d1',1,'ExFatFile::isContiguous()'],['../class_fat_file.html#a16478eafdb731e867fb627d19091c3ce',1,'FatFile::isContiguous()'],['../class_fs_base_file.html#a7566bb4c71b5883e7bc15b45a1ee28a2',1,'FsBaseFile::isContiguous()']]], - ['isdigit_224',['isDigit',['../_print_templates_8h.html#ab82ae47ddc52e7a1a9400cc3c42a9de7',1,'PrintTemplates.h']]], - ['isdir_225',['isDir',['../class_ex_fat_file.html#ad0a3687bd95bed5b216651335e66b500',1,'ExFatFile::isDir()'],['../class_fat_file.html#a933360b20b496421b2bd9ee7a95563a6',1,'FatFile::isDir()'],['../class_fs_base_file.html#ae93db43779d54734855005116244f6aa',1,'FsBaseFile::isDir()']]], - ['isdirectory_226',['isDirectory',['../class_stream_file.html#a586ad44055eca4c1b2b457299b829d44',1,'StreamFile::isDirectory()'],['../class_fs_base_file.html#aa564175ba0065803013338d89510ea81',1,'FsBaseFile::isDirectory()']]], - ['isdirseparator_227',['isDirSeparator',['../_ex_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'isDirSeparator(): ExFatFile.h'],['../_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'isDirSeparator(): FatFile.h']]], - ['isdirty_228',['isDirty',['../class_fs_cache.html#a22f4284aefd18f569d962d37f4a5db70',1,'FsCache::isDirty()'],['../class_fat_cache.html#ae50287d95bd78558db1e4aa97d7b2c06',1,'FatCache::isDirty()']]], - ['isfile_229',['isFile',['../class_ex_fat_file.html#af601285f95db8398c140b3927cf9111c',1,'ExFatFile::isFile()'],['../class_fat_file.html#acc5a87da1a5c8cb9758bfeaa7ae47b57',1,'FatFile::isFile()']]], - ['ishidden_230',['isHidden',['../class_ex_fat_file.html#ac926285fa4321ebee28fa91beb511eae',1,'ExFatFile::isHidden()'],['../class_fat_file.html#ae216b4a2bc44a9cfb88478fa051a1fd8',1,'FatFile::isHidden()'],['../class_fs_base_file.html#a00e76b229cbb5098e1eb88e64a41dbfb',1,'FsBaseFile::isHidden()']]], - ['islfn_231',['isLFN',['../class_fat_file.html#af8f456ab790e818bfdd225cf6ffd40f3',1,'FatFile']]], - ['isopen_232',['isOpen',['../class_ex_fat_file.html#a804c34bbe3ebefe2b6c1d77ff8d49a35',1,'ExFatFile::isOpen()'],['../class_fat_file.html#a8b8a2850c086d3ce79bee64a23fbf7a6',1,'FatFile::isOpen()'],['../class_fs_base_file.html#a707007ff19ac5e4eb94cd0b26c542e0e',1,'FsBaseFile::isOpen()']]], - ['isreadable_233',['isReadable',['../class_ex_fat_file.html#a9ca137dfba2c7772910f4d2b3fdd9411',1,'ExFatFile::isReadable()'],['../class_fat_file.html#ae60b4cedb69c88ac641813d5edfa6b4a',1,'FatFile::isReadable()']]], - ['isreadonly_234',['isReadOnly',['../class_ex_fat_file.html#a14d160bfbfb39717746b93fa2eda5739',1,'ExFatFile::isReadOnly()'],['../class_fat_file.html#abaf639ec8f86f34aeb7e6b3615526f0b',1,'FatFile::isReadOnly()']]], - ['isroot_235',['isRoot',['../class_ex_fat_file.html#ad9f8e7afcf749ebcaaf055bd569dc7da',1,'ExFatFile::isRoot()'],['../class_fat_file.html#a03421a0c28649332f55e6ca06d3aeedb',1,'FatFile::isRoot()']]], - ['isroot32_236',['isRoot32',['../class_fat_file.html#a8fda8004720ec4cc55710869dbb52e35',1,'FatFile']]], - ['isrootfixed_237',['isRootFixed',['../class_fat_file.html#a0cc65089f7ce6c1ff92edbf0bff59dee',1,'FatFile']]], - ['issubdir_238',['isSubDir',['../class_ex_fat_file.html#ad7e02a1db8fb5a90288bb4679e9ddcb9',1,'ExFatFile::isSubDir()'],['../class_fat_file.html#abfd02c5d26f7d4f8739a8610116a6660',1,'FatFile::isSubDir()'],['../class_fs_base_file.html#a3140f64c85218c4b2f12f711483cd4c6',1,'FsBaseFile::isSubDir()']]], - ['issystem_239',['isSystem',['../class_fat_file.html#a48087bdeb6b94fc27e0f74c3d90af5a9',1,'FatFile']]], - ['istream_240',['istream',['../classistream.html',1,'']]], - ['istream_2eh_241',['istream.h',['../istream_8h.html',1,'']]], - ['iswritable_242',['isWritable',['../class_ex_fat_file.html#a04d1c43e80743f8c1a51b64062ce16dd',1,'ExFatFile::isWritable()'],['../class_fat_file.html#aa484d5b2b147c5f3fe0e26b6eaf11ffc',1,'FatFile::isWritable()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.html deleted file mode 100644 index 47a4a78d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.js deleted file mode 100644 index 31f77a2d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['khzsdclk_243',['kHzSdClk',['../class_sdio_card.html#a3532a1a4b8a43a51ed9b5853186203cb',1,'SdioCard']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.html deleted file mode 100644 index 1320a43f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.js deleted file mode 100644 index 631a9fe0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_b.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['left_244',['left',['../classios__base.html#ad364df9af2cfde1f40bd8e10c62bb215',1,'ios_base::left()'],['../ios_8h.html#a24a80a73f0a0d2d72d1cb74f49ff4759',1,'left(): ios.h']]], - ['legal83char_245',['legal83Char',['../class_fat_file.html#a94df8090f16e9666cdc53ca20f6aff90',1,'FatFile']]], - ['len_246',['len',['../struct_ex_name__t.html#a4c1c36c08b96a553854ac16c8309cd93',1,'ExName_t::len()'],['../structfname__t.html#a471184cc4c2671526d7d6fb80b2fe20c',1,'fname_t::len()']]], - ['length_247',['length',['../classobufstream.html#ac650708e968b0c0545a3badeb809cf15',1,'obufstream']]], - ['lfn_248',['lfn',['../struct_ex_name__t.html#afcdcceaf5309a7b6e21ddbf15e5b83cb',1,'ExName_t::lfn()'],['../structfname__t.html#a76ffd7abd5b7d3acf90b329c905770fd',1,'fname_t::lfn()']]], - ['lfnlegalchar_249',['lfnLegalChar',['../_ex_fat_file_8h.html#acfe36e138012e39e1d66891a4e070871',1,'ExFatFile.h']]], - ['ls_250',['ls',['../class_ex_fat_file.html#aa0e074c891f3db5ea2ebd491667b03a6',1,'ExFatFile::ls(print_t *pr)'],['../class_ex_fat_file.html#a09f8beb55f939874e93c1df6c8a046d4',1,'ExFatFile::ls(print_t *pr, uint8_t flags, uint8_t indent=0)'],['../class_ex_fat_volume.html#abe1e8cad0a5922984b28edfd987bc856',1,'ExFatVolume::ls(print_t *pr, uint8_t flags=0)'],['../class_ex_fat_volume.html#aad2de66514174edb37b0fe7e44b33abf',1,'ExFatVolume::ls(print_t *pr, const ExChar_t *path, uint8_t flags)'],['../class_ex_fat_volume.html#abe74c248cfe9d57d9a10f651203df9dc',1,'ExFatVolume::ls()'],['../class_ex_fat_volume.html#ae883a72fbfe40f9a6fe6c6bf349d5c1f',1,'ExFatVolume::ls(uint8_t flags)'],['../class_ex_fat_volume.html#ad3a1aa9f64361b81d0cfe5b9f5de3891',1,'ExFatVolume::ls(const ExChar_t *path, uint8_t flags=0)'],['../class_fat_file.html#a60ab9d16bcc778150a364c26de467de1',1,'FatFile::ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)'],['../class_fat_file.html#a6a11f3307da6232b5f2d11812832d93a',1,'FatFile::ls(uint8_t flags=0)'],['../class_fat_volume.html#ae40964f357cfff4208812344a0e6f26f',1,'FatVolume::ls(print_t *pr, uint8_t flags=0)'],['../class_fat_volume.html#ac5fc83cac7fd3af0b140a7986b9472f8',1,'FatVolume::ls(print_t *pr, const char *path, uint8_t flags)'],['../class_fat_volume.html#ad455ad05551329865c659cc4676f2d18',1,'FatVolume::ls(uint8_t flags=0)'],['../class_fat_volume.html#a455ad7b2a5b6b31551dca08087a3c404',1,'FatVolume::ls(const char *path, uint8_t flags=0)'],['../class_fs_base_file.html#aecbc336b952eebebfdfcf917863183ee',1,'FsBaseFile::ls(print_t *pr)'],['../class_fs_base_file.html#a6a254df9866966f7f97478e916fe6a7f',1,'FsBaseFile::ls(print_t *pr, uint8_t flags)'],['../class_fs_volume.html#a679105032aa3e5c4585c63f8e7acfc02',1,'FsVolume::ls(print_t *pr)'],['../class_fs_volume.html#a5ce82e5970856d1e8d549c512ec8a253',1,'FsVolume::ls(print_t *pr, uint8_t flags)'],['../class_fs_volume.html#ab429316ed9e57a52ecfb938aca7dff6c',1,'FsVolume::ls(print_t *pr, const char *path, uint8_t flags)'],['../class_fs_volume.html#aac4bf1f75fd37ba2e5a145569ab0790b',1,'FsVolume::ls()'],['../class_fs_volume.html#aed1c1e5e351b442ad8c0030bc63c655f',1,'FsVolume::ls(uint8_t flags)'],['../class_fs_volume.html#a212afe6a3393930b5d9ec6be86aabcd2',1,'FsVolume::ls(const char *path, uint8_t flags=0)']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.html deleted file mode 100644 index 32a3a1b8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.js deleted file mode 100644 index af456561..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_c.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['maintain_5ffree_5fcluster_5fcount_251',['MAINTAIN_FREE_CLUSTER_COUNT',['../_sd_fat_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'SdFatConfig.h']]], - ['maxsck_252',['maxSck',['../class_sd_spi_config.html#ac1afd080e2baa2b6eb81331ed5180f37',1,'SdSpiConfig']]], - ['mdt_5fmonth_253',['mdt_month',['../struct_c_i_d.html#a60e35d4b824da135dc2a9197c5544929',1,'CID']]], - ['mdt_5fyear_5fhigh_254',['mdt_year_high',['../struct_c_i_d.html#a6b16c5e74b48af39036aa831fca4cb46',1,'CID']]], - ['mdt_5fyear_5flow_255',['mdt_year_low',['../struct_c_i_d.html#afe44a84b416bea68dea9bad27c172c3d',1,'CID']]], - ['mid_256',['mid',['../struct_c_i_d.html#aa77436aa64a8a0e80573ade765039d2f',1,'CID']]], - ['minimumserial_257',['MinimumSerial',['../class_minimum_serial.html',1,'']]], - ['minimumserial_2eh_258',['MinimumSerial.h',['../_minimum_serial_8h.html',1,'']]], - ['mkdir_259',['mkdir',['../class_ex_fat_file.html#a3a393624d52854e74bf385c9e513a86d',1,'ExFatFile::mkdir()'],['../class_ex_fat_volume.html#a407b93b16554b26ff52f7b762a9217aa',1,'ExFatVolume::mkdir(const ExChar_t *path, bool pFlag=true)'],['../class_ex_fat_volume.html#a0f4cf7e2853225380574724314327597',1,'ExFatVolume::mkdir(const String &path, bool pFlag=true)'],['../class_fat_file.html#abab5b9f72cc796388dd4eed01d13d90d',1,'FatFile::mkdir()'],['../class_fat_volume.html#ad80bccf8f24ff001a7b9277effc2cc52',1,'FatVolume::mkdir(const char *path, bool pFlag=true)'],['../class_fat_volume.html#ab423ec4f7e5b58a6d454f328f61fd864',1,'FatVolume::mkdir(const String &path, bool pFlag=true)'],['../class_fs_base_file.html#a8b7aa7f2c63882e483336dfe12ef6800',1,'FsBaseFile::mkdir()'],['../class_fs_volume.html#a9d38c297dccceeb5f48dceb17232368d',1,'FsVolume::mkdir(const char *path, bool pFlag=true)'],['../class_fs_volume.html#a5d07b87552368dc66e08aab2e7be14af',1,'FsVolume::mkdir(const String &path, bool pFlag=true)']]], - ['mprintf_260',['mprintf',['../_print_templates_8h.html#afceda1e76dbfc91ef2d06925a10eaea9',1,'mprintf(T *file, const char *fmt,...): PrintTemplates.h'],['../_print_templates_8h.html#a5893e928fd47234a7a69049f9e769359',1,'mprintf(F *file, const __FlashStringHelper *ifsh,...): PrintTemplates.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.html deleted file mode 100644 index a3860966..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.js deleted file mode 100644 index f66602f0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_d.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['name_261',['name',['../class_stream_file.html#a8792c863080576eb65ce6cacbe1dd931',1,'StreamFile::name()'],['../class_fs_base_file.html#a6ccd545042d98841246edfbf2f482677',1,'FsBaseFile::name()']]], - ['newcard_262',['newCard',['../class_sd_card_factory.html#a8337ec1a741c25ed9fb9fd730d68b792',1,'SdCardFactory::newCard(SdSpiConfig config)'],['../class_sd_card_factory.html#a7e5bcb01e8eed2df25e60c25fe47d916',1,'SdCardFactory::newCard(SdioConfig config)']]], - ['noboolalpha_263',['noboolalpha',['../ios_8h.html#aa6a1ec04992fc8090ca775a39678be01',1,'ios.h']]], - ['noshowbase_264',['noshowbase',['../ios_8h.html#ab861ff5f863de0ae002b65390dde36b0',1,'ios.h']]], - ['noshowpoint_265',['noshowpoint',['../ios_8h.html#ad85399d1b75151cf9e2436f2a1ccfc13',1,'ios.h']]], - ['noshowpos_266',['noshowpos',['../ios_8h.html#a985805b22ffb4ce2f5298168662bd2d7',1,'ios.h']]], - ['noskipws_267',['noskipws',['../ios_8h.html#a773b847300db776fde08a0b562792131',1,'ios.h']]], - ['nouppercase_268',['nouppercase',['../ios_8h.html#a24b96fb317e056b34aa84c4bb965a79a',1,'ios.h']]], - ['null_269',['NULL',['../_stdio_stream_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4',1,'StdioStream.h']]], - ['nullptr_270',['nullptr',['../_sys_call_8h.html#ab979d9d4b4923f7c54d6caa6e1a61936',1,'SysCall.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.html deleted file mode 100644 index 29316189..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.js deleted file mode 100644 index 1d6af59d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_e.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['obufstream_271',['obufstream',['../classobufstream.html',1,'obufstream'],['../classobufstream.html#a74f7dbcf1131b77d3665aa85d6629722',1,'obufstream::obufstream()'],['../classobufstream.html#a7af0555c5c08ebf9cbc70fc5e2f67db7',1,'obufstream::obufstream(char *buf, size_t size)']]], - ['oct_272',['oct',['../classios__base.html#a4155540f8d3ffdb8d25a2f50ee4df08f',1,'ios_base::oct()'],['../ios_8h.html#ae661b435df22f8e8e643817f4f915123',1,'oct(): ios.h']]], - ['off_5ftype_273',['off_type',['../classios__base.html#a45de7cca0d01da781f4b886179c65c22',1,'ios_base']]], - ['ofstream_274',['ofstream',['../classofstream.html',1,'ofstream'],['../classofstream.html#abd1a07c492699c44f149da45b8d593c1',1,'ofstream::ofstream()']]], - ['oid_275',['oid',['../struct_c_i_d.html#a12cb950aa46c62c8af1e530006f97031',1,'CID']]], - ['open_276',['open',['../class_ex_fat_file.html#ad0be05c5c7092317089872778052cbd7',1,'ExFatFile::open(ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)'],['../class_ex_fat_file.html#a825447643e6c9e8284a3ed78e3363788',1,'ExFatFile::open(ExFatVolume *vol, const ExChar_t *path, int oflag)'],['../class_ex_fat_file.html#a414b64dc30551e05dcc46f04e0f6413a',1,'ExFatFile::open(ExFatFile *dirFile, uint32_t index, oflag_t oflag)'],['../class_ex_fat_file.html#ab1e224aba9eb796c7ad48062cc1434c2',1,'ExFatFile::open(const ExChar_t *path, int oflag=0X00)'],['../class_ex_fat_volume.html#a0807cfcef46ef74cfe238badb83f3dda',1,'ExFatVolume::open(const ExChar_t *path, oflag_t oflag=0X00)'],['../class_ex_fat_volume.html#adce2c8ab2f73f56614b08fac42cabaea',1,'ExFatVolume::open(const String &path, oflag_t oflag=0X00)'],['../class_fat_file.html#af49a42dc64cd954debb271eae5639059',1,'FatFile::open(FatVolume *vol, const char *path, oflag_t oflag)'],['../class_fat_file.html#ab44920bb9cd5414b8e69c9dc4343394a',1,'FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)'],['../class_fat_file.html#a58d6ea245f1bc3ae7a6df311cd25052f',1,'FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)'],['../class_fat_file.html#afd3e4d5a76b6751ca796fc57f4dd2be4',1,'FatFile::open(const char *path, oflag_t oflag=0X00)'],['../class_fat_volume.html#a22923b86de9c797ce5e19f206dd4ce1f',1,'FatVolume::open(const char *path, oflag_t oflag=0X00)'],['../class_fat_volume.html#af7178b7f13eeae7748640b6268a34812',1,'FatVolume::open(const String &path, oflag_t oflag=0X00)'],['../classfstream.html#a85b24d94552991f33caf4c3a83420879',1,'fstream::open()'],['../classifstream.html#a169694d6535fd551fd6db48a2867590e',1,'ifstream::open()'],['../classofstream.html#a4b9d30c742fbe01baa336406c7afdcb2',1,'ofstream::open()'],['../class_fs_base_file.html#aa767859d4a4b4716ebbc4ea42a6d74df',1,'FsBaseFile::open(FsBaseFile *dir, const char *path, oflag_t oflag=O_RDONLY)'],['../class_fs_base_file.html#ac4edea1afb935119ecaf39607016c3cc',1,'FsBaseFile::open(FsBaseFile *dir, uint32_t index, oflag_t oflag)'],['../class_fs_base_file.html#a9786eb47f5d001e89ff291c271517547',1,'FsBaseFile::open(FsVolume *vol, const char *path, oflag_t oflag)'],['../class_fs_base_file.html#af44f0decd9b11dd45996e81f46e2cdee',1,'FsBaseFile::open(const char *path, oflag_t oflag=O_RDONLY)'],['../class_fs_volume.html#a2f28fc92b7a71607bc57aa72f5a4c0a7',1,'FsVolume::open(const char *path, oflag_t oflag=0X00)'],['../class_fs_volume.html#a55804d14db55dd29bf7b26d692275ac9',1,'FsVolume::open(const String &path, oflag_t oflag=0X00)']]], - ['openmode_277',['openmode',['../classios__base.html#aaa192ec0dccc43050715553a34644523',1,'ios_base']]], - ['opennext_278',['openNext',['../class_ex_fat_file.html#a89b6021cf70b7adb9feb162260d5a101',1,'ExFatFile::openNext()'],['../class_fat_file.html#a7f98b908a686574efbd7e1d20121ef9a',1,'FatFile::openNext()'],['../class_fs_base_file.html#acb9b1075f4db76fa7e0521c9aff9c3df',1,'FsBaseFile::openNext()']]], - ['opennextfile_279',['openNextFile',['../class_ex_file.html#ada8cd27e9a2f604f5c05088024a46a63',1,'ExFile::openNextFile()'],['../class_file32.html#a571434707124ee554d659ec82e2ef750',1,'File32::openNextFile()'],['../class_fs_file.html#ab2f85961e3831d0d654da862becb7433',1,'FsFile::openNextFile()']]], - ['openroot_280',['openRoot',['../class_ex_fat_file.html#af664c1da1bfa0bb5f6eb933bc25f757e',1,'ExFatFile::openRoot()'],['../class_fat_file.html#a7e0c0548fed3a69e7284b91b694439d4',1,'FatFile::openRoot()']]], - ['operator_20bool_281',['operator bool',['../class_minimum_serial.html#a73a1a2a92604ecb8507afde0022aedd8',1,'MinimumSerial::operator bool()'],['../class_ex_fat_file.html#aa1abbd813f27d488f0ff439ccbc9ca98',1,'ExFatFile::operator bool()'],['../class_fat_file.html#acd141c43d03cf790b3b9806f3b059e77',1,'FatFile::operator bool()'],['../classios.html#a940890a2e7fb429fd32813b0ea7ed35d',1,'ios::operator bool()'],['../class_fs_base_file.html#a3ad633f3efc2701a3a89e776436b14e1',1,'FsBaseFile::operator bool()']]], - ['operator_20const_20void_20_2a_282',['operator const void *',['../classios.html#aa919219fd2fa41d49c8573b36bb04418',1,'ios']]], - ['operator_21_283',['operator!',['../classios.html#aea64e05b9aa58bd75ca636692f881fb6',1,'ios']]], - ['operator_3c_3c_284',['operator<<',['../classostream.html#a4dfc0cdb38bced959ba7cf963db38c30',1,'ostream::operator<<(ostream &(*pf)(ostream &str))'],['../classostream.html#af52c607ea168aff1025222c62cad392f',1,'ostream::operator<<(ios_base &(*pf)(ios_base &str))'],['../classostream.html#a63e3999be154253cf92a45c22e548f51',1,'ostream::operator<<(bool arg)'],['../classostream.html#a618b5d6861dde2347847102b89e0ccfa',1,'ostream::operator<<(const char *arg)'],['../classostream.html#aebe24ff723b806cbee19deb2165d0a5b',1,'ostream::operator<<(const signed char *arg)'],['../classostream.html#ac0cf68ffa4706994f47acb1fa37c601a',1,'ostream::operator<<(const unsigned char *arg)'],['../classostream.html#a9d91797605a48ffcad21738bfc876547',1,'ostream::operator<<(const String &arg)'],['../classostream.html#a1d1e11d2fadaf4c9e34194a1f28572e4',1,'ostream::operator<<(char arg)'],['../classostream.html#ad06f8c6c47667e9c7b14620882c09434',1,'ostream::operator<<(signed char arg)'],['../classostream.html#a69912ec4a8536f289b716e95953d09d7',1,'ostream::operator<<(unsigned char arg)'],['../classostream.html#a8065697d56d5e5d1a0ca50c1916b4955',1,'ostream::operator<<(double arg)'],['../classostream.html#a6c68e418e19d9dcdfe6b1790b2621666',1,'ostream::operator<<(float arg)'],['../classostream.html#a227c47e2b631f29d8873b00290bb4872',1,'ostream::operator<<(short arg)'],['../classostream.html#ace10a3a767dc55faff2cec71cd0a89b1',1,'ostream::operator<<(unsigned short arg)'],['../classostream.html#a62488f7ce7822c777ea27d15223b8e5f',1,'ostream::operator<<(int arg)'],['../classostream.html#ad31df6cd88c7248c01808e40889a7907',1,'ostream::operator<<(unsigned int arg)'],['../classostream.html#a15db9977ed82e503bd3cd1f585acf9e6',1,'ostream::operator<<(long arg)'],['../classostream.html#aaedd44fefa48cf3f0967fcd699a2909d',1,'ostream::operator<<(unsigned long arg)'],['../classostream.html#a3b1be06d511106bb0449f4424962ad72',1,'ostream::operator<<(long long arg)'],['../classostream.html#a9f9adac280c449da7be40f0f1a65fcd6',1,'ostream::operator<<(unsigned long long arg)'],['../classostream.html#a2a8febd7c07f078120dd69bb71f25a94',1,'ostream::operator<<(const void *arg)'],['../classostream.html#a99ee8d9265d9354f197d02a3d17116be',1,'ostream::operator<<(const __FlashStringHelper *arg)'],['../iostream_8h.html#aa125ac928f3377cbc6e3cf288b9378fd',1,'operator<<(ostream &os, const setfill &arg): iostream.h'],['../iostream_8h.html#a23d4c29ef8ae37ec7d972d0b66187652',1,'operator<<(ostream &os, const setprecision &arg): iostream.h'],['../iostream_8h.html#a331649f2fdb01ed069dc18a5fad781b1',1,'operator<<(ostream &os, const setw &arg): iostream.h']]], - ['operator_3d_285',['operator=',['../class_fs_base_file.html#ae4f6d168072bb4f2a61976f621659d20',1,'FsBaseFile']]], - ['operator_3e_3e_286',['operator>>',['../classistream.html#aa67d3b8ac67e2097d876a66657ec6067',1,'istream::operator>>(istream &(*pf)(istream &str))'],['../classistream.html#ac6e2f17c80edd19deecdc20f804c424e',1,'istream::operator>>(ios_base &(*pf)(ios_base &str))'],['../classistream.html#a5a0a2c0e06abadb79951ebe34f36d62a',1,'istream::operator>>(ios &(*pf)(ios &str))'],['../classistream.html#a99db66d2e192f02deff0171ad098271f',1,'istream::operator>>(char *str)'],['../classistream.html#addaf5e0f39a15cc213117165dfef0d77',1,'istream::operator>>(char &ch)'],['../classistream.html#a390af4d28adbdc537e436f2121d1c862',1,'istream::operator>>(signed char *str)'],['../classistream.html#a49ab1a573fbf69809d19a52855a30072',1,'istream::operator>>(signed char &ch)'],['../classistream.html#a52e85d01198968330f20026a52cb9f72',1,'istream::operator>>(unsigned char *str)'],['../classistream.html#a74875fcf9ccdc0dca4b46a0b66821798',1,'istream::operator>>(unsigned char &ch)'],['../classistream.html#a3708636d095d360695e9c23335639317',1,'istream::operator>>(bool &arg)'],['../classistream.html#a662060e885a0551c390b7042b3b9e4a5',1,'istream::operator>>(short &arg)'],['../classistream.html#a31a706a374c5a594e400734b8992e2a0',1,'istream::operator>>(unsigned short &arg)'],['../classistream.html#ae8451bc86d83828892d9d67c67b7f02b',1,'istream::operator>>(int &arg)'],['../classistream.html#a35c9847ebf7b822c5ec9742e9de19345',1,'istream::operator>>(unsigned int &arg)'],['../classistream.html#aa26e7f35e74d96803bb0dfb3fb0dc154',1,'istream::operator>>(long &arg)'],['../classistream.html#a5aafa4c7f6615a7f1441962b61b8ef59',1,'istream::operator>>(unsigned long &arg)'],['../classistream.html#af9bf453725ce1d9ef62142a7ee38936e',1,'istream::operator>>(double &arg)'],['../classistream.html#aa8efce6fecab80cf7a17d5dfa31f5aa8',1,'istream::operator>>(float &arg)'],['../classistream.html#a62ef4762feacc64a8acdcbf8f1296936',1,'istream::operator>>(void *&arg)'],['../iostream_8h.html#a4a4079de901e0f3f10c743115bd345b2',1,'operator>>(istream &obj, const setfill &arg): iostream.h'],['../iostream_8h.html#a2f819cd0ccda31a8b648f20534469308',1,'operator>>(istream &is, const setprecision &arg): iostream.h'],['../iostream_8h.html#a8d1b3da6f1074322a6e9e11ff4ce8c33',1,'operator>>(istream &is, const setw &arg): iostream.h']]], - ['options_287',['options',['../class_sd_spi_config.html#a6292855eeea89636ad2b4da9675dbc96',1,'SdSpiConfig::options()'],['../class_sdio_config.html#a905aeb5dc774c63af6e72b3be51fc845',1,'SdioConfig::options()']]], - ['ostream_288',['ostream',['../classostream.html',1,'']]], - ['ostream_2eh_289',['ostream.h',['../ostream_8h.html',1,'']]], - ['out_290',['out',['../classios__base.html#a4c1d517774c0d11af3424e90395f26ae',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.html deleted file mode 100644 index ca42a522..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.js deleted file mode 100644 index 854c4cb5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/all_f.js +++ /dev/null @@ -1,43 +0,0 @@ -var searchData= -[ - ['p_291',['p',['../structsetprecision.html#a7cb7bb355a303fa39a8035615bde9348',1,'setprecision']]], - ['peek_292',['peek',['../class_ex_fat_file.html#afc2e375faa696545f7ebbf583faae72a',1,'ExFatFile::peek()'],['../class_fat_file.html#ac05b7136b887539426856c623869aa3a',1,'FatFile::peek()'],['../classistream.html#a4022265e0ede3698454f1ff59348c14a',1,'istream::peek()'],['../class_stream_file.html#af0da96e502485133ca0cff27fa130082',1,'StreamFile::peek()'],['../class_fs_base_file.html#adc49cb204f293a28b67af64c49c4c9f3',1,'FsBaseFile::peek()']]], - ['pgm_5fread_5fbyte_293',['pgm_read_byte',['../_fat_file_8h.html#a48c60b057902adf805797f183286728d',1,'FatFile.h']]], - ['pgm_5fread_5fword_294',['pgm_read_word',['../_fat_file_8h.html#a910fb5f01313d339d3b835d45e1e5ad0',1,'FatFile.h']]], - ['pnm_295',['pnm',['../struct_c_i_d.html#a6484cd56fc4bacfa815c12d8682129ba',1,'CID']]], - ['pos_5ft_296',['pos_t',['../ios_8h.html#aae8adaedc486a4b2f67576fdeaf0a585',1,'ios.h']]], - ['pos_5ftype_297',['pos_type',['../classios__base.html#abe85cf1f181b8bce8022f05ab76aae7f',1,'ios_base']]], - ['position_298',['position',['../struct_ex_fat_pos__t.html#abfab79daf5a2df281ebf3c5dad204f23',1,'ExFatPos_t::position()'],['../struct_dir_pos__t.html#a6cef96844ecd8e9972df860bacc04f24',1,'DirPos_t::position()'],['../struct_fat_pos__t.html#a8e14c6f2705777502b543452743eaa26',1,'FatPos_t::position()'],['../class_stream_file.html#a18a04d1e68a0c1e3e38e5712cd9bbc03',1,'StreamFile::position()'],['../class_fs_base_file.html#a8d5ea7284de7ec0bfdb0b2294001f015',1,'FsBaseFile::position()']]], - ['preallocate_299',['preAllocate',['../class_ex_fat_file.html#a35a5093014e80965e49c84b61780556f',1,'ExFatFile::preAllocate()'],['../class_fat_file.html#aeeb13b9de68bf9097c863c41d655ee83',1,'FatFile::preAllocate()'],['../class_fs_base_file.html#acbc037f9f07c57235bb8b30af5a53ac2',1,'FsBaseFile::preAllocate()']]], - ['precision_300',['precision',['../classios__base.html#aba92f0687644fc14f202958635ce276f',1,'ios_base::precision() const'],['../classios__base.html#a5b70cc65fc2c276136fea99bddedb6f0',1,'ios_base::precision(unsigned int n)']]], - ['print_301',['print',['../class_buffered_print.html#a95f984c4702b0e20d781efd9d1ea8f27',1,'BufferedPrint::print(double d, uint8_t prec=2)'],['../class_buffered_print.html#aeed86ef2ea320cd8ff47ee871663a8ce',1,'BufferedPrint::print(float f, uint8_t prec=2)'],['../class_buffered_print.html#ae9472f3acd3f7d3187500e60754963bb',1,'BufferedPrint::print(Type v)'],['../class_stdio_stream.html#ad3f6ee8e8ca5dcf6dabfd88199b172e2',1,'StdioStream::print(char c)'],['../class_stdio_stream.html#a1158ea5f9bf041f21b1733b7811c9bb9',1,'StdioStream::print(const char *str)'],['../class_stdio_stream.html#aac4d7b3548d03b8fd70adf12c7ee315c',1,'StdioStream::print(const __FlashStringHelper *str)'],['../class_stdio_stream.html#a26f5b98560b6771225005b073166108b',1,'StdioStream::print(double val, uint8_t prec=2)'],['../class_stdio_stream.html#a06b6eb9f0a7000fdcc73cd6af8d40560',1,'StdioStream::print(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a7129f85c7c5f16867f467731ef84dee9',1,'StdioStream::print(T val)']]], - ['print_5ft_302',['print_t',['../_sys_call_8h.html#ac62f6449331cfe1a71f29be30efe7890',1,'SysCall.h']]], - ['printaccessdate_303',['printAccessDate',['../class_fat_file.html#a22be4c339d0bfa331f75415b74dd4f37',1,'FatFile']]], - ['printaccessdatetime_304',['printAccessDateTime',['../class_ex_fat_file.html#ad9ba8aa00b9db683d40fc2989dbe1922',1,'ExFatFile::printAccessDateTime()'],['../class_fat_file.html#a19b3196bb1f6a68a2447e53b09369aef',1,'FatFile::printAccessDateTime()'],['../class_fs_base_file.html#a264ba61530aee50dbe9659d41dd2c1d6',1,'FsBaseFile::printAccessDateTime()']]], - ['printcreatedatetime_305',['printCreateDateTime',['../class_ex_fat_file.html#a7318b2d7594d6ba52421c413f5fc35cd',1,'ExFatFile::printCreateDateTime()'],['../class_fat_file.html#ab22396a285e27b53501a0047ddd97f59',1,'FatFile::printCreateDateTime()'],['../class_fs_base_file.html#a3f75ac7eb6643afcabae28e8c93479c8',1,'FsBaseFile::printCreateDateTime()']]], - ['printdec_306',['printDec',['../class_stdio_stream.html#ac0a907feb1e4b7e00de99857b4c0a470',1,'StdioStream::printDec(char n)'],['../class_stdio_stream.html#a2707ea97f6113c226781469f4f39ff62',1,'StdioStream::printDec(signed char n)'],['../class_stdio_stream.html#a6e6ac78caa6259a4c4934707bf497a2b',1,'StdioStream::printDec(unsigned char n)'],['../class_stdio_stream.html#a218af88db35f38babf01d6e0a9cdceeb',1,'StdioStream::printDec(int16_t n)'],['../class_stdio_stream.html#a90b2999af94a3578fff7579c2acf8e35',1,'StdioStream::printDec(uint16_t n)'],['../class_stdio_stream.html#ad4591f1234b57f63c1acf0f3392099ac',1,'StdioStream::printDec(int32_t n)'],['../class_stdio_stream.html#a8b6c2c80342abe45e6f564e9bd5bb7ea',1,'StdioStream::printDec(uint32_t n)'],['../class_stdio_stream.html#aaa8921947d4dbbae840d285cb633e8aa',1,'StdioStream::printDec(double value, uint8_t prec)'],['../class_stdio_stream.html#a6a09284b1c6d0769c27916a2e131e749',1,'StdioStream::printDec(float value, uint8_t prec)']]], - ['printf_5fuse_5ffloat_307',['PRINTF_USE_FLOAT',['../_print_templates_8h.html#a26baac10baccbe6d4f13f98981dd202a',1,'PrintTemplates.h']]], - ['printfatdate_308',['printFatDate',['../class_fat_file.html#aabcd863883bfcfb37b63dbd6021f7eb8',1,'FatFile']]], - ['printfattime_309',['printFatTime',['../class_fat_file.html#a7f84d953190ea94710dad9ebb897b957',1,'FatFile']]], - ['printfattype_310',['printFatType',['../class_sd_base.html#a234e80318c39229fe968a182b172148c',1,'SdBase']]], - ['printfield_311',['printField',['../class_buffered_print.html#a69ea9541fb854448b9fe3aff44583975',1,'BufferedPrint::printField(char c, char term)'],['../class_buffered_print.html#ac18cc8c86b73b073a28db85075215f4f',1,'BufferedPrint::printField(const __FlashStringHelper *fsh, char term)'],['../class_buffered_print.html#ac49d0beb5fdad68e82f741bbaad4bb1b',1,'BufferedPrint::printField(const char *str, char term)'],['../class_buffered_print.html#a5b5b11f01adf91a1854a44b131886219',1,'BufferedPrint::printField(double d, char term, uint8_t prec=2)'],['../class_buffered_print.html#a93369fc042366488ef40426f9fd3286d',1,'BufferedPrint::printField(float f, char term, uint8_t prec=2)'],['../class_buffered_print.html#af680cf36170347287d20ed92ae5f6c9b',1,'BufferedPrint::printField(Type n, char term)'],['../class_ex_fat_file.html#a496ac61e367a24665425d54956a46346',1,'ExFatFile::printField(double value, char term, uint8_t prec=2)'],['../class_ex_fat_file.html#a70eda4191df90f608694c1faede7fb33',1,'ExFatFile::printField(float value, char term, uint8_t prec=2)'],['../class_ex_fat_file.html#a9759c13e804c01ff9e7e2ac8fbabc5b8',1,'ExFatFile::printField(Type value, char term)'],['../class_fat_file.html#aa4a61a0cca1813d2ad0f6fe99cc4e41d',1,'FatFile::printField(double value, char term, uint8_t prec=2)'],['../class_fat_file.html#a90ccef676afd62bbe7c773dd863a56e0',1,'FatFile::printField(float value, char term, uint8_t prec=2)'],['../class_fat_file.html#a8f906be79086f38943cb0911310d67bf',1,'FatFile::printField(Type value, char term)'],['../class_stdio_stream.html#a4988592ada39c4b4c603b061f84d183f',1,'StdioStream::printField(double value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a3b90b2317cc391f94784a847f5313c08',1,'StdioStream::printField(float value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a02c2ad1a2e71e82d238b8386cf3e6c41',1,'StdioStream::printField(T value, char term)'],['../class_fs_base_file.html#a911ae825e67d7e6ade4a672595e060d6',1,'FsBaseFile::printField(double value, char term, uint8_t prec=2)'],['../class_fs_base_file.html#a5dd2738efe2e550f56037536bc252f13',1,'FsBaseFile::printField(float value, char term, uint8_t prec=2)'],['../class_fs_base_file.html#a45639312b8c5aa9ceddb19e654e902b4',1,'FsBaseFile::printField(Type value, char term)']]], - ['printfile_312',['PrintFile',['../class_print_file.html',1,'']]], - ['printfile_3c_20sdbasefile_20_3e_313',['PrintFile< SdBaseFile >',['../class_print_file.html',1,'']]], - ['printfilesize_314',['printFileSize',['../class_ex_fat_file.html#a16d527f98cff3ffd3ba8bc594a22d186',1,'ExFatFile::printFileSize()'],['../class_fat_file.html#a12a5d2de2737c201aa39ca1bd2ab9c47',1,'FatFile::printFileSize()'],['../class_fs_base_file.html#a6760471e3c445f66b94f3f0e96fdfe10',1,'FsBaseFile::printFileSize()']]], - ['printhex_315',['printHex',['../class_stdio_stream.html#add39b2b4ec3daa7c8922e96ce5d368bc',1,'StdioStream']]], - ['printhexln_316',['printHexln',['../class_stdio_stream.html#aec6ebea511489b0ef6b61d9132d93af9',1,'StdioStream']]], - ['println_317',['println',['../class_buffered_print.html#a7bd188ccc8b38b83cf44b96164a1d816',1,'BufferedPrint::println()'],['../class_buffered_print.html#aaeaceb452361377ce73db0041edbcdff',1,'BufferedPrint::println(double d, uint8_t prec=2)'],['../class_buffered_print.html#afc449966c5c7357fde925c6888669698',1,'BufferedPrint::println(float f, uint8_t prec)'],['../class_buffered_print.html#a0945ed373bd17a309bb6661faad3be9c',1,'BufferedPrint::println(Type v)'],['../class_stdio_stream.html#ad0cd3acc05a91456f505752377bd405a',1,'StdioStream::println()'],['../class_stdio_stream.html#a3793dd66cf347a1ca0b7b167e948cce9',1,'StdioStream::println(double val, uint8_t prec=2)'],['../class_stdio_stream.html#aac250d041a7844c8db1cbd2d97ecfdaa',1,'StdioStream::println(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a3b14532768d07e6ed89c762d04792c12',1,'StdioStream::println(T val)']]], - ['printmodifydatetime_318',['printModifyDateTime',['../class_ex_fat_file.html#a16488d3e0d946f108240b7d6c536c6f4',1,'ExFatFile::printModifyDateTime()'],['../class_fat_file.html#a43c8a1cabcae673e43c590f5db44c65a',1,'FatFile::printModifyDateTime()'],['../class_fs_base_file.html#a0f2f813496fa156f9808a5d33c2d8746',1,'FsBaseFile::printModifyDateTime()']]], - ['printname_319',['printName',['../class_ex_fat_file.html#a095c0a865e5e5b6463c3dc0c90680635',1,'ExFatFile::printName()'],['../class_fat_file.html#afe18a787fb8640e2d2483370c770f82f',1,'FatFile::printName(print_t *pr)'],['../class_fat_file.html#ad1cbc3aeb0f5193b7a26595966da9621',1,'FatFile::printName()'],['../class_fs_base_file.html#a178a1cbe2bce19758a55bd00fa262732',1,'FsBaseFile::printName()']]], - ['printsderror_320',['printSdError',['../class_sd_base.html#a6a8ba118e754b2b9fa0f34410163e228',1,'SdBase']]], - ['printsfn_321',['printSFN',['../class_fat_file.html#a791cd7aade71f609aab62ec018aea3c0',1,'FatFile']]], - ['printtemplates_2eh_322',['PrintTemplates.h',['../_print_templates_8h.html',1,'']]], - ['progmem_323',['PROGMEM',['../_fat_file_8h.html#a75acaba9e781937468d0911423bc0c35',1,'FatFile.h']]], - ['prv_5fm_324',['prv_m',['../struct_c_i_d.html#a142fd792bb74d7af1f0fb62833ae053b',1,'CID']]], - ['prv_5fn_325',['prv_n',['../struct_c_i_d.html#ae50f389a50daf99d15d1ea7ce2d426cf',1,'CID']]], - ['psn_326',['psn',['../struct_c_i_d.html#ada215f8541fa46078461d8da9574fc5e',1,'CID']]], - ['pstr_327',['PSTR',['../_fat_file_8h.html#a9c00057fd19e916cc1aa0a5949336beb',1,'FatFile.h']]], - ['put_328',['put',['../classostream.html#a11aad8a1efd284ccfa91cbfb78d089bd',1,'ostream']]], - ['putc_329',['putc',['../class_stdio_stream.html#adf9e552212aad6fc2284da0ee62d04dc',1,'StdioStream']]], - ['putcrlf_330',['putCRLF',['../class_stdio_stream.html#a09ccc4b6cabc3502c1052e85d94e84ef',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.html deleted file mode 100644 index d585e6a9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.js deleted file mode 100644 index d6141dbe..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['arduinoinstream_501',['ArduinoInStream',['../class_arduino_in_stream.html',1,'']]], - ['arduinooutstream_502',['ArduinoOutStream',['../class_arduino_out_stream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.html deleted file mode 100644 index baeb182b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.js deleted file mode 100644 index 0a5aaaf7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['blockdeviceinterface_503',['BlockDeviceInterface',['../class_block_device_interface.html',1,'']]], - ['bufferedprint_504',['BufferedPrint',['../class_buffered_print.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.html deleted file mode 100644 index d2672790..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.js deleted file mode 100644 index ce8074b6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['cache_5ft_505',['cache_t',['../unioncache__t.html',1,'']]], - ['cid_506',['CID',['../struct_c_i_d.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.html deleted file mode 100644 index 8a5cbe17..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.js deleted file mode 100644 index 2ba63f03..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['dirpos_5ft_507',['DirPos_t',['../struct_dir_pos__t.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.html deleted file mode 100644 index 300b9aba..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.js deleted file mode 100644 index cdd5651b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_4.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['exfatfile_508',['ExFatFile',['../class_ex_fat_file.html',1,'']]], - ['exfatformatter_509',['ExFatFormatter',['../class_ex_fat_formatter.html',1,'']]], - ['exfatpartition_510',['ExFatPartition',['../class_ex_fat_partition.html',1,'']]], - ['exfatpos_5ft_511',['ExFatPos_t',['../struct_ex_fat_pos__t.html',1,'']]], - ['exfatvolume_512',['ExFatVolume',['../class_ex_fat_volume.html',1,'']]], - ['exfile_513',['ExFile',['../class_ex_file.html',1,'']]], - ['exname_5ft_514',['ExName_t',['../struct_ex_name__t.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.html deleted file mode 100644 index e7afb2c3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.js deleted file mode 100644 index 8c6fa857..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_5.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['fatcache_515',['FatCache',['../class_fat_cache.html',1,'']]], - ['fatfile_516',['FatFile',['../class_fat_file.html',1,'']]], - ['fatformatter_517',['FatFormatter',['../class_fat_formatter.html',1,'']]], - ['fatpartition_518',['FatPartition',['../class_fat_partition.html',1,'']]], - ['fatpos_5ft_519',['FatPos_t',['../struct_fat_pos__t.html',1,'']]], - ['fatvolume_520',['FatVolume',['../class_fat_volume.html',1,'']]], - ['file32_521',['File32',['../class_file32.html',1,'']]], - ['fname_5ft_522',['fname_t',['../structfname__t.html',1,'']]], - ['fsbasefile_523',['FsBaseFile',['../class_fs_base_file.html',1,'']]], - ['fscache_524',['FsCache',['../class_fs_cache.html',1,'']]], - ['fsfile_525',['FsFile',['../class_fs_file.html',1,'']]], - ['fstream_526',['fstream',['../classfstream.html',1,'']]], - ['fsvolume_527',['FsVolume',['../class_fs_volume.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.html deleted file mode 100644 index f397fd5a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.js deleted file mode 100644 index 96ac279c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['ibufstream_528',['ibufstream',['../classibufstream.html',1,'']]], - ['ifstream_529',['ifstream',['../classifstream.html',1,'']]], - ['ios_530',['ios',['../classios.html',1,'']]], - ['ios_5fbase_531',['ios_base',['../classios__base.html',1,'']]], - ['iostream_532',['iostream',['../classiostream.html',1,'']]], - ['istream_533',['istream',['../classistream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.html deleted file mode 100644 index 6453cb7f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.js deleted file mode 100644 index 86841b6e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['minimumserial_534',['MinimumSerial',['../class_minimum_serial.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.html deleted file mode 100644 index f2f78e9f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.js deleted file mode 100644 index 5969ae39..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['obufstream_535',['obufstream',['../classobufstream.html',1,'']]], - ['ofstream_536',['ofstream',['../classofstream.html',1,'']]], - ['ostream_537',['ostream',['../classostream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.html deleted file mode 100644 index e4e148f0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.js deleted file mode 100644 index 251bed64..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['printfile_538',['PrintFile',['../class_print_file.html',1,'']]], - ['printfile_3c_20sdbasefile_20_3e_539',['PrintFile< SdBaseFile >',['../class_print_file.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.html deleted file mode 100644 index 157ebcb7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.js deleted file mode 100644 index 71bd0cb9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/classes_a.js +++ /dev/null @@ -1,31 +0,0 @@ -var searchData= -[ - ['sdbase_540',['SdBase',['../class_sd_base.html',1,'']]], - ['sdbase_3c_20exfatvolume_20_3e_541',['SdBase< ExFatVolume >',['../class_sd_base.html',1,'']]], - ['sdbase_3c_20fatvolume_20_3e_542',['SdBase< FatVolume >',['../class_sd_base.html',1,'']]], - ['sdbase_3c_20fsvolume_20_3e_543',['SdBase< FsVolume >',['../class_sd_base.html',1,'']]], - ['sdcardfactory_544',['SdCardFactory',['../class_sd_card_factory.html',1,'']]], - ['sdcardinterface_545',['SdCardInterface',['../class_sd_card_interface.html',1,'']]], - ['sdexfat_546',['SdExFat',['../class_sd_ex_fat.html',1,'']]], - ['sdfat32_547',['SdFat32',['../class_sd_fat32.html',1,'']]], - ['sdfile_548',['SdFile',['../class_sd_file.html',1,'']]], - ['sdfs_549',['SdFs',['../class_sd_fs.html',1,'']]], - ['sdiocard_550',['SdioCard',['../class_sdio_card.html',1,'']]], - ['sdioconfig_551',['SdioConfig',['../class_sdio_config.html',1,'']]], - ['sdspiarduinodriver_552',['SdSpiArduinoDriver',['../class_sd_spi_arduino_driver.html',1,'']]], - ['sdspibaseclass_553',['SdSpiBaseClass',['../class_sd_spi_base_class.html',1,'']]], - ['sdspicard_554',['SdSpiCard',['../class_sd_spi_card.html',1,'']]], - ['sdspiconfig_555',['SdSpiConfig',['../class_sd_spi_config.html',1,'']]], - ['sdspisoftdriver_556',['SdSpiSoftDriver',['../class_sd_spi_soft_driver.html',1,'']]], - ['setfill_557',['setfill',['../structsetfill.html',1,'']]], - ['setprecision_558',['setprecision',['../structsetprecision.html',1,'']]], - ['setw_559',['setw',['../structsetw.html',1,'']]], - ['softspidriver_560',['SoftSpiDriver',['../class_soft_spi_driver.html',1,'']]], - ['stdiostream_561',['StdioStream',['../class_stdio_stream.html',1,'']]], - ['streambaseclass_562',['StreamBaseClass',['../class_stream_base_class.html',1,'']]], - ['streamfile_563',['StreamFile',['../class_stream_file.html',1,'']]], - ['streamfile_3c_20exfatfile_2c_20uint64_5ft_20_3e_564',['StreamFile< ExFatFile, uint64_t >',['../class_stream_file.html',1,'']]], - ['streamfile_3c_20fatfile_2c_20uint32_5ft_20_3e_565',['StreamFile< FatFile, uint32_t >',['../class_stream_file.html',1,'']]], - ['streamfile_3c_20fsbasefile_2c_20uint64_5ft_20_3e_566',['StreamFile< FsBaseFile, uint64_t >',['../class_stream_file.html',1,'']]], - ['syscall_567',['SysCall',['../class_sys_call.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/close.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/close.png deleted file mode 100644 index 9342d3dfeea7b7c4ee610987e717804b5a42ceb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.html deleted file mode 100644 index 8fb07b8c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.js deleted file mode 100644 index 1f3b35cd..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['check_5fflash_5fprogramming_991',['CHECK_FLASH_PROGRAMMING',['../_sd_fat_config_8h.html#a63747c9ac4e3d78579690cf9eb38c4df',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.html deleted file mode 100644 index 2858dbe3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.js deleted file mode 100644 index 95af909a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['dedicated_5fspi_992',['DEDICATED_SPI',['../_sd_spi_driver_8h.html#a666c394438267afda9b1e63f6b61459c',1,'SdSpiDriver.h']]], - ['destructor_5fcloses_5ffile_993',['DESTRUCTOR_CLOSES_FILE',['../_sd_fat_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.html deleted file mode 100644 index 81824d5d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.js deleted file mode 100644 index 5068b075..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_2.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['enable_5farduino_5ffeatures_994',['ENABLE_ARDUINO_FEATURES',['../_sd_fat_config_8h.html#a9a8c1ea8596f35f7f33a24b642567206',1,'SdFatConfig.h']]], - ['enable_5farduino_5fserial_995',['ENABLE_ARDUINO_SERIAL',['../_sd_fat_config_8h.html#aa0a95c918e41f5cb3850231fc41fdcd0',1,'SdFatConfig.h']]], - ['enable_5farduino_5fstring_996',['ENABLE_ARDUINO_STRING',['../_sd_fat_config_8h.html#aae353ccb45df7772d8022763a57410d9',1,'SdFatConfig.h']]], - ['enable_5fdedicated_5fspi_997',['ENABLE_DEDICATED_SPI',['../_sd_fat_config_8h.html#a3ceb23f14263a17c56eac40e484cbbbb',1,'SdFatConfig.h']]], - ['endl_5fcalls_5fflush_998',['ENDL_CALLS_FLUSH',['../_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'SdFatConfig.h']]], - ['eof_999',['EOF',['../_stdio_stream_8h.html#a59adc4c82490d23754cd39c2fb99b0da',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.html deleted file mode 100644 index e9d08d70..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.js deleted file mode 100644 index ec7ff9bb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['f_1000',['F',['../_sys_call_8h.html#a0e3009529aac180ed5f48296d6670d6b',1,'SysCall.h']]], - ['fat12_5fsupport_1001',['FAT12_SUPPORT',['../_sd_fat_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'SdFatConfig.h']]], - ['fs_5fdefault_5fdate_1002',['FS_DEFAULT_DATE',['../_sd_fat_config_8h.html#af9e38fab77717460deffabaec90ffc9f',1,'SdFatConfig.h']]], - ['fs_5fdefault_5ftime_1003',['FS_DEFAULT_TIME',['../_sd_fat_config_8h.html#aa881707cd0526be3a1d2e3f214db2d5e',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.html deleted file mode 100644 index d8b61bbf..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.js deleted file mode 100644 index fccdc8d5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['has_5fsdio_5fclass_1004',['HAS_SDIO_CLASS',['../_sd_fat_config_8h.html#a356309f8e0bad852d7a07ad0b9326a27',1,'SdFatConfig.h']]], - ['has_5funused_5fstack_1005',['HAS_UNUSED_STACK',['../_free_stack_8h.html#acd5a8222ee7af79faab74b1df412d600',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.html deleted file mode 100644 index 14637be6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.js deleted file mode 100644 index 752b7332..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_5.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['include_5fsdios_1006',['INCLUDE_SDIOS',['../_sd_fat_config_8h.html#a7cc6c9647297d65f8e823de70740630b',1,'SdFatConfig.h']]], - ['isdigit_1007',['isDigit',['../_print_templates_8h.html#ab82ae47ddc52e7a1a9400cc3c42a9de7',1,'PrintTemplates.h']]], - ['isdirseparator_1008',['isDirSeparator',['../_ex_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'isDirSeparator(): ExFatFile.h'],['../_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'isDirSeparator(): FatFile.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.html deleted file mode 100644 index ad0d34c9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.js deleted file mode 100644 index 1551fab9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['maintain_5ffree_5fcluster_5fcount_1009',['MAINTAIN_FREE_CLUSTER_COUNT',['../_sd_fat_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.html deleted file mode 100644 index 4e8e63d2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.js deleted file mode 100644 index 8d776a9c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['null_1010',['NULL',['../_stdio_stream_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4',1,'StdioStream.h']]], - ['nullptr_1011',['nullptr',['../_sys_call_8h.html#ab979d9d4b4923f7c54d6caa6e1a61936',1,'SysCall.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.html deleted file mode 100644 index c737d1c7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.js deleted file mode 100644 index d747e8db..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['pgm_5fread_5fbyte_1012',['pgm_read_byte',['../_fat_file_8h.html#a48c60b057902adf805797f183286728d',1,'FatFile.h']]], - ['pgm_5fread_5fword_1013',['pgm_read_word',['../_fat_file_8h.html#a910fb5f01313d339d3b835d45e1e5ad0',1,'FatFile.h']]], - ['printf_5fuse_5ffloat_1014',['PRINTF_USE_FLOAT',['../_print_templates_8h.html#a26baac10baccbe6d4f13f98981dd202a',1,'PrintTemplates.h']]], - ['progmem_1015',['PROGMEM',['../_fat_file_8h.html#a75acaba9e781937468d0911423bc0c35',1,'FatFile.h']]], - ['pstr_1016',['PSTR',['../_fat_file_8h.html#a9c00057fd19e916cc1aa0a5949336beb',1,'FatFile.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.html deleted file mode 100644 index dcd8c1cd..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.js deleted file mode 100644 index cc6cf53b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_9.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['sd_5fchip_5fselect_5fmode_1017',['SD_CHIP_SELECT_MODE',['../_sd_fat_config_8h.html#ab81c0135853c34b24c8314849950f6ab',1,'SdFatConfig.h']]], - ['sd_5ffat_5fversion_1018',['SD_FAT_VERSION',['../_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210',1,'SdFat.h']]], - ['sd_5fhas_5fcustom_5fspi_1019',['SD_HAS_CUSTOM_SPI',['../_sd_fat_config_8h.html#a838861a01379e94361148d22e62b1977',1,'SdFatConfig.h']]], - ['sd_5fmax_5finit_5frate_5fkhz_1020',['SD_MAX_INIT_RATE_KHZ',['../_sd_fat_config_8h.html#adb969469c422c2da5438963623bdfbd3',1,'SdFatConfig.h']]], - ['sd_5fsck_5fhz_1021',['SD_SCK_HZ',['../_sd_spi_driver_8h.html#a7509778808cb232d96b7c45ad76034b0',1,'SdSpiDriver.h']]], - ['sd_5fsck_5fmhz_1022',['SD_SCK_MHZ',['../_sd_spi_driver_8h.html#af9d0d377262ffe2bf47d8604381a5ec1',1,'SdSpiDriver.h']]], - ['sdfat_5ffile_5ftype_1023',['SDFAT_FILE_TYPE',['../_sd_fat_config_8h.html#acdbec9ae1f12e4154878ac10672103fb',1,'SdFatConfig.h']]], - ['seek_5fcur_1024',['SEEK_CUR',['../_stdio_stream_8h.html#a4c8d0b76b470ba65a43ca46a88320f39',1,'StdioStream.h']]], - ['seek_5fend_1025',['SEEK_END',['../_stdio_stream_8h.html#ad2a2e6c114780c3071efd24f16c7f7d8',1,'StdioStream.h']]], - ['seek_5fset_1026',['SEEK_SET',['../_stdio_stream_8h.html#a0d112bae8fd35be772185b6ec6bcbe64',1,'StdioStream.h']]], - ['shared_5fspi_1027',['SHARED_SPI',['../_sd_spi_driver_8h.html#a5601868235dd7041b2e6e0be9445fe5d',1,'SdSpiDriver.h']]], - ['spi_5fdiv3_5fspeed_1028',['SPI_DIV3_SPEED',['../_sd_spi_driver_8h.html#a2d3c9c75ba6bea3fbcb82c2d0fbc21bb',1,'SdSpiDriver.h']]], - ['spi_5fdiv6_5fspeed_1029',['SPI_DIV6_SPEED',['../_sd_spi_driver_8h.html#acbca47c0a33eec35109cea773bb65ee0',1,'SdSpiDriver.h']]], - ['spi_5fdriver_5fselect_1030',['SPI_DRIVER_SELECT',['../_sd_fat_config_8h.html#a6761799c8dffafbf5b7dd914772be28c',1,'SdFatConfig.h']]], - ['spi_5feighth_5fspeed_1031',['SPI_EIGHTH_SPEED',['../_sd_spi_driver_8h.html#a4818fb924fd75160a3fcd5d14abdc375',1,'SdSpiDriver.h']]], - ['spi_5ffull_5fspeed_1032',['SPI_FULL_SPEED',['../_sd_spi_driver_8h.html#a785afdf191e080f93703ad0a6f8f3d3b',1,'SdSpiDriver.h']]], - ['spi_5fhalf_5fspeed_1033',['SPI_HALF_SPEED',['../_sd_spi_driver_8h.html#af7493f43efa1c1be2b718bd3cc759d0e',1,'SdSpiDriver.h']]], - ['spi_5fquarter_5fspeed_1034',['SPI_QUARTER_SPEED',['../_sd_spi_driver_8h.html#a3bfd4f8b788952234111778be51087ae',1,'SdSpiDriver.h']]], - ['spi_5fsixteenth_5fspeed_1035',['SPI_SIXTEENTH_SPEED',['../_sd_spi_driver_8h.html#a6d3bbc68aed8dc3948669d0d40f4eb11',1,'SdSpiDriver.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.html deleted file mode 100644 index e11f42d4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.js deleted file mode 100644 index 6a7e89c8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_a.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['use_5fblock_5fdevice_5finterface_1036',['USE_BLOCK_DEVICE_INTERFACE',['../_sd_fat_config_8h.html#ae92cc0fb2a31925cfc5694feb048dca2',1,'SdFatConfig.h']]], - ['use_5fexfat_5fbitmap_5fcache_1037',['USE_EXFAT_BITMAP_CACHE',['../_sd_fat_config_8h.html#a8d3fca2607182c1ba389dd61c283a3e2',1,'SdFatConfig.h']]], - ['use_5ffat_5ffile_5fflag_5fcontiguous_1038',['USE_FAT_FILE_FLAG_CONTIGUOUS',['../_sd_fat_config_8h.html#ad42a354208ecb245adfc238266a612e5',1,'SdFatConfig.h']]], - ['use_5ffcntl_5fh_1039',['USE_FCNTL_H',['../_sd_fat_config_8h.html#ab4b7255422e65730612f1f6af1a26752',1,'SdFatConfig.h']]], - ['use_5flong_5ffile_5fnames_1040',['USE_LONG_FILE_NAMES',['../_sd_fat_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'SdFatConfig.h']]], - ['use_5fmulti_5fsector_5fio_1041',['USE_MULTI_SECTOR_IO',['../_sd_fat_config_8h.html#ae477a983188d4370faff32b07a5cfacb',1,'SdFatConfig.h']]], - ['use_5fsd_5fcrc_1042',['USE_SD_CRC',['../_sd_fat_config_8h.html#af2e76ffb2fdb830175abf513dd640fdd',1,'SdFatConfig.h']]], - ['use_5fseparate_5ffat_5fcache_1043',['USE_SEPARATE_FAT_CACHE',['../_sd_fat_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'SdFatConfig.h']]], - ['use_5fsimple_5flittle_5fendian_1044',['USE_SIMPLE_LITTLE_ENDIAN',['../_sd_fat_config_8h.html#a9d4fac424e31b4383a10211f0489d93b',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.html deleted file mode 100644 index ad79b9de..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.js deleted file mode 100644 index e3599b73..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/defines_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['wdt_5fyield_5ftime_5fmillis_1045',['WDT_YIELD_TIME_MILLIS',['../_sd_fat_config_8h.html#a03b3cad4ee9ca6915330f41b2924bca1',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.html deleted file mode 100644 index ae7a8844..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.js deleted file mode 100644 index a0b6ed00..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['seekdir_981',['seekdir',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191e',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.html deleted file mode 100644 index 1c0bbf93..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.js deleted file mode 100644 index 696625bd..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['beg_982',['beg',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea6639b4dd9e9b57ffef4a176cd1a1e7bb',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.html deleted file mode 100644 index 070fd0b8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.js deleted file mode 100644 index 97e5834c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['cur_983',['cur',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea53910041525b9e2f33bfc3bb4482134c',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.html deleted file mode 100644 index 25e9a370..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.js deleted file mode 100644 index 1b49f61d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/enumvalues_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['end_984',['end',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191eaae47c0ae984e90b38907783a1a804811',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.html deleted file mode 100644 index de151d53..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.js deleted file mode 100644 index 443dc8b8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arduinostream_2eh_569',['ArduinoStream.h',['../_arduino_stream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.html deleted file mode 100644 index 73e2c8bc..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.js deleted file mode 100644 index 055bacd2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['blockdeviceinterface_2eh_570',['BlockDeviceInterface.h',['../_block_device_interface_8h.html',1,'']]], - ['bufferedprint_2eh_571',['BufferedPrint.h',['../_buffered_print_8h.html',1,'']]], - ['bufstream_2eh_572',['bufstream.h',['../bufstream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.html deleted file mode 100644 index 24cb5419..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.js deleted file mode 100644 index 7a001d4e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['exfatfile_2eh_573',['ExFatFile.h',['../_ex_fat_file_8h.html',1,'']]], - ['exfatpartition_2eh_574',['ExFatPartition.h',['../_ex_fat_partition_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.html deleted file mode 100644 index ef0b0ff7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.js deleted file mode 100644 index 0f5871c3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_3.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['fatfile_2eh_575',['FatFile.h',['../_fat_file_8h.html',1,'']]], - ['fatlibconfig_2eh_576',['FatLibConfig.h',['../_fat_lib_config_8h.html',1,'']]], - ['fatpartition_2eh_577',['FatPartition.h',['../_fat_partition_8h.html',1,'']]], - ['fatvolume_2eh_578',['FatVolume.h',['../_fat_volume_8h.html',1,'']]], - ['freestack_2eh_579',['FreeStack.h',['../_free_stack_8h.html',1,'']]], - ['fsfile_2eh_580',['FsFile.h',['../_fs_file_8h.html',1,'']]], - ['fslib_2eh_581',['FsLib.h',['../_fs_lib_8h.html',1,'']]], - ['fstream_2eh_582',['fstream.h',['../fstream_8h.html',1,'']]], - ['fsvolume_2eh_583',['FsVolume.h',['../_fs_volume_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.html deleted file mode 100644 index 324abe4f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.js deleted file mode 100644 index 7985a61d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ios_2eh_584',['ios.h',['../ios_8h.html',1,'']]], - ['iostream_2eh_585',['iostream.h',['../iostream_8h.html',1,'']]], - ['istream_2eh_586',['istream.h',['../istream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.html deleted file mode 100644 index 7d688167..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.js deleted file mode 100644 index be1cc990..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['minimumserial_2eh_587',['MinimumSerial.h',['../_minimum_serial_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.html deleted file mode 100644 index cc06fb25..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.js deleted file mode 100644 index f218425b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ostream_2eh_588',['ostream.h',['../ostream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.html deleted file mode 100644 index 10c2046e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.js deleted file mode 100644 index ccc95901..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['printtemplates_2eh_589',['PrintTemplates.h',['../_print_templates_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.html deleted file mode 100644 index 6ee57c51..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.js deleted file mode 100644 index a3c0b353..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/files_8.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['sdfat_2eh_590',['SdFat.h',['../_sd_fat_8h.html',1,'']]], - ['sdfatconfig_2eh_591',['SdFatConfig.h',['../_sd_fat_config_8h.html',1,'']]], - ['sdios_2eh_592',['sdios.h',['../sdios_8h.html',1,'']]], - ['sdspiarduinodriver_2eh_593',['SdSpiArduinoDriver.h',['../_sd_spi_arduino_driver_8h.html',1,'']]], - ['sdspibaseclass_2eh_594',['SdSpiBaseClass.h',['../_sd_spi_base_class_8h.html',1,'']]], - ['sdspicard_2eh_595',['SdSpiCard.h',['../_sd_spi_card_8h.html',1,'']]], - ['sdspidriver_2eh_596',['SdSpiDriver.h',['../_sd_spi_driver_8h.html',1,'']]], - ['sdspilibdriver_2eh_597',['SdSpiLibDriver.h',['../_sd_spi_lib_driver_8h.html',1,'']]], - ['sdspisoftdriver_2eh_598',['SdSpiSoftDriver.h',['../_sd_spi_soft_driver_8h.html',1,'']]], - ['stdiostream_2eh_599',['StdioStream.h',['../_stdio_stream_8h.html',1,'']]], - ['syscall_2eh_600',['SysCall.h',['../_sys_call_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.html deleted file mode 100644 index 8a729f78..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.js deleted file mode 100644 index 23e9bb1b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['activate_601',['activate',['../class_sd_spi_arduino_driver.html#abb6b88c5c8b87fc344a69f23f6eab3d9',1,'SdSpiArduinoDriver::activate()'],['../class_sd_spi_base_class.html#ace7d46253efcaaab8b6be50cc17233e4',1,'SdSpiBaseClass::activate()'],['../class_sd_spi_soft_driver.html#abed1f06be38711517f622f537657c89f',1,'SdSpiSoftDriver::activate()']]], - ['arduinoinstream_602',['ArduinoInStream',['../class_arduino_in_stream.html#a61ee22a5824849ec3261ee2f814dfb93',1,'ArduinoInStream']]], - ['arduinooutstream_603',['ArduinoOutStream',['../class_arduino_out_stream.html#a228b667f9f53dc91c6ed7735d34f04a8',1,'ArduinoOutStream']]], - ['available_604',['available',['../class_minimum_serial.html#a2abe4370989968938b5dc4872d51c3df',1,'MinimumSerial::available()'],['../class_ex_fat_file.html#a1eae02704b69e903ea174c5d0744debb',1,'ExFatFile::available()'],['../class_fat_file.html#a4baea142c9cd53293a93ef3d6a67aa16',1,'FatFile::available()'],['../class_stream_file.html#a0112cc39b64aac6f1ec47741397a7582',1,'StreamFile::available()'],['../class_fs_base_file.html#a5762772ce4e72776c2806af21c1251b8',1,'FsBaseFile::available()']]], - ['available32_605',['available32',['../class_fat_file.html#a651ffa37e7e586fc3c2de8cbbd500ea6',1,'FatFile']]], - ['available64_606',['available64',['../class_ex_fat_file.html#adcf47e15b819fe2d6faac2a027ab30f5',1,'ExFatFile']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.html deleted file mode 100644 index d4929aaf..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.js deleted file mode 100644 index c2ce042a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_1.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['bad_607',['bad',['../classios.html#a78be4e3069a644ff36d83a70b080c321',1,'ios']]], - ['begin_608',['begin',['../class_buffered_print.html#a1382e2cedf67d12aa3ba056b0e7b10d3',1,'BufferedPrint::begin()'],['../class_minimum_serial.html#a5c56beb3472bb97f949defeecacda52c',1,'MinimumSerial::begin()'],['../class_sd_base.html#abff5f318cfe072b80119f1938cd591bb',1,'SdBase::begin(SdCsPin_t csPin=SS)'],['../class_sd_base.html#a94081827e77063eacf6fa035143cfde1',1,'SdBase::begin(SdCsPin_t csPin, uint32_t maxSck)'],['../class_sd_base.html#a5748f43d73a4272ec8dc302fb0213556',1,'SdBase::begin(SdSpiConfig spiConfig)'],['../class_sd_base.html#ab6343925e4605897d4a1c39be6705760',1,'SdBase::begin(SdioConfig sdioConfig)'],['../class_ex_fat_volume.html#ade318d2517a1bd3abe56e9e530fdcd78',1,'ExFatVolume::begin()'],['../class_fat_volume.html#af3a219ea89bbbf310a61115c9a3d221a',1,'FatVolume::begin()'],['../class_sdio_card.html#afbb5ab075dfd16ceebfcba5a20e70434',1,'SdioCard::begin()'],['../class_sd_spi_card.html#a6c256f8dcfa7f9d1fac165eed942ab73',1,'SdSpiCard::begin()'],['../class_sd_spi_arduino_driver.html#ae837a6d51bfe5518cb4744581824db88',1,'SdSpiArduinoDriver::begin()'],['../class_sd_spi_base_class.html#ad0cef6e2a3d21e438a2b7f428a218c03',1,'SdSpiBaseClass::begin()'],['../class_sd_spi_soft_driver.html#acb6b99f42e9a1b3a66adf520291dd647',1,'SdSpiSoftDriver::begin()=0'],['../class_sd_spi_soft_driver.html#af122eab393d7336ae3a86d80ebd62627',1,'SdSpiSoftDriver::begin(SdSpiConfig spiConfig)'],['../class_soft_spi_driver.html#a10552c46ff7d74df7b90081547357a13',1,'SoftSpiDriver::begin()'],['../class_fs_volume.html#ae587e7c114b0af86ec0b2927300133b0',1,'FsVolume::begin()']]], - ['boolalpha_609',['boolalpha',['../ios_8h.html#a0016daaaf730481e2ad36972fa7abb17',1,'ios.h']]], - ['buf_610',['buf',['../classobufstream.html#a4f699181bd3727f4288f4f95a5ce207f',1,'obufstream']]], - ['buffer_611',['buffer',['../class_fat_cache.html#a50b61cdeeff5c5dfd2a4bd7430ef19ac',1,'FatCache']]], - ['bufferedprint_612',['BufferedPrint',['../class_buffered_print.html#af879eab3e69cfd9d15768451e091c6a2',1,'BufferedPrint']]], - ['bytespercluster_613',['bytesPerCluster',['../class_ex_fat_partition.html#ac2b5adafda0a9b52ffedf964e355da31',1,'ExFatPartition::bytesPerCluster()'],['../class_fat_partition.html#a1c3ab374b425c27bb6b6ddd55752c056',1,'FatPartition::bytesPerCluster()'],['../class_fs_volume.html#a770e0dca5ed7f8d3ca63768da38042cb',1,'FsVolume::bytesPerCluster()']]], - ['bytesperclustershift_614',['bytesPerClusterShift',['../class_ex_fat_partition.html#aedaebff39e7cbae66f226e9c7593b5b6',1,'ExFatPartition::bytesPerClusterShift()'],['../class_fat_partition.html#aaf43a09e71689c257f4b189ee307db4f',1,'FatPartition::bytesPerClusterShift()']]], - ['bytespersector_615',['bytesPerSector',['../class_ex_fat_partition.html#a3859310dde1f70daaca0ebcf274cb558',1,'ExFatPartition::bytesPerSector()'],['../class_fat_partition.html#a1eba03c763bab44263735488435731f8',1,'FatPartition::bytesPerSector()']]], - ['bytespersectorshift_616',['bytesPerSectorShift',['../class_ex_fat_partition.html#a226e452b6ae5c6846059e4acd21be1f1',1,'ExFatPartition::bytesPerSectorShift()'],['../class_fat_partition.html#a4e513ab3fcfb95583092793116aa4df5',1,'FatPartition::bytesPerSectorShift()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.html deleted file mode 100644 index 839ba330..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.js deleted file mode 100644 index 49f81628..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_10.js +++ /dev/null @@ -1,43 +0,0 @@ -var searchData= -[ - ['sdcsinit_821',['sdCsInit',['../_sd_spi_driver_8h.html#ad4854101780daaa378827ecb62ef86d9',1,'SdSpiChipSelect.cpp']]], - ['sdcswrite_822',['sdCsWrite',['../_sd_spi_driver_8h.html#ac469bbe2d31ffde9b00ffc68258d7428',1,'SdSpiChipSelect.cpp']]], - ['sderrorcode_823',['sdErrorCode',['../class_sd_base.html#af2bb8fea732f9272a2e98772fbcc4595',1,'SdBase']]], - ['sderrordata_824',['sdErrorData',['../class_sd_base.html#a5f8f363b6c23f1d8bfeb858c946f1994',1,'SdBase']]], - ['sdfile_825',['SdFile',['../class_sd_file.html#ad05be3a1fb635448d15a154424b6c33f',1,'SdFile']]], - ['sdioconfig_826',['SdioConfig',['../class_sdio_config.html#a1eaa863465cec6f67210b4888532b3dd',1,'SdioConfig']]], - ['sdspicard_827',['SdSpiCard',['../class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8',1,'SdSpiCard']]], - ['sdspiconfig_828',['SdSpiConfig',['../class_sd_spi_config.html#a3c68a4b6ddc549abfb62fa662b59ef10',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t *port)'],['../class_sd_spi_config.html#adb0a2a3d7dc801305fef5167d538abe1',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed)'],['../class_sd_spi_config.html#a30087e90e8c4043aed90693c3be5855b',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs, uint8_t opt)'],['../class_sd_spi_config.html#a038e3578396f4682f1b8cd0b934f42f1',1,'SdSpiConfig::SdSpiConfig(SdCsPin_t cs)']]], - ['sector_829',['sector',['../class_fs_cache.html#a5b90e145400de8687d9f34536b134130',1,'FsCache::sector()'],['../class_fat_cache.html#a1a9d892b5a68463598bb39d2732cb664',1,'FatCache::sector()']]], - ['sectorcount_830',['sectorCount',['../class_block_device_interface.html#a1531ba16d499510ae60be288112faae1',1,'BlockDeviceInterface::sectorCount()'],['../class_sd_card_interface.html#a1a8c37709b578bffc556240f6f03a8da',1,'SdCardInterface::sectorCount()'],['../class_sdio_card.html#a49a502cf7b59dc559a6c75a3285e6c1a',1,'SdioCard::sectorCount()'],['../class_sd_spi_card.html#a463ee796cf57c7e3e93f7817895fc492',1,'SdSpiCard::sectorCount()']]], - ['sectormask_831',['sectorMask',['../class_fat_partition.html#a6b970fa2e06de1a826b09e251dc3119b',1,'FatPartition']]], - ['sectorspercluster_832',['sectorsPerCluster',['../class_ex_fat_partition.html#a12798377b4d3cb16891607c543d0bded',1,'ExFatPartition::sectorsPerCluster()'],['../class_fat_partition.html#a836546c368e6ffe117e6ab8775d23eba',1,'FatPartition::sectorsPerCluster()'],['../class_fs_volume.html#acf62acd37d3f59dedd3e34b3e7d64da0',1,'FsVolume::sectorsPerCluster()']]], - ['sectorsperclustershift_833',['sectorsPerClusterShift',['../class_ex_fat_partition.html#aa4ff8402ba78a2de52ed61175a044ee3',1,'ExFatPartition::sectorsPerClusterShift()'],['../class_fat_partition.html#a593a27482ff8d993542d6f82bd92e26c',1,'FatPartition::sectorsPerClusterShift()']]], - ['sectorsperfat_834',['sectorsPerFat',['../class_fat_partition.html#a1f5c7599333dbe152a3cdd60623ce6d1',1,'FatPartition']]], - ['seek_835',['seek',['../class_stream_file.html#a773ee6f661fc689a5187f51cb5498086',1,'StreamFile::seek()'],['../class_fs_base_file.html#ae86486f4e20f4924797124f9c6042bfd',1,'FsBaseFile::seek()']]], - ['seekcur_836',['seekCur',['../class_ex_fat_file.html#ab42494880cf229adfb0fc8edb0647686',1,'ExFatFile::seekCur()'],['../class_fat_file.html#a5812037ea30777cc350698ad26f2c73f',1,'FatFile::seekCur()'],['../class_fs_base_file.html#a5fa242a4598eab5caa6efd4bdf62f5c0',1,'FsBaseFile::seekCur()']]], - ['seekend_837',['seekEnd',['../class_ex_fat_file.html#a2994a71751ed4f137f48b2e9a7d94091',1,'ExFatFile::seekEnd()'],['../class_fat_file.html#a84f677f4e75ef6fa2eb632f4cdf6b486',1,'FatFile::seekEnd()'],['../class_fs_base_file.html#ade9f9a9ac4d3e0a392a6cc45c9551767',1,'FsBaseFile::seekEnd()']]], - ['seekg_838',['seekg',['../classistream.html#a52d637b1aeca9946085a4a72e0208aec',1,'istream::seekg(pos_type pos)'],['../classistream.html#a60dd48a3b374fb9cbdc59e1f930dea95',1,'istream::seekg(off_type off, seekdir way)']]], - ['seekp_839',['seekp',['../classostream.html#a18b453d2770a8852c312cbda919c4687',1,'ostream::seekp(pos_type pos)'],['../classostream.html#af6265a5be29237517b30673667ba4213',1,'ostream::seekp(off_type off, seekdir way)']]], - ['seekset_840',['seekSet',['../class_ex_fat_file.html#a9834c4da2f14c66f4bda26938ebb36f6',1,'ExFatFile::seekSet()'],['../class_fat_file.html#ab067190d25733ed7e697d9890f61fd7a',1,'FatFile::seekSet()'],['../class_fs_base_file.html#a460f7598c903b8a4b4fe868dacccb6dd',1,'FsBaseFile::seekSet()']]], - ['send_841',['send',['../class_sd_spi_arduino_driver.html#a3c4842e47f98fe5d3799cd6028778ab5',1,'SdSpiArduinoDriver::send(uint8_t data)'],['../class_sd_spi_arduino_driver.html#a0516f7cd20263f90f83c57c4c6ce14e4',1,'SdSpiArduinoDriver::send(const uint8_t *buf, size_t count)'],['../class_sd_spi_base_class.html#a28001200e3d464f5c6e910837924c577',1,'SdSpiBaseClass::send(uint8_t data)=0'],['../class_sd_spi_base_class.html#a51923b03f35af4bac7c3bb7c8d13303d',1,'SdSpiBaseClass::send(const uint8_t *buf, size_t count)=0'],['../class_sd_spi_soft_driver.html#a89eff51e8313d9b27c3641cd8310d022',1,'SdSpiSoftDriver::send(uint8_t data)=0'],['../class_sd_spi_soft_driver.html#a5607c2b3773e25404880a93e5e7a23a1',1,'SdSpiSoftDriver::send(const uint8_t *buf, size_t count)'],['../class_soft_spi_driver.html#ae465952c49043991ec808c2f1eca8e9c',1,'SoftSpiDriver::send()']]], - ['setcallback_842',['setCallback',['../namespace_fs_date_time.html#afae6e23c2ed7d8194023d19d87fb1b62',1,'FsDateTime::setCallback(void(*dateTime)(uint16_t *date, uint16_t *time))'],['../namespace_fs_date_time.html#aa48bd625d32aae8fcfe67aba1d080be3',1,'FsDateTime::setCallback(void(*dateTime)(uint16_t *date, uint16_t *time, uint8_t *ms10))']]], - ['setf_843',['setf',['../classios__base.html#ab5db835cb45bba7684ebf72d9a3cccb4',1,'ios_base::setf(fmtflags fl)'],['../classios__base.html#a74dbc93607ab7d68a87ec326b92b6c81',1,'ios_base::setf(fmtflags fl, fmtflags mask)']]], - ['setfill_844',['setfill',['../structsetfill.html#abcd87f0632678d277df55406d25c8325',1,'setfill']]], - ['setprecision_845',['setprecision',['../structsetprecision.html#a73fce143591989f56ef887a2ea86ac45',1,'setprecision']]], - ['setsckspeed_846',['setSckSpeed',['../class_sd_spi_arduino_driver.html#acf0cc41d2bd80479237aa2799e119973',1,'SdSpiArduinoDriver::setSckSpeed()'],['../class_sd_spi_base_class.html#a937215f1dc238285bd140c11ab82bbc9',1,'SdSpiBaseClass::setSckSpeed()'],['../class_sd_spi_soft_driver.html#a6002aaab8f8a751cbfc3274b17856930',1,'SdSpiSoftDriver::setSckSpeed()']]], - ['setstate_847',['setstate',['../classios.html#aee5d194656bdfb0c8621b23ea2f51afb',1,'ios']]], - ['setw_848',['setw',['../structsetw.html#afd8bfd075474f63df3c8b44ad47517d2',1,'setw']]], - ['showbase_849',['showbase',['../ios_8h.html#a73159e1398939807aeae6015dd86f2f4',1,'ios.h']]], - ['showpoint_850',['showpoint',['../ios_8h.html#a322f5897ace09768cd782f0c8f222770',1,'ios.h']]], - ['showpos_851',['showpos',['../ios_8h.html#a80798554dbfece679adb0e05eb855943',1,'ios.h']]], - ['size_852',['size',['../class_stream_file.html#a5813d451e7f7ba57a04d177caffc5a9f',1,'StreamFile::size()'],['../class_fs_base_file.html#a1c27b009372668a9c2de4a57195b0b36',1,'FsBaseFile::size()']]], - ['skipwhite_853',['skipWhite',['../classistream.html#a0f7468be86d93de5d33fa99095898279',1,'istream']]], - ['skipws_854',['skipws',['../ios_8h.html#a972282e5d9d894f61c8a54423858c0a4',1,'ios.h']]], - ['spistart_855',['spiStart',['../class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c',1,'SdSpiCard']]], - ['spistop_856',['spiStop',['../class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1',1,'SdSpiCard']]], - ['status_857',['status',['../class_sd_card_interface.html#a6315bf0d5852bc24563b7977f7c7e5b4',1,'SdCardInterface::status()'],['../class_sdio_card.html#a58880a055e58410f8b22658b88622f63',1,'SdioCard::status()']]], - ['stdiostream_858',['StdioStream',['../class_stdio_stream.html#a96b2c027e76bfca6d6835c9ae1be2ad2',1,'StdioStream']]], - ['sync_859',['sync',['../class_buffered_print.html#a2253d1e7f231b94b18eab1281c123a49',1,'BufferedPrint::sync()'],['../class_ex_fat_file.html#a2cb3638069afd2d01b79e5dff1a66f55',1,'ExFatFile::sync()'],['../class_fs_cache.html#a5a2c8fb432d7b7590ebb43200ca21893',1,'FsCache::sync()'],['../class_fat_file.html#a67f3dc4896c542d695e11aac927f585e',1,'FatFile::sync()'],['../class_fat_cache.html#a4d76d4f46ce5994f6fc4678a7b4f8cf1',1,'FatCache::sync()'],['../class_fs_base_file.html#acf2d9261c5c1b1b022a0414cdfe0a17b',1,'FsBaseFile::sync()']]], - ['syncdevice_860',['syncDevice',['../class_block_device_interface.html#a23e30999f1cc03da99e285cf180dbbb7',1,'BlockDeviceInterface::syncDevice()'],['../class_sdio_card.html#a1201ec7a6fa91b73a1daa584a1b055f7',1,'SdioCard::syncDevice()'],['../class_sd_spi_card.html#ac9f3bfbfc5029f93da1fa233cbe617c4',1,'SdSpiCard::syncDevice()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.html deleted file mode 100644 index 9d548c4f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.js deleted file mode 100644 index 765ad36a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_11.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['tellg_861',['tellg',['../classistream.html#a18332bdcb7fbe33ca06045c786cac4c3',1,'istream']]], - ['tellp_862',['tellp',['../classostream.html#a92dec0e2bc8352df1419d1cdc434e619',1,'ostream']]], - ['timestamp_863',['timestamp',['../class_ex_fat_file.html#a6d3ab10983e206401ebd5c24a1c46174',1,'ExFatFile::timestamp()'],['../class_fat_file.html#a56dabdf73833b7e961c4530eb8e16d23',1,'FatFile::timestamp()'],['../class_fs_base_file.html#acea65e639feebaac01964af02a77d324',1,'FsBaseFile::timestamp()']]], - ['truncate_864',['truncate',['../class_ex_fat_file.html#aca37955d3c7cce40f7f9e1ea078e5636',1,'ExFatFile::truncate()'],['../class_ex_fat_file.html#a6262b0d6d43d2a426953a0a7d90f624f',1,'ExFatFile::truncate(uint64_t length)'],['../class_ex_fat_volume.html#ae5cbcdd7907a882b4686cb3ba7e85bcc',1,'ExFatVolume::truncate(const ExChar_t *path, uint64_t length)'],['../class_ex_fat_volume.html#ae6d409b7f24593dca7aae70513e18b70',1,'ExFatVolume::truncate(const String &path, uint64_t length)'],['../class_fat_file.html#a7dda881dac19ea2aa9b2e85a229a98d7',1,'FatFile::truncate()'],['../class_fat_file.html#aa6e663098a578635d37d92e82d18d616',1,'FatFile::truncate(uint32_t length)'],['../class_fat_volume.html#a86a08bf789e33567418465b9b12751e2',1,'FatVolume::truncate(const char *path, uint32_t length)'],['../class_fat_volume.html#a97ef39ec02c38c0772f0029d42edcb46',1,'FatVolume::truncate(const String &path, uint32_t length)'],['../class_fs_base_file.html#a2a0bf00241df08a604f054512746986b',1,'FsBaseFile::truncate()'],['../class_fs_base_file.html#a47247cc54157ef79e0752f55ba01cf7e',1,'FsBaseFile::truncate(uint64_t length)']]], - ['type_865',['type',['../class_sd_card_interface.html#a80796bc06b4090c15b3d46e651dd38c8',1,'SdCardInterface::type()'],['../class_sdio_card.html#a22451464dba5275838908c2d19392850',1,'SdioCard::type()'],['../class_sd_spi_card.html#ac53e0f3575db5be26dcba825bab3ca12',1,'SdSpiCard::type()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.html deleted file mode 100644 index 16f6ecce..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.js deleted file mode 100644 index 4d045b07..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_12.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['ungetc_866',['ungetc',['../class_stdio_stream.html#ac00e0dd906c2e857ece53794c6c92786',1,'StdioStream']]], - ['unsetf_867',['unsetf',['../classios__base.html#a3bf7d054a433ed15e8b984e16f630fa4',1,'ios_base']]], - ['unusedstack_868',['UnusedStack',['../_free_stack_8h.html#a0a6400cf785c9647c0bacb76b15851de',1,'FreeStack.cpp']]], - ['uppercase_869',['uppercase',['../ios_8h.html#af5d5e1a0effa1b500bb882feed5a2061',1,'ios.h']]], - ['usedma_870',['useDma',['../class_sdio_config.html#a07ddb8b18bf24fa61fdd289a112e79a8',1,'SdioConfig']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.html deleted file mode 100644 index a552a4f2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.js deleted file mode 100644 index d64d96c5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_13.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['validlength_871',['validLength',['../class_ex_fat_file.html#afc8af11ba8e3a830dff1dd5e59446243',1,'ExFatFile']]], - ['vfprintf_872',['vfprintf',['../_print_templates_8h.html#aa3bc14da82a850b0f8ce848a6d54045f',1,'PrintTemplates.h']]], - ['vmprintf_873',['vmprintf',['../_print_templates_8h.html#ad139f8bf9b6ead8bd28abf1dd412a8a4',1,'PrintTemplates.h']]], - ['vol_874',['vol',['../class_sd_base.html#a20ed1868a6498cd336364c22d1df28a5',1,'SdBase']]], - ['volumebegin_875',['volumeBegin',['../class_sd_base.html#a1f1de2aac5384475b67506f86199e4c8',1,'SdBase']]], - ['volumesectorcount_876',['volumeSectorCount',['../class_fat_partition.html#a916ba7d67711bb62daf12ecd47ca4b8e',1,'FatPartition']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.html deleted file mode 100644 index 97f0dcb8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.js deleted file mode 100644 index d72179df..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_14.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['width_877',['width',['../classios__base.html#afa30e7644b4eae5928ad9c487ad387de',1,'ios_base::width()'],['../classios__base.html#ab2ba0f005bbf3d8ebed93b64068492e0',1,'ios_base::width(unsigned n)']]], - ['write_878',['write',['../class_buffered_print.html#ab41de6eca77a04a49a6fc965b1950fc5',1,'BufferedPrint::write()'],['../class_minimum_serial.html#a0ca1d9631fe5f2f00878bd481dbbd3aa',1,'MinimumSerial::write()'],['../class_ex_fat_file.html#a6fb2905a5e363554a5118b5d1322cd87',1,'ExFatFile::write(const char *str)'],['../class_ex_fat_file.html#afd011d17d66707623c28927a63f81015',1,'ExFatFile::write(uint8_t b)'],['../class_ex_fat_file.html#abc1423c7b550614d1067e7173f8b46a8',1,'ExFatFile::write(const void *buf, size_t count)'],['../class_fat_file.html#a081dd810835f1ebf8c23ffe92706b485',1,'FatFile::write(const char *str)'],['../class_fat_file.html#ae51e724ac6cc3d67d64a5a666d5850f1',1,'FatFile::write(uint8_t b)'],['../class_fat_file.html#a5d84d871ac904a22aa48308713d14682',1,'FatFile::write(const void *buf, size_t count)'],['../class_print_file.html#a52f78f160083b416d66e23c680e0577d',1,'PrintFile::write()'],['../class_stream_file.html#a0695220134825199b39dee82f18ab1ec',1,'StreamFile::write(uint8_t b)'],['../class_stream_file.html#a0ace3aaaf6d0fb673a43059c0664fab6',1,'StreamFile::write(const uint8_t *buffer, size_t size)'],['../class_fs_base_file.html#a023c0392aa72b32652546f48ef8ba1e5',1,'FsBaseFile::write(uint8_t b)'],['../class_fs_base_file.html#aa763e83fea4889828effc3308f13113a',1,'FsBaseFile::write(const void *buf, size_t count)']]], - ['writedata_879',['writeData',['../class_sd_card_interface.html#ad12a0053d3e832da694bd8d3d66adbc1',1,'SdCardInterface::writeData()'],['../class_sdio_card.html#a8467e7ffafa45ff930b38a6f18e9547a',1,'SdioCard::writeData()'],['../class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa',1,'SdSpiCard::writeData()']]], - ['writesector_880',['writeSector',['../class_block_device_interface.html#a8a4be0a85c3771c705617fad98303e49',1,'BlockDeviceInterface::writeSector()'],['../class_sdio_card.html#a74919a168bac68028ce62222500cf238',1,'SdioCard::writeSector()'],['../class_sd_spi_card.html#a9a230924d82c5df07df592c571bc3fa5',1,'SdSpiCard::writeSector()']]], - ['writesectors_881',['writeSectors',['../class_block_device_interface.html#a5cb063692a65f092ccdfd14f8700b58a',1,'BlockDeviceInterface::writeSectors()'],['../class_sdio_card.html#a55e2fc82ef9ecf7272a94b565c50303b',1,'SdioCard::writeSectors()'],['../class_sd_spi_card.html#a4165166d5d038c8f1c00c5a04e9f8a63',1,'SdSpiCard::writeSectors()']]], - ['writesingle_882',['writeSingle',['../class_sd_spi_card.html#a3172d671447410f19447b78b856a9689',1,'SdSpiCard']]], - ['writestart_883',['writeStart',['../class_sd_card_interface.html#abf04f87ec5c49fe6d9e23c8ac4cf482d',1,'SdCardInterface::writeStart()'],['../class_sdio_card.html#a1edd70537e2d7fa556532790cf413b5c',1,'SdioCard::writeStart(uint32_t sector)'],['../class_sdio_card.html#a82fe097fdbae26b3c8f92f215499cdf3',1,'SdioCard::writeStart(uint32_t sector, uint32_t count)'],['../class_sd_spi_card.html#ae46068850a0cb9f142d5b0b0147716fa',1,'SdSpiCard::writeStart(uint32_t sector)'],['../class_sd_spi_card.html#a785250ef0281fbb1cbe5078de9e80be3',1,'SdSpiCard::writeStart(uint32_t sector, uint32_t eraseCount)']]], - ['writestop_884',['writeStop',['../class_sd_card_interface.html#a2eac04896a05bd57730e96708934970f',1,'SdCardInterface::writeStop()'],['../class_sdio_card.html#acb560c2ea1f30c646b96f02e728b0fe1',1,'SdioCard::writeStop()'],['../class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0',1,'SdSpiCard::writeStop()']]], - ['ws_885',['ws',['../iostream_8h.html#a8adf4c714b8c8f201dedc83ee04556b1',1,'iostream.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.html deleted file mode 100644 index fbd092e6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.js deleted file mode 100644 index 7962967f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['yield_886',['yield',['../class_sys_call.html#a2219ba5ea8e411b022a3a00df5f380e0',1,'SysCall']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.html deleted file mode 100644 index 07e3fdad..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.js deleted file mode 100644 index f8c579e6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_2.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['cachebuffer_617',['cacheBuffer',['../class_fs_cache.html#a1533fdfef219ae4f3d6fb9299f51a1ee',1,'FsCache']]], - ['cacheclear_618',['cacheClear',['../class_ex_fat_partition.html#a63fac808e421ed5c8e72a37616ac56ac',1,'ExFatPartition::cacheClear()'],['../class_fat_partition.html#abf74c1e3c714b396e6271aee304c2448',1,'FatPartition::cacheClear()']]], - ['card_619',['card',['../class_sd_base.html#a1516a55bdab1ee7fe56848808986ae34',1,'SdBase']]], - ['cardbegin_620',['cardBegin',['../class_sd_base.html#a7a5e3b08f6cdd94cfaa19a1b43df6ed9',1,'SdBase::cardBegin(SdSpiConfig spiConfig)'],['../class_sd_base.html#a64cd10a3ce5ee342d0fd31738f385362',1,'SdBase::cardBegin(SdioConfig sdioConfig)']]], - ['chdir_621',['chdir',['../class_ex_fat_volume.html#abdc1addfc9474bf42cab31bcb49b4b65',1,'ExFatVolume::chdir()'],['../class_ex_fat_volume.html#a4e0a0e838088f31b15a36925f21c314c',1,'ExFatVolume::chdir(const ExChar_t *path)'],['../class_ex_fat_volume.html#afb7a1d7e4de9690b2c63cc8cd22ab4b5',1,'ExFatVolume::chdir(const String &path)'],['../class_fat_volume.html#a659d921b3efd52d310a33cba69eff18b',1,'FatVolume::chdir()'],['../class_fat_volume.html#ac0f6cf6ece2285af777c1fdf5cf8c219',1,'FatVolume::chdir(const char *path)'],['../class_fat_volume.html#ac591520e33ff8ba51e80782a87423872',1,'FatVolume::chdir(const String &path)'],['../class_fs_volume.html#abcc645df09441d40c476e4981393c944',1,'FsVolume::chdir()'],['../class_fs_volume.html#ac4f62724d5eeaec3582594bb3b4c3e65',1,'FsVolume::chdir(const char *path)'],['../class_fs_volume.html#a6c0758acb32b59c1861cc143612765d2',1,'FsVolume::chdir(const String &path)']]], - ['chvol_622',['chvol',['../class_ex_fat_volume.html#a6bcabab1ded2e71c1272c1baf009c2ab',1,'ExFatVolume::chvol()'],['../class_fat_volume.html#a36fbc19755b066068cac7c4ca578b27b',1,'FatVolume::chvol()'],['../class_fs_volume.html#a34a5bb7a97a081a7d74cf297f1fbee82',1,'FsVolume::chvol()']]], - ['clear_623',['clear',['../class_fs_cache.html#a734ac2e9931f141c9ba9a3ef021a8691',1,'FsCache::clear()'],['../classfstream.html#a682b278a6a299ffb21b8737717ff12bf',1,'fstream::clear()'],['../classofstream.html#a09edfdb3dbda20aff105e751001313f0',1,'ofstream::clear()'],['../classios.html#aa49ed6670d1743e7a373b2d915ec739a',1,'ios::clear()']]], - ['clearcallback_624',['clearCallback',['../namespace_fs_date_time.html#af88a1ebd9c91a474c79a641e716729a0',1,'FsDateTime']]], - ['clearerr_625',['clearerr',['../class_stdio_stream.html#aa737e5680fc2808a03a603ea8559d82b',1,'StdioStream']]], - ['clearerror_626',['clearError',['../class_ex_fat_file.html#ac2004e7bf328b3edda7d4c3acba2726f',1,'ExFatFile::clearError()'],['../class_fat_file.html#a052e2c15a39b322a5307b693b8835b22',1,'FatFile::clearError()']]], - ['clearwriteerror_627',['clearWriteError',['../class_ex_fat_file.html#abc0d3863895c17df53930bdfa84cb06f',1,'ExFatFile::clearWriteError()'],['../class_fat_file.html#aeca2a2eff91e6aa55fe1b0e3860c9a05',1,'FatFile::clearWriteError()'],['../class_fs_base_file.html#a936fc1e3fb13a6ae1352d027bf0a70f7',1,'FsBaseFile::clearWriteError()']]], - ['close_628',['close',['../class_ex_fat_file.html#a7ba9e04099bdf8fd34220ebfdde72867',1,'ExFatFile::close()'],['../class_fat_file.html#afd16af325e0642e4bff6430b7d8bb18b',1,'FatFile::close()'],['../classfstream.html#ac5720ee620c09d63dd186823e688ea9a',1,'fstream::close()'],['../classifstream.html#ac5892f472afdef6160f5fe2401b16dce',1,'ifstream::close()'],['../classofstream.html#a240f3752c7ff7a78d10c143d2083715f',1,'ofstream::close()'],['../class_fs_base_file.html#aa669c695a839e68e417fb15eebe3de13',1,'FsBaseFile::close()']]], - ['clustercount_629',['clusterCount',['../class_ex_fat_partition.html#a17b72f8a437c5663a04473606fd36d58',1,'ExFatPartition::clusterCount()'],['../class_fat_partition.html#aba35645c23735c4833c07bc2b3adcd1f',1,'FatPartition::clusterCount()'],['../class_fs_volume.html#abc9731fa79598460a37f10a2e561f29c',1,'FsVolume::clusterCount()']]], - ['clusterheapstartsector_630',['clusterHeapStartSector',['../class_ex_fat_partition.html#a2f75613844b26a2a574a0ee31005b1a0',1,'ExFatPartition']]], - ['contiguousrange_631',['contiguousRange',['../class_ex_fat_file.html#add39a8c7f7961321ba647e8da8f3d461',1,'ExFatFile::contiguousRange()'],['../class_fat_file.html#a12b3c5a763416ca62c70e3db74033cd0',1,'FatFile::contiguousRange()'],['../class_fs_base_file.html#adff091db3361b34a3f63ffeb495c27c7',1,'FsBaseFile::contiguousRange()']]], - ['createcontiguous_632',['createContiguous',['../class_fat_file.html#a0afc2a1cffa238d1cb2049bfa2d8d199',1,'FatFile::createContiguous(FatFile *dirFile, const char *path, uint32_t size)'],['../class_fat_file.html#a0853fbd44aee2798d14d8e3aed78f8bf',1,'FatFile::createContiguous(const char *path, uint32_t size)']]], - ['curcluster_633',['curCluster',['../class_fat_file.html#a526f3dd56ce205690e45ffc86ef6f891',1,'FatFile']]], - ['curposition_634',['curPosition',['../class_ex_fat_file.html#ab49396aad3f6500aa19f75490dc26719',1,'ExFatFile::curPosition()'],['../class_fat_file.html#a97e0620949f97e9b9c91ed1094d728aa',1,'FatFile::curPosition()'],['../class_fs_base_file.html#a856bccf55a40ebbea27072dcfea06191',1,'FsBaseFile::curPosition()']]], - ['curtimems_635',['curTimeMS',['../class_sys_call.html#aa508a9a3066020fc94765e4099490372',1,'SysCall']]], - ['cwv_636',['cwv',['../class_ex_fat_volume.html#a5b2a874ef0306425bf54c18454771b45',1,'ExFatVolume::cwv()'],['../class_fat_volume.html#a06acd4a434456b6a4644ff79a0bf0a24',1,'FatVolume::cwv()'],['../class_fs_volume.html#ab4fa0f21669b84e00d00fd54c3144a8f',1,'FsVolume::cwv()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.html deleted file mode 100644 index 40bd389e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.js deleted file mode 100644 index 96d5873a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_3.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['datalength_637',['dataLength',['../class_ex_fat_file.html#ada4dde9f2eed36bf556fcf1bd3d28ccf',1,'ExFatFile']]], - ['datastartsector_638',['dataStartSector',['../class_fat_partition.html#a7e89ec91780f7dfa060b261c605bf2e5',1,'FatPartition::dataStartSector()'],['../class_fs_volume.html#a79cebeb23cb3cdaa06550475fe24272a',1,'FsVolume::dataStartSector()']]], - ['datetimecallback_639',['dateTimeCallback',['../class_sd_file.html#a2d78e6a8cedbf8ce545af68457b43bf1',1,'SdFile']]], - ['datetimecallbackcancel_640',['dateTimeCallbackCancel',['../class_sd_file.html#ad266770d0a779d1a528a3997aee5142d',1,'SdFile']]], - ['dbgclearstats_641',['dbgClearStats',['../class_sd_spi_card.html#ab6cf8283dee415d9217eb758e75a98ef',1,'SdSpiCard']]], - ['dbgfat_642',['dbgFat',['../class_fat_partition.html#a0af1e91a311180119b4a2c85d7e6e87e',1,'FatPartition']]], - ['dbgprintstats_643',['dbgPrintStats',['../class_sd_spi_card.html#abdb02df511072aefb465a22858d92e06',1,'SdSpiCard']]], - ['deactivate_644',['deactivate',['../class_sd_spi_arduino_driver.html#ae88a255f533e3acb41d1221025a69b55',1,'SdSpiArduinoDriver::deactivate()'],['../class_sd_spi_base_class.html#ae3a5ede781e390263382fcf7765d665d',1,'SdSpiBaseClass::deactivate()'],['../class_sd_spi_soft_driver.html#a05315e4128ae7263d9e68119d6ae4308',1,'SdSpiSoftDriver::deactivate()']]], - ['dec_645',['dec',['../ios_8h.html#ada38ab90e22f0ebb638cb864a35c562d',1,'ios.h']]], - ['direntry_646',['dirEntry',['../class_fat_file.html#a2f4e9ab3056125b07f15d14ca26d5346',1,'FatFile']]], - ['dirindex_647',['dirIndex',['../class_ex_fat_file.html#a5e3baa5d5269c2948cfaf604c42f6a16',1,'ExFatFile::dirIndex()'],['../class_fat_file.html#ae5ec24d4a94d3780384d3f2b731c7eb9',1,'FatFile::dirIndex()'],['../class_fs_base_file.html#ac05660570595552c72164a61001899d5',1,'FsBaseFile::dirIndex()']]], - ['dirsize_648',['dirSize',['../class_fat_file.html#ae2ed15f05c9ccbce355e7a8d3ce8382d',1,'FatFile']]], - ['dirty_649',['dirty',['../class_fs_cache.html#af50f564561a2db190280769d4641147b',1,'FsCache::dirty()'],['../class_fat_cache.html#ab4d3b0c16bb6a116c7d01afff2dcb307',1,'FatCache::dirty()']]], - ['dmpfile_650',['dmpFile',['../class_fat_file.html#a4f01d27954ae49aeb6888ac7302f55d9',1,'FatFile']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.html deleted file mode 100644 index 8a4df4cd..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.js deleted file mode 100644 index d64198e7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_4.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['end_651',['end',['../class_sdio_card.html#aef8e287f0e2033d4afe5e7051c293334',1,'SdioCard::end()'],['../class_sd_spi_arduino_driver.html#a7f94ce98855bb3d1781bbad77741e494',1,'SdSpiArduinoDriver::end()'],['../class_fs_volume.html#acd5a0e50a30334785d75a8c8bfc3e1f9',1,'FsVolume::end()']]], - ['endl_652',['endl',['../iostream_8h.html#ab9868f8e151efc1705646437dbb59bb2',1,'iostream.h']]], - ['eof_653',['eof',['../classios.html#a7aa5ea2f670d64eb3dcb3b62eddd576c',1,'ios']]], - ['erase_654',['erase',['../class_sd_card_interface.html#a6a57c5bced670759b7c278c7a5988fd1',1,'SdCardInterface::erase()'],['../class_sdio_card.html#a03b1cdcf988acbdee91bfa8974be50f9',1,'SdioCard::erase()'],['../class_sd_spi_card.html#a904d56312d7a9cfc8bf33e3ad041c9eb',1,'SdSpiCard::erase()']]], - ['erasesinglesectorenable_655',['eraseSingleSectorEnable',['../class_sd_spi_card.html#a1b137a1ab76da21379bc59efeac90e1f',1,'SdSpiCard']]], - ['error_656',['error',['../class_sd_spi_card.html#aa12ad53111abcb187d3c6119a3a77592',1,'SdSpiCard']]], - ['errorcode_657',['errorCode',['../class_sd_card_interface.html#af83618545960af2f1ceec84927c12fc9',1,'SdCardInterface::errorCode()'],['../class_sdio_card.html#a1d505c4fb461bb7103692054ef6f7f1f',1,'SdioCard::errorCode()'],['../class_sd_spi_card.html#ad14f9be4d9087db44309fdc6597c949e',1,'SdSpiCard::errorCode()']]], - ['errordata_658',['errorData',['../class_sd_card_interface.html#ab84d7a9506d49366d8ec105e239ab0e1',1,'SdCardInterface::errorData()'],['../class_sdio_card.html#a9c2da202da95162d2eb694363fbe8654',1,'SdioCard::errorData()'],['../class_sd_spi_card.html#aae2cc2a741646bb2aaabaf0547298de8',1,'SdSpiCard::errorData()']]], - ['errorhalt_659',['errorHalt',['../class_sd_base.html#ac9d239810a48c90bd0f3a3e9c4c606a9',1,'SdBase::errorHalt(print_t *pr)'],['../class_sd_base.html#a1691b7a85fc11851a6942de035d73772',1,'SdBase::errorHalt(print_t *pr, const char *msg)'],['../class_sd_base.html#ac530fe041855d994a53d2e1b9c33f22d',1,'SdBase::errorHalt(print_t *pr, const __FlashStringHelper *msg)'],['../class_sd_base.html#a3a0d626662aa29c5b942442d0f6ee0ff',1,'SdBase::errorHalt(const __FlashStringHelper *msg)'],['../class_sd_base.html#a841a42d2ddc34c21dfb208b9a377c777',1,'SdBase::errorHalt()'],['../class_sd_base.html#a65aab6f19ed26777c2b3a149bbed39b5',1,'SdBase::errorHalt(const char *msg)']]], - ['errorline_660',['errorLine',['../class_sdio_card.html#a37e477b39d2a9c874fd338b4f7ef6b0e',1,'SdioCard']]], - ['errorprint_661',['errorPrint',['../class_sd_base.html#a22d184b3266ae7cb31ab47b7203e91ac',1,'SdBase::errorPrint(print_t *pr)'],['../class_sd_base.html#a7d119e8ae896cc4caa073e9f54823f3e',1,'SdBase::errorPrint(print_t *pr, char const *msg)'],['../class_sd_base.html#a6793653198ce4c570ae92d2f9436dca9',1,'SdBase::errorPrint(Print *pr, const __FlashStringHelper *msg)'],['../class_sd_base.html#ab4d5db510feb64a9cd487defe5bb62d9',1,'SdBase::errorPrint(const char *msg)'],['../class_sd_base.html#afebeeb8af2027f1c9a0b4f1106be9c2a',1,'SdBase::errorPrint(const __FlashStringHelper *msg)']]], - ['exfatfile_662',['ExFatFile',['../class_ex_fat_file.html#a3c1303c37cad370b33f0279524c93720',1,'ExFatFile']]], - ['exists_663',['exists',['../class_ex_fat_file.html#a22a717ddc6d2004c540c67a14264d9dd',1,'ExFatFile::exists()'],['../class_ex_fat_volume.html#a7fdcdffb720a1cca5cfa73f4cfa281df',1,'ExFatVolume::exists(const ExChar_t *path)'],['../class_ex_fat_volume.html#af705d3a2434d64efebaa5b3615131dc5',1,'ExFatVolume::exists(const String &path)'],['../class_fat_file.html#a50242f98dea0d4488ce4039a279f2a57',1,'FatFile::exists()'],['../class_fat_volume.html#a21541734ad76f64ea24b9f45e2bd6117',1,'FatVolume::exists(const char *path)'],['../class_fat_volume.html#afb7709e5b9e04265467305b43adf7cef',1,'FatVolume::exists(const String &path)'],['../class_fs_base_file.html#a76aea9766ffeae5454381a0704e62505',1,'FsBaseFile::exists()'],['../class_fs_volume.html#a9bece771399c97b136868f684c2b4496',1,'FsVolume::exists(const char *path)'],['../class_fs_volume.html#a5cabbe39ffc114d79ebe4e793024354e',1,'FsVolume::exists(const String &path)']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.html deleted file mode 100644 index 2b983b21..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.js deleted file mode 100644 index 00a228ea..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_5.js +++ /dev/null @@ -1,38 +0,0 @@ -var searchData= -[ - ['fail_664',['fail',['../classios.html#a15269e67d05d4fe83a6cf344d542f8ae',1,'ios']]], - ['fatcount_665',['fatCount',['../class_fat_partition.html#a56b37c3230818b9ae8e0a25c01a370a3',1,'FatPartition']]], - ['fatfile_666',['FatFile',['../class_fat_file.html#a7b591c9b92165fa8e4eae8c30c30e533',1,'FatFile::FatFile()'],['../class_fat_file.html#a38f9a296138648d6135cbbbf41ef6b92',1,'FatFile::FatFile(const char *path, oflag_t oflag)']]], - ['fatlength_667',['fatLength',['../class_ex_fat_partition.html#a12e390567f2217f804af9b1ea397780c',1,'ExFatPartition']]], - ['fatpartition_668',['FatPartition',['../class_fat_partition.html#a2c94db084d89355da7695d82ee612f72',1,'FatPartition']]], - ['fatstartsector_669',['fatStartSector',['../class_ex_fat_partition.html#ab63f9a3aacc0aeccae138a77cccbbb5b',1,'ExFatPartition::fatStartSector()'],['../class_fat_partition.html#a6a1ce7d707cf15bea08b63216413e055',1,'FatPartition::fatStartSector()'],['../class_fs_volume.html#ac5f4de35d2bfdd65bc38c2562b147a26',1,'FsVolume::fatStartSector()']]], - ['fattype_670',['fatType',['../class_ex_fat_partition.html#a3e63d87b4ef985f92c1793d269274f44',1,'ExFatPartition::fatType()'],['../class_fat_partition.html#ad45c276232d7093b82f1075e8c488bac',1,'FatPartition::fatType()'],['../class_fs_volume.html#ad26b5c171ca4c6e953cfbdbfe0b9a988',1,'FsVolume::fatType()']]], - ['fclose_671',['fclose',['../class_stdio_stream.html#a4ddd4658d49182013d2fa2a181e96c5a',1,'StdioStream']]], - ['feof_672',['feof',['../class_stdio_stream.html#acb38c3211feedbf2206eb1d9a3a9d24f',1,'StdioStream']]], - ['ferror_673',['ferror',['../class_stdio_stream.html#afd64cec6440b923660b444f6d5f0586e',1,'StdioStream']]], - ['fflush_674',['fflush',['../class_stdio_stream.html#a7ce32ec7ea3f2fd8ea42b9633890f1c0',1,'StdioStream']]], - ['fgetc_675',['fgetc',['../class_stdio_stream.html#a160bd2828cb7e7370cffe1046eff8899',1,'StdioStream']]], - ['fgetpos_676',['fgetpos',['../class_ex_fat_file.html#a8614bcbf04b7bbfc70fe36d2fa7f70c1',1,'ExFatFile::fgetpos()'],['../class_fat_file.html#a33e0b0a8a342047f29ab8e8aae9cae14',1,'FatFile::fgetpos()'],['../class_fs_base_file.html#adda345ec539688e40e279a4e3020d208',1,'FsBaseFile::fgetpos()']]], - ['fgets_677',['fgets',['../class_ex_fat_file.html#abc69c9dfc8fdb4ebf9db3bc37c879dc6',1,'ExFatFile::fgets()'],['../class_fat_file.html#a9e05a51767f7c8f70c6f337eecbdca03',1,'FatFile::fgets()'],['../class_stdio_stream.html#aa240c1021a1aad1cc57f63a483541dc7',1,'StdioStream::fgets()'],['../class_fs_base_file.html#ab6b6b97a6382a763d6de882252412727',1,'FsBaseFile::fgets()']]], - ['filesize_678',['fileSize',['../class_ex_fat_file.html#af2c08909b62b01f3edc4ee0c51ea7435',1,'ExFatFile::fileSize()'],['../class_fat_file.html#a874940574b9c99e763526465adf8dc28',1,'FatFile::fileSize()'],['../class_fs_base_file.html#aef21ae3af496d80f214918bb40b5b3ba',1,'FsBaseFile::fileSize()']]], - ['fill_679',['fill',['../classios__base.html#ade5bd46462e075999c3a5c2cff2015f1',1,'ios_base::fill()'],['../classios__base.html#aa5683f9bdf295311bd5a6d3cdc2fedd5',1,'ios_base::fill(char c)']]], - ['fillstack_680',['FillStack',['../_free_stack_8h.html#a534f4eab46987296c6951fc35a2f9a7f',1,'FreeStack.cpp']]], - ['firstblock_681',['firstBlock',['../class_fat_file.html#a5ac8a604863d18840f4a93c5c788b7c8',1,'FatFile']]], - ['firstsector_682',['firstSector',['../class_ex_fat_file.html#a883a36174d7753abbbdb7547e44b1739',1,'ExFatFile::firstSector()'],['../class_fat_file.html#af3108df387f30ca3d367dd390a04daaa',1,'FatFile::firstSector()'],['../class_fs_base_file.html#ad952b756b5bb3861472140fd5f733fe8',1,'FsBaseFile::firstSector()']]], - ['flags_683',['flags',['../classios__base.html#a2a73a30a8b157cc1cc92bb55b0a62e4a',1,'ios_base::flags() const'],['../classios__base.html#ae67e900dc12e4c7cbc0741ad1c70d6c2',1,'ios_base::flags(fmtflags fl)']]], - ['flush_684',['flush',['../class_buffered_print.html#a3fcb4970129a6fbfbd125ed8f2869d9b',1,'BufferedPrint::flush()'],['../class_minimum_serial.html#a872f0ff70f0e256352004f83d13fff28',1,'MinimumSerial::flush()'],['../class_ex_fat_file.html#ab16f38103a13394bffd8aa5be830c4fe',1,'ExFatFile::flush()'],['../class_fat_file.html#a166b5ff04754cc925f2aee71bf92f800',1,'FatFile::flush()'],['../classostream.html#af6be1f30d824f5a65d27d5b5d20b8c6c',1,'ostream::flush()'],['../class_stream_file.html#a32f813e659414892a58aa5157fe14f82',1,'StreamFile::flush()'],['../class_fs_base_file.html#adba2e8ad2ec46ae0f7b8f93b33a2b262',1,'FsBaseFile::flush()'],['../iostream_8h.html#a2f6f5344fca38fd4fe7b6231fd992a0d',1,'flush(): iostream.h']]], - ['fopen_685',['fopen',['../class_stdio_stream.html#a4ffc37225fb6deed98905aa71d1f9c4b',1,'StdioStream']]], - ['format_686',['format',['../class_sd_fat32.html#a303f00204805011d12e70c59ad24e42d',1,'SdFat32::format()'],['../class_sd_ex_fat.html#a6120786dcb0e7628301899f31af39e6b',1,'SdExFat::format()'],['../class_ex_fat_formatter.html#afe8c02e629e61bb4d83dee9076ef6d70',1,'ExFatFormatter::format()'],['../class_fat_formatter.html#a95c64e724b8b67eec1a476f21784540e',1,'FatFormatter::format()']]], - ['fprintf_687',['fprintf',['../_print_templates_8h.html#a3899b48e0eb6938ff58ca3accd53402a',1,'PrintTemplates.h']]], - ['fputc_688',['fputc',['../class_stdio_stream.html#a9f23cfa6b112a5da6ae08340af23c57b',1,'StdioStream']]], - ['fputs_689',['fputs',['../class_stdio_stream.html#a6adea52f55ef7d97cdb54e9e11fc2daa',1,'StdioStream']]], - ['fread_690',['fread',['../class_stdio_stream.html#a2d363b02abcef82b25ff025d50375bce',1,'StdioStream']]], - ['freeclustercount_691',['freeClusterCount',['../class_ex_fat_partition.html#ae6d4414d6440b79b6314cd1edbaa35b0',1,'ExFatPartition::freeClusterCount()'],['../class_fat_partition.html#ac9689f1e11f59acc5f1b21ed9bb71174',1,'FatPartition::freeClusterCount()'],['../class_fs_volume.html#af6dbe47dfe11adf752df95c351b10fdd',1,'FsVolume::freeClusterCount()']]], - ['freestack_692',['FreeStack',['../_free_stack_8h.html#a86da1fd0aa8dcc6a981803373bc8839d',1,'FreeStack.h']]], - ['fsbasefile_693',['FsBaseFile',['../class_fs_base_file.html#a6ddaf9a50682a50bacbddf541c35b017',1,'FsBaseFile']]], - ['fseek_694',['fseek',['../class_stdio_stream.html#a71584fd5c5cda3c31ce6cdbcc56f104d',1,'StdioStream']]], - ['fsetpos_695',['fsetpos',['../class_ex_fat_file.html#aea1e4d0c0981081774dc3c7cd3c55264',1,'ExFatFile::fsetpos()'],['../class_fat_file.html#ac042c43d41ecfff4e101b88f3f82086e',1,'FatFile::fsetpos()'],['../class_fs_base_file.html#a4bc085bc1ef0569f4ca7f14fff3e5678',1,'FsBaseFile::fsetpos()']]], - ['fstream_696',['fstream',['../classfstream.html#aed23877c52f828cab8de7a23603b3b6c',1,'fstream']]], - ['ftell_697',['ftell',['../class_stdio_stream.html#a809639fc5fb4fa5b6789dc121659f386',1,'StdioStream']]], - ['fwrite_698',['fwrite',['../class_stdio_stream.html#ad79465afb52579cbc801f4585c3f9c25',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.html deleted file mode 100644 index f7d283d1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.js deleted file mode 100644 index f83abdad..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_6.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['gcount_699',['gcount',['../classistream.html#ad0a3db5199ca44b191a9675f2dd3a098',1,'istream']]], - ['get_700',['get',['../class_fs_cache.html#a2483025514ecc0f69cabffcbeb052678',1,'FsCache::get()'],['../classistream.html#a36573c9b7fc522e6c85a73221019fd11',1,'istream::get()'],['../classistream.html#a9c7313d6f21f1f7ac9b0e759e74b4db2',1,'istream::get(char &ch)'],['../classistream.html#a2c963fd04375e5faa1b7a4362986269a',1,'istream::get(char *str, streamsize n, char delim='\n')']]], - ['getaccessdate_701',['getAccessDate',['../class_fat_file.html#a5d085c695e920b658a1505e480bc467f',1,'FatFile']]], - ['getaccessdatetime_702',['getAccessDateTime',['../class_ex_fat_file.html#a0d935161fde4a3f8d2fcd13140073adc',1,'ExFatFile::getAccessDateTime()'],['../class_fat_file.html#af70c42baeb45e0d7047ae63de568d0d2',1,'FatFile::getAccessDateTime()'],['../class_fs_base_file.html#add0901e13594348e1919a9df2fbad985',1,'FsBaseFile::getAccessDateTime()']]], - ['getc_703',['getc',['../class_stdio_stream.html#a28ba31e7b526607744bfa41844ffce31',1,'StdioStream']]], - ['getcreatedatetime_704',['getCreateDateTime',['../class_ex_fat_file.html#a703397b32592631c189a23047cc44c09',1,'ExFatFile::getCreateDateTime()'],['../class_fat_file.html#a94d484b5198032a9e00194e72182cc57',1,'FatFile::getCreateDateTime()'],['../class_fs_base_file.html#a5101edd57ee4ac0cd771b97cd089e4be',1,'FsBaseFile::getCreateDateTime()']]], - ['geterror_705',['getError',['../class_ex_fat_file.html#ac697224450ca216c60585d25f5f6e310',1,'ExFatFile::getError()'],['../class_fat_file.html#ad0dbbd083180f44c7a3ce7124d4ce19c',1,'FatFile::getError()'],['../class_fs_base_file.html#a7553d4aeb68fe8d3f1b61a16c8005e34',1,'FsBaseFile::getError()']]], - ['getline_706',['getline',['../classistream.html#a7ea6a5edd6b44a6e1ed297fb278b5d52',1,'istream']]], - ['getmodifydatetime_707',['getModifyDateTime',['../class_ex_fat_file.html#ac0c15cff235937cdfd7860d5fb441728',1,'ExFatFile::getModifyDateTime()'],['../class_fat_file.html#a28537b48ed2cb886c5f22984d07492b7',1,'FatFile::getModifyDateTime()'],['../class_fs_base_file.html#aee20c403ceed3b036dae70838c9f1bbf',1,'FsBaseFile::getModifyDateTime()']]], - ['getname_708',['getName',['../class_ex_fat_file.html#aba93e2c18be9fa4df7e067b7d6ac5906',1,'ExFatFile::getName()'],['../class_fat_file.html#aafa565e286440aab612cdb430fc01da5',1,'FatFile::getName()'],['../class_fs_base_file.html#ad2099dbe6bb8f61e1bf933d8e97b2d86',1,'FsBaseFile::getName()']]], - ['getsfn_709',['getSFN',['../class_fat_file.html#aba30e92a66f8e0d2f815c85662772a58',1,'FatFile']]], - ['getwriteerror_710',['getWriteError',['../class_ex_fat_file.html#a01da9896a59671a61f90dd20c3ac5d07',1,'ExFatFile::getWriteError()'],['../class_fat_file.html#a8062c0d3a118e8d77d0310418703d5f5',1,'FatFile::getWriteError()'],['../class_fs_base_file.html#ab5525bef93bab61569225374d475f2cb',1,'FsBaseFile::getWriteError()']]], - ['good_711',['good',['../classios.html#a0192d754476f243d7f13dc16e851c7cc',1,'ios']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.html deleted file mode 100644 index a74fe44a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.js deleted file mode 100644 index a39f9d37..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['halt_712',['halt',['../class_sys_call.html#a9b1ef8900e97f572ca561760b4dd4191',1,'SysCall']]], - ['hex_713',['hex',['../ios_8h.html#ace2036d970905192360d622140bfe336',1,'ios.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.html deleted file mode 100644 index 75fc0bea..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.js deleted file mode 100644 index 9d473fc4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_8.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['ibufstream_714',['ibufstream',['../classibufstream.html#afe28f27d24a62a21428b60fe8834dd05',1,'ibufstream::ibufstream()'],['../classibufstream.html#a819561105ef7dc3828e0cfedfed708d8',1,'ibufstream::ibufstream(const char *str)']]], - ['ifstream_715',['ifstream',['../classifstream.html#a11f4bfaa5c37cfcf8878c367fd861a88',1,'ifstream']]], - ['ignore_716',['ignore',['../classistream.html#a12597b03d86b66047a5581bbd26eb032',1,'istream']]], - ['init_717',['init',['../class_fs_cache.html#a2e56c9443880e3db0b68cc50217e8abe',1,'FsCache::init()'],['../class_ex_fat_partition.html#adb1d277492dccba09031e2064f4fa66f',1,'ExFatPartition::init()'],['../class_fat_cache.html#a30790e03daad69b62ec6d7d643975454',1,'FatCache::init()'],['../class_fat_partition.html#ab827224f30eec57255d21cae589911ef',1,'FatPartition::init()'],['../classibufstream.html#a1d7bae17d9d2c79218085251946f322a',1,'ibufstream::init()'],['../classobufstream.html#a8f75dbadab2fed7770d01a2cc2628258',1,'obufstream::init()']]], - ['initerrorhalt_718',['initErrorHalt',['../class_sd_base.html#acb8180faf22cf72d97ec81330a700b05',1,'SdBase::initErrorHalt(print_t *pr)'],['../class_sd_base.html#aef6fd47c67b9b8498c1398e58422f169',1,'SdBase::initErrorHalt(print_t *pr, const char *msg)'],['../class_sd_base.html#a8a249b866a4b24ac0a0753f966aab299',1,'SdBase::initErrorHalt(Print *pr, const __FlashStringHelper *msg)'],['../class_sd_base.html#a5901169e4d6ae992b348df518da68a76',1,'SdBase::initErrorHalt()'],['../class_sd_base.html#a9b6c279ebcd8fa95d6b409d099986931',1,'SdBase::initErrorHalt(const char *msg)'],['../class_sd_base.html#a557ac64877bdd851cd27bf0a00f380c2',1,'SdBase::initErrorHalt(const __FlashStringHelper *msg)']]], - ['initerrorprint_719',['initErrorPrint',['../class_sd_base.html#a918474d623107f64b7ab9ca88d6fe46f',1,'SdBase::initErrorPrint(Print *pr)'],['../class_sd_base.html#abe8d75ba435b4decd6b2079b4272d0e5',1,'SdBase::initErrorPrint()']]], - ['internal_720',['internal',['../ios_8h.html#a8dd76c1ce8fced364a98428ca1eea7a6',1,'ios.h']]], - ['invalidate_721',['invalidate',['../class_fs_cache.html#a963ea866ca2a9c4f63afd57cf287733d',1,'FsCache::invalidate()'],['../class_fat_cache.html#a70071a128d647b49b523dbb2f5f944a5',1,'FatCache::invalidate()']]], - ['ios_722',['ios',['../classios.html#adc5dbd7b69da79493ebc84aa1e681aaa',1,'ios']]], - ['is_5fopen_723',['is_open',['../classfstream.html#ae4a71c6f3da2f168ec222739d796fc8b',1,'fstream::is_open()'],['../classifstream.html#aaa16c6422ea371995d02159f2e6707b2',1,'ifstream::is_open()'],['../classofstream.html#a9c97eb2eb6e35ae87cf7f7453a67e70a',1,'ofstream::is_open()']]], - ['isbusy_724',['isBusy',['../class_sd_card_interface.html#a26c31b07a866469098d702fed54f51b2',1,'SdCardInterface::isBusy()'],['../class_sdio_card.html#a560bdfc96932d073c2b0610600560f78',1,'SdioCard::isBusy()'],['../class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328',1,'SdSpiCard::isBusy()']]], - ['iscontiguous_725',['isContiguous',['../class_ex_fat_file.html#a7a167102bd47b7cf91167b69f8cc57d1',1,'ExFatFile::isContiguous()'],['../class_fat_file.html#a16478eafdb731e867fb627d19091c3ce',1,'FatFile::isContiguous()'],['../class_fs_base_file.html#a7566bb4c71b5883e7bc15b45a1ee28a2',1,'FsBaseFile::isContiguous()']]], - ['isdir_726',['isDir',['../class_ex_fat_file.html#ad0a3687bd95bed5b216651335e66b500',1,'ExFatFile::isDir()'],['../class_fat_file.html#a933360b20b496421b2bd9ee7a95563a6',1,'FatFile::isDir()'],['../class_fs_base_file.html#ae93db43779d54734855005116244f6aa',1,'FsBaseFile::isDir()']]], - ['isdirectory_727',['isDirectory',['../class_stream_file.html#a586ad44055eca4c1b2b457299b829d44',1,'StreamFile::isDirectory()'],['../class_fs_base_file.html#aa564175ba0065803013338d89510ea81',1,'FsBaseFile::isDirectory()']]], - ['isdirty_728',['isDirty',['../class_fs_cache.html#a22f4284aefd18f569d962d37f4a5db70',1,'FsCache::isDirty()'],['../class_fat_cache.html#ae50287d95bd78558db1e4aa97d7b2c06',1,'FatCache::isDirty()']]], - ['isfile_729',['isFile',['../class_ex_fat_file.html#af601285f95db8398c140b3927cf9111c',1,'ExFatFile::isFile()'],['../class_fat_file.html#acc5a87da1a5c8cb9758bfeaa7ae47b57',1,'FatFile::isFile()']]], - ['ishidden_730',['isHidden',['../class_ex_fat_file.html#ac926285fa4321ebee28fa91beb511eae',1,'ExFatFile::isHidden()'],['../class_fat_file.html#ae216b4a2bc44a9cfb88478fa051a1fd8',1,'FatFile::isHidden()'],['../class_fs_base_file.html#a00e76b229cbb5098e1eb88e64a41dbfb',1,'FsBaseFile::isHidden()']]], - ['islfn_731',['isLFN',['../class_fat_file.html#af8f456ab790e818bfdd225cf6ffd40f3',1,'FatFile']]], - ['isopen_732',['isOpen',['../class_ex_fat_file.html#a804c34bbe3ebefe2b6c1d77ff8d49a35',1,'ExFatFile::isOpen()'],['../class_fat_file.html#a8b8a2850c086d3ce79bee64a23fbf7a6',1,'FatFile::isOpen()'],['../class_fs_base_file.html#a707007ff19ac5e4eb94cd0b26c542e0e',1,'FsBaseFile::isOpen()']]], - ['isreadable_733',['isReadable',['../class_ex_fat_file.html#a9ca137dfba2c7772910f4d2b3fdd9411',1,'ExFatFile::isReadable()'],['../class_fat_file.html#ae60b4cedb69c88ac641813d5edfa6b4a',1,'FatFile::isReadable()']]], - ['isreadonly_734',['isReadOnly',['../class_ex_fat_file.html#a14d160bfbfb39717746b93fa2eda5739',1,'ExFatFile::isReadOnly()'],['../class_fat_file.html#abaf639ec8f86f34aeb7e6b3615526f0b',1,'FatFile::isReadOnly()']]], - ['isroot_735',['isRoot',['../class_ex_fat_file.html#ad9f8e7afcf749ebcaaf055bd569dc7da',1,'ExFatFile::isRoot()'],['../class_fat_file.html#a03421a0c28649332f55e6ca06d3aeedb',1,'FatFile::isRoot()']]], - ['isroot32_736',['isRoot32',['../class_fat_file.html#a8fda8004720ec4cc55710869dbb52e35',1,'FatFile']]], - ['isrootfixed_737',['isRootFixed',['../class_fat_file.html#a0cc65089f7ce6c1ff92edbf0bff59dee',1,'FatFile']]], - ['issubdir_738',['isSubDir',['../class_ex_fat_file.html#ad7e02a1db8fb5a90288bb4679e9ddcb9',1,'ExFatFile::isSubDir()'],['../class_fat_file.html#abfd02c5d26f7d4f8739a8610116a6660',1,'FatFile::isSubDir()'],['../class_fs_base_file.html#a3140f64c85218c4b2f12f711483cd4c6',1,'FsBaseFile::isSubDir()']]], - ['issystem_739',['isSystem',['../class_fat_file.html#a48087bdeb6b94fc27e0f74c3d90af5a9',1,'FatFile']]], - ['iswritable_740',['isWritable',['../class_ex_fat_file.html#a04d1c43e80743f8c1a51b64062ce16dd',1,'ExFatFile::isWritable()'],['../class_fat_file.html#aa484d5b2b147c5f3fe0e26b6eaf11ffc',1,'FatFile::isWritable()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.html deleted file mode 100644 index 7541c9e3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.js deleted file mode 100644 index 51596bf9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['khzsdclk_741',['kHzSdClk',['../class_sdio_card.html#a3532a1a4b8a43a51ed9b5853186203cb',1,'SdioCard']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.html deleted file mode 100644 index 5a5be630..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.js deleted file mode 100644 index c0493d5a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_a.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['left_742',['left',['../ios_8h.html#a24a80a73f0a0d2d72d1cb74f49ff4759',1,'ios.h']]], - ['legal83char_743',['legal83Char',['../class_fat_file.html#a94df8090f16e9666cdc53ca20f6aff90',1,'FatFile']]], - ['length_744',['length',['../classobufstream.html#ac650708e968b0c0545a3badeb809cf15',1,'obufstream']]], - ['lfnlegalchar_745',['lfnLegalChar',['../_ex_fat_file_8h.html#acfe36e138012e39e1d66891a4e070871',1,'ExFatFile.h']]], - ['ls_746',['ls',['../class_ex_fat_file.html#aa0e074c891f3db5ea2ebd491667b03a6',1,'ExFatFile::ls(print_t *pr)'],['../class_ex_fat_file.html#a09f8beb55f939874e93c1df6c8a046d4',1,'ExFatFile::ls(print_t *pr, uint8_t flags, uint8_t indent=0)'],['../class_ex_fat_volume.html#abe1e8cad0a5922984b28edfd987bc856',1,'ExFatVolume::ls(print_t *pr, uint8_t flags=0)'],['../class_ex_fat_volume.html#aad2de66514174edb37b0fe7e44b33abf',1,'ExFatVolume::ls(print_t *pr, const ExChar_t *path, uint8_t flags)'],['../class_ex_fat_volume.html#abe74c248cfe9d57d9a10f651203df9dc',1,'ExFatVolume::ls()'],['../class_ex_fat_volume.html#ae883a72fbfe40f9a6fe6c6bf349d5c1f',1,'ExFatVolume::ls(uint8_t flags)'],['../class_ex_fat_volume.html#ad3a1aa9f64361b81d0cfe5b9f5de3891',1,'ExFatVolume::ls(const ExChar_t *path, uint8_t flags=0)'],['../class_fat_file.html#a60ab9d16bcc778150a364c26de467de1',1,'FatFile::ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)'],['../class_fat_file.html#a6a11f3307da6232b5f2d11812832d93a',1,'FatFile::ls(uint8_t flags=0)'],['../class_fat_volume.html#ae40964f357cfff4208812344a0e6f26f',1,'FatVolume::ls(print_t *pr, uint8_t flags=0)'],['../class_fat_volume.html#ac5fc83cac7fd3af0b140a7986b9472f8',1,'FatVolume::ls(print_t *pr, const char *path, uint8_t flags)'],['../class_fat_volume.html#ad455ad05551329865c659cc4676f2d18',1,'FatVolume::ls(uint8_t flags=0)'],['../class_fat_volume.html#a455ad7b2a5b6b31551dca08087a3c404',1,'FatVolume::ls(const char *path, uint8_t flags=0)'],['../class_fs_base_file.html#aecbc336b952eebebfdfcf917863183ee',1,'FsBaseFile::ls(print_t *pr)'],['../class_fs_base_file.html#a6a254df9866966f7f97478e916fe6a7f',1,'FsBaseFile::ls(print_t *pr, uint8_t flags)'],['../class_fs_volume.html#a679105032aa3e5c4585c63f8e7acfc02',1,'FsVolume::ls(print_t *pr)'],['../class_fs_volume.html#a5ce82e5970856d1e8d549c512ec8a253',1,'FsVolume::ls(print_t *pr, uint8_t flags)'],['../class_fs_volume.html#ab429316ed9e57a52ecfb938aca7dff6c',1,'FsVolume::ls(print_t *pr, const char *path, uint8_t flags)'],['../class_fs_volume.html#aac4bf1f75fd37ba2e5a145569ab0790b',1,'FsVolume::ls()'],['../class_fs_volume.html#aed1c1e5e351b442ad8c0030bc63c655f',1,'FsVolume::ls(uint8_t flags)'],['../class_fs_volume.html#a212afe6a3393930b5d9ec6be86aabcd2',1,'FsVolume::ls(const char *path, uint8_t flags=0)']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.html deleted file mode 100644 index fc2d5aa4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.js deleted file mode 100644 index 4eddf2d5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['mkdir_747',['mkdir',['../class_ex_fat_file.html#a3a393624d52854e74bf385c9e513a86d',1,'ExFatFile::mkdir()'],['../class_ex_fat_volume.html#a407b93b16554b26ff52f7b762a9217aa',1,'ExFatVolume::mkdir(const ExChar_t *path, bool pFlag=true)'],['../class_ex_fat_volume.html#a0f4cf7e2853225380574724314327597',1,'ExFatVolume::mkdir(const String &path, bool pFlag=true)'],['../class_fat_file.html#abab5b9f72cc796388dd4eed01d13d90d',1,'FatFile::mkdir()'],['../class_fat_volume.html#ad80bccf8f24ff001a7b9277effc2cc52',1,'FatVolume::mkdir(const char *path, bool pFlag=true)'],['../class_fat_volume.html#ab423ec4f7e5b58a6d454f328f61fd864',1,'FatVolume::mkdir(const String &path, bool pFlag=true)'],['../class_fs_base_file.html#a8b7aa7f2c63882e483336dfe12ef6800',1,'FsBaseFile::mkdir()'],['../class_fs_volume.html#a9d38c297dccceeb5f48dceb17232368d',1,'FsVolume::mkdir(const char *path, bool pFlag=true)'],['../class_fs_volume.html#a5d07b87552368dc66e08aab2e7be14af',1,'FsVolume::mkdir(const String &path, bool pFlag=true)']]], - ['mprintf_748',['mprintf',['../_print_templates_8h.html#afceda1e76dbfc91ef2d06925a10eaea9',1,'mprintf(T *file, const char *fmt,...): PrintTemplates.h'],['../_print_templates_8h.html#a5893e928fd47234a7a69049f9e769359',1,'mprintf(F *file, const __FlashStringHelper *ifsh,...): PrintTemplates.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.html deleted file mode 100644 index a1a14378..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.js deleted file mode 100644 index ee25bb48..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_c.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['name_749',['name',['../class_stream_file.html#a8792c863080576eb65ce6cacbe1dd931',1,'StreamFile::name()'],['../class_fs_base_file.html#a6ccd545042d98841246edfbf2f482677',1,'FsBaseFile::name()']]], - ['newcard_750',['newCard',['../class_sd_card_factory.html#a8337ec1a741c25ed9fb9fd730d68b792',1,'SdCardFactory::newCard(SdSpiConfig config)'],['../class_sd_card_factory.html#a7e5bcb01e8eed2df25e60c25fe47d916',1,'SdCardFactory::newCard(SdioConfig config)']]], - ['noboolalpha_751',['noboolalpha',['../ios_8h.html#aa6a1ec04992fc8090ca775a39678be01',1,'ios.h']]], - ['noshowbase_752',['noshowbase',['../ios_8h.html#ab861ff5f863de0ae002b65390dde36b0',1,'ios.h']]], - ['noshowpoint_753',['noshowpoint',['../ios_8h.html#ad85399d1b75151cf9e2436f2a1ccfc13',1,'ios.h']]], - ['noshowpos_754',['noshowpos',['../ios_8h.html#a985805b22ffb4ce2f5298168662bd2d7',1,'ios.h']]], - ['noskipws_755',['noskipws',['../ios_8h.html#a773b847300db776fde08a0b562792131',1,'ios.h']]], - ['nouppercase_756',['nouppercase',['../ios_8h.html#a24b96fb317e056b34aa84c4bb965a79a',1,'ios.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.html deleted file mode 100644 index 4375535f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.js deleted file mode 100644 index d58b2bc7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_d.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['obufstream_757',['obufstream',['../classobufstream.html#a74f7dbcf1131b77d3665aa85d6629722',1,'obufstream::obufstream()'],['../classobufstream.html#a7af0555c5c08ebf9cbc70fc5e2f67db7',1,'obufstream::obufstream(char *buf, size_t size)']]], - ['oct_758',['oct',['../ios_8h.html#ae661b435df22f8e8e643817f4f915123',1,'ios.h']]], - ['ofstream_759',['ofstream',['../classofstream.html#abd1a07c492699c44f149da45b8d593c1',1,'ofstream']]], - ['open_760',['open',['../class_ex_fat_file.html#ad0be05c5c7092317089872778052cbd7',1,'ExFatFile::open(ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)'],['../class_ex_fat_file.html#a825447643e6c9e8284a3ed78e3363788',1,'ExFatFile::open(ExFatVolume *vol, const ExChar_t *path, int oflag)'],['../class_ex_fat_file.html#a414b64dc30551e05dcc46f04e0f6413a',1,'ExFatFile::open(ExFatFile *dirFile, uint32_t index, oflag_t oflag)'],['../class_ex_fat_file.html#ab1e224aba9eb796c7ad48062cc1434c2',1,'ExFatFile::open(const ExChar_t *path, int oflag=0X00)'],['../class_ex_fat_volume.html#a0807cfcef46ef74cfe238badb83f3dda',1,'ExFatVolume::open(const ExChar_t *path, oflag_t oflag=0X00)'],['../class_ex_fat_volume.html#adce2c8ab2f73f56614b08fac42cabaea',1,'ExFatVolume::open(const String &path, oflag_t oflag=0X00)'],['../class_fat_file.html#af49a42dc64cd954debb271eae5639059',1,'FatFile::open(FatVolume *vol, const char *path, oflag_t oflag)'],['../class_fat_file.html#ab44920bb9cd5414b8e69c9dc4343394a',1,'FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)'],['../class_fat_file.html#a58d6ea245f1bc3ae7a6df311cd25052f',1,'FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)'],['../class_fat_file.html#afd3e4d5a76b6751ca796fc57f4dd2be4',1,'FatFile::open(const char *path, oflag_t oflag=0X00)'],['../class_fat_volume.html#a22923b86de9c797ce5e19f206dd4ce1f',1,'FatVolume::open(const char *path, oflag_t oflag=0X00)'],['../class_fat_volume.html#af7178b7f13eeae7748640b6268a34812',1,'FatVolume::open(const String &path, oflag_t oflag=0X00)'],['../classfstream.html#a85b24d94552991f33caf4c3a83420879',1,'fstream::open()'],['../classifstream.html#a169694d6535fd551fd6db48a2867590e',1,'ifstream::open()'],['../classofstream.html#a4b9d30c742fbe01baa336406c7afdcb2',1,'ofstream::open()'],['../class_fs_base_file.html#aa767859d4a4b4716ebbc4ea42a6d74df',1,'FsBaseFile::open(FsBaseFile *dir, const char *path, oflag_t oflag=O_RDONLY)'],['../class_fs_base_file.html#ac4edea1afb935119ecaf39607016c3cc',1,'FsBaseFile::open(FsBaseFile *dir, uint32_t index, oflag_t oflag)'],['../class_fs_base_file.html#a9786eb47f5d001e89ff291c271517547',1,'FsBaseFile::open(FsVolume *vol, const char *path, oflag_t oflag)'],['../class_fs_base_file.html#af44f0decd9b11dd45996e81f46e2cdee',1,'FsBaseFile::open(const char *path, oflag_t oflag=O_RDONLY)'],['../class_fs_volume.html#a2f28fc92b7a71607bc57aa72f5a4c0a7',1,'FsVolume::open(const char *path, oflag_t oflag=0X00)'],['../class_fs_volume.html#a55804d14db55dd29bf7b26d692275ac9',1,'FsVolume::open(const String &path, oflag_t oflag=0X00)']]], - ['opennext_761',['openNext',['../class_ex_fat_file.html#a89b6021cf70b7adb9feb162260d5a101',1,'ExFatFile::openNext()'],['../class_fat_file.html#a7f98b908a686574efbd7e1d20121ef9a',1,'FatFile::openNext()'],['../class_fs_base_file.html#acb9b1075f4db76fa7e0521c9aff9c3df',1,'FsBaseFile::openNext()']]], - ['opennextfile_762',['openNextFile',['../class_ex_file.html#ada8cd27e9a2f604f5c05088024a46a63',1,'ExFile::openNextFile()'],['../class_file32.html#a571434707124ee554d659ec82e2ef750',1,'File32::openNextFile()'],['../class_fs_file.html#ab2f85961e3831d0d654da862becb7433',1,'FsFile::openNextFile()']]], - ['openroot_763',['openRoot',['../class_ex_fat_file.html#af664c1da1bfa0bb5f6eb933bc25f757e',1,'ExFatFile::openRoot()'],['../class_fat_file.html#a7e0c0548fed3a69e7284b91b694439d4',1,'FatFile::openRoot()']]], - ['operator_20bool_764',['operator bool',['../class_minimum_serial.html#a73a1a2a92604ecb8507afde0022aedd8',1,'MinimumSerial::operator bool()'],['../class_ex_fat_file.html#aa1abbd813f27d488f0ff439ccbc9ca98',1,'ExFatFile::operator bool()'],['../class_fat_file.html#acd141c43d03cf790b3b9806f3b059e77',1,'FatFile::operator bool()'],['../classios.html#a940890a2e7fb429fd32813b0ea7ed35d',1,'ios::operator bool()'],['../class_fs_base_file.html#a3ad633f3efc2701a3a89e776436b14e1',1,'FsBaseFile::operator bool()']]], - ['operator_20const_20void_20_2a_765',['operator const void *',['../classios.html#aa919219fd2fa41d49c8573b36bb04418',1,'ios']]], - ['operator_21_766',['operator!',['../classios.html#aea64e05b9aa58bd75ca636692f881fb6',1,'ios']]], - ['operator_3c_3c_767',['operator<<',['../classostream.html#a4dfc0cdb38bced959ba7cf963db38c30',1,'ostream::operator<<(ostream &(*pf)(ostream &str))'],['../classostream.html#af52c607ea168aff1025222c62cad392f',1,'ostream::operator<<(ios_base &(*pf)(ios_base &str))'],['../classostream.html#a63e3999be154253cf92a45c22e548f51',1,'ostream::operator<<(bool arg)'],['../classostream.html#a618b5d6861dde2347847102b89e0ccfa',1,'ostream::operator<<(const char *arg)'],['../classostream.html#aebe24ff723b806cbee19deb2165d0a5b',1,'ostream::operator<<(const signed char *arg)'],['../classostream.html#ac0cf68ffa4706994f47acb1fa37c601a',1,'ostream::operator<<(const unsigned char *arg)'],['../classostream.html#a9d91797605a48ffcad21738bfc876547',1,'ostream::operator<<(const String &arg)'],['../classostream.html#a1d1e11d2fadaf4c9e34194a1f28572e4',1,'ostream::operator<<(char arg)'],['../classostream.html#ad06f8c6c47667e9c7b14620882c09434',1,'ostream::operator<<(signed char arg)'],['../classostream.html#a69912ec4a8536f289b716e95953d09d7',1,'ostream::operator<<(unsigned char arg)'],['../classostream.html#a8065697d56d5e5d1a0ca50c1916b4955',1,'ostream::operator<<(double arg)'],['../classostream.html#a6c68e418e19d9dcdfe6b1790b2621666',1,'ostream::operator<<(float arg)'],['../classostream.html#a227c47e2b631f29d8873b00290bb4872',1,'ostream::operator<<(short arg)'],['../classostream.html#ace10a3a767dc55faff2cec71cd0a89b1',1,'ostream::operator<<(unsigned short arg)'],['../classostream.html#a62488f7ce7822c777ea27d15223b8e5f',1,'ostream::operator<<(int arg)'],['../classostream.html#ad31df6cd88c7248c01808e40889a7907',1,'ostream::operator<<(unsigned int arg)'],['../classostream.html#a15db9977ed82e503bd3cd1f585acf9e6',1,'ostream::operator<<(long arg)'],['../classostream.html#aaedd44fefa48cf3f0967fcd699a2909d',1,'ostream::operator<<(unsigned long arg)'],['../classostream.html#a3b1be06d511106bb0449f4424962ad72',1,'ostream::operator<<(long long arg)'],['../classostream.html#a9f9adac280c449da7be40f0f1a65fcd6',1,'ostream::operator<<(unsigned long long arg)'],['../classostream.html#a2a8febd7c07f078120dd69bb71f25a94',1,'ostream::operator<<(const void *arg)'],['../classostream.html#a99ee8d9265d9354f197d02a3d17116be',1,'ostream::operator<<(const __FlashStringHelper *arg)'],['../iostream_8h.html#aa125ac928f3377cbc6e3cf288b9378fd',1,'operator<<(ostream &os, const setfill &arg): iostream.h'],['../iostream_8h.html#a23d4c29ef8ae37ec7d972d0b66187652',1,'operator<<(ostream &os, const setprecision &arg): iostream.h'],['../iostream_8h.html#a331649f2fdb01ed069dc18a5fad781b1',1,'operator<<(ostream &os, const setw &arg): iostream.h']]], - ['operator_3d_768',['operator=',['../class_fs_base_file.html#ae4f6d168072bb4f2a61976f621659d20',1,'FsBaseFile']]], - ['operator_3e_3e_769',['operator>>',['../classistream.html#aa67d3b8ac67e2097d876a66657ec6067',1,'istream::operator>>(istream &(*pf)(istream &str))'],['../classistream.html#ac6e2f17c80edd19deecdc20f804c424e',1,'istream::operator>>(ios_base &(*pf)(ios_base &str))'],['../classistream.html#a5a0a2c0e06abadb79951ebe34f36d62a',1,'istream::operator>>(ios &(*pf)(ios &str))'],['../classistream.html#a99db66d2e192f02deff0171ad098271f',1,'istream::operator>>(char *str)'],['../classistream.html#addaf5e0f39a15cc213117165dfef0d77',1,'istream::operator>>(char &ch)'],['../classistream.html#a390af4d28adbdc537e436f2121d1c862',1,'istream::operator>>(signed char *str)'],['../classistream.html#a49ab1a573fbf69809d19a52855a30072',1,'istream::operator>>(signed char &ch)'],['../classistream.html#a52e85d01198968330f20026a52cb9f72',1,'istream::operator>>(unsigned char *str)'],['../classistream.html#a74875fcf9ccdc0dca4b46a0b66821798',1,'istream::operator>>(unsigned char &ch)'],['../classistream.html#a3708636d095d360695e9c23335639317',1,'istream::operator>>(bool &arg)'],['../classistream.html#a662060e885a0551c390b7042b3b9e4a5',1,'istream::operator>>(short &arg)'],['../classistream.html#a31a706a374c5a594e400734b8992e2a0',1,'istream::operator>>(unsigned short &arg)'],['../classistream.html#ae8451bc86d83828892d9d67c67b7f02b',1,'istream::operator>>(int &arg)'],['../classistream.html#a35c9847ebf7b822c5ec9742e9de19345',1,'istream::operator>>(unsigned int &arg)'],['../classistream.html#aa26e7f35e74d96803bb0dfb3fb0dc154',1,'istream::operator>>(long &arg)'],['../classistream.html#a5aafa4c7f6615a7f1441962b61b8ef59',1,'istream::operator>>(unsigned long &arg)'],['../classistream.html#af9bf453725ce1d9ef62142a7ee38936e',1,'istream::operator>>(double &arg)'],['../classistream.html#aa8efce6fecab80cf7a17d5dfa31f5aa8',1,'istream::operator>>(float &arg)'],['../classistream.html#a62ef4762feacc64a8acdcbf8f1296936',1,'istream::operator>>(void *&arg)'],['../iostream_8h.html#a4a4079de901e0f3f10c743115bd345b2',1,'operator>>(istream &obj, const setfill &arg): iostream.h'],['../iostream_8h.html#a2f819cd0ccda31a8b648f20534469308',1,'operator>>(istream &is, const setprecision &arg): iostream.h'],['../iostream_8h.html#a8d1b3da6f1074322a6e9e11ff4ce8c33',1,'operator>>(istream &is, const setw &arg): iostream.h']]], - ['options_770',['options',['../class_sdio_config.html#a905aeb5dc774c63af6e72b3be51fc845',1,'SdioConfig']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.html deleted file mode 100644 index 0f205446..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.js deleted file mode 100644 index f0362348..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_e.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['peek_771',['peek',['../class_ex_fat_file.html#afc2e375faa696545f7ebbf583faae72a',1,'ExFatFile::peek()'],['../class_fat_file.html#ac05b7136b887539426856c623869aa3a',1,'FatFile::peek()'],['../classistream.html#a4022265e0ede3698454f1ff59348c14a',1,'istream::peek()'],['../class_stream_file.html#af0da96e502485133ca0cff27fa130082',1,'StreamFile::peek()'],['../class_fs_base_file.html#adc49cb204f293a28b67af64c49c4c9f3',1,'FsBaseFile::peek()']]], - ['position_772',['position',['../class_stream_file.html#a18a04d1e68a0c1e3e38e5712cd9bbc03',1,'StreamFile::position()'],['../class_fs_base_file.html#a8d5ea7284de7ec0bfdb0b2294001f015',1,'FsBaseFile::position()']]], - ['preallocate_773',['preAllocate',['../class_ex_fat_file.html#a35a5093014e80965e49c84b61780556f',1,'ExFatFile::preAllocate()'],['../class_fat_file.html#aeeb13b9de68bf9097c863c41d655ee83',1,'FatFile::preAllocate()'],['../class_fs_base_file.html#acbc037f9f07c57235bb8b30af5a53ac2',1,'FsBaseFile::preAllocate()']]], - ['precision_774',['precision',['../classios__base.html#aba92f0687644fc14f202958635ce276f',1,'ios_base::precision() const'],['../classios__base.html#a5b70cc65fc2c276136fea99bddedb6f0',1,'ios_base::precision(unsigned int n)']]], - ['print_775',['print',['../class_buffered_print.html#a95f984c4702b0e20d781efd9d1ea8f27',1,'BufferedPrint::print(double d, uint8_t prec=2)'],['../class_buffered_print.html#aeed86ef2ea320cd8ff47ee871663a8ce',1,'BufferedPrint::print(float f, uint8_t prec=2)'],['../class_buffered_print.html#ae9472f3acd3f7d3187500e60754963bb',1,'BufferedPrint::print(Type v)'],['../class_stdio_stream.html#ad3f6ee8e8ca5dcf6dabfd88199b172e2',1,'StdioStream::print(char c)'],['../class_stdio_stream.html#a1158ea5f9bf041f21b1733b7811c9bb9',1,'StdioStream::print(const char *str)'],['../class_stdio_stream.html#aac4d7b3548d03b8fd70adf12c7ee315c',1,'StdioStream::print(const __FlashStringHelper *str)'],['../class_stdio_stream.html#a26f5b98560b6771225005b073166108b',1,'StdioStream::print(double val, uint8_t prec=2)'],['../class_stdio_stream.html#a06b6eb9f0a7000fdcc73cd6af8d40560',1,'StdioStream::print(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a7129f85c7c5f16867f467731ef84dee9',1,'StdioStream::print(T val)']]], - ['printaccessdate_776',['printAccessDate',['../class_fat_file.html#a22be4c339d0bfa331f75415b74dd4f37',1,'FatFile']]], - ['printaccessdatetime_777',['printAccessDateTime',['../class_ex_fat_file.html#ad9ba8aa00b9db683d40fc2989dbe1922',1,'ExFatFile::printAccessDateTime()'],['../class_fat_file.html#a19b3196bb1f6a68a2447e53b09369aef',1,'FatFile::printAccessDateTime()'],['../class_fs_base_file.html#a264ba61530aee50dbe9659d41dd2c1d6',1,'FsBaseFile::printAccessDateTime()']]], - ['printcreatedatetime_778',['printCreateDateTime',['../class_ex_fat_file.html#a7318b2d7594d6ba52421c413f5fc35cd',1,'ExFatFile::printCreateDateTime()'],['../class_fat_file.html#ab22396a285e27b53501a0047ddd97f59',1,'FatFile::printCreateDateTime()'],['../class_fs_base_file.html#a3f75ac7eb6643afcabae28e8c93479c8',1,'FsBaseFile::printCreateDateTime()']]], - ['printdec_779',['printDec',['../class_stdio_stream.html#ac0a907feb1e4b7e00de99857b4c0a470',1,'StdioStream::printDec(char n)'],['../class_stdio_stream.html#a2707ea97f6113c226781469f4f39ff62',1,'StdioStream::printDec(signed char n)'],['../class_stdio_stream.html#a6e6ac78caa6259a4c4934707bf497a2b',1,'StdioStream::printDec(unsigned char n)'],['../class_stdio_stream.html#a218af88db35f38babf01d6e0a9cdceeb',1,'StdioStream::printDec(int16_t n)'],['../class_stdio_stream.html#a90b2999af94a3578fff7579c2acf8e35',1,'StdioStream::printDec(uint16_t n)'],['../class_stdio_stream.html#ad4591f1234b57f63c1acf0f3392099ac',1,'StdioStream::printDec(int32_t n)'],['../class_stdio_stream.html#a8b6c2c80342abe45e6f564e9bd5bb7ea',1,'StdioStream::printDec(uint32_t n)'],['../class_stdio_stream.html#aaa8921947d4dbbae840d285cb633e8aa',1,'StdioStream::printDec(double value, uint8_t prec)'],['../class_stdio_stream.html#a6a09284b1c6d0769c27916a2e131e749',1,'StdioStream::printDec(float value, uint8_t prec)']]], - ['printfatdate_780',['printFatDate',['../class_fat_file.html#aabcd863883bfcfb37b63dbd6021f7eb8',1,'FatFile']]], - ['printfattime_781',['printFatTime',['../class_fat_file.html#a7f84d953190ea94710dad9ebb897b957',1,'FatFile']]], - ['printfattype_782',['printFatType',['../class_sd_base.html#a234e80318c39229fe968a182b172148c',1,'SdBase']]], - ['printfield_783',['printField',['../class_buffered_print.html#a69ea9541fb854448b9fe3aff44583975',1,'BufferedPrint::printField(char c, char term)'],['../class_buffered_print.html#ac18cc8c86b73b073a28db85075215f4f',1,'BufferedPrint::printField(const __FlashStringHelper *fsh, char term)'],['../class_buffered_print.html#ac49d0beb5fdad68e82f741bbaad4bb1b',1,'BufferedPrint::printField(const char *str, char term)'],['../class_buffered_print.html#a5b5b11f01adf91a1854a44b131886219',1,'BufferedPrint::printField(double d, char term, uint8_t prec=2)'],['../class_buffered_print.html#a93369fc042366488ef40426f9fd3286d',1,'BufferedPrint::printField(float f, char term, uint8_t prec=2)'],['../class_buffered_print.html#af680cf36170347287d20ed92ae5f6c9b',1,'BufferedPrint::printField(Type n, char term)'],['../class_ex_fat_file.html#a496ac61e367a24665425d54956a46346',1,'ExFatFile::printField(double value, char term, uint8_t prec=2)'],['../class_ex_fat_file.html#a70eda4191df90f608694c1faede7fb33',1,'ExFatFile::printField(float value, char term, uint8_t prec=2)'],['../class_ex_fat_file.html#a9759c13e804c01ff9e7e2ac8fbabc5b8',1,'ExFatFile::printField(Type value, char term)'],['../class_fat_file.html#aa4a61a0cca1813d2ad0f6fe99cc4e41d',1,'FatFile::printField(double value, char term, uint8_t prec=2)'],['../class_fat_file.html#a90ccef676afd62bbe7c773dd863a56e0',1,'FatFile::printField(float value, char term, uint8_t prec=2)'],['../class_fat_file.html#a8f906be79086f38943cb0911310d67bf',1,'FatFile::printField(Type value, char term)'],['../class_stdio_stream.html#a4988592ada39c4b4c603b061f84d183f',1,'StdioStream::printField(double value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a3b90b2317cc391f94784a847f5313c08',1,'StdioStream::printField(float value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a02c2ad1a2e71e82d238b8386cf3e6c41',1,'StdioStream::printField(T value, char term)'],['../class_fs_base_file.html#a911ae825e67d7e6ade4a672595e060d6',1,'FsBaseFile::printField(double value, char term, uint8_t prec=2)'],['../class_fs_base_file.html#a5dd2738efe2e550f56037536bc252f13',1,'FsBaseFile::printField(float value, char term, uint8_t prec=2)'],['../class_fs_base_file.html#a45639312b8c5aa9ceddb19e654e902b4',1,'FsBaseFile::printField(Type value, char term)']]], - ['printfilesize_784',['printFileSize',['../class_ex_fat_file.html#a16d527f98cff3ffd3ba8bc594a22d186',1,'ExFatFile::printFileSize()'],['../class_fat_file.html#a12a5d2de2737c201aa39ca1bd2ab9c47',1,'FatFile::printFileSize()'],['../class_fs_base_file.html#a6760471e3c445f66b94f3f0e96fdfe10',1,'FsBaseFile::printFileSize()']]], - ['printhex_785',['printHex',['../class_stdio_stream.html#add39b2b4ec3daa7c8922e96ce5d368bc',1,'StdioStream']]], - ['printhexln_786',['printHexln',['../class_stdio_stream.html#aec6ebea511489b0ef6b61d9132d93af9',1,'StdioStream']]], - ['println_787',['println',['../class_buffered_print.html#a7bd188ccc8b38b83cf44b96164a1d816',1,'BufferedPrint::println()'],['../class_buffered_print.html#aaeaceb452361377ce73db0041edbcdff',1,'BufferedPrint::println(double d, uint8_t prec=2)'],['../class_buffered_print.html#afc449966c5c7357fde925c6888669698',1,'BufferedPrint::println(float f, uint8_t prec)'],['../class_buffered_print.html#a0945ed373bd17a309bb6661faad3be9c',1,'BufferedPrint::println(Type v)'],['../class_stdio_stream.html#ad0cd3acc05a91456f505752377bd405a',1,'StdioStream::println()'],['../class_stdio_stream.html#a3793dd66cf347a1ca0b7b167e948cce9',1,'StdioStream::println(double val, uint8_t prec=2)'],['../class_stdio_stream.html#aac250d041a7844c8db1cbd2d97ecfdaa',1,'StdioStream::println(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a3b14532768d07e6ed89c762d04792c12',1,'StdioStream::println(T val)']]], - ['printmodifydatetime_788',['printModifyDateTime',['../class_ex_fat_file.html#a16488d3e0d946f108240b7d6c536c6f4',1,'ExFatFile::printModifyDateTime()'],['../class_fat_file.html#a43c8a1cabcae673e43c590f5db44c65a',1,'FatFile::printModifyDateTime()'],['../class_fs_base_file.html#a0f2f813496fa156f9808a5d33c2d8746',1,'FsBaseFile::printModifyDateTime()']]], - ['printname_789',['printName',['../class_ex_fat_file.html#a095c0a865e5e5b6463c3dc0c90680635',1,'ExFatFile::printName()'],['../class_fat_file.html#afe18a787fb8640e2d2483370c770f82f',1,'FatFile::printName(print_t *pr)'],['../class_fat_file.html#ad1cbc3aeb0f5193b7a26595966da9621',1,'FatFile::printName()'],['../class_fs_base_file.html#a178a1cbe2bce19758a55bd00fa262732',1,'FsBaseFile::printName()']]], - ['printsderror_790',['printSdError',['../class_sd_base.html#a6a8ba118e754b2b9fa0f34410163e228',1,'SdBase']]], - ['printsfn_791',['printSFN',['../class_fat_file.html#a791cd7aade71f609aab62ec018aea3c0',1,'FatFile']]], - ['put_792',['put',['../classostream.html#a11aad8a1efd284ccfa91cbfb78d089bd',1,'ostream']]], - ['putc_793',['putc',['../class_stdio_stream.html#adf9e552212aad6fc2284da0ee62d04dc',1,'StdioStream']]], - ['putcrlf_794',['putCRLF',['../class_stdio_stream.html#a09ccc4b6cabc3502c1052e85d94e84ef',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.html deleted file mode 100644 index 0dc9f86c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.js deleted file mode 100644 index f5090bbd..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/functions_f.js +++ /dev/null @@ -1,29 +0,0 @@ -var searchData= -[ - ['rdstate_795',['rdstate',['../classios.html#afe4d084ba0d2704a27525147d1463c36',1,'ios']]], - ['read_796',['read',['../class_minimum_serial.html#a4890dd60f2ffb61eba0821cc80d411ad',1,'MinimumSerial::read()'],['../class_ex_fat_file.html#a77f4fea0aae0c8bae926fdfbba260a55',1,'ExFatFile::read()'],['../class_ex_fat_file.html#a5ae5477efe55179cf07e173c62654313',1,'ExFatFile::read(void *buf, size_t count)'],['../class_fat_file.html#a60ae55ff6fe158c2340071d702a363c5',1,'FatFile::read()'],['../class_fat_file.html#aba893af8107a18017482d2311b066187',1,'FatFile::read(void *buf, size_t count)'],['../class_fat_cache.html#a9c3d0dfa0d987f2c8dbad2d35024b56b',1,'FatCache::read()'],['../class_stream_file.html#a249a5d428f303e2a8e7c3ae476e74829',1,'StreamFile::read()'],['../class_fs_base_file.html#acbe2d203d212a50871db77a9b2ba01f6',1,'FsBaseFile::read()'],['../class_fs_base_file.html#ae8d8cb4cceda9d56e8dae692d04a46e6',1,'FsBaseFile::read(void *buf, size_t count)']]], - ['readcid_797',['readCID',['../class_sd_card_interface.html#ab61ea0c742074271de0552c46be8ae51',1,'SdCardInterface::readCID()'],['../class_sdio_card.html#a2490b07ee400aaf799ea5c37052041bf',1,'SdioCard::readCID()'],['../class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea',1,'SdSpiCard::readCID()']]], - ['readcsd_798',['readCSD',['../class_sd_card_interface.html#a8aaf7a014423034652f2a1ded1aaa127',1,'SdCardInterface::readCSD()'],['../class_sdio_card.html#a72bbb4fda29fb6313981a63ea2f43d5f',1,'SdioCard::readCSD()'],['../class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290',1,'SdSpiCard::readCSD()']]], - ['readdata_799',['readData',['../class_sdio_card.html#a9dc1cd99d0136e514faaecf56a6318d2',1,'SdioCard::readData()'],['../class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770',1,'SdSpiCard::readData()']]], - ['readdir_800',['readDir',['../class_fat_file.html#a29502cd34ef186763d2196daef27df1f',1,'FatFile']]], - ['readline_801',['readline',['../class_arduino_in_stream.html#ad4c60f813b8df6dd1d6696a3458de09c',1,'ArduinoInStream']]], - ['readocr_802',['readOCR',['../class_sd_card_interface.html#abb2742e6e81d18552308519a0dfb72a6',1,'SdCardInterface::readOCR()'],['../class_sdio_card.html#adc583f7a27f57ce55ce474b1379b9303',1,'SdioCard::readOCR()'],['../class_sd_spi_card.html#ab446e49338b3ce834a750ac6dae35f61',1,'SdSpiCard::readOCR()']]], - ['readsector_803',['readSector',['../class_block_device_interface.html#a537ffdf8645666ee60d9bee0d7e3d17e',1,'BlockDeviceInterface::readSector()'],['../class_sdio_card.html#a77ae4fbe24bb04b74af5d388d4139dde',1,'SdioCard::readSector()'],['../class_sd_spi_card.html#adbdb4df6d74ffa21df7f19a46c781f17',1,'SdSpiCard::readSector()']]], - ['readsectors_804',['readSectors',['../class_block_device_interface.html#aeee2944296d4aaabd00ee7be90596c5c',1,'BlockDeviceInterface::readSectors()'],['../class_sdio_card.html#a1ed4229446a5a2fe815d460b027243b9',1,'SdioCard::readSectors()'],['../class_sd_spi_card.html#a248a56a6b15182c4d558f497c99fbf15',1,'SdSpiCard::readSectors()']]], - ['readsingle_805',['readSingle',['../class_sd_spi_card.html#a6eb6241369637ca07c0d1c3fe303750d',1,'SdSpiCard']]], - ['readstart_806',['readStart',['../class_sdio_card.html#a9fde1fb0e6603e7140cac16395815df0',1,'SdioCard::readStart(uint32_t sector)'],['../class_sdio_card.html#a54732c9d38998ddd42b72b720e0ee54c',1,'SdioCard::readStart(uint32_t sector, uint32_t count)'],['../class_sd_spi_card.html#a6f10180a070fa01834cef47e70649a8e',1,'SdSpiCard::readStart()']]], - ['readstatus_807',['readStatus',['../class_sd_spi_card.html#a91d0413599efe0d63c8c2dfe4a12d9ae',1,'SdSpiCard']]], - ['readstop_808',['readStop',['../class_sdio_card.html#a5bd3f206d790149340783135d08eb701',1,'SdioCard::readStop()'],['../class_sd_spi_card.html#afdac7c399fa1ba3f904cf503526e007e',1,'SdSpiCard::readStop()']]], - ['receive_809',['receive',['../class_sd_spi_arduino_driver.html#a8d6bc852a52e9d69c4b1e48ee062e8d1',1,'SdSpiArduinoDriver::receive()'],['../class_sd_spi_arduino_driver.html#a4f5be313b836ca937a5b5be6432987ec',1,'SdSpiArduinoDriver::receive(uint8_t *buf, size_t count)'],['../class_sd_spi_base_class.html#a537c71fb2cdb8a825215c0faeb6f7dbd',1,'SdSpiBaseClass::receive()=0'],['../class_sd_spi_base_class.html#a45693c18a8bb44ec9e5b9b1dee39b393',1,'SdSpiBaseClass::receive(uint8_t *buf, size_t count)=0'],['../class_sd_spi_soft_driver.html#a189c85920acdcb3ad90b68a998ffeb2a',1,'SdSpiSoftDriver::receive()=0'],['../class_sd_spi_soft_driver.html#a94c6dc242a83a91be44f994a67a7f583',1,'SdSpiSoftDriver::receive(uint8_t *buf, size_t count)'],['../class_soft_spi_driver.html#a0c2a84b8b0f7b4eaa9d970aa3f31a6d8',1,'SoftSpiDriver::receive()']]], - ['remove_810',['remove',['../class_ex_fat_file.html#a8e88c8e79551a72cc98310038514c47a',1,'ExFatFile::remove()'],['../class_ex_fat_file.html#ad10417a851dba3d40a78eb2c0eb11fff',1,'ExFatFile::remove(const ExChar_t *path)'],['../class_ex_fat_volume.html#a58061d05f5dc5a52706cdd61a1a86e80',1,'ExFatVolume::remove(const ExChar_t *path)'],['../class_ex_fat_volume.html#adc22ad4ce966654944b18d31fc6ac5ee',1,'ExFatVolume::remove(const String &path)'],['../class_fat_file.html#ac837a537fbcca14c7aa390c5fc9f4e7c',1,'FatFile::remove()'],['../class_fat_file.html#a75d3276f0b02b03e863afafe5731fedb',1,'FatFile::remove(const char *path)'],['../class_fat_volume.html#abb11d05ef407775bcdb9b14a6c608433',1,'FatVolume::remove(const char *path)'],['../class_fat_volume.html#a994411f55df474be6be87f06100c2c39',1,'FatVolume::remove(const String &path)'],['../class_fs_base_file.html#a8d21f9df86e846e34c3bb11cf7db21bc',1,'FsBaseFile::remove()'],['../class_fs_base_file.html#a64feff69c4f09e56247c7f9dc7c74f34',1,'FsBaseFile::remove(const char *path)'],['../class_fs_volume.html#aaaa53cfc48602b3d1524508944bd112e',1,'FsVolume::remove(const char *path)'],['../class_fs_volume.html#a069e1d9b3a6bba07b7edc5dcde434e0c',1,'FsVolume::remove(const String &path)']]], - ['rename_811',['rename',['../class_ex_fat_file.html#aab50b2646035f76834c75230d2b55c64',1,'ExFatFile::rename(const ExChar_t *newPath)'],['../class_ex_fat_file.html#aea570a3b6afbe633d874803b137a46b8',1,'ExFatFile::rename(ExFatFile *dirFile, const ExChar_t *newPath)'],['../class_ex_fat_volume.html#a8dcd1b108167803a24f7314f5fce6bc4',1,'ExFatVolume::rename(const ExChar_t *oldPath, const ExChar_t *newPath)'],['../class_ex_fat_volume.html#a1396c06f6c5e138889125d2f62cdbdcb',1,'ExFatVolume::rename(const String &oldPath, const String &newPath)'],['../class_fat_file.html#a4cebcac13c1f4c9de7a055ae73133599',1,'FatFile::rename(const char *newPath)'],['../class_fat_file.html#a4b42f2454ff462555c07ea094a92a1e0',1,'FatFile::rename(FatFile *dirFile, const char *newPath)'],['../class_fat_volume.html#a5e4ea6c91569dc435c7aacd7ba704911',1,'FatVolume::rename(const char *oldPath, const char *newPath)'],['../class_fat_volume.html#aa7015c0f694261780081c79c05d0882d',1,'FatVolume::rename(const String &oldPath, const String &newPath)'],['../class_fs_base_file.html#af532d87177e86995a053503eb9152115',1,'FsBaseFile::rename(const char *newPath)'],['../class_fs_base_file.html#a4e4347f6e89bf0b487824dbdc5b82068',1,'FsBaseFile::rename(FsBaseFile *dirFile, const char *newPath)'],['../class_fs_volume.html#aae3be08aff89f5a113cfa0b89c4a6004',1,'FsVolume::rename(const char *oldPath, const char *newPath)'],['../class_fs_volume.html#a7da5cf51eceaa2ea8799be05c3bf9258',1,'FsVolume::rename(const String &oldPath, const String &newPath)']]], - ['rewind_812',['rewind',['../class_ex_fat_file.html#a3c1d3ef65284ffb13ed3ceee472adf9a',1,'ExFatFile::rewind()'],['../class_fat_file.html#a5aac6e0b3cb08fc8b8668e916a8b0ca5',1,'FatFile::rewind()'],['../class_stdio_stream.html#ad985866675193d2ee1dde9e27b0d08da',1,'StdioStream::rewind()'],['../class_fs_base_file.html#a22f8ef845d610493ebe314e19ddda561',1,'FsBaseFile::rewind()']]], - ['rewinddirectory_813',['rewindDirectory',['../class_stream_file.html#a91e8cfbde27d6879b4f51d2ceb2a9f06',1,'StreamFile::rewindDirectory()'],['../class_fs_base_file.html#a56bfeb031562a6fb30e057670e6b326d',1,'FsBaseFile::rewindDirectory()']]], - ['right_814',['right',['../ios_8h.html#aee80fd600c5c58a2bebbd48afdcf8280',1,'ios.h']]], - ['rmdir_815',['rmdir',['../class_ex_fat_file.html#a0165e0fde12a53e419bd92cd37f9cfed',1,'ExFatFile::rmdir()'],['../class_ex_fat_volume.html#ab9e3e7d9538c905ca60b834e244943ee',1,'ExFatVolume::rmdir(const ExChar_t *path)'],['../class_ex_fat_volume.html#af0adfad817e085d676479fefbb343197',1,'ExFatVolume::rmdir(const String &path)'],['../class_fat_file.html#a9515bac181d33e7f0125e88fa2ccd283',1,'FatFile::rmdir()'],['../class_fat_volume.html#af1181990bcece7dbb7d19293dd4fe11a',1,'FatVolume::rmdir(const char *path)'],['../class_fat_volume.html#a105f437fb649b57ed3823f8ff1a2f37e',1,'FatVolume::rmdir(const String &path)'],['../class_fs_base_file.html#ac47870fd89b0849cda33f2780918a286',1,'FsBaseFile::rmdir()'],['../class_fs_volume.html#ad2457b491bf85495140fd4a8ca743513',1,'FsVolume::rmdir(const char *path)'],['../class_fs_volume.html#a32cdbc9c2d29ed95b2a7ff8d117dadc8',1,'FsVolume::rmdir(const String &path)']]], - ['rmrfstar_816',['rmRfStar',['../class_fat_file.html#ac780a80526f86d3def701ecdc99d8bfe',1,'FatFile']]], - ['rootdirectorycluster_817',['rootDirectoryCluster',['../class_ex_fat_partition.html#ac7ddc5d4efd1651816f1284980b6f790',1,'ExFatPartition']]], - ['rootdirentrycount_818',['rootDirEntryCount',['../class_fat_partition.html#a6ba99b9711269b5ab6ca091b88e81288',1,'FatPartition']]], - ['rootdirstart_819',['rootDirStart',['../class_fat_partition.html#a5d005e0f6fd4b84da8a5ebdea03aaf85',1,'FatPartition']]], - ['rootlength_820',['rootLength',['../class_ex_fat_partition.html#a9412bd687edc99266c88f8aa87f01c51',1,'ExFatPartition']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/mag_sel.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/mag_sel.png deleted file mode 100644 index 39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.html deleted file mode 100644 index 93c99f9d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.js deleted file mode 100644 index faf6c77d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/namespaces_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fsdatetime_568',['FsDateTime',['../namespace_fs_date_time.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/nomatches.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/nomatches.html deleted file mode 100644 index 43773208..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
              -
              No Matches
              -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.html deleted file mode 100644 index 32cbf498..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.js deleted file mode 100644 index ab055001..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arduino_20_25sdfat_20library_1046',['Arduino %SdFat Library',['../index.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.html deleted file mode 100644 index 530c782f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.js deleted file mode 100644 index 734377a9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['exfatfile_985',['ExFatFile',['../class_ex_fat_partition.html#a0ea68fb710b4ca007419acbf84ca6908',1,'ExFatPartition']]], - ['exfatvolume_986',['ExFatVolume',['../class_ex_fat_file.html#a064869383f7639b113eb0aaf0b84335c',1,'ExFatFile']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.html deleted file mode 100644 index 8bf9e071..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.js deleted file mode 100644 index f3e33b66..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/related_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fatcache_987',['FatCache',['../class_fat_partition.html#a1e97a7aed860b898c403cb29455b3fe7',1,'FatPartition']]], - ['fatfile_988',['FatFile',['../class_fat_partition.html#a18fb15a715ea85037ab802286853103e',1,'FatPartition']]], - ['fatvolume_989',['FatVolume',['../class_fat_file.html#a6ca3f436167f187097347a20ea221555',1,'FatFile']]], - ['fsbasefile_990',['FsBaseFile',['../class_fs_volume.html#a1655636bca63e3ac7e7ab6a8d112a2f0',1,'FsVolume']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.css b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.css deleted file mode 100644 index 3cf9df94..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.js deleted file mode 100644 index a554ab9c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - 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., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search_r.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/search_r.png deleted file mode 100644 index 1af5d21ee13e070d7600f1c4657fde843b953a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/searchdata.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/searchdata.js deleted file mode 100644 index 1b18afc1..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/searchdata.js +++ /dev/null @@ -1,48 +0,0 @@ -var indexSectionsWithContent = -{ - 0: "_abcdefghiklmnoprstuvwy", - 1: "abcdefimops", - 2: "f", - 3: "abefimops", - 4: "abcdefghiklmnoprstuvwy", - 5: "_abcdefghilmoprstuw", - 6: "fiops", - 7: "s", - 8: "bce", - 9: "ef", - 10: "cdefhimnpsuw", - 11: "a" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "namespaces", - 3: "files", - 4: "functions", - 5: "variables", - 6: "typedefs", - 7: "enums", - 8: "enumvalues", - 9: "related", - 10: "defines", - 11: "pages" -}; - -var indexSectionLabels = -{ - 0: "All", - 1: "Classes", - 2: "Namespaces", - 3: "Files", - 4: "Functions", - 5: "Variables", - 6: "Typedefs", - 7: "Enumerations", - 8: "Enumerator", - 9: "Friends", - 10: "Macros", - 11: "Pages" -}; - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.html deleted file mode 100644 index 8f30b85c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.js deleted file mode 100644 index 690392b8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['file_964',['File',['../_sd_fat_8h.html#aa0ffd23c3e43af0bcbd2fb4d62f3286d',1,'SdFat.h']]], - ['fmtflags_965',['fmtflags',['../classios__base.html#ac9a54e52cef4f01ac0afd8ae896a3413',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.html deleted file mode 100644 index 0cfdad74..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.js deleted file mode 100644 index e27a46fb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['iostate_966',['iostate',['../classios__base.html#aef19291eeae0f072ac42c6ba1fe3033c',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.html deleted file mode 100644 index d633f0ce..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.js deleted file mode 100644 index 219293b2..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['off_5ftype_967',['off_type',['../classios__base.html#a45de7cca0d01da781f4b886179c65c22',1,'ios_base']]], - ['openmode_968',['openmode',['../classios__base.html#aaa192ec0dccc43050715553a34644523',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.html deleted file mode 100644 index 6a6421d3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.js deleted file mode 100644 index 00b846e6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_3.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['pos_5ft_969',['pos_t',['../ios_8h.html#aae8adaedc486a4b2f67576fdeaf0a585',1,'ios.h']]], - ['pos_5ftype_970',['pos_type',['../classios__base.html#abe85cf1f181b8bce8022f05ab76aae7f',1,'ios_base']]], - ['print_5ft_971',['print_t',['../_sys_call_8h.html#ac62f6449331cfe1a71f29be30efe7890',1,'SysCall.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.html deleted file mode 100644 index 517e61d3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.js deleted file mode 100644 index efd42d57..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/typedefs_4.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['sdbasefile_972',['SdBaseFile',['../_sd_fat_8h.html#a3991b0f70199d1a17dbb837bb041e89c',1,'SdFat.h']]], - ['sdcspin_5ft_973',['SdCsPin_t',['../_sd_fat_config_8h.html#a7a489fb14a59adf251794342604fc5ea',1,'SdFatConfig.h']]], - ['sdfat_974',['SdFat',['../_sd_fat_8h.html#a6e295d38f798fdc044c3282818cdb064',1,'SdFat.h']]], - ['sdmillis_5ft_975',['SdMillis_t',['../_sys_call_8h.html#a94fe72e6e55572f63ac9d8fbad429980',1,'SysCall.h']]], - ['sdspidriver_976',['SdSpiDriver',['../_sd_spi_arduino_driver_8h.html#a737a41f87fd0d1824d87d83a1f976c14',1,'SdSpiDriver(): SdSpiArduinoDriver.h'],['../_sd_spi_soft_driver_8h.html#a8990c69a7a6a738c2e74dc155a98430b',1,'SdSpiDriver(): SdSpiSoftDriver.h']]], - ['spiport_5ft_977',['SpiPort_t',['../_sd_spi_driver_8h.html#a472d56ea7cb52ec5d68b3067baa000c3',1,'SdSpiDriver.h']]], - ['stream_5ft_978',['stream_t',['../_sys_call_8h.html#a708fe172ce8f40fdb50a2df8c567d07a',1,'SysCall.h']]], - ['streambasefile_979',['StreamBaseFile',['../ios_8h.html#a77934df7b6e6d581c762dd387e2b5162',1,'ios.h']]], - ['streamsize_980',['streamsize',['../classios__base.html#a82836e1d3cc603fba8f0b54d323a2dff',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.html deleted file mode 100644 index a2a3ae62..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.js deleted file mode 100644 index e47a4d04..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fbrkval_887',['__brkval',['../_free_stack_8h.html#ad193a2cc121e0d4614a1c21eb463fb56',1,'FreeStack.h']]], - ['_5f_5fbss_5fend_888',['__bss_end',['../_free_stack_8h.html#adbad17f740c2d7f2bc4833681c93c932',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.html deleted file mode 100644 index b243c423..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.js deleted file mode 100644 index 27270f44..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['adjustfield_889',['adjustfield',['../classios__base.html#adaaf735381254aa096ebe3605e8bbd0a',1,'ios_base']]], - ['always1_890',['always1',['../struct_c_i_d.html#ae9d4ba51ed4102255aa87bb92882f119',1,'CID']]], - ['app_891',['app',['../classios__base.html#a8380aac3c405730708888fdc68905820',1,'ios_base']]], - ['ate_892',['ate',['../classios__base.html#aa434355c165500065276d955d8b36e99',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.html deleted file mode 100644 index 65dd8af3..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.js deleted file mode 100644 index 8c7ad7e7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_10.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['trunc_960',['trunc',['../classios__base.html#ae62b8972f37509819e1384214071194b',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.html deleted file mode 100644 index f95ad58a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.js deleted file mode 100644 index 229ca593..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_11.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ungetc_5fbuf_5fsize_961',['UNGETC_BUF_SIZE',['../_stdio_stream_8h.html#a785dd413c0d7b05f95df82d3453ecacd',1,'StdioStream.h']]], - ['uppercase_962',['uppercase',['../classios__base.html#ade3db1fe3249e87f4c47a9a8916793d9',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.html deleted file mode 100644 index aa74a8d6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.js deleted file mode 100644 index 118c50b5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['w_963',['w',['../structsetw.html#ab48d915a24d3f3365c9eb76e138a6f4e',1,'setw']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.html deleted file mode 100644 index 647df20f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.js deleted file mode 100644 index 519902be..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['badbit_893',['badbit',['../classios__base.html#ac8c2c8f2f6bc9e6ce101c20e88ebce35',1,'ios_base']]], - ['basefield_894',['basefield',['../classios__base.html#a75ce5482aa207d7aa0265d138b50a102',1,'ios_base']]], - ['binary_895',['binary',['../classios__base.html#ac99947c17c2936d15243671366605602',1,'ios_base']]], - ['boolalpha_896',['boolalpha',['../classios__base.html#afa74acd95d4bbc7cc3551251aac2bf00',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.html deleted file mode 100644 index 9dc9b89e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.js deleted file mode 100644 index b909cef7..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_3.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['c_897',['c',['../structsetfill.html#a42ffb4e6135c1274ae827cfed7793a82',1,'setfill']]], - ['cache_5ffor_5fread_898',['CACHE_FOR_READ',['../class_fs_cache.html#a1df1d63f86fcf36e1ae08a48a05ead8b',1,'FsCache::CACHE_FOR_READ()'],['../class_fat_cache.html#ab4b446515ff9a0cebc747630ddd10c93',1,'FatCache::CACHE_FOR_READ()']]], - ['cache_5ffor_5fwrite_899',['CACHE_FOR_WRITE',['../class_fs_cache.html#ade321e6538ffc77c7f36ea200decaa6f',1,'FsCache::CACHE_FOR_WRITE()'],['../class_fat_cache.html#a81cb572f33443bd6aee9aa33ec395d0f',1,'FatCache::CACHE_FOR_WRITE()']]], - ['cache_5foption_5fno_5fread_900',['CACHE_OPTION_NO_READ',['../class_fs_cache.html#ab694436995afb87d6e31693b47811243',1,'FsCache::CACHE_OPTION_NO_READ()'],['../class_fat_cache.html#adf974f55e53ee0aaa85abb0d7d67181c',1,'FatCache::CACHE_OPTION_NO_READ()']]], - ['cache_5freserve_5ffor_5fwrite_901',['CACHE_RESERVE_FOR_WRITE',['../class_fs_cache.html#ae960459db6fda0de3d67768d3b59331d',1,'FsCache::CACHE_RESERVE_FOR_WRITE()'],['../class_fat_cache.html#a49d2896ff525ab77852f76df5c2a09c2',1,'FatCache::CACHE_RESERVE_FOR_WRITE()']]], - ['cache_5fstatus_5fdirty_902',['CACHE_STATUS_DIRTY',['../class_fs_cache.html#a9d83a0401f452c0572c4c4f869b698ab',1,'FsCache::CACHE_STATUS_DIRTY()'],['../class_fat_cache.html#aac8c38e5c545d0f80b13d816117f626e',1,'FatCache::CACHE_STATUS_DIRTY()']]], - ['cache_5fstatus_5fmask_903',['CACHE_STATUS_MASK',['../class_fs_cache.html#abb6b6426373bb591f027ac29eca4bacb',1,'FsCache::CACHE_STATUS_MASK()'],['../class_fat_cache.html#ab70dc4a2e387f0e9bf392044c702ae32',1,'FatCache::CACHE_STATUS_MASK()']]], - ['cache_5fstatus_5fmirror_5ffat_904',['CACHE_STATUS_MIRROR_FAT',['../class_fat_cache.html#a45236e1c0a2a098f08d3add0e4b1467a',1,'FatCache']]], - ['callback_905',['callback',['../namespace_fs_date_time.html#ab4e1acabf30bc682af20e1cc93330a6a',1,'FsDateTime']]], - ['callback2_906',['callback2',['../namespace_fs_date_time.html#a1c19b53a8b6c93d38a4bb2f2981a4efa',1,'FsDateTime']]], - ['cluster_907',['cluster',['../struct_ex_fat_pos__t.html#aef933f72a904d60398285bd0d833ee24',1,'ExFatPos_t::cluster()'],['../struct_dir_pos__t.html#a11898149ae53f0b189c6b13590c60a5f',1,'DirPos_t::cluster()'],['../struct_fat_pos__t.html#a7b50657b0debaf0e6231af2c74a655fe',1,'FatPos_t::cluster()']]], - ['crc_908',['crc',['../struct_c_i_d.html#aa10cfc5aef8e979e47009474dfa3d940',1,'CID']]], - ['cspin_909',['csPin',['../class_sd_spi_config.html#a0c1797197fbd4e4c4499daf4b51628e6',1,'SdSpiConfig']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.html deleted file mode 100644 index 78cc2c70..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.js deleted file mode 100644 index 41a59db5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['data_910',['data',['../unioncache__t.html#ae675b7a3a87d809070de111d1d1f1d81',1,'cache_t']]], - ['dec_911',['dec',['../classios__base.html#a2826aed005e7c1f6858060cddae7971a',1,'ios_base']]], - ['dir_912',['dir',['../unioncache__t.html#a04a7472d08f2545d6db7804c82c99d7c',1,'cache_t']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.html deleted file mode 100644 index dfa35588..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.js deleted file mode 100644 index 85b5c529..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['eofbit_913',['eofbit',['../classios__base.html#af75072b7ef2a931c77a2cb8e7ccda460',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.html deleted file mode 100644 index cd462bde..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.js deleted file mode 100644 index 6a0c3f6b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_6.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['failbit_914',['failbit',['../classios__base.html#a36157154001bcce17827db6786e35efd',1,'ios_base']]], - ['fat16_915',['fat16',['../unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887',1,'cache_t']]], - ['fat32_916',['fat32',['../unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83',1,'cache_t']]], - ['fat_5ftype_5fexfat_917',['FAT_TYPE_EXFAT',['../_ex_fat_partition_8h.html#ad74089b317bc77bd1e8cbb56fef8046a',1,'ExFatPartition.h']]], - ['fat_5ftype_5ffat12_918',['FAT_TYPE_FAT12',['../_fat_partition_8h.html#a2914ab2ce1d4cff984ad93b922e99d50',1,'FatPartition.h']]], - ['fat_5ftype_5ffat16_919',['FAT_TYPE_FAT16',['../_fat_partition_8h.html#a586e7b4151f14bd56b78a836855c0f55',1,'FatPartition.h']]], - ['fat_5ftype_5ffat32_920',['FAT_TYPE_FAT32',['../_fat_partition_8h.html#a63da6e74b3bce481580263cebb591d5e',1,'FatPartition.h']]], - ['flags_921',['flags',['../structfname__t.html#a39c69edff13165c6e03b308104e7286d',1,'fname_t']]], - ['fname_5fflag_5flc_5fbase_922',['FNAME_FLAG_LC_BASE',['../_fat_file_8h.html#a79e43960e1b4eecf274f5faea9c3168c',1,'FatFile.h']]], - ['fname_5fflag_5flc_5fext_923',['FNAME_FLAG_LC_EXT',['../_fat_file_8h.html#a135b7572768b09661aa38afaceec7296',1,'FatFile.h']]], - ['fname_5fflag_5flost_5fchars_924',['FNAME_FLAG_LOST_CHARS',['../_fat_file_8h.html#acd45286b7dfc5ba68be18c8c3a9d298d',1,'FatFile.h']]], - ['fname_5fflag_5fmixed_5fcase_925',['FNAME_FLAG_MIXED_CASE',['../_fat_file_8h.html#a63994c21f3b723a55247f063a1b01c9c',1,'FatFile.h']]], - ['fname_5fflag_5fneed_5flfn_926',['FNAME_FLAG_NEED_LFN',['../_fat_file_8h.html#a1a041207a19d2fd9a1e2739343ccb29b',1,'FatFile.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.html deleted file mode 100644 index 47994b80..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.js deleted file mode 100644 index a1c647da..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['goodbit_927',['goodbit',['../classios__base.html#a07a00996a6e525b88bdfe7935d5ead05',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.html deleted file mode 100644 index a50ee8f5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.js deleted file mode 100644 index 25e88236..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hex_928',['hex',['../classios__base.html#a3608e51eb0a80ea94ddadd5b713a3750',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.html deleted file mode 100644 index 82db8aed..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.js deleted file mode 100644 index 4a217bc0..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['in_929',['in',['../classios__base.html#ae5432e3c269064480652c4602f5f74ad',1,'ios_base']]], - ['internal_930',['internal',['../classios__base.html#afc720b7f6f461ec8e9cf5505059e5d7c',1,'ios_base']]], - ['iscontiguous_931',['isContiguous',['../struct_dir_pos__t.html#a7bea047144551b24c5aa301dc8dd44d7',1,'DirPos_t']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.html deleted file mode 100644 index fd8f0d75..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.js deleted file mode 100644 index bcb7af69..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_a.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['left_932',['left',['../classios__base.html#ad364df9af2cfde1f40bd8e10c62bb215',1,'ios_base']]], - ['len_933',['len',['../struct_ex_name__t.html#a4c1c36c08b96a553854ac16c8309cd93',1,'ExName_t::len()'],['../structfname__t.html#a471184cc4c2671526d7d6fb80b2fe20c',1,'fname_t::len()']]], - ['lfn_934',['lfn',['../struct_ex_name__t.html#afcdcceaf5309a7b6e21ddbf15e5b83cb',1,'ExName_t::lfn()'],['../structfname__t.html#a76ffd7abd5b7d3acf90b329c905770fd',1,'fname_t::lfn()']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.html deleted file mode 100644 index 577a4b71..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.js deleted file mode 100644 index bcbeeb63..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['maxsck_935',['maxSck',['../class_sd_spi_config.html#ac1afd080e2baa2b6eb81331ed5180f37',1,'SdSpiConfig']]], - ['mdt_5fmonth_936',['mdt_month',['../struct_c_i_d.html#a60e35d4b824da135dc2a9197c5544929',1,'CID']]], - ['mdt_5fyear_5fhigh_937',['mdt_year_high',['../struct_c_i_d.html#a6b16c5e74b48af39036aa831fca4cb46',1,'CID']]], - ['mdt_5fyear_5flow_938',['mdt_year_low',['../struct_c_i_d.html#afe44a84b416bea68dea9bad27c172c3d',1,'CID']]], - ['mid_939',['mid',['../struct_c_i_d.html#aa77436aa64a8a0e80573ade765039d2f',1,'CID']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.html deleted file mode 100644 index 0b92edbb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.js deleted file mode 100644 index 6eb6da0d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_c.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['oct_940',['oct',['../classios__base.html#a4155540f8d3ffdb8d25a2f50ee4df08f',1,'ios_base']]], - ['oid_941',['oid',['../struct_c_i_d.html#a12cb950aa46c62c8af1e530006f97031',1,'CID']]], - ['options_942',['options',['../class_sd_spi_config.html#a6292855eeea89636ad2b4da9675dbc96',1,'SdSpiConfig']]], - ['out_943',['out',['../classios__base.html#a4c1d517774c0d11af3424e90395f26ae',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.html deleted file mode 100644 index 8b53e604..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.js deleted file mode 100644 index 34afaf4b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_d.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['p_944',['p',['../structsetprecision.html#a7cb7bb355a303fa39a8035615bde9348',1,'setprecision']]], - ['pnm_945',['pnm',['../struct_c_i_d.html#a6484cd56fc4bacfa815c12d8682129ba',1,'CID']]], - ['position_946',['position',['../struct_ex_fat_pos__t.html#abfab79daf5a2df281ebf3c5dad204f23',1,'ExFatPos_t::position()'],['../struct_dir_pos__t.html#a6cef96844ecd8e9972df860bacc04f24',1,'DirPos_t::position()'],['../struct_fat_pos__t.html#a8e14c6f2705777502b543452743eaa26',1,'FatPos_t::position()']]], - ['prv_5fm_947',['prv_m',['../struct_c_i_d.html#a142fd792bb74d7af1f0fb62833ae053b',1,'CID']]], - ['prv_5fn_948',['prv_n',['../struct_c_i_d.html#ae50f389a50daf99d15d1ea7ce2d426cf',1,'CID']]], - ['psn_949',['psn',['../struct_c_i_d.html#ada215f8541fa46078461d8da9574fc5e',1,'CID']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.html deleted file mode 100644 index abb7aa17..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.js deleted file mode 100644 index 607fd47f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_e.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['reserved_950',['reserved',['../struct_c_i_d.html#a7d489455802a3a9728a5cec60927a7c7',1,'CID']]], - ['right_951',['right',['../classios__base.html#aec064a12730b5d87e718c1864e29ac64',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.html deleted file mode 100644 index 5458b946..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
              -
              Loading...
              -
              - -
              Searching...
              -
              No Matches
              - -
              - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.js b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.js deleted file mode 100644 index 9e0c093f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/search/variables_f.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['seqpos_952',['seqPos',['../structfname__t.html#a96b7c779dec8dd568be3290451078a4e',1,'fname_t']]], - ['sfn_953',['sfn',['../structfname__t.html#a37ed0c108b1feb81be4f8c041a4336bd',1,'fname_t']]], - ['showbase_954',['showbase',['../classios__base.html#a7e3373ab307feecfc228bc9bdb29cd01',1,'ios_base']]], - ['showpoint_955',['showpoint',['../classios__base.html#ac9bb172682e157f037bd7fb82a236ee6',1,'ios_base']]], - ['showpos_956',['showpos',['../classios__base.html#a7bfa4a883933105d10f8ce2693cb9f21',1,'ios_base']]], - ['skipws_957',['skipws',['../classios__base.html#a64977c777d6e45826d1be9763f17f824',1,'ios_base']]], - ['spiport_958',['spiPort',['../class_sd_spi_config.html#aedaada290c35b55d36671ca377620480',1,'SdSpiConfig']]], - ['stream_5fbuf_5fsize_959',['STREAM_BUF_SIZE',['../_stdio_stream_8h.html#ad9a6150ef11e2616c1a99bc777df17d3',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/splitbar.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d-members.html deleted file mode 100644 index 36e86596..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              CID Member List
              -
              -
              - -

              This is the complete list of members for CID, including all inherited members.

              - - - - - - - - - - - - - -
              always1CID
              crcCID
              mdt_monthCID
              mdt_year_highCID
              mdt_year_lowCID
              midCID
              oidCID
              pnmCID
              prv_mCID
              prv_nCID
              psnCID
              reservedCID
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d.html deleted file mode 100644 index 2d7f2fc5..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_c_i_d.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - -SdFat: CID Class Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              CID Class Reference
              -
              -
              - -

              Card IDentification (CID) register. - More...

              - -

              #include <SdCardInfo.h>

              - - - - - - - - - - - - - - - - - - - - - - - - - - -

              -Public Attributes

              unsigned char always1: 1
               
              unsigned char crc: 7
               
              unsigned char mdt_month: 4
               
              unsigned char mdt_year_high: 4
               
              unsigned char mdt_year_low: 4
               
              unsigned char mid
               
              char oid [2]
               
              char pnm [5]
               
              unsigned char prv_m: 4
               
              unsigned char prv_n: 4
               
              uint32_t psn
               
              unsigned char reserved: 4
               
              -

              Detailed Description

              -

              Card IDentification (CID) register.

              -

              Member Data Documentation

              - -

              ◆ always1

              - -
              -
              - - - - -
              unsigned char CID::always1
              -
              -

              not used always 1

              - -
              -
              - -

              ◆ crc

              - -
              -
              - - - - -
              unsigned char CID::crc
              -
              -

              CRC7 checksum

              - -
              -
              - -

              ◆ mdt_month

              - -
              -
              - - - - -
              unsigned char CID::mdt_month
              -
              -

              Manufacturing date month

              - -
              -
              - -

              ◆ mdt_year_high

              - -
              -
              - - - - -
              unsigned char CID::mdt_year_high
              -
              -

              Manufacturing date year high digit

              - -
              -
              - -

              ◆ mdt_year_low

              - -
              -
              - - - - -
              unsigned char CID::mdt_year_low
              -
              -

              Manufacturing date year low digit

              - -
              -
              - -

              ◆ mid

              - -
              -
              - - - - -
              unsigned char CID::mid
              -
              -

              Manufacturer ID

              - -
              -
              - -

              ◆ oid

              - -
              -
              - - - - -
              char CID::oid[2]
              -
              -

              OEM/Application ID

              - -
              -
              - -

              ◆ pnm

              - -
              -
              - - - - -
              char CID::pnm[5]
              -
              -

              Product name

              - -
              -
              - -

              ◆ prv_m

              - -
              -
              - - - - -
              unsigned char CID::prv_m
              -
              -

              Product revision least significant digit

              - -
              -
              - -

              ◆ prv_n

              - -
              -
              - - - - -
              unsigned char CID::prv_n
              -
              -

              Product revision most significant digit

              - -
              -
              - -

              ◆ psn

              - -
              -
              - - - - -
              uint32_t CID::psn
              -
              -

              Product serial number

              - -
              -
              - -

              ◆ reserved

              - -
              -
              - - - - -
              unsigned char CID::reserved
              -
              -

              not used

              - -
              -
              -
              The documentation for this class was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/SdCard/SdCardInfo.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t-members.html deleted file mode 100644 index 64fa507f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              DirPos_t Member List
              -
              -
              - -

              This is the complete list of members for DirPos_t, including all inherited members.

              - - - - -
              clusterDirPos_t
              isContiguousDirPos_t
              positionDirPos_t
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t.html deleted file mode 100644 index 360e5341..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_dir_pos__t.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: DirPos_t Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              DirPos_t Struct Reference
              -
              -
              - -

              Internal type for position in directory file. - More...

              - -

              #include <ExFatTypes.h>

              - - - - - - - - -

              -Public Attributes

              uint32_t cluster
               
              bool isContiguous
               
              uint32_t position
               
              -

              Detailed Description

              -

              Internal type for position in directory file.

              -

              Member Data Documentation

              - -

              ◆ cluster

              - -
              -
              - - - - -
              uint32_t DirPos_t::cluster
              -
              -

              current cluster

              - -
              -
              - -

              ◆ isContiguous

              - -
              -
              - - - - -
              bool DirPos_t::isContiguous
              -
              -

              directory is contiguous

              - -
              -
              - -

              ◆ position

              - -
              -
              - - - - -
              uint32_t DirPos_t::position
              -
              -

              offset

              - -
              -
              -
              The documentation for this struct was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/ExFatLib/ExFatTypes.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t-members.html deleted file mode 100644 index 0760b3cc..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              ExFatPos_t Member List
              -
              -
              - -

              This is the complete list of members for ExFatPos_t, including all inherited members.

              - - - - -
              clusterExFatPos_t
              ExFatPos_t() (defined in ExFatPos_t)ExFatPos_tinline
              positionExFatPos_t
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t.html deleted file mode 100644 index 6905b936..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_fat_pos__t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: ExFatPos_t Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              ExFatPos_t Struct Reference
              -
              -
              - -

              Internal type for file position - do not use in user apps. - More...

              - -

              #include <ExFatFile.h>

              - - - - - - -

              -Public Attributes

              uint32_t cluster
               
              uint64_t position
               
              -

              Detailed Description

              -

              Internal type for file position - do not use in user apps.

              -

              Member Data Documentation

              - -

              ◆ cluster

              - -
              -
              - - - - -
              uint32_t ExFatPos_t::cluster
              -
              -

              cluster for position

              - -
              -
              - -

              ◆ position

              - -
              -
              - - - - -
              uint64_t ExFatPos_t::position
              -
              -

              stream position

              - -
              -
              -
              The documentation for this struct was generated from the following file: -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t-members.html deleted file mode 100644 index b170184e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              ExName_t Member List
              -
              -
              - -

              This is the complete list of members for ExName_t, including all inherited members.

              - - - -
              lenExName_t
              lfnExName_t
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t.html deleted file mode 100644 index 53dfde3c..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_ex_name__t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: ExName_t Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              ExName_t Struct Reference
              -
              -
              - -

              Internal type for file name - do not use in user apps. - More...

              - -

              #include <ExFatFile.h>

              - - - - - - -

              -Public Attributes

              size_t len
               
              const ExChar_t * lfn
               
              -

              Detailed Description

              -

              Internal type for file name - do not use in user apps.

              -

              Member Data Documentation

              - -

              ◆ len

              - -
              -
              - - - - -
              size_t ExName_t::len
              -
              -

              length of Long File Name

              - -
              -
              - -

              ◆ lfn

              - -
              -
              - - - - -
              const ExChar_t* ExName_t::lfn
              -
              -

              Long File Name start.

              - -
              -
              -
              The documentation for this struct was generated from the following file: -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t-members.html deleted file mode 100644 index 1539d52f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              FatPos_t Member List
              -
              -
              - -

              This is the complete list of members for FatPos_t, including all inherited members.

              - - - - -
              clusterFatPos_t
              FatPos_t() (defined in FatPos_t)FatPos_tinline
              positionFatPos_t
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t.html deleted file mode 100644 index d2a2fb3f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/struct_fat_pos__t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: FatPos_t Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              FatPos_t Struct Reference
              -
              -
              - -

              Internal type for file position - do not use in user apps. - More...

              - -

              #include <FatFile.h>

              - - - - - - -

              -Public Attributes

              uint32_t cluster
               
              uint32_t position
               
              -

              Detailed Description

              -

              Internal type for file position - do not use in user apps.

              -

              Member Data Documentation

              - -

              ◆ cluster

              - -
              -
              - - - - -
              uint32_t FatPos_t::cluster
              -
              -

              cluster for position

              - -
              -
              - -

              ◆ position

              - -
              -
              - - - - -
              uint32_t FatPos_t::position
              -
              -

              stream position

              - -
              -
              -
              The documentation for this struct was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/FatLib/FatFile.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t-members.html deleted file mode 100644 index 083b39d8..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              fname_t Member List
              -
              -
              - -

              This is the complete list of members for fname_t, including all inherited members.

              - - - - - - -
              flagsfname_t
              lenfname_t
              lfnfname_t
              seqPosfname_t
              sfnfname_t
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t.html deleted file mode 100644 index dba4425d..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structfname__t.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -SdFat: fname_t Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              fname_t Struct Reference
              -
              -
              - -

              Internal type for Short File Name - do not use in user apps. - More...

              - -

              #include <FatFile.h>

              - - - - - - - - - - - - -

              -Public Attributes

              uint8_t flags
               
              size_t len
               
              const char * lfn
               
              uint8_t seqPos
               
              uint8_t sfn [11]
               
              -

              Detailed Description

              -

              Internal type for Short File Name - do not use in user apps.

              -

              Member Data Documentation

              - -

              ◆ flags

              - -
              -
              - - - - -
              uint8_t fname_t::flags
              -
              -

              Flags for base and extension character case and LFN.

              - -
              -
              - -

              ◆ len

              - -
              -
              - - - - -
              size_t fname_t::len
              -
              -

              length of Long File Name

              - -
              -
              - -

              ◆ lfn

              - -
              -
              - - - - -
              const char* fname_t::lfn
              -
              -

              Long File Name start.

              - -
              -
              - -

              ◆ seqPos

              - -
              -
              - - - - -
              uint8_t fname_t::seqPos
              -
              -

              position for sequence number

              - -
              -
              - -

              ◆ sfn

              - -
              -
              - - - - -
              uint8_t fname_t::sfn[11]
              -
              -

              Short File Name

              - -
              -
              -
              The documentation for this struct was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/FatLib/FatFile.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill-members.html deleted file mode 100644 index 6651d03b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              setfill Member List
              -
              -
              - -

              This is the complete list of members for setfill, including all inherited members.

              - - - -
              csetfill
              setfill(char arg)setfillinlineexplicit
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill.html deleted file mode 100644 index 82c0538a..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetfill.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -SdFat: setfill Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              setfill Struct Reference
              -
              -
              - -

              type for setfill manipulator - More...

              - -

              #include <iostream.h>

              - - - - -

              -Public Member Functions

               setfill (char arg)
               
              - - - -

              -Public Attributes

              char c
               
              -

              Detailed Description

              -

              type for setfill manipulator

              -

              Constructor & Destructor Documentation

              - -

              ◆ setfill()

              - -
              -
              - - - - - -
              - - - - - - - - -
              setfill::setfill (char arg)
              -
              -inlineexplicit
              -
              -

              constructor

              -
              Parameters
              - - -
              [in]argnew fill character
              -
              -
              - -
              -
              -

              Member Data Documentation

              - -

              ◆ c

              - -
              -
              - - - - -
              char setfill::c
              -
              -

              fill character

              - -
              -
              -
              The documentation for this struct was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/iostream/iostream.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision-members.html deleted file mode 100644 index a7a4d0bf..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              setprecision Member List
              -
              -
              - -

              This is the complete list of members for setprecision, including all inherited members.

              - - - -
              psetprecision
              setprecision(unsigned int arg)setprecisioninlineexplicit
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision.html deleted file mode 100644 index 3e6fe8b9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetprecision.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: setprecision Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              setprecision Struct Reference
              -
              -
              - -

              type for setprecision manipulator - More...

              - -

              #include <iostream.h>

              - - - - -

              -Public Member Functions

               setprecision (unsigned int arg)
               
              - - - -

              -Public Attributes

              unsigned int p
               
              -

              Detailed Description

              -

              type for setprecision manipulator

              -

              Constructor & Destructor Documentation

              - -

              ◆ setprecision()

              - -
              -
              - - - - - -
              - - - - - - - - -
              setprecision::setprecision (unsigned int arg)
              -
              -inlineexplicit
              -
              -

              constructor

              Parameters
              - - -
              [in]argnew precision
              -
              -
              - -
              -
              -

              Member Data Documentation

              - -

              ◆ p

              - -
              -
              - - - - -
              unsigned int setprecision::p
              -
              -

              precision

              - -
              -
              -
              The documentation for this struct was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/iostream/iostream.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw-members.html deleted file mode 100644 index 3aa8d611..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              setw Member List
              -
              -
              - -

              This is the complete list of members for setw, including all inherited members.

              - - - -
              setw(unsigned arg)setwinlineexplicit
              wsetw
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw.html deleted file mode 100644 index 1cb631dc..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/structsetw.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: setw Struct Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              - -
              - -

              type for setw manipulator - More...

              - -

              #include <iostream.h>

              - - - - -

              -Public Member Functions

               setw (unsigned arg)
               
              - - - -

              -Public Attributes

              unsigned w
               
              -

              Detailed Description

              -

              type for setw manipulator

              -

              Constructor & Destructor Documentation

              - -

              ◆ setw()

              - -
              -
              - - - - - -
              - - - - - - - - -
              setw::setw (unsigned arg)
              -
              -inlineexplicit
              -
              -

              constructor

              Parameters
              - - -
              [in]argnew width
              -
              -
              - -
              -
              -

              Member Data Documentation

              - -

              ◆ w

              - -
              -
              - - - - -
              unsigned setw::w
              -
              -

              width

              - -
              -
              -
              The documentation for this struct was generated from the following file:
                -
              • Arduino/libraries/SdFat/src/iostream/iostream.h
              • -
              -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/sync_off.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/sync_on.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_a.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_b.png b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tabs.css b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tabs.css deleted file mode 100644 index 85a0cd5b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t-members.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t-members.html deleted file mode 100644 index 29edb0f6..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t-members.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              -
              -
              cache_t Member List
              -
              -
              - -

              This is the complete list of members for cache_t, including all inherited members.

              - - - - - -
              datacache_t
              dircache_t
              fat16cache_t
              fat32cache_t
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t.html deleted file mode 100644 index 8c8999fc..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/unioncache__t.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -SdFat: cache_t Union Reference - - - - - - - - - -
              -
              - - - - - - -
              -
              SdFat -
              -
              -
              - - - - - - - - -
              -
              - - -
              - -
              - -
              -
              - -
              -
              cache_t Union Reference
              -
              -
              - -

              Cache for an raw data sector. - More...

              - -

              #include <FatPartition.h>

              - - - - - - - - - - -

              -Public Attributes

              uint8_t data [512]
               
              DirFat_t dir [16]
               
              uint16_t fat16 [256]
               
              uint32_t fat32 [128]
               
              -

              Detailed Description

              -

              Cache for an raw data sector.

              -

              Member Data Documentation

              - -

              ◆ data

              - -
              -
              - - - - -
              uint8_t cache_t::data[512]
              -
              -

              Used to access cached file data sectors.

              - -
              -
              - -

              ◆ dir

              - -
              -
              - - - - -
              DirFat_t cache_t::dir[16]
              -
              -

              Used to access cached directory entries.

              - -
              -
              - -

              ◆ fat16

              - -
              -
              - - - - -
              uint16_t cache_t::fat16[256]
              -
              -

              Used to access cached FAT16 entries.

              - -
              -
              - -

              ◆ fat32

              - -
              -
              - - - - -
              uint32_t cache_t::fat32[128]
              -
              -

              Used to access cached FAT32 entries.

              - -
              -
              -
              The documentation for this union was generated from the following file: -
              - - - - diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/mainpage.h b/extra-libraries/ESP8266/ESP8266SdFat/doc/mainpage.h index 0c361f7c..19312b7b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/mainpage.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/doc/mainpage.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -31,19 +31,19 @@ This is a major new version of SdFat. It is mostly backward compatible with SdFat Version 1 for FAT16/FAT32 cards. You should edit SdFatConfig.h to select features. The default version of -SdFatConfig.h is suitable for UNO and other small AVR boards. +SdFatConfig.h is suitable for UNO and other small AVR boards. \section Intro Introduction - -The Arduino %SdFat library supports FAT16, FAT32, and exFAT file systems + +The Arduino %SdFat library supports FAT16, FAT32, and exFAT file systems on Standard SD, SDHC, and SDXC cards. - + In %SdFat version 1, SdFat and File are the main classes. In %SdFat version 2, SdFat and File are defined by typedefs in terms of the -following classes. +following classes. -The file system classes in the %SdFat library are SdFat32, SdExFat, and SdFs. +The file system classes in the %SdFat library are SdFat32, SdExFat, and SdFs. SdFat32 supports FAT16 and FAT32. SdExFat supports exFAT, SdFs supports FAT16, FAT32, and exFAT. @@ -69,7 +69,7 @@ boards. #endif // defined(__AVR__) && FLASHEND < 0X8000 \endcode -It is possible to use option three, support or FAT16/FAT32 and exFat +It is possible to use option three, support or FAT16/FAT32 and exFat on an Uno or other AVR board with 32KB flash and 2KB SRAM but memory will be very limited. @@ -79,7 +79,7 @@ Uno memory use for a simple data logger is: > > option 2, exFAT, 14942 bytes of flash and 895 bytes of SRAM. > -> option 3, FAT16/FAT32 and exFAT, 21834 bytes of flash and 908 bytes of SRAM. +> option 3, FAT16/FAT32 and exFAT, 21834 bytes of flash and 908 bytes of SRAM. Please read documentation under the above classes tab for more information. @@ -113,8 +113,8 @@ multi-block write. Relative paths in %SdFat are resolved in a manner similar to Windows. -Each instance of SdFat32, SdExFat, and SdFs has a current directory. -This directory is called the volume working directory, vwd. +Each instance of SdFat32, SdExFat, and SdFs has a current directory. +This directory is called the volume working directory, vwd. Initially this directory is the root directory for the volume. The volume working directory is changed by calling the chdir(path). @@ -149,9 +149,9 @@ will open "/music/BigBand.wav" on sd2. \section Install Installation -You must manually install %SdFat by renaming the download folder %SdFat +You must manually install %SdFat by renaming the download folder %SdFat and copy the %SdFat folder to the Arduino libraries folder in your -sketchbook folder. +sketchbook folder. It will be necessary to unzip and rename the folder if you download a zip file from GitHub. @@ -249,11 +249,9 @@ DirectoryFunctions - Use of chdir(), ls(), mkdir(), and rmdir(). examplesV1 folder - Examples from SdFat V1 for compatibility tests. -%ExFatFormatter - Produces optimal exFAT format for smaller SD cards. - ExFatLogger - A data-logger optimized for exFAT features. -ExFatUnicodeTest - Test program for Unicode file names. +MinimumSizeSdReader - Example of small file reader for FAT16/FAT32. OpenNext - Open all files in the root dir and print their filename. @@ -275,10 +273,16 @@ SoftwareSpi - Demo of limited Software SPI support in SdFat V2. STM32Test - Example use of two SPI ports on an STM32 board. +TeensyDmaAdcLogger - Fast logger using DMA ADC. + TeensyRtcTimestamp - %File timestamps for Teensy3. TeensySdioDemo - Demo of SDIO and SPI modes for the Teensy 3.5/3.6 built-in SD. +TeensySdioLogger - Fast logger using a ring buffer. + +UnicodeFilenames - Test program for Unicode file names. + UserChipSelectFunction - Useful for port expanders or replacement of the standard GPIO functions. UserSPIDriver - An example of an external SPI driver. diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.h b/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.h index 054f1994..55f26747 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.h @@ -3,7 +3,8 @@ const size_t BLOCK_SIZE = 64; //------------------------------------------------------------------------------ // First block of file. -const size_t PIN_NUM_DIM = BLOCK_SIZE - 3*sizeof(uint32_t) - 2*sizeof(uint8_t); +const size_t PIN_NUM_DIM = + BLOCK_SIZE - 3 * sizeof(uint32_t) - 2 * sizeof(uint8_t); struct metadata_t { uint32_t adcFrequency; // ADC clock frequency uint32_t cpuFrequency; // CPU clock frequency @@ -14,15 +15,16 @@ struct metadata_t { }; //------------------------------------------------------------------------------ // Data block for 8-bit ADC mode. -const size_t DATA_DIM8 = (BLOCK_SIZE - 2*sizeof(uint16_t))/sizeof(uint8_t); +const size_t DATA_DIM8 = (BLOCK_SIZE - 2 * sizeof(uint16_t)) / sizeof(uint8_t); struct block8_t { uint16_t count; // count of data values uint16_t overrun; // count of overruns since last block - uint8_t data[DATA_DIM8]; + uint8_t data[DATA_DIM8]; }; //------------------------------------------------------------------------------ // Data block for 10-bit ADC mode. -const size_t DATA_DIM16 = (BLOCK_SIZE - 2*sizeof(uint16_t))/sizeof(uint16_t); +const size_t DATA_DIM16 = + (BLOCK_SIZE - 2 * sizeof(uint16_t)) / sizeof(uint16_t); struct block16_t { unsigned short count; // count of data values unsigned short overrun; // count of overruns since last block diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.ino index ce013eeb..6c70af8b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/AvrAdcLogger/AvrAdcLogger.ino @@ -20,12 +20,11 @@ */ #ifdef __AVR__ #include -#include "SdFat.h" + +#include "AvrAdcLogger.h" #include "BufferedPrint.h" #include "FreeStack.h" -#include "AvrAdcLogger.h" - -using namespace sdfat; +#include "SdFat.h" // Save SRAM if 328. #ifdef __AVR_ATmega328P__ @@ -36,9 +35,6 @@ MinimumSerial MinSerial; //------------------------------------------------------------------------------ // This example was designed for exFAT but will support FAT16/FAT32. // -// If an exFAT SD is required, the ExFatFormatter example will format -// smaller cards with an exFAT file system. -// // Note: Uno will not support SD_FAT_TYPE = 3. // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. @@ -78,7 +74,7 @@ const float SAMPLE_RATE = 5000; // Must be 0.25 or greater. // constant instead of being calculated from SAMPLE_RATE. SAMPLE_RATE is not // used in the code below. For example, setting SAMPLE_INTERVAL = 2.0e-4 // will result in a 200 microsecond sample interval. -const float SAMPLE_INTERVAL = 1.0/SAMPLE_RATE; +const float SAMPLE_INTERVAL = 1.0 / SAMPLE_RATE; // Setting ROUND_SAMPLE_INTERVAL non-zero will cause the sample interval to // be rounded to a a multiple of the ADC clock period and will reduce sample @@ -114,11 +110,11 @@ const size_t NAME_DIM = 40; #elif RAMEND < 0X10FF const size_t FIFO_SIZE_BYTES = 512; #elif RAMEND < 0X20FF -const size_t FIFO_SIZE_BYTES = 4*512; +const size_t FIFO_SIZE_BYTES = 4 * 512; #elif RAMEND < 0X40FF -const size_t FIFO_SIZE_BYTES = 12*512; -#else // RAMEND -const size_t FIFO_SIZE_BYTES = 16*512; +const size_t FIFO_SIZE_BYTES = 12 * 512; +#else // RAMEND +const size_t FIFO_SIZE_BYTES = 16 * 512; #endif // RAMEND //------------------------------------------------------------------------------ // ADC clock rate. @@ -141,7 +137,7 @@ const size_t FIFO_SIZE_BYTES = 16*512; #define TMP_FILE_NAME "tmp_adc.bin" // Number of analog pins to log. -const uint8_t PIN_COUNT = sizeof(PIN_LIST)/sizeof(PIN_LIST[0]); +const uint8_t PIN_COUNT = sizeof(PIN_LIST) / sizeof(PIN_LIST[0]); // Minimum ADC clock cycles per sample interval const uint16_t MIN_ADC_CYCLES = 15; @@ -154,11 +150,14 @@ const uint16_t ISR_TIMER0 = 160; //============================================================================== const uint32_t MAX_FILE_SIZE = MAX_FILE_SIZE_MiB << 20; +// Max SPI rate for AVR is 10 MHz for F_CPU 20 MHz, 8 MHz for F_CPU 16 MHz. +#define SPI_CLOCK SD_SCK_MHZ(10) + // Select fastest interface. #if ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // ENABLE_DEDICATED_SPI #if SD_FAT_TYPE == 0 @@ -183,19 +182,19 @@ file_t csvFile; char binName[] = LOG_FILE_NAME; #if RECORD_EIGHT_BITS -const size_t BLOCK_MAX_COUNT = PIN_COUNT*(DATA_DIM8/PIN_COUNT); +const size_t BLOCK_MAX_COUNT = PIN_COUNT * (DATA_DIM8 / PIN_COUNT); typedef block8_t block_t; -#else // RECORD_EIGHT_BITS -const size_t BLOCK_MAX_COUNT = PIN_COUNT*(DATA_DIM16/PIN_COUNT); +#else // RECORD_EIGHT_BITS +const size_t BLOCK_MAX_COUNT = PIN_COUNT * (DATA_DIM16 / PIN_COUNT); typedef block16_t block_t; -#endif // RECORD_EIGHT_BITS +#endif // RECORD_EIGHT_BITS // Size of FIFO in blocks. -size_t const FIFO_DIM = FIFO_SIZE_BYTES/sizeof(block_t); +size_t const FIFO_DIM = FIFO_SIZE_BYTES / sizeof(block_t); block_t* fifoData; -volatile size_t fifoCount = 0; // volatile - shared, ISR and background. -size_t fifoHead = 0; // Only accessed by ISR during logging. -size_t fifoTail = 0; // Only accessed by writer during logging. +volatile size_t fifoCount = 0; // volatile - shared, ISR and background. +size_t fifoHead = 0; // Only accessed by ISR during logging. +size_t fifoTail = 0; // Only accessed by writer during logging. //============================================================================== // Interrupt Service Routines @@ -222,7 +221,7 @@ ISR(ADC_vect) { // Read ADC data. #if RECORD_EIGHT_BITS uint8_t d = ADCH; -#else // RECORD_EIGHT_BITS +#else // RECORD_EIGHT_BITS // This will access ADCL first. uint16_t d = ADC; #endif // RECORD_EIGHT_BITS @@ -248,7 +247,7 @@ ISR(ADC_vect) { if (adcindex == 0) { timerFlag = false; } - adcindex = adcindex < (PIN_COUNT - 1) ? adcindex + 1 : 0; + adcindex = adcindex < (PIN_COUNT - 1) ? adcindex + 1 : 0; } else { timerFlag = false; } @@ -280,7 +279,7 @@ ISR(TIMER1_COMPB_vect) { } //============================================================================== // Error messages stored in flash. -#define error(msg) (Serial.println(F(msg)),errorHalt()) +#define error(msg) (Serial.println(F(msg)), errorHalt()) #define assert(e) ((e) ? (void)0 : error("assert: " #e)) //------------------------------------------------------------------------------ // @@ -339,12 +338,13 @@ void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { #error unexpected ADC prescaler bits #endif //------------------------------------------------------------------------------ -inline bool adcActive() {return (1 << ADIE) & ADCSRA;} +inline bool adcActive() { return (1 << ADIE) & ADCSRA; } //------------------------------------------------------------------------------ // initialize ADC and timer1 void adcInit(metadata_t* meta) { uint8_t adps; // prescaler bits for ADCSRA - uint32_t ticks = F_CPU*SAMPLE_INTERVAL + 0.5; // Sample interval cpu cycles. + uint32_t ticks = + F_CPU * SAMPLE_INTERVAL + 0.5; // Sample interval cpu cycles. if (ADC_REF & ~((1 << REFS0) | (1 << REFS1))) { error("Invalid ADC reference"); @@ -354,9 +354,9 @@ void adcInit(metadata_t* meta) { error("Invalid ADC prescaler"); } adps = ADC_PRESCALER; -#else // ADC_PRESCALER +#else // ADC_PRESCALER // Allow extra cpu cycles to change ADC settings if more than one pin. - int32_t adcCycles = (ticks - ISR_TIMER0)/PIN_COUNT - ISR_SETUP_ADC; + int32_t adcCycles = (ticks - ISR_TIMER0) / PIN_COUNT - ISR_SETUP_ADC; for (adps = 7; adps > 0; adps--) { if (adcCycles >= (MIN_ADC_CYCLES << adps)) { @@ -413,19 +413,19 @@ void adcInit(metadata_t* meta) { // no prescale, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); tshift = 0; - } else if (ticks < 0X10000*8) { + } else if (ticks < 0X10000 * 8) { // prescale 8, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11); tshift = 3; - } else if (ticks < 0X10000*64) { + } else if (ticks < 0X10000 * 64) { // prescale 64, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10); tshift = 6; - } else if (ticks < 0X10000*256) { + } else if (ticks < 0X10000 * 256) { // prescale 256, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12); tshift = 8; - } else if (ticks < 0X10000*1024) { + } else if (ticks < 0X10000 * 1024) { // prescale 1024, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12) | (1 << CS10); tshift = 10; @@ -445,7 +445,7 @@ void adcInit(metadata_t* meta) { // Sample interval in CPU clock ticks. meta->sampleInterval = ticks; meta->cpuFrequency = F_CPU; - float sampleRate = (float)meta->cpuFrequency/meta->sampleInterval; + float sampleRate = (float)meta->cpuFrequency / meta->sampleInterval; Serial.print(F("Sample pins:")); for (uint8_t i = 0; i < meta->pinCount; i++) { Serial.print(' '); @@ -455,11 +455,11 @@ void adcInit(metadata_t* meta) { Serial.print(F("ADC bits: ")); Serial.println(meta->recordEightBits ? 8 : 10); Serial.print(F("ADC clock kHz: ")); - Serial.println(meta->adcFrequency/1000); + Serial.println(meta->adcFrequency / 1000); Serial.print(F("Sample Rate: ")); Serial.println(sampleRate); Serial.print(F("Sample interval usec: ")); - Serial.println(1000000.0/sampleRate); + Serial.println(1000000.0 / sampleRate); } //------------------------------------------------------------------------------ // enable ADC and timer1 interrupts @@ -511,7 +511,7 @@ void binaryToCsv() { if (nb < 0) { error("read binFile failed"); } - size_t nd = nb/sizeof(block_t); + size_t nd = nb / sizeof(block_t); if (nd < 1) { break; } @@ -522,7 +522,8 @@ void binaryToCsv() { error("Invalid pinCount"); } bp.print(F("Interval,")); - float intervalMicros = 1.0e6*pm->sampleInterval/(float)pm->cpuFrequency; + float intervalMicros = + 1.0e6 * pm->sampleInterval / (float)pm->cpuFrequency; bp.print(intervalMicros, 4); bp.println(F(",usec")); for (uint8_t i = 0; i < PIN_COUNT; i++) { @@ -544,14 +545,15 @@ void binaryToCsv() { } for (size_t j = 0; j < pd->count; j += PIN_COUNT) { for (size_t i = 0; i < PIN_COUNT; i++) { - if (!bp.printField(pd->data[i + j], i == (PIN_COUNT-1) ? '\n' : ',')) { + if (!bp.printField(pd->data[i + j], + i == (PIN_COUNT - 1) ? '\n' : ',')) { error("printField failed"); } } } } if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); + uint8_t pct = binFile.curPosition() / (binFile.fileSize() / 100); if (pct != lastPct) { tPct = millis(); lastPct = pct; @@ -564,7 +566,7 @@ void binaryToCsv() { error("close csvFile failed"); } Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); + Serial.print(0.001 * (millis() - t0)); Serial.println(F(" Seconds")); } //------------------------------------------------------------------------------ @@ -622,7 +624,7 @@ bool createCsvFile() { error("no dot in binName"); } strcpy(dot + 1, "csv"); - if (!csvFile.open(csvName, O_WRONLY|O_CREAT|O_TRUNC)) { + if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { error("open csvFile failed"); } Serial.print(F("Writing: ")); @@ -635,7 +637,7 @@ bool createCsvFile() { void logData() { uint32_t t0; uint32_t t1; - uint32_t overruns =0; + uint32_t overruns = 0; uint32_t count = 0; uint32_t maxLatencyUsec = 0; size_t maxFifoUse = 0; @@ -679,7 +681,7 @@ void logData() { if (m > maxLatencyUsec) { maxLatencyUsec = m; } - if (tmpFifoCount >maxFifoUse) { + if (tmpFifoCount > maxFifoUse) { maxFifoUse = tmpFifoCount; } count += pBlock->count; @@ -714,7 +716,7 @@ void logData() { isrStop = true; } if (fifoCount == 0 && !adcActive()) { - break; + break; } } Serial.println(); @@ -729,9 +731,9 @@ void logData() { Serial.print(F("Max write latency usec: ")); Serial.println(maxLatencyUsec); Serial.print(F("Record time sec: ")); - Serial.println(0.001*(t1 - t0), 3); + Serial.println(0.001 * (t1 - t0), 3); Serial.print(F("Sample count: ")); - Serial.println(count/PIN_COUNT); + Serial.println(count / PIN_COUNT); Serial.print(F("Overruns: ")); Serial.println(overruns); Serial.print(F("FIFO_DIM: ")); @@ -770,13 +772,13 @@ void printData() { return; } binFile.rewind(); - if (binFile.read(&buf , sizeof(buf)) != sizeof(buf)) { + if (binFile.read(&buf, sizeof(buf)) != sizeof(buf)) { error("Read metadata failed"); } Serial.println(F("Type any character to stop")); delay(1000); while (!Serial.available() && - binFile.read(&buf , sizeof(buf)) == sizeof(buf)) { + binFile.read(&buf, sizeof(buf)) == sizeof(buf)) { if (buf.count == 0) { break; } @@ -786,7 +788,7 @@ void printData() { } for (size_t i = 0; i < buf.count; i++) { Serial.print(buf.data[i], DEC); - if ((i+1)%PIN_COUNT) { + if ((i + 1) % PIN_COUNT) { Serial.print(','); } else { Serial.println(); @@ -798,7 +800,7 @@ void printData() { //------------------------------------------------------------------------------ bool serialReadLine(char* str, size_t size) { size_t n = 0; - while(!Serial.available()) { + while (!Serial.available()) { } while (true) { int c = Serial.read(); @@ -809,7 +811,8 @@ bool serialReadLine(char* str, size_t size) { return false; } uint32_t m = millis(); - while (!Serial.available() && (millis() - m) < 100){} + while (!Serial.available() && (millis() - m) < 100) { + } if (!Serial.available()) break; } str[n] = 0; @@ -821,9 +824,11 @@ void setup(void) { pinMode(ERROR_LED_PIN, OUTPUT); } Serial.begin(9600); - while(!Serial) {} + while (!Serial) { + } Serial.println(F("Type any character to begin.")); - while(!Serial.available()) {} + while (!Serial.available()) { + } FillStack(); @@ -831,9 +836,9 @@ void setup(void) { analogRead(PIN_LIST[0]); #if !ENABLE_DEDICATED_SPI - Serial.println(F( - "\nFor best performance edit SdFatConfig.h\n" - "and set ENABLE_DEDICATED_SPI nonzero")); + Serial.println( + F("\nFor best performance edit SdFatConfig.h\n" + "and set ENABLE_DEDICATED_SPI nonzero")); #endif // !ENABLE_DEDICATED_SPI // Initialize SD. if (!sd.begin(SD_CONFIG)) { @@ -867,8 +872,8 @@ void loop(void) { Serial.println(F("p - print data to Serial")); Serial.println(F("r - record ADC data")); - while(!Serial.available()) { - SysCall::yield(); + while (!Serial.available()) { + yield(); } char c = tolower(Serial.read()); Serial.println(); @@ -898,4 +903,4 @@ void loop(void) { } #else // __AVR__ #error This program is only for AVR. -#endif // __AVR__ +#endif // __AVR__ \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/BackwardCompatibility/BackwardCompatibility.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/BackwardCompatibility/BackwardCompatibility.ino index 8952ff62..9729695d 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/BackwardCompatibility/BackwardCompatibility.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/BackwardCompatibility/BackwardCompatibility.ino @@ -3,6 +3,11 @@ // // Your SD must be formatted FAT16/FAT32. // +// SD.h does not support some default SdFat features. +// To compare flash size, set USE_FAT_FILE_FLAG_CONTIGUOUS, +// ENABLE_DEDICATED_SPI, and USE_LONG_FILE_NAMES to zero also +// set SDFAT_FILE_TYPE to one in SdFat/src/SdFatCongfig.h +// // Set USE_SD_H nonzero to use SD.h. // Set USE_SD_H zero to use SdFat.h. // @@ -12,9 +17,6 @@ #include #else // USE_SD_H #include "SdFat.h" - -using namespace sdfat; - SdFat SD; #endif // USE_SD_H @@ -26,11 +28,12 @@ File myFile; void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } #if USE_SD_H Serial.println(F("Using SD.h. Set USE_SD_H zero to use SdFat.h.")); -#else // USE_SD_H +#else // USE_SD_H Serial.println(F("Using SdFat.h. Set USE_SD_H nonzero to use SD.h.")); #endif // USE_SD_H Serial.println(F("\nType any character to begin.")); @@ -78,4 +81,4 @@ void setup() { } void loop() { // nothing happens after setup -} +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/BufferedPrint/BufferedPrint.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/BufferedPrint/BufferedPrint.ino index db3d577d..5a924eb6 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/BufferedPrint/BufferedPrint.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/BufferedPrint/BufferedPrint.ino @@ -1,15 +1,12 @@ // Test and benchmark of the fast bufferedPrint class. // // Mainly for AVR but may improve print performance with other CPUs. -#include "SdFat.h" #include "BufferedPrint.h" - -using namespace sdfat; - +#include "SdFat.h" // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -22,18 +19,21 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS #if SD_FAT_TYPE == 0 @@ -71,49 +71,48 @@ void benchmark() { bp.begin(&file); } uint32_t t = millis(); - switch(test) { - case 0: - Serial.println(F("Test of println(uint16_t)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - file.println(i); - } - break; + switch (test) { + case 0: + Serial.println(F("Test of println(uint16_t)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + file.println(i); + } + break; - case 1: - Serial.println(F("Test of printField(uint16_t, char)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - bp.printField(i, '\n'); - } - break; + case 1: + Serial.println(F("Test of printField(uint16_t, char)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + bp.printField(i, '\n'); + } + break; - case 2: - Serial.println(F("Test of println(uint32_t)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - file.println(12345678UL + i); - } - break; + case 2: + Serial.println(F("Test of println(uint32_t)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + file.println(12345678UL + i); + } + break; - case 3: - Serial.println(F("Test of printField(uint32_t, char)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - bp.printField(12345678UL + i, '\n'); - } - break; + case 3: + Serial.println(F("Test of printField(uint32_t, char)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + bp.printField(12345678UL + i, '\n'); + } + break; - case 4: - Serial.println(F("Test of println(double)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - file.println((double)0.01*i); - } - break; - - case 5: - Serial.println(F("Test of printField(double, char)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - bp.printField((double)0.01*i, '\n'); - } - break; + case 4: + Serial.println(F("Test of println(double)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + file.println((double)0.01 * i); + } + break; + case 5: + Serial.println(F("Test of printField(double, char)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + bp.printField((double)0.01 * i, '\n'); + } + break; } if (test & 1) { bp.sync(); @@ -125,13 +124,13 @@ void benchmark() { file.close(); t = millis() - t; Serial.print(F("Time ")); - Serial.print(0.001*t, 3); + Serial.print(0.001 * t, 3); Serial.println(F(" sec")); Serial.print(F("File size ")); - Serial.print(0.001*s); + Serial.print(0.001 * s); Serial.println(F(" KB")); Serial.print(F("Write ")); - Serial.print(s/t); + Serial.print(s / t); Serial.println(F(" KB/sec")); Serial.println(); } @@ -139,23 +138,23 @@ void benchmark() { //------------------------------------------------------------------------------ void testMemberFunctions() { BufferedPrint bp(&Serial); - char c = 'c'; // char + char c = 'c'; // char //#define BASIC_TYPES #ifdef BASIC_TYPES - signed char sc = -1; // signed 8-bit - unsigned char uc = 1; // unsiged 8-bit - signed short ss = -2; // signed 16-bit - unsigned short us = 2; // unsigned 16-bit - signed long sl = -4; // signed 32-bit - unsigned long ul = 4; // unsigned 32-bit -#else // BASIC_TYPES - int8_t sc = -1; // signed 8-bit - uint8_t uc = 1; // unsiged 8-bit - int16_t ss = -2; // signed 16-bit - uint16_t us = 2; // unsigned 16-bit - int32_t sl = -4; // signed 32-bit - uint32_t ul = 4; // unsigned 32-bit -#endif // BASIC_TYPES + signed char sc = -1; // signed 8-bit + unsigned char uc = 1; // unsiged 8-bit + signed short ss = -2; // signed 16-bit + unsigned short us = 2; // unsigned 16-bit + signed long sl = -4; // signed 32-bit + unsigned long ul = 4; // unsigned 32-bit +#else // BASIC_TYPES + int8_t sc = -1; // signed 8-bit + uint8_t uc = 1; // unsiged 8-bit + int16_t ss = -2; // signed 16-bit + uint16_t us = 2; // unsigned 16-bit + int32_t sl = -4; // signed 32-bit + uint32_t ul = 4; // unsigned 32-bit +#endif // BASIC_TYPES float f = -1.234; double d = -5.678; bp.println(); @@ -216,9 +215,11 @@ void testMemberFunctions() { //------------------------------------------------------------------------------ void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } Serial.println("Type any character to begin."); - while(!Serial.available()) {} + while (!Serial.available()) { + } if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } @@ -226,10 +227,10 @@ void setup() { Serial.println(F("Test member funcions:")); testMemberFunctions(); Serial.println(); - Serial.println(F("Benchmark performance for uint16_t, uint32_t, and double:")); + Serial.println( + F("Benchmark performance for uint16_t, uint32_t, and double:")); benchmark(); Serial.println("Done"); } //------------------------------------------------------------------------------ -void loop() { -} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino index 8b570c8b..455578e9 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino @@ -4,12 +4,9 @@ #include "SdFat.h" #include "sdios.h" -using namespace sdfat; - - // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -21,19 +18,22 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +const uint8_t SD_CS_PIN = 4; +#else // SDCARD_SS_PIN // Assume built-in SD is used. -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +const uint8_t SD_CS_PIN = 4; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(16) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS //------------------------------------------------------------------------------ @@ -66,22 +66,20 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(1000); - cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize the SD card. if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } - if (sd.exists("Folder1") - || sd.exists("Folder1/file1.txt") - || sd.exists("Folder1/File2.txt")) { + if (sd.exists("Folder1") || sd.exists("Folder1/file1.txt") || + sd.exists("Folder1/File2.txt")) { error("Please remove existing Folder1, file1.txt, and File2.txt"); } diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatFormatter/ExFatFormatter.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatFormatter/ExFatFormatter.ino deleted file mode 100644 index e8c48e23..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatFormatter/ExFatFormatter.ino +++ /dev/null @@ -1,88 +0,0 @@ -// Force exFAT formatting for all SD cards larger than 512MB. -#include "SdFat.h" - -using namespace sdfat; - - -/* - Change the value of SD_CS_PIN if you are using SPI and - your hardware does not use the default value, SS. - Common values are: - Arduino Ethernet shield: pin 4 - Sparkfun SD shield: pin 8 - Adafruit SD shields and modules: pin 10 -*/ - -// SDCARD_SS_PIN is defined for the built-in SD on some boards. -#ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN -// Assume built-in SD is used. -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; -#endif // SDCARD_SS_PIN - -// Select fastest interface. -#if HAS_SDIO_CLASS -// SD config for Teensy 3.6 SDIO. -#define SD_CONFIG SdioConfig(FIFO_SDIO) -//#define SD_CONFIG SdioConfig(DMA_SDIO) -#elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) -#else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) -#endif // HAS_SDIO_CLASS - -SdExFat sd; -//------------------------------------------------------------------------------ -void clearSerialInput() { - uint32_t m = micros(); - do { - if (Serial.read() >= 0) { - m = micros(); - } - } while (micros() - m < 10000); -} -//------------------------------------------------------------------------------ -void errorHalt() { - sd.printSdError(&Serial); - SysCall::halt(); -} -#define error(s) (Serial.println(F(s)),errorHalt()) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - while (!Serial) {} - Serial.println(F("Type any character to begin")); - - while (!Serial.available()) { - yield(); - } - clearSerialInput(); - Serial.println(); - Serial.println(F( - "Your SD will be formated exFAT.\r\n" - "All data on the SD will be lost.\r\n" - "Type 'Y' to continue.\r\n")); - - while (!Serial.available()) { - yield(); - } - if (Serial.read() != 'Y') { - Serial.println(F("Exiting, 'Y' not typed.")); - return; - } - if (!sd.cardBegin(SD_CONFIG)) { - error("cardBegin failed"); - } - if(!sd.format(&Serial)) { - error("format failed"); - } - if (!sd.volumeBegin()) { - error("volumeBegin failed"); - } - Serial.print(F("Bytes per cluster: ")); - Serial.println(sd.bytesPerCluster()); - Serial.println(F("Done")); -} -void loop() { -} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatLogger/ExFatLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatLogger/ExFatLogger.ino index bc1f1b51..f3a6c55d 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatLogger/ExFatLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatLogger/ExFatLogger.ino @@ -1,17 +1,11 @@ // Example to demonstrate write latency for preallocated exFAT files. // I suggest you write a PC program to convert very large bin files. // -// If an exFAT SD is required, the ExFatFormatter example will format -// smaller cards with an exFAT file system. -// // The maximum data rate will depend on the quality of your SD, // the size of the FIFO, and using dedicated SPI. -#include "SdFat.h" -#include "FreeStack.h" #include "ExFatLogger.h" - -using namespace sdfat; - +#include "FreeStack.h" +#include "SdFat.h" //------------------------------------------------------------------------------ // This example was designed for exFAT but will support FAT16/FAT32. // Note: Uno will not support SD_FAT_TYPE = 3. @@ -51,7 +45,7 @@ const uint32_t LOG_INTERVAL_USEC = 2000; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -71,12 +65,17 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Preallocate 1GiB file. const uint32_t PREALLOCATE_SIZE_MiB = 1024UL; -// Select the fastest interface. Assumes no other SPI devices. -#if ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) -#else // ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) -#endif // ENABLE_DEDICATED_SPI +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) + +// Try to select the best SD card configuration. +#if HAS_SDIO_CLASS +#define SD_CONFIG SdioConfig(FIFO_SDIO) +#elif ENABLE_DEDICATED_SPI +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) +#else // HAS_SDIO_CLASS +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) +#endif // HAS_SDIO_CLASS // Save SRAM if 328. #ifdef __AVR_ATmega328P__ @@ -128,11 +127,11 @@ void printRecord(Print* pr, data_t* data) { } } //============================================================================== -const uint64_t PREALLOCATE_SIZE = (uint64_t)PREALLOCATE_SIZE_MiB << 20; +const uint64_t PREALLOCATE_SIZE = (uint64_t)PREALLOCATE_SIZE_MiB << 20; // Max length of file name including zero byte. #define FILE_NAME_DIM 40 // Max number of records to buffer while SD is busy. -const size_t FIFO_DIM = 512*FIFO_SIZE_SECTORS/sizeof(data_t); +const size_t FIFO_DIM = 512 * FIFO_SIZE_SECTORS / sizeof(data_t); #if SD_FAT_TYPE == 0 typedef SdFat sd_t; @@ -192,22 +191,22 @@ void binaryToCsv() { data_t binData[FIFO_DIM]; if (!binFile.seekSet(512)) { - error("binFile.seek faile"); + error("binFile.seek failed"); } uint32_t tPct = millis(); printRecord(&csvFile, nullptr); while (!Serial.available() && binFile.available()) { int nb = binFile.read(binData, sizeof(binData)); - if (nb <= 0 ) { + if (nb <= 0) { error("read binFile failed"); } - size_t nr = nb/sizeof(data_t); + size_t nr = nb / sizeof(data_t); for (size_t i = 0; i < nr; i++) { printRecord(&csvFile, &binData[i]); } if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); + uint8_t pct = binFile.curPosition() / (binFile.fileSize() / 100); if (pct != lastPct) { tPct = millis(); lastPct = pct; @@ -222,7 +221,7 @@ void binaryToCsv() { } csvFile.close(); Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); + Serial.print(0.001 * (millis() - t0)); Serial.println(F(" Seconds")); } //------------------------------------------------------------------------------ @@ -303,7 +302,7 @@ void logData() { uint16_t overrun = 0; uint16_t maxOverrun = 0; uint32_t totalOverrun = 0; - uint32_t fifoBuf[128*FIFO_SIZE_SECTORS]; + uint32_t fifoBuf[128 * FIFO_SIZE_SECTORS]; data_t* fifoData = (data_t*)fifoBuf; // Write dummy sector to start multi-block write. @@ -316,7 +315,8 @@ void logData() { Serial.println(F("Type any character to stop")); // Wait until SD is not busy. - while (sd.card()->isBusy()) {} + while (sd.card()->isBusy()) { + } // Start time for log file. uint32_t m = millis(); @@ -371,9 +371,9 @@ void logData() { if (!sd.card()->isBusy()) { size_t nw = fifoHead > fifoTail ? fifoCount : FIFO_DIM - fifoTail; // Limit write time by not writing more than 512 bytes. - const size_t MAX_WRITE = 512/sizeof(data_t); + const size_t MAX_WRITE = 512 / sizeof(data_t); if (nw > MAX_WRITE) nw = MAX_WRITE; - size_t nb = nw*sizeof(data_t); + size_t nb = nw * sizeof(data_t); uint32_t usec = micros(); if (nb != binFile.write(fifoData + fifoTail, nb)) { error("write binFile failed"); @@ -393,7 +393,7 @@ void logData() { } } Serial.print(F("\nLog time: ")); - Serial.print(0.001*(millis() - m)); + Serial.print(0.001 * (millis() - m)); Serial.println(F(" Seconds")); binFile.truncate(); binFile.sync(); @@ -470,7 +470,7 @@ void printUnusedStack() { //------------------------------------------------------------------------------ bool serialReadLine(char* str, size_t size) { size_t n = 0; - while(!Serial.available()) { + while (!Serial.available()) { yield(); } while (true) { @@ -482,7 +482,8 @@ bool serialReadLine(char* str, size_t size) { return false; } uint32_t m = millis(); - while (!Serial.available() && (millis() - m) < 100){} + while (!Serial.available() && (millis() - m) < 100) { + } if (!Serial.available()) break; } str[n] = 0; @@ -517,7 +518,7 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(1000); Serial.println(F("Type any character to begin")); @@ -526,9 +527,9 @@ void setup() { } FillStack(); #if !ENABLE_DEDICATED_SPI - Serial.println(F( - "\nFor best performance edit SdFatConfig.h\n" - "and set ENABLE_DEDICATED_SPI nonzero")); + Serial.println( + F("\nFor best performance edit SdFatConfig.h\n" + "and set ENABLE_DEDICATED_SPI nonzero")); #endif // !ENABLE_DEDICATED_SPI Serial.print(FIFO_DIM); @@ -568,8 +569,8 @@ void loop() { Serial.println(F("p - print data to Serial")); Serial.println(F("r - record data")); Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); + while (!Serial.available()) { + yield(); } char c = tolower(Serial.read()); Serial.println(); @@ -593,4 +594,4 @@ void loop() { } else { Serial.println(F("Invalid entry")); } -} +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatUnicodeTest/ExFatUnicodeTest.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatUnicodeTest/ExFatUnicodeTest.ino deleted file mode 100644 index eb086900..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/ExFatUnicodeTest/ExFatUnicodeTest.ino +++ /dev/null @@ -1,50 +0,0 @@ -// Simple test of Unicode file name. -// Note: Unicode is only supported by the SdExFat class. -// No exFAT functions will be defined for char* paths. -// The SdFs class cannot be used. -#include "SdFat.h" - -using namespace sdfat; - -#if USE_EXFAT_UNICODE_NAMES - -// SDCARD_SS_PIN is defined for the built-in SD on some boards. -#ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN -// Assume built-in SD is used. -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; -#endif // SDCARD_SS_PIN - -// Use SPI, SD_CS_PIN, SHARED_SPI, 50 MHz. -#define SD_CONFIG SdSpiConfig(SD_CS_PIN) - -SdExFat sd; - -ExFile file; - -void setup() { - Serial.begin(9600); - while (!Serial) { - yield(); - } - Serial.println("Type any character to begin"); - while (!Serial.available()) { - yield(); - } - if (!sd.begin(SD_CONFIG)) { - sd.initErrorHalt(&Serial); - } - if (!file.open(u"Euros \u20AC test.txt", FILE_WRITE)) { - Serial.println("file.open failed"); - return; - } - file.println("This is not Unicode"); - file.close(); - Serial.println("Done!"); -} -void loop() { -} -#else // USE_EXFAT_UNICODE_NAMES -#error USE_EXFAT_UNICODE_NAMES must be nonzero in SdFat/src/ExFatLib/ExFatCongfig.h -#endif // USE_EXFAT_UNICODE_NAMES diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino new file mode 100644 index 00000000..1e8a7e9d --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino @@ -0,0 +1,60 @@ +// Create a text file on the SD with this path using short 8.3 names. +#define SFN_PATH "/DIR/TEST.TXT" + +// Modify CS_PIN for your chip select pin. +#define CS_PIN SS + +// Set USE_SD_H to one for SD.h or zero for SdFat. +#define USE_SD_H 0 + +#if USE_SD_H +#include "SD.h" +File file; +#else +#include "SdFat.h" +// Setting ENABLE_DEDICATED_SPI to zero saves over 200 more bytes. +#if ENABLE_DEDICATED_SPI +#warning \ + "Set ENABLE_DEDICATED_SPI zero in SdFat/src/SdFatConfig.h for minimum size" +#endif // ENABLE_DEDICATED_SPI +// Insure FAT16/FAT32 only. +SdFat32 SD; +// FatFile does not support Stream functions, just simple read/write. +FatFile file; +#endif + +void error(const char* msg) { + Serial.println(msg); + while (true) { + } +} +void setup() { + int n; + char buf[4]; + + Serial.begin(9600); + while (!Serial) { + } + Serial.println("Type any character to begin"); + while (!Serial.available()) { + } + + if (!SD.begin(CS_PIN)) error("SD.begin"); + +#if USE_SD_H + file = SD.open(SFN_PATH); + if (!file) error("open"); +#else + // Open existing file with a path of 8.3 names. + // Directories will be opened O_RDONLY files O_RDWR. + if (!file.openExistingSFN(SFN_PATH)) error("open"); +#endif + while ((n = file.read(buf, sizeof(buf)))) { + Serial.write(buf, n); + } + // close() is only needed if you write to the file. For example, read + // config data, modify the data, rewind the file and write the data. + // file.close(); +} + +void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/OpenNext/OpenNext.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/OpenNext/OpenNext.ino index 887e94e2..16687260 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/OpenNext/OpenNext.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/OpenNext/OpenNext.ino @@ -3,12 +3,9 @@ */ #include "SdFat.h" -using namespace sdfat; - - // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -20,19 +17,22 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +const uint8_t SD_CS_PIN = 4; +#else // SDCARD_SS_PIN // Assume built-in SD is used. -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +const uint8_t SD_CS_PIN = 4; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(30) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS #if SD_FAT_TYPE == 0 @@ -63,20 +63,24 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.println("Type any character to start"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize the SD. if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } - // Open root directory - if (!dir.open("/")){ + +} +//------------------------------------------------------------------------------ +void loop() { + // Open root directory + if (!dir.open("/")) { error("dir.open failed"); } // Open next file in root. @@ -100,6 +104,7 @@ void setup() { } else { Serial.println("Done!"); } -} -//------------------------------------------------------------------------------ -void loop() {} + dir.close(); + delay(2000); + + } diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/QuickStart/QuickStart.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/QuickStart/QuickStart.ino index a2bd9f36..eb884ab7 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/QuickStart/QuickStart.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/QuickStart/QuickStart.ino @@ -1,15 +1,13 @@ // Quick hardware test for SPI card access. // #include + #include "SdFat.h" #include "sdios.h" -using namespace sdfat; - - // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 // // Set DISABLE_CHIP_SELECT to disable a second SPI device. // For example, with the Ethernet shield, set DISABLE_CHIP_SELECT @@ -71,7 +69,7 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } cout << F("\nSPI pins:\n"); cout << F("MISO: ") << int(MISO) << endl; @@ -84,17 +82,17 @@ void setup() { if (DISABLE_CHIP_SELECT < 0) { cout << F( - "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" - "a second SPI device. For example, with the Ethernet\n" - "shield, DISABLE_CHIP_SELECT should be set to 10\n" - "to disable the Ethernet controller.\n"); + "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" + "a second SPI device. For example, with the Ethernet\n" + "shield, DISABLE_CHIP_SELECT should be set to 10\n" + "to disable the Ethernet controller.\n"); } cout << F( - "\nSD chip select is the key hardware option.\n" - "Common values are:\n" - "Arduino Ethernet shield, pin 4\n" - "Sparkfun SD shield, pin 8\n" - "Adafruit SD shields and modules, pin 10\n"); + "\nSD chip select is the key hardware option.\n" + "Common values are:\n" + "Arduino Ethernet shield, pin 4\n" + "Sparkfun SD shield, pin 8\n" + "Adafruit SD shields and modules, pin 10\n"); } bool firstTry = true; @@ -109,7 +107,7 @@ void loop() { cout << F("\nEnter the chip select pin number: "); while (!Serial.available()) { - SysCall::yield(); + yield(); } cin.readline(); if (cin >> chipSelect) { @@ -120,8 +118,8 @@ void loop() { } if (DISABLE_CHIP_SELECT < 0) { cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); + "\nAssuming the SD is the only SPI device.\n" + "Edit DISABLE_CHIP_SELECT to disable another device.\n"); } else { cout << F("\nDisabling SPI device on pin "); cout << int(DISABLE_CHIP_SELECT) << endl; @@ -131,12 +129,12 @@ void loop() { if (!sd.begin(chipSelect, SPI_SPEED)) { if (sd.card()->errorCode()) { cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is chipSelect set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - "Is there a wiring/soldering problem?\n"); + "\nSD initialization failed.\n" + "Do not reformat the card!\n" + "Is the card correctly inserted?\n" + "Is chipSelect set to the correct value?\n" + "Does another SPI device need to be disabled?\n" + "Is there a wiring/soldering problem?\n"); cout << F("\nerrorCode: ") << hex << showbase; cout << int(sd.card()->errorCode()); cout << F(", errorData: ") << int(sd.card()->errorData()); @@ -145,7 +143,7 @@ void loop() { } cout << F("\nCard successfully initialized.\n"); if (sd.vol()->fatType() == 0) { - cout << F("Can't find a valid FAT16/FAT32 partition.\n"); + cout << F("Can't find a valid FAT16/FAT32/exFAT partition.\n"); reformatMsg(); return; } @@ -165,15 +163,19 @@ void loop() { cout << F("Card size: ") << sizeMB; cout << F(" MB (MB = 1,000,000 bytes)\n"); cout << endl; - cout << F("Volume is FAT") << int(sd.vol()->fatType()); + if (sd.fatType() <= 32) { + cout << F("\nVolume is FAT") << int(sd.fatType()); + } else { + cout << F("\nVolume is exFAT"); + } cout << F(", Cluster size (bytes): ") << sd.vol()->bytesPerCluster(); cout << endl << endl; cout << F("Files found (date time size name):\n"); sd.ls(LS_R | LS_DATE | LS_SIZE); - if ((sizeMB > 1100 && sd.vol()->sectorsPerCluster() < 64) - || (sizeMB < 2200 && sd.vol()->fatType() == 32)) { + if ((sizeMB > 1100 && sd.vol()->sectorsPerCluster() < 64) || + (sizeMB < 2200 && sd.vol()->fatType() == 32)) { cout << F("\nThis card should be reformatted for best performance.\n"); cout << F("Use a cluster size of 32 KB for cards larger than 1 GB.\n"); cout << F("Only cards larger than 2 GB should be formatted FAT32.\n"); @@ -185,6 +187,6 @@ void loop() { cout << F("\nSuccess! Type any character to restart.\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } -} +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/ReadCsvFile/ReadCsvFile.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/ReadCsvFile/ReadCsvFile.ino index 78658988..7fb61cad 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/ReadCsvFile/ReadCsvFile.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/ReadCsvFile/ReadCsvFile.ino @@ -1,11 +1,8 @@ #include "SdFat.h" -using namespace sdfat; - - // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -18,18 +15,21 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS #if SD_FAT_TYPE == 0 @@ -127,10 +127,10 @@ void setup() { error("open failed"); } // Write test data. - file.print(F( - "abc,123,456,7.89\r\n" - "def,-321,654,-9.87\r\n" - "ghi,333,0xff,5.55")); + file.print( + F("abc,123,456,7.89\r\n" + "def,-321,654,-9.87\r\n" + "ghi,333,0xff,5.55")); // Rewind file for read. file.rewind(); @@ -140,7 +140,7 @@ void setup() { if (n <= 0) { error("fgets failed"); } - if (line[n-1] != '\n' && n == (sizeof(line) - 1)) { + if (line[n - 1] != '\n' && n == (sizeof(line) - 1)) { error("line too long"); } if (!parseLine(line)) { @@ -152,5 +152,4 @@ void setup() { Serial.println(F("Done")); } -void loop() { -} +void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/RtcTimestampTest/RtcTimestampTest.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/RtcTimestampTest/RtcTimestampTest.ino index 2e74e7f2..3e5e5a74 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/RtcTimestampTest/RtcTimestampTest.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/RtcTimestampTest/RtcTimestampTest.ino @@ -2,9 +2,6 @@ // Set the callback with this statement. // FsDateTime::setCallback(dateTime); #include "SdFat.h" - -using namespace sdfat; - // https://github.com/adafruit/RTClib #include "RTClib.h" // Set RTC_TYPE for file timestamps. @@ -16,7 +13,7 @@ using namespace sdfat; // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -29,18 +26,21 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS #if SD_FAT_TYPE == 0 @@ -59,7 +59,6 @@ FsFile file; #error Invalid SD_FAT_TYPE #endif // SD_FAT_TYPE - #if RTC_TYPE == 0 RTC_Millis rtc; #elif RTC_TYPE == 1 @@ -108,12 +107,12 @@ void getLine(char* line, size_t size) { while (true) { t = millis() + 10; while (!Serial.available()) { - if (millis() > t){ + if (millis() > t) { return; } } int c = Serial.read(); - if (i >= (size - 1) || c == '\r' || c == '\n' ) { + if (i >= (size - 1) || c == '\r' || c == '\n') { return; } line[i++] = c; @@ -134,11 +133,11 @@ void printField(Print* pr, char sep, uint8_t v) { void printNow(Print* pr) { DateTime now = rtc.now(); pr->print(now.year()); - printField(pr, '-',now.month()); - printField(pr, '-',now.day()); - printField(pr, ' ',now.hour()); - printField(pr, ':',now.minute()); - printField(pr, ':',now.second()); + printField(pr, '-', now.month()); + printField(pr, '-', now.day()); + printField(pr, ' ', now.hour()); + printField(pr, ':', now.minute()); + printField(pr, ':', now.second()); } //------------------------------------------------------------------------------ bool setRtc() { @@ -153,17 +152,17 @@ bool setRtc() { Serial.print(F("Input: ")); Serial.println(line); - y = strtol(line, &ptr, 0); + y = strtol(line, &ptr, 10); if (*ptr++ != '-' || y < 2000 || y > 2099) return error("year"); - m = strtol(ptr, &ptr, 0); + m = strtol(ptr, &ptr, 10); if (*ptr++ != '-' || m < 1 || m > 12) return error("month"); - d = strtol(ptr, &ptr, 0); + d = strtol(ptr, &ptr, 10); if (d < 1 || d > 31) return error("day"); - hh = strtol(ptr, &ptr, 0); + hh = strtol(ptr, &ptr, 10); if (*ptr++ != ':' || hh > 23) return error("hour"); - mm = strtol(ptr, &ptr, 0); + mm = strtol(ptr, &ptr, 10); if (*ptr++ != ':' || mm > 59) return error("minute"); - ss = strtol(ptr, &ptr, 0); + ss = strtol(ptr, &ptr, 10); if (ss > 59) return error("second"); rtc.adjust(DateTime(y, m, d, hh, mm, ss)); @@ -180,7 +179,7 @@ void setup() { } #if RTC_TYPE == 0 rtc.begin(DateTime(F(__DATE__), F(__TIME__))); -#else // RTC_TYPE +#else // RTC_TYPE if (!rtc.begin()) { Serial.println(F("rtc.begin failed")); return; @@ -201,7 +200,8 @@ void setup() { Serial.println(); clearSerialInput(); Serial.println(F("Type Y to set RTC, any other character to continue")); - while (!Serial.available()) {} + while (!Serial.available()) { + } if (Serial.read() != 'Y') break; if (setRtc()) break; } @@ -232,5 +232,4 @@ void setup() { Serial.println(F("Done")); } //------------------------------------------------------------------------------ -void loop() { -} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/STM32Test/STM32Test.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/STM32Test/STM32Test.ino deleted file mode 100644 index 9e39b548..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/STM32Test/STM32Test.ino +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Example use of two SPI ports on an STM32 board. - * Note SPI speed is limited to 18 MHz. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" - -using namespace sdfat; - - -// Chip select PA4, shared SPI, 18 MHz, port 1. -#define SD1_CONFIG SdSpiConfig(PA4, SHARED_SPI, SD_SCK_MHZ(18), &SPI) -SdFs sd1; -FsFile file1; - -// Use mySPI2 since SPI2 is used in SPI.h as a different type. -static SPIClass mySPI2(2); -// Chip select PB21, dedicated SPI, 18 MHz, port 2. -#define SD2_CONFIG SdSpiConfig(PB12, DEDICATED_SPI, SD_SCK_MHZ(18), &mySPI2) -SdFs sd2; -FsFile file2; - -const uint8_t BUF_DIM = 100; -uint8_t buf[BUF_DIM]; - -const uint32_t FILE_SIZE = 1000000; -const uint32_t NWRITE = FILE_SIZE/BUF_DIM; -//------------------------------------------------------------------------------ -// print error msg, any SD error codes, and halt. -// store messages in flash -#define error(msg) {Serial.println(msg); errorHalt();} -void errorHalt() { - if (sd1.sdErrorCode()) { - sd1.errorHalt(); - } - sd2.errorHalt(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // fill buffer with known data - for (size_t i = 0; i < sizeof(buf); i++) { - buf[i] = i; - } - - Serial.println(F("type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - - // initialize the first card - if (!sd1.begin(SD1_CONFIG)) { - error("sd1.begin"); - } - // create Dir1 on sd1 if it does not exist - if (!sd1.exists("/Dir1")) { - if (!sd1.mkdir("/Dir1")) { - error("sd1.mkdir"); - } - } - // Make Dir1 the working directory on sd1. - if (!sd1.chdir("Dir1")) { - error("dsd1.chdir"); - } - // initialize the second card - if (!sd2.begin(SD2_CONFIG)) { - error("sd2.begin"); - } -// create Dir2 on sd2 if it does not exist - if (!sd2.exists("/Dir2")) { - if (!sd2.mkdir("/Dir2")) { - error("sd2.mkdir"); - } - } - // Make Dir2 the working directory on sd2. - if (!sd2.chdir("Dir2")) { - error("sd2.chdir"); - } - // remove test.bin from /Dir1 directory of sd1 - if (sd1.exists("test.bin")) { - if (!sd1.remove("test.bin")) { - error("remove test.bin"); - } - } - // remove rename.bin from /Dir2 directory of sd2 - if (sd2.exists("rename.bin")) { - if (!sd2.remove("rename.bin")) { - error("remove rename.bin"); - } - } - // list directories. - Serial.println(F("------sd1 Dir1-------")); - sd1.ls("/", LS_R | LS_SIZE); - Serial.println(F("------sd2 Dir2-------")); - sd2.ls("/", LS_R | LS_SIZE); - Serial.println(F("---------------------")); - - // create or open /Dir1/test.bin and truncate it to zero length - if (!file1.open(&sd1, "test.bin", O_RDWR | O_CREAT | O_TRUNC)) { - error("file1.open"); - } - Serial.println(F("Writing test.bin to sd1")); - - // write data to /Dir1/test.bin on sd1 - for (uint32_t i = 0; i < NWRITE; i++) { - if (file1.write(buf, sizeof(buf)) != sizeof(buf)) { - error("file1.write"); - } - } - - // create or open /Dir2/copy.bin and truncate it to zero length - if (!file2.open(&sd2, "copy.bin", O_WRONLY | O_CREAT | O_TRUNC)) { - error("file2.open"); - } - Serial.println(F("Copying test.bin to copy.bin")); - - // copy file1 to file2 - file1.rewind(); - uint32_t t = millis(); - - while (1) { - int n = file1.read(buf, sizeof(buf)); - if (n < 0) { - error("file1.read"); - } - if (n == 0) { - break; - } - if ((int)file2.write(buf, n) != n) { - error("file2.write"); - } - } - t = millis() - t; - Serial.print(F("File size: ")); - Serial.println(file2.fileSize()); - Serial.print(F("Copy time: ")); - Serial.print(t); - Serial.println(F(" millis")); - // close test.bin - file1.close(); - // sync copy.bin so ls works. - file2.close(); - // list directories. - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Renaming copy.bin")); - // Rename copy.bin. The renamed file will be in Dir2. - if (!sd2.rename("copy.bin", "rename.bin")) { - error("rename copy.bin"); - } - file2.close(); - // list directories. - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/SdErrorCodes/SdErrorCodes.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/SdErrorCodes/SdErrorCodes.ino index aad81f9c..458d37c7 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/SdErrorCodes/SdErrorCodes.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/SdErrorCodes/SdErrorCodes.ino @@ -1,11 +1,9 @@ // Print a list of error codes, symbols, and comments. #include "SdFat.h" - -using namespace sdfat; - void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } delay(1000); Serial.println(); Serial.println(F("Code,Symbol - failed operation")); @@ -19,4 +17,4 @@ void setup() { Serial.println(); } } -void loop() {} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino index 0b021602..6cfd37be 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino @@ -13,9 +13,6 @@ #include "SdFat.h" #include "sdios.h" -using namespace sdfat; - - /* Set DISABLE_CS_PIN to disable a second SPI device. For example, with the Ethernet shield, set DISABLE_CS_PIN @@ -34,32 +31,39 @@ const int8_t DISABLE_CS_PIN = -1; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS //============================================================================== // Serial output stream ArduinoOutStream cout(Serial); //------------------------------------------------------------------------------ uint32_t cardSectorCount = 0; -uint8_t sectorBuffer[512]; +uint8_t sectorBuffer[512]; //------------------------------------------------------------------------------ // SdCardFactory constructs and initializes the appropriate card. SdCardFactory cardFactory; // Pointer to generic SD card. SdCard* m_card = nullptr; //------------------------------------------------------------------------------ -#define sdError(msg) {cout << F("error: ") << F(msg) << endl; sdErrorHalt();} +#define sdError(msg) \ + { \ + cout << F("error: ") << F(msg) << endl; \ + sdErrorHalt(); \ + } //------------------------------------------------------------------------------ void sdErrorHalt() { if (!m_card) { @@ -73,7 +77,8 @@ void sdErrorHalt() { cout << F(" = ") << int(m_card->errorCode()) << endl; cout << F("SD errorData = ") << int(m_card->errorData()) << endl; } - SysCall::halt(); + while (true) { + } } //------------------------------------------------------------------------------ void clearSerialInput() { @@ -102,7 +107,7 @@ void eraseCard() { sdError("erase failed"); } cout << '.'; - if ((n++)%64 == 63) { + if ((n++) % 64 == 63) { cout << endl; } firstBlock += ERASE_SIZE; @@ -123,9 +128,9 @@ void formatCard() { FatFormatter fatFormatter; // Format exFAT if larger than 32GB. - bool rtn = cardSectorCount > 67108864 ? - exFatFormatter.format(m_card, sectorBuffer, &Serial) : - fatFormatter.format(m_card, sectorBuffer, &Serial); + bool rtn = cardSectorCount > 67108864 + ? exFatFormatter.format(m_card, sectorBuffer, &Serial) + : fatFormatter.format(m_card, sectorBuffer, &Serial); if (!rtn) { sdErrorHalt(); @@ -136,8 +141,8 @@ void formatCard() { void printConfig(SdSpiConfig config) { if (DISABLE_CS_PIN < 0) { cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CS_PIN to disable an SPI device.\n"); + "\nAssuming the SD is the only SPI device.\n" + "Edit DISABLE_CS_PIN to disable an SPI device.\n"); } else { cout << F("\nDisabling SPI device on pin "); cout << int(DISABLE_CS_PIN) << endl; @@ -158,32 +163,32 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } printConfig(SD_CONFIG); cout << F("\nType any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Discard any extra characters. clearSerialInput(); cout << F( - "\n" - "This program can erase and/or format SD/SDHC/SDXC cards.\n" - "\n" - "Erase uses the card's fast flash erase command.\n" - "Flash erase sets all data to 0X00 for most cards\n" - "and 0XFF for a few vendor's cards.\n" - "\n" - "Cards up to 2 GiB (GiB = 2^30 bytes) will be formated FAT16.\n" - "Cards larger than 2 GiB and up to 32 GiB will be formatted\n" - "FAT32. Cards larger than 32 GiB will be formatted exFAT.\n" - "\n" - "Warning, all data on the card will be erased.\n" - "Enter 'Y' to continue: "); + "\n" + "This program can erase and/or format SD/SDHC/SDXC cards.\n" + "\n" + "Erase uses the card's fast flash erase command.\n" + "Flash erase sets all data to 0X00 for most cards\n" + "and 0XFF for a few vendor's cards.\n" + "\n" + "Cards up to 2 GiB (GiB = 2^30 bytes) will be formated FAT16.\n" + "Cards larger than 2 GiB and up to 32 GiB will be formatted\n" + "FAT32. Cards larger than 32 GiB will be formatted exFAT.\n" + "\n" + "Warning, all data on the card will be erased.\n" + "Enter 'Y' to continue: "); while (!Serial.available()) { - SysCall::yield(); + yield(); } c = Serial.read(); cout << c << endl; @@ -207,9 +212,9 @@ void setup() { return; } - cout << F("\nCard size: ") << cardSectorCount*5.12e-7; + cout << F("\nCard size: ") << cardSectorCount * 5.12e-7; cout << F(" GB (GB = 1E9 bytes)\n"); - cout << F("Card size: ") << cardSectorCount/2097152.0; + cout << F("Card size: ") << cardSectorCount / 2097152.0; cout << F(" GiB (GiB = 2^30 bytes)\n"); cout << F("Card will be formated "); @@ -221,16 +226,16 @@ void setup() { cout << F("FAT16\n"); } cout << F( - "\n" - "Options are:\n" - "E - erase the card and skip formatting.\n" - "F - erase and then format the card. (recommended)\n" - "Q - quick format the card without erase.\n" - "\n" - "Enter option: "); + "\n" + "Options are:\n" + "E - erase the card and skip formatting.\n" + "F - erase and then format the card. (recommended)\n" + "Q - quick format the card without erase.\n" + "\n" + "Enter option: "); while (!Serial.available()) { - SysCall::yield(); + yield(); } c = Serial.read(); cout << c << endl; @@ -245,5 +250,4 @@ void setup() { formatCard(); } } -void loop() { -} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/SdInfo/SdInfo.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/SdInfo/SdInfo.ino index 597061cf..5edbbad4 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/SdInfo/SdInfo.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/SdInfo/SdInfo.ino @@ -1,11 +1,13 @@ /* * This program attempts to initialize an SD card and analyze its structure. + * The CID and CSD registers are also printed in HEX for use in online + * decoders like these. + * + * https://gurumeditation.org/1342/sd-memory-card-register-decoder/ + * https://archive.goughlui.com/static/multicid.htm */ #include "SdFat.h" #include "sdios.h" - -using namespace sdfat; - /* Set DISABLE_CS_PIN to disable a second SPI device. For example, with the Ethernet shield, set DISABLE_CS_PIN @@ -22,9 +24,9 @@ const int8_t DISABLE_CS_PIN = -1; */ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +const uint8_t SD_CS_PIN = 4; +#else // SDCARD_SS_PIN +const uint8_t SD_CS_PIN = 4; #endif // SDCARD_SS_PIN // Try to select the best SD card configuration. @@ -38,28 +40,28 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; //------------------------------------------------------------------------------ SdFs sd; -cid_t m_cid; -csd_t m_csd; -uint32_t m_eraseSize; -uint32_t m_ocr; +cid_t cid; +csd_t csd; +scr_t scr; +uint8_t cmd6Data[64]; +uint32_t eraseSize; +uint32_t ocr; static ArduinoOutStream cout(Serial); //------------------------------------------------------------------------------ -bool cidDmp() { +void cidDmp() { cout << F("\nManufacturer ID: "); - cout << uppercase << showbase << hex << int(m_cid.mid) << dec << endl; - cout << F("OEM ID: ") << m_cid.oid[0] << m_cid.oid[1] << endl; + cout << uppercase << showbase << hex << int(cid.mid) << dec << endl; + cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; cout << F("Product: "); for (uint8_t i = 0; i < 5; i++) { - cout << m_cid.pnm[i]; + cout << cid.pnm[i]; } - cout << F("\nVersion: "); - cout << int(m_cid.prv_n) << '.' << int(m_cid.prv_m) << endl; - cout << F("Serial number: ") << hex << m_cid.psn << dec << endl; + cout << F("\nRevision: ") << cid.prvN() << '.' << cid.prvM() << endl; + cout << F("Serial number: ") << hex << cid.psn() << dec << endl; cout << F("Manufacturing date: "); - cout << int(m_cid.mdt_month) << '/'; - cout << (2000 + m_cid.mdt_year_low + 10 * m_cid.mdt_year_high) << endl; - cout << endl; - return true; + cout << cid.mdtMonth() << '/' << cid.mdtYear() << endl; + cout << F("CID HEX: "); + hexDmp(&cid, sizeof(cid)); } //------------------------------------------------------------------------------ void clearSerialInput() { @@ -71,30 +73,26 @@ void clearSerialInput() { } while (micros() - m < 10000); } //------------------------------------------------------------------------------ -bool csdDmp() { - bool eraseSingleBlock; - if (m_csd.v1.csd_ver == 0) { - eraseSingleBlock = m_csd.v1.erase_blk_en; - m_eraseSize = (m_csd.v1.sector_size_high << 1) | m_csd.v1.sector_size_low; - } else if (m_csd.v2.csd_ver == 1) { - eraseSingleBlock = m_csd.v2.erase_blk_en; - m_eraseSize = (m_csd.v2.sector_size_high << 1) | m_csd.v2.sector_size_low; - } else { - cout << F("m_csd version error\n"); - return false; - } - m_eraseSize++; - cout << F("cardSize: ") << 0.000512 * sdCardCapacity(&m_csd); +void csdDmp() { + eraseSize = csd.eraseSize(); + cout << F("\ncardSize: ") << 0.000512 * csd.capacity(); cout << F(" MB (MB = 1,000,000 bytes)\n"); - cout << F("flashEraseSize: ") << int(m_eraseSize) << F(" blocks\n"); + cout << F("flashEraseSize: ") << int(eraseSize) << F(" blocks\n"); cout << F("eraseSingleBlock: "); - if (eraseSingleBlock) { + if (csd.eraseSingleBlock()) { cout << F("true\n"); } else { cout << F("false\n"); } - return true; + cout << F("dataAfterErase: "); + if (scr.dataAfterErase()) { + cout << F("ones\n"); + } else { + cout << F("zeros\n"); + } + cout << F("CSD HEX: "); + hexDmp(&csd, sizeof(csd)); } //------------------------------------------------------------------------------ void errorPrint() { @@ -102,10 +100,19 @@ void errorPrint() { cout << F("SD errorCode: ") << hex << showbase; printSdErrorSymbol(&Serial, sd.sdErrorCode()); cout << F(" = ") << int(sd.sdErrorCode()) << endl; - cout << F("SD errorData = ") << int(sd.sdErrorData()) << endl; + cout << F("SD errorData = ") << int(sd.sdErrorData()) << dec << endl; } } //------------------------------------------------------------------------------ +void hexDmp(void* reg, uint8_t size) { + uint8_t* u8 = reinterpret_cast(reg); + cout << hex << noshowbase; + for (size_t i = 0; i < size; i++) { + cout << setw(2) << setfill('0') << int(u8[i]); + } + cout << dec << endl; +} +//------------------------------------------------------------------------------ bool mbrDmp() { MbrSector_t mbr; bool valid = true; @@ -117,18 +124,18 @@ bool mbrDmp() { cout << F("\nSD Partition Table\n"); cout << F("part,boot,bgnCHS[3],type,endCHS[3],start,length\n"); for (uint8_t ip = 1; ip < 5; ip++) { - MbrPart_t *pt = &mbr.part[ip - 1]; + MbrPart_t* pt = &mbr.part[ip - 1]; if ((pt->boot != 0 && pt->boot != 0X80) || - getLe32(pt->relativeSectors) > sdCardCapacity(&m_csd)) { + getLe32(pt->relativeSectors) > csd.capacity()) { valid = false; } cout << int(ip) << ',' << uppercase << showbase << hex; cout << int(pt->boot) << ','; - for (int i = 0; i < 3; i++ ) { + for (int i = 0; i < 3; i++) { cout << int(pt->beginCHS[i]) << ','; } cout << int(pt->type) << ','; - for (int i = 0; i < 3; i++ ) { + for (int i = 0; i < 3; i++) { cout << int(pt->endCHS[i]) << ','; } cout << dec << getLe32(pt->relativeSectors) << ','; @@ -142,25 +149,26 @@ bool mbrDmp() { //------------------------------------------------------------------------------ void dmpVol() { cout << F("\nScanning FAT, please wait.\n"); - uint32_t freeClusterCount = sd.freeClusterCount(); + int32_t freeClusterCount = sd.freeClusterCount(); if (sd.fatType() <= 32) { cout << F("\nVolume is FAT") << int(sd.fatType()) << endl; } else { cout << F("\nVolume is exFAT\n"); } cout << F("sectorsPerCluster: ") << sd.sectorsPerCluster() << endl; - cout << F("clusterCount: ") << sd.clusterCount() << endl; - cout << F("freeClusterCount: ") << freeClusterCount << endl; cout << F("fatStartSector: ") << sd.fatStartSector() << endl; cout << F("dataStartSector: ") << sd.dataStartSector() << endl; - if (sd.dataStartSector() % m_eraseSize) { - cout << F("Data area is not aligned on flash erase boundary!\n"); - cout << F("Download and use formatter from www.sdcard.org!\n"); + cout << F("clusterCount: ") << sd.clusterCount() << endl; + cout << F("freeClusterCount: "); + if (freeClusterCount >= 0) { + cout << freeClusterCount << endl; + } else { + cout << F("failed\n"); + errorPrint(); } } //------------------------------------------------------------------------------ void printCardType() { - cout << F("\nCard type: "); switch (sd.card()->type()) { @@ -173,7 +181,7 @@ void printCardType() { break; case SD_CARD_TYPE_SDHC: - if (sdCardCapacity(&m_csd) < 70000000) { + if (csd.capacity() < 70000000) { cout << F("SDHC\n"); } else { cout << F("SDXC\n"); @@ -188,8 +196,8 @@ void printCardType() { void printConfig(SdSpiConfig config) { if (DISABLE_CS_PIN < 0) { cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CS_PIN to disable an SPI device.\n"); + "\nAssuming the SD is the only SPI device.\n" + "Edit DISABLE_CS_PIN to disable an SPI device.\n"); } else { cout << F("\nDisabling SPI device on pin "); cout << int(DISABLE_CS_PIN) << endl; @@ -209,11 +217,10 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } - cout << F("SdFat version: ") << SD_FAT_VERSION << endl; + cout << F("SdFat version: ") << SD_FAT_VERSION_STR << endl; printConfig(SD_CONFIG); - } //------------------------------------------------------------------------------ void loop() { @@ -223,39 +230,45 @@ void loop() { // F stores strings in flash to save RAM cout << F("\ntype any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } uint32_t t = millis(); if (!sd.cardBegin(SD_CONFIG)) { cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is there a wiring/soldering problem?\n"); + "\nSD initialization failed.\n" + "Do not reformat the card!\n" + "Is the card correctly inserted?\n" + "Is there a wiring/soldering problem?\n"); if (isSpi(SD_CONFIG)) { cout << F( - "Is SD_CS_PIN set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - ); + "Is SD_CS_PIN set to the correct value?\n" + "Does another SPI device need to be disabled?\n"); } errorPrint(); return; } t = millis() - t; - cout << F("init time: ") << t << " ms" << endl; + cout << F("init time: ") << dec << t << " ms" << endl; - if (!sd.card()->readCID(&m_cid) || - !sd.card()->readCSD(&m_csd) || - !sd.card()->readOCR(&m_ocr)) { + if (!sd.card()->readCID(&cid) || !sd.card()->readCSD(&csd) || + !sd.card()->readOCR(&ocr) || !sd.card()->readSCR(&scr)) { cout << F("readInfo failed\n"); errorPrint(); return; } printCardType(); + cout << F("sdSpecVer: ") << 0.01 * scr.sdSpecVer() << endl; + cout << F("HighSpeedMode: "); + if (scr.sdSpecVer() > 101 && sd.card()->cardCMD6(0X00FFFFFF, cmd6Data) && + (2 & cmd6Data[13])) { + cout << F("true\n"); + } else { + cout << F("false\n"); + } cidDmp(); csdDmp(); cout << F("\nOCR: ") << uppercase << showbase; - cout << hex << m_ocr << dec << endl; + cout << hex << ocr << dec << endl; if (!mbrDmp()) { return; } diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino index 3145206e..1300cfa0 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino @@ -4,14 +4,11 @@ // This example will also run on an Uno and other boards using software SPI. // #include "SdFat.h" - -using namespace sdfat; - #if SPI_DRIVER_SELECT == 2 // Must be set in SdFat/SdFatConfig.h // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 // // Chip select may be constant or RAM variable. const uint8_t SD_CS_PIN = 10; @@ -19,12 +16,16 @@ const uint8_t SD_CS_PIN = 10; // Pin numbers in templates must be constants. const uint8_t SOFT_MISO_PIN = 12; const uint8_t SOFT_MOSI_PIN = 11; -const uint8_t SOFT_SCK_PIN = 13; +const uint8_t SOFT_SCK_PIN = 13; // SdFat software SPI template SoftSpiDriver softSpi; // Speed argument is ignored for software SPI. +#if ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(0), &softSpi) +#else // ENABLE_DEDICATED_SPI +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(0), &softSpi) +#endif // ENABLE_DEDICATED_SPI #if SD_FAT_TYPE == 0 SdFat sd; @@ -46,11 +47,11 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.println("Type any character to start"); while (!Serial.available()) { - SysCall::yield(); + yield(); } if (!sd.begin(SD_CONFIG)) { @@ -76,4 +77,4 @@ void setup() { void loop() {} #else // SPI_DRIVER_SELECT #error SPI_DRIVER_SELECT must be two in SdFat/SdFatConfig.h -#endif //SPI_DRIVER_SELECT +#endif // SPI_DRIVER_SELECT \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/SpiLoopBackTest/SpiLoopBackTest.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/SpiLoopBackTest/SpiLoopBackTest.ino new file mode 100644 index 00000000..88101a08 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/SpiLoopBackTest/SpiLoopBackTest.ino @@ -0,0 +1,66 @@ +// This is a simple SPI loop-back test. +// +// Connect SD_MISO to SD_MOSI +// +// Modify these defines for your configuration. +#define SD_SPI SPI +#define SD_MISO MISO +#define SD_MOSI MOSI + +#include "SPI.h" +void setup() { + uint8_t rx, tx; + Serial.begin(9600); + while (!Serial) { + yield(); + } + Serial.println(F("\nType any character to start")); + while (!Serial.available()) { + yield(); + } + Serial.print("Begin, SD_MISO: "); + Serial.print(SD_MISO), Serial.print(", SD_MOSI: "); + Serial.println(SD_MOSI); + pinMode(SD_MISO, INPUT_PULLUP); + pinMode(SD_MOSI, OUTPUT); + digitalWrite(SD_MOSI, HIGH); + if (!digitalRead(SD_MISO)) { + Serial.println("Error: SD_MISO not HIGH"); + goto fail; + } + digitalWrite(SD_MOSI, LOW); + if (digitalRead(SD_MISO)) { + Serial.println("Error: SD_MISO not LOW"); + goto fail; + } + pinMode(SD_MISO, INPUT); + pinMode(SD_MOSI, INPUT); + + // Modify if SD_SPI.begin has arguments and use this style SdFat begin call: + // sd.begin(SdSpiConfig(CS_PIN, USER_SPI_BEGIN | , &SD_SPI)); + SD_SPI.begin(); + + // Start with a 400 kHz clock. Try full speed if success for 400 kHz. + SD_SPI.beginTransaction(SPISettings(400000, MSBFIRST, SPI_MODE0)); + tx = 0; + do { + rx = SD_SPI.transfer(tx); + if (tx != rx) { + Serial.print("Error rx: 0x"); + Serial.print(rx, HEX); + Serial.print(" != tx: 0x"); + Serial.println(tx, HEX); + SD_SPI.endTransaction(); + goto fail; + } + } while (tx++ < 255); + SD_SPI.endTransaction(); + Serial.println("Success!"); + return; + +fail: + SD_SPI.endTransaction(); + Serial.println("Is SD_MISO connected to SD_MOSI?"); + Serial.println("Are SD_MISO and SD_MOSI correct?"); +} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino new file mode 100644 index 00000000..ad491f4a --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino @@ -0,0 +1,214 @@ +// Test of Teensy exFAT DMA ADC logger. +// This is mainly to test use of RingBuf in an ISR. +// This example only supports pins on the first ADC. +// it has only been tested on Teensy 3.6 and 4.1. +// You should modify it for serious use as a data logger. +// +#include "ADC.h" +#include "DMAChannel.h" +#include "FreeStack.h" +#include "RingBuf.h" +#include "SdFat.h" + +// Pin must be on first ADC. +#define ADC_PIN A0 + +// 400 sector RingBuf - could be larger on Teensy 4.1. +const size_t RING_BUF_SIZE = 400 * 512; + +// Preallocate 8GiB file. +const uint64_t PRE_ALLOCATE_SIZE = 8ULL << 30; + +// Use FIFO SDIO. +#define SD_CONFIG SdioConfig(FIFO_SDIO) + +ADC adc; + +DMAChannel dma(true); + +SdFs sd; + +FsFile file; + +// Ping-pong DMA buffer. +DMAMEM static uint16_t __attribute__((aligned(32))) dmaBuf[2][256]; + +// Count of DMA interrupts. +volatile size_t dmaCount; + +// RingBuf for 512 byte sectors. +RingBuf rb; + +// Shared between ISR and background. +volatile size_t maxBytesUsed; + +// Overrun error for write to RingBuf. +volatile bool overrun; +//------------------------------------------------------------------------------ +// ISR for DMA. +static void isr() { + if (!overrun) { + // Clear cache for buffer filled by DMA to insure read from DMA memory. + arm_dcache_delete((void*)dmaBuf[dmaCount & 1], 512); + // Enable RingBuf functions to be called in ISR. + rb.beginISR(); + if (rb.write(dmaBuf[dmaCount & 1], 512) == 512) { + dmaCount++; + if (rb.bytesUsed() > maxBytesUsed) { + maxBytesUsed = rb.bytesUsed(); + } + } else { + overrun = true; + } + // End use of RingBuf functions in ISR. + rb.endISR(); + } + dma.clearComplete(); + dma.clearInterrupt(); +#if defined(__IMXRT1062__) + // Handle clear interrupt glitch in Teensy 4.x! + asm("DSB"); +#endif // defined(__IMXRT1062__) +} +//------------------------------------------------------------------------------ +#if defined(__IMXRT1062__) // Teensy 4.x +#define SOURCE_SADDR ADC1_R0 +#define SOURCE_EVENT DMAMUX_SOURCE_ADC1 +#else +#define SOURCE_SADDR ADC0_RA +#define SOURCE_EVENT DMAMUX_SOURCE_ADC0 +#endif +//------------------------------------------------------------------------------ +static void init(uint8_t pin) { + dma.begin(); + dma.attachInterrupt(isr); + dma.source((volatile const signed short&)SOURCE_SADDR); + dma.destinationBuffer((volatile uint16_t*)dmaBuf, sizeof(dmaBuf)); + dma.interruptAtHalf(); + dma.interruptAtCompletion(); + dma.triggerAtHardwareEvent(SOURCE_EVENT); + dma.enable(); + adc.adc0->enableDMA(); + adc.adc0->startContinuous(pin); +} +//------------------------------------------------------------------------------ +void stopDma() { + adc.adc0->disableDMA(); + dma.disable(); +} +//------------------------------------------------------------------------------ +void printTest(Print* pr) { + if (file.fileSize() < 1024 * 2) { + return; + } + file.rewind(); + rb.begin(&file); + // Could readIn RING_BUF_SIZE bytes and write to a csv file in a loop. + if (rb.readIn(2048) != 2048) { + sd.errorHalt("rb.readIn failed"); + } + uint16_t data; + for (size_t i = 0; i < 1024; i++) { + pr->print(i); + pr->print(','); + // Test read with: template bool read(Type* data). + rb.read(&data); + pr->println(data); + } +} +//------------------------------------------------------------------------------ +void runTest(uint8_t pin) { + dmaCount = 0; + maxBytesUsed = 0; + overrun = false; + do { + delay(10); + } while (Serial.read() >= 0); + + if (!file.open("IsrLoggerTest.bin", O_CREAT | O_TRUNC | O_RDWR)) { + sd.errorHalt("file.open failed"); + } + if (!file.preAllocate(PRE_ALLOCATE_SIZE)) { + sd.errorHalt("file.preAllocate failed"); + } + rb.begin(&file); + Serial.println("Type any character to stop\n"); + + init(pin); + uint32_t samplingTime = micros(); + while (!overrun && !Serial.available()) { + size_t n = rb.bytesUsed(); + if ((n + file.curPosition()) >= (PRE_ALLOCATE_SIZE - 512)) { + Serial.println("File full - stopping"); + break; + } + if (n >= 512) { + if (rb.writeOut(512) != 512) { + Serial.println("writeOut() failed"); + file.close(); + return; + } + } + } + stopDma(); + samplingTime = micros() - samplingTime; + if (!rb.sync()) { + Serial.println("sync() failed"); + file.close(); + return; + } + if (!file.truncate()) { + sd.errorHalt("truncate failed"); + } + if (overrun) { + Serial.println("Overrun ERROR!!"); + } + Serial.print("dmsCount "); + Serial.println(dmaCount); + Serial.print("RingBufSize "); + Serial.println(RING_BUF_SIZE); + Serial.print("maxBytesUsed "); + Serial.println(maxBytesUsed); + Serial.print("fileSize "); + file.printFileSize(&Serial); + Serial.println(); + Serial.print(0.000001 * samplingTime); + Serial.println(" seconds"); + Serial.print(1.0 * file.fileSize() / samplingTime, 3); + Serial.println(" MB/sec\n"); + printTest(&Serial); + file.close(); +} +//------------------------------------------------------------------------------ +void waitSerial(const char* msg) { + do { + delay(10); + } while (Serial.read() >= 0); + Serial.println(msg); + while (!Serial.available()) { + } + Serial.println(); +} +//------------------------------------------------------------------------------ +void setup() { + Serial.begin(9600); + while (!Serial) { + yield(); + } + waitSerial("Type any character to begin"); + Serial.print("FreeStack: "); + Serial.println(FreeStack()); +} +//------------------------------------------------------------------------------ +void loop() { + if (!sd.begin(SD_CONFIG)) { + sd.initErrorHalt(&Serial); + } + // Try for max speed. + adc.adc0->setAveraging(1); + adc.adc0->setResolution(10); + adc.adc0->setConversionSpeed(ADC_CONVERSION_SPEED::VERY_HIGH_SPEED); + adc.adc0->setSamplingSpeed(ADC_SAMPLING_SPEED::VERY_HIGH_SPEED); + runTest(ADC_PIN); + waitSerial("Type any character to run test again"); +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino index 62d4d22e..496c1d02 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino @@ -1,11 +1,9 @@ // Test of time-stamp callback with Teensy 3/4. // The upload time will be used to set the RTC. // You must arrange for syncing the RTC. -#include "SdFat.h" #include -using namespace sdfat; - +#include "SdFat.h" // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. @@ -22,18 +20,21 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) + // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS #if SD_FAT_TYPE == 0 @@ -55,7 +56,6 @@ FsFile file; //------------------------------------------------------------------------------ // Call back for file timestamps. Only called for file create and sync(). void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { - // Return date using FS_DATE macro to format fields. *date = FS_DATE(year(), month(), day()); @@ -66,10 +66,7 @@ void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { *ms10 = second() & 1 ? 100 : 0; } //------------------------------------------------------------------------------ -time_t getTeensy3Time() -{ - return Teensy3Clock.get(); -} +time_t getTeensy3Time() { return Teensy3Clock.get(); } //------------------------------------------------------------------------------ void printField(Print* pr, char sep, uint8_t v) { if (sep) { @@ -102,7 +99,7 @@ void setup() { while (!Serial.available()) { yield(); } - if (timeStatus()!= timeSet) { + if (timeStatus() != timeSet) { Serial.println("Unable to sync with the RTC"); return; } @@ -135,5 +132,4 @@ void setup() { Serial.println(F("Done")); } //------------------------------------------------------------------------------ -void loop() { -} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino index 1505c0fa..6dfbd9d8 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino @@ -2,15 +2,12 @@ // Demonstrates yield() efficiency for SDIO modes. #include "SdFat.h" -using namespace sdfat; - - // Use built-in SD for SPI modes on Teensy 3.5/3.6. // Teensy 4.0 use first SPI port. // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -23,7 +20,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; const size_t BUF_DIM = 32768; // 8 MiB file. -const uint32_t FILE_SIZE = 256UL*BUF_DIM; +const uint32_t FILE_SIZE = 256UL * BUF_DIM; #if SD_FAT_TYPE == 0 SdFat sd; @@ -75,13 +72,12 @@ void errorHalt(const char* msg) { Serial.print(", ErrorData: 0X"); Serial.println(sd.sdErrorData(), HEX); } - while (true) {} + while (true) { + } } bool ready = false; //------------------------------------------------------------------------------ -bool sdBusy() { - return ready ? sd.card()->isBusy() : false; -} +bool sdBusy() { return ready ? sd.card()->isBusy() : false; } //------------------------------------------------------------------------------ // Replace "weak" system yield() function. void yield() { @@ -113,7 +109,7 @@ void runTest() { Serial.println("\nsize,write,read"); Serial.println("bytes,KB/sec,KB/sec"); for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { - uint32_t nRdWr = FILE_SIZE/nb; + uint32_t nRdWr = FILE_SIZE / nb; if (!file.truncate(0)) { errorHalt("truncate failed"); } @@ -124,14 +120,14 @@ void runTest() { for (uint32_t n = 0; n < nRdWr; n++) { // Set start and end of buffer. buf32[0] = n; - buf32[nb/4 - 1] = n; + buf32[nb / 4 - 1] = n; if (nb != file.write(buf, nb)) { errorHalt("write failed"); } } t = micros() - t; totalMicros += t; - Serial.print(1000.0*FILE_SIZE/t); + Serial.print(1000.0 * FILE_SIZE / t); Serial.print(','); file.rewind(); t = micros(); @@ -141,13 +137,13 @@ void runTest() { errorHalt("read failed"); } // crude check of data. - if (buf32[0] != n || buf32[nb/4 - 1] != n) { + if (buf32[0] != n || buf32[nb / 4 - 1] != n) { errorHalt("data check"); } } t = micros() - t; totalMicros += t; - Serial.println(1000.0*FILE_SIZE/t); + Serial.println(1000.0 * FILE_SIZE / t); } file.close(); Serial.print("\ntotalMicros "); @@ -158,8 +154,8 @@ void runTest() { Serial.println(yieldCalls); Serial.print("yieldMaxUsec "); Serial.println(yieldMaxUsec); -// Serial.print("kHzSdClk "); -// Serial.println(kHzSdClk()); + // Serial.print("kHzSdClk "); + // Serial.println(kHzSdClk()); Serial.println("Done"); } //------------------------------------------------------------------------------ @@ -174,22 +170,22 @@ void loop() { if (warn) { warn = false; Serial.println( - "SD cards must be power cycled to leave\n" - "SPI mode so do SDIO tests first.\n" - "\nCycle power on the card if an error occurs."); + "SD cards must be power cycled to leave\n" + "SPI mode so do SDIO tests first.\n" + "\nCycle power on the card if an error occurs."); } clearSerialInput(); Serial.println( - "\nType '1' for FIFO SDIO" - "\n '2' for DMA SDIO" - "\n '3' for Dedicated SPI" - "\n '4' for Shared SPI"); + "\nType '1' for FIFO SDIO" + "\n '2' for DMA SDIO" + "\n '3' for Dedicated SPI" + "\n '4' for Shared SPI"); while (!Serial.available()) { } char c = Serial.read(); - if (c =='1') { + if (c == '1') { if (!sd.begin(SdioConfig(FIFO_SDIO))) { errorHalt("begin failed"); } @@ -200,10 +196,15 @@ void loop() { } Serial.println("\nDMA SDIO mode - slow for small transfers."); } else if (c == '3') { +#if ENABLE_DEDICATED_SPI if (!sd.begin(SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(50)))) { errorHalt("begin failed"); } Serial.println("\nDedicated SPI mode."); +#else // ENABLE_DEDICATED_SPI + Serial.println("ENABLE_DEDICATED_SPI must be non-zero."); + return; +#endif // ENABLE_DEDICATED_SPI } else if (c == '4') { if (!sd.begin(SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(50)))) { errorHalt("begin failed"); @@ -216,4 +217,4 @@ void loop() { ready = true; runTest(); ready = false; -} +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioLogger/TeensySdioLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioLogger/TeensySdioLogger.ino new file mode 100644 index 00000000..36a51b93 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/TeensySdioLogger/TeensySdioLogger.ino @@ -0,0 +1,151 @@ +// Test Teensy SDIO with write busy in a data logger demo. +// +// The driver writes to the uSDHC controller's FIFO then returns +// while the controller writes the data to the SD. The first sector +// puts the controller in write mode and takes about 11 usec on a +// Teensy 4.1. About 5 usec is required to write a sector when the +// controller is in write mode. + +#include "RingBuf.h" +#include "SdFat.h" + +// Use Teensy SDIO +#define SD_CONFIG SdioConfig(FIFO_SDIO) + +// Interval between points for 25 ksps. +#define LOG_INTERVAL_USEC 40 + +// Size to log 10 byte lines at 25 kHz for more than ten minutes. +#define LOG_FILE_SIZE 10 * 25000 * 600 // 150,000,000 bytes. + +// Space to hold more than 800 ms of data for 10 byte lines at 25 ksps. +#define RING_BUF_CAPACITY 400 * 512 +#define LOG_FILENAME "SdioLogger.csv" + +SdFs sd; +FsFile file; + +// RingBuf for File type FsFile. +RingBuf rb; + +void logData() { + // Initialize the SD. + if (!sd.begin(SD_CONFIG)) { + sd.initErrorHalt(&Serial); + } + // Open or create file - truncate existing file. + if (!file.open(LOG_FILENAME, O_RDWR | O_CREAT | O_TRUNC)) { + Serial.println("open failed\n"); + return; + } + // File must be pre-allocated to avoid huge + // delays searching for free clusters. + if (!file.preAllocate(LOG_FILE_SIZE)) { + Serial.println("preAllocate failed\n"); + file.close(); + return; + } + // initialize the RingBuf. + rb.begin(&file); + Serial.println("Type any character to stop"); + + // Max RingBuf used bytes. Useful to understand RingBuf overrun. + size_t maxUsed = 0; + + // Min spare micros in loop. + int32_t minSpareMicros = INT32_MAX; + + // Start time. + uint32_t logTime = micros(); + // Log data until Serial input or file full. + while (!Serial.available()) { + // Amount of data in ringBuf. + size_t n = rb.bytesUsed(); + if ((n + file.curPosition()) > (LOG_FILE_SIZE - 20)) { + Serial.println("File full - quitting."); + break; + } + if (n > maxUsed) { + maxUsed = n; + } + if (n >= 512 && !file.isBusy()) { + // Not busy only allows one sector before possible busy wait. + // Write one sector from RingBuf to file. + if (512 != rb.writeOut(512)) { + Serial.println("writeOut failed"); + break; + } + } + // Time for next point. + logTime += LOG_INTERVAL_USEC; + int32_t spareMicros = logTime - micros(); + if (spareMicros < minSpareMicros) { + minSpareMicros = spareMicros; + } + if (spareMicros <= 0) { + Serial.print("Rate too fast "); + Serial.println(spareMicros); + break; + } + // Wait until time to log data. + while (micros() < logTime) { + } + + // Read ADC0 - about 17 usec on Teensy 4, Teensy 3.6 is faster. + uint16_t adc = analogRead(0); + // Print spareMicros into the RingBuf as test data. + rb.print(spareMicros); + rb.write(','); + // Print adc into RingBuf. + rb.println(adc); + if (rb.getWriteError()) { + // Error caused by too few free bytes in RingBuf. + Serial.println("WriteError"); + break; + } + } + // Write any RingBuf data to file. + rb.sync(); + file.truncate(); + file.rewind(); + // Print first twenty lines of file. + Serial.println("spareMicros,ADC0"); + for (uint8_t n = 0; n < 20 && file.available();) { + int c = file.read(); + if (c < 0) { + break; + } + Serial.write(c); + if (c == '\n') n++; + } + Serial.print("fileSize: "); + Serial.println((uint32_t)file.fileSize()); + Serial.print("maxBytesUsed: "); + Serial.println(maxUsed); + Serial.print("minSpareMicros: "); + Serial.println(minSpareMicros); + file.close(); +} +void clearSerialInput() { + for (uint32_t m = micros(); micros() - m < 10000;) { + if (Serial.read() >= 0) { + m = micros(); + } + } +} +void setup() { + Serial.begin(9600); + while (!Serial) { + } + // Go faster or log more channels. ADC quality will suffer. + // analogReadAveraging(1); +} + +void loop() { + clearSerialInput(); + Serial.println("Type any character to start"); + while (!Serial.available()) { + } + clearSerialInput(); + logData(); +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/UnicodeFilenames/UnicodeFilenames.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/UnicodeFilenames/UnicodeFilenames.ino new file mode 100644 index 00000000..a1524070 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/UnicodeFilenames/UnicodeFilenames.ino @@ -0,0 +1,97 @@ +// Simple test of Unicode filename. +// Unicode is supported as UTF-8 encoded strings. +#include "SdFat.h" + +// USE_UTF8_LONG_NAMES must be non-zero in SdFat/src/SdFatCongfig.h +#if USE_UTF8_LONG_NAMES + +#define UTF8_FOLDER u8"😀" +const char* names[] = {u8"россиянин", u8"très élégant", u8"狗.txt", nullptr}; + +// Remove files if non-zero. +#define REMOVE_UTF8_FILES 1 + +// SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, +// 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. +#define SD_FAT_TYPE 0 + +// SDCARD_SS_PIN is defined for the built-in SD on some boards. +#ifndef SDCARD_SS_PIN +const uint8_t SD_CS_PIN = SS; +#else // SDCARD_SS_PIN +// Assume built-in SD is used. +const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +#endif // SDCARD_SS_PIN + +// Try to select the best SD card configuration. +#if HAS_SDIO_CLASS +#define SD_CONFIG SdioConfig(FIFO_SDIO) +#elif ENABLE_DEDICATED_SPI +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(16)) +#else // HAS_SDIO_CLASS +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(16)) +#endif // HAS_SDIO_CLASS + +#if SD_FAT_TYPE == 0 +SdFat sd; +File file; +#elif SD_FAT_TYPE == 1 +SdFat32 sd; +File32 file; +#elif SD_FAT_TYPE == 2 +SdExFat sd; +ExFile file; +#elif SD_FAT_TYPE == 3 +SdFs sd; +FsFile file; +#else // SD_FAT_TYPE +#error Invalid SD_FAT_TYPE +#endif // SD_FAT_TYPE + +void setup() { + Serial.begin(9600); + while (!Serial) { + yield(); + } + Serial.println("Type any character to begin"); + while (!Serial.available()) { + yield(); + } + if (!sd.begin(SD_CONFIG)) { + sd.initErrorHalt(&Serial); + } + if (!sd.exists(UTF8_FOLDER)) { + if (!sd.mkdir(UTF8_FOLDER)) { + Serial.println("sd.mkdir failed"); + return; + } + } + if (!sd.chdir(UTF8_FOLDER)) { + Serial.println("sd.chdir failed"); + return; + } + for (uint8_t i = 0; names[i]; i++) { + if (!file.open(names[i], O_WRONLY | O_CREAT)) { + Serial.println("file.open failed"); + return; + } + file.println(names[i]); + file.close(); + } + Serial.println("ls:"); + sd.ls("/", LS_SIZE | LS_R); +#if REMOVE_UTF8_FILES // For debug test of remove and rmdir. + for (uint8_t i = 0; names[i]; i++) { + sd.remove(names[i]); + } + sd.chdir(); + sd.rmdir(UTF8_FOLDER); + Serial.println("After remove and rmdir"); + sd.ls(LS_SIZE | LS_R); +#endif // REMOVE_UTF8_FILES + Serial.println("Done!"); +} +void loop() {} +#else // USE_UTF8_LONG_NAMES +#error USE_UTF8_LONG_NAMES must be non-zero in SdFat/src/SdFatCongfig.h +#endif // USE_UTF8_LONG_NAMES \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/UserChipSelectFunction/UserChipSelectFunction.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/UserChipSelectFunction/UserChipSelectFunction.ino index 12d2ea3a..57376d3b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/UserChipSelectFunction/UserChipSelectFunction.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/UserChipSelectFunction/UserChipSelectFunction.ino @@ -3,9 +3,6 @@ // #include "SdFat.h" -using namespace sdfat; - - // SD_CHIP_SELECT_MODE must be set to one or two in SdFat/SdFatConfig.h. // A value of one allows optional replacement and two requires replacement. #if SD_CHIP_SELECT_MODE == 1 || SD_CHIP_SELECT_MODE == 2 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/UserSPIDriver/UserSPIDriver.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/UserSPIDriver/UserSPIDriver.ino index 4df86c3d..568db423 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/UserSPIDriver/UserSPIDriver.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/UserSPIDriver/UserSPIDriver.ino @@ -1,10 +1,7 @@ // An example of an external SPI driver. // -#include "SdFat.h" #include "SPI.h" // Only required if you use features in the SPI library. - -using namespace sdfat; - +#include "SdFat.h" #if SPI_DRIVER_SELECT == 3 // Must be set in SdFat/SdFatConfig.h @@ -19,22 +16,16 @@ using namespace sdfat; class MySpiClass : public SdSpiBaseClass { public: // Activate SPI hardware with correct speed and mode. - void activate() { - SPI.beginTransaction(m_spiSettings); - } + void activate() { SPI.beginTransaction(m_spiSettings); } // Initialize the SPI bus. void begin(SdSpiConfig config) { (void)config; SPI.begin(); } // Deactivate SPI hardware. - void deactivate() { - SPI.endTransaction(); - } + void deactivate() { SPI.endTransaction(); } // Receive a byte. - uint8_t receive() { - return SPI.transfer(0XFF); - } + uint8_t receive() { return SPI.transfer(0XFF); } // Receive multiple bytes. // Replace this function if your board has multiple byte receive. uint8_t receive(uint8_t* buf, size_t count) { @@ -44,9 +35,7 @@ class MySpiClass : public SdSpiBaseClass { return 0; } // Send a byte. - void send(uint8_t data) { - SPI.transfer(data); - } + void send(uint8_t data) { SPI.transfer(data); } // Send multiple bytes. // Replace this function if your board has multiple byte send. void send(const uint8_t* buf, size_t count) { @@ -62,8 +51,11 @@ class MySpiClass : public SdSpiBaseClass { private: SPISettings m_spiSettings; } mySpi; - +#if ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(50), &mySpi) +#else // ENABLE_DEDICATED_SPI +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(50), &mySpi) +#endif // ENABLE_DEDICATED_SPI SdFat sd; //------------------------------------------------------------------------------ @@ -73,9 +65,11 @@ void setup() { sd.initErrorHalt(&Serial); } sd.ls(&Serial, LS_SIZE); + Serial.println("Done"); } //------------------------------------------------------------------------------ void loop() {} #else // SPI_DRIVER_SELECT #error SPI_DRIVER_SELECT must be three in SdFat/SdFatConfig.h #endif // SPI_DRIVER_SELECT + diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/bench/bench.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/bench/bench.ino index 61e6b2e3..36a577c5 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/bench/bench.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/bench/bench.ino @@ -2,15 +2,12 @@ * This program is a simple binary write/read benchmark. */ #include "SdFat.h" -#include "sdios.h" #include "FreeStack.h" - -using namespace sdfat; - +#include "sdios.h" // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -22,7 +19,7 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -61,10 +58,10 @@ const uint8_t READ_COUNT = 2; // End of configuration constants. //------------------------------------------------------------------------------ // File size in bytes. -const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; +const uint32_t FILE_SIZE = 1000000UL * FILE_SIZE_MB; // Insure 4-byte alignment. -uint32_t buf32[(BUF_SIZE + 3)/4]; +uint32_t buf32[(BUF_SIZE + 3) / 4]; uint8_t* buf = (uint8_t*)buf32; #if SD_FAT_TYPE == 0 @@ -92,22 +89,19 @@ ArduinoOutStream cout(Serial); void cidDmp() { cid_t cid; if (!sd.card()->readCID(&cid)) { - error("readCID failed"); } cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; + cout << uppercase << showbase << hex << int(cid.mid) << dec << endl; cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; cout << F("Product: "); for (uint8_t i = 0; i < 5; i++) { cout << cid.pnm[i]; } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; + cout << F("\nRevision: ") << cid.prvN() << '.' << cid.prvM() << endl; + cout << F("Serial number: ") << hex << cid.psn() << dec << endl; cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; + cout << cid.mdtMonth() << '/' << cid.mdtYear() << endl; cout << endl; } //------------------------------------------------------------------------------ @@ -125,14 +119,14 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(1000); cout << F("\nUse a freshly formatted SD for best performance.\n"); if (!ENABLE_DEDICATED_SPI) { cout << F( - "\nSet ENABLE_DEDICATED_SPI nonzero in\n" - "SdFatConfig.h for best SPI performance.\n"); + "\nSet ENABLE_DEDICATED_SPI nonzero in\n" + "SdFatConfig.h for best SPI performance.\n"); } // use uppercase in hex and use 0X base prefix cout << uppercase << showbase << endl; @@ -152,7 +146,7 @@ void loop() { // F() stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } #if HAS_UNUSED_STACK cout << F("FreeStack: ") << FreeStack() << endl; @@ -167,7 +161,7 @@ void loop() { cout << F("Type is FAT") << int(sd.fatType()) << endl; } - cout << F("Card size: ") << sd.card()->sectorCount()*512E-9; + cout << F("Card size: ") << sd.card()->sectorCount() * 512E-9; cout << F(" GB (GB = 1E9 bytes)") << endl; cidDmp(); @@ -182,17 +176,17 @@ void loop() { for (size_t i = 0; i < (BUF_SIZE - 2); i++) { buf[i] = 'A' + (i % 26); } - buf[BUF_SIZE-2] = '\r'; + buf[BUF_SIZE - 2] = '\r'; } - buf[BUF_SIZE-1] = '\n'; + buf[BUF_SIZE - 1] = '\n'; cout << F("FILE_SIZE_MB = ") << FILE_SIZE_MB << endl; cout << F("BUF_SIZE = ") << BUF_SIZE << F(" bytes\n"); cout << F("Starting write test, please wait.") << endl << endl; // do write test - uint32_t n = FILE_SIZE/BUF_SIZE; - cout <= 0) { + m = micros(); + } + } while (micros() - m < 10000); +} +//------------------------------------------------------------------------------ +void setup() { + Serial.begin(9600); + + // Wait for USB Serial + while (!Serial) { + yield(); + } + delay(1000); +//------------------------------------------------------------------------------ +} +void loop() { + clearSerialInput(); + Serial.println(F("\nType any character to start\n")); + while (!Serial.available()) { + yield(); + } + // Initialize the SD card. + if (!sd.begin(SD_CONFIG)) { + sd.initErrorHalt(); + } + if (!file.open("SdBusyTest.bin", O_RDWR | O_CREAT |O_TRUNC)) { + error("file open failed"); + } + if (!file.preAllocate(FILE_SIZE)) { + error("preallocate failed"); + } + Serial.print(F("Starting write of ")); + Serial.print(FILE_SIZE_MiB); + Serial.println(F(" MiB.")); + uint32_t maxWrite = 0; + uint32_t minWrite = 99999999; + uint32_t ms = millis(); + uint32_t maxBusy = 0; + uint32_t minBusy = UINT32_MAX; + + // Write a dummy sector to start a multi-sector write. + if(file.write(buf, sizeof(buf)) != sizeof(buf)) { + error("write failed for first sector"); + } + + while (file.position() < FILE_SIZE) { + uint32_t m = micros(); + if (waitBusy) { + m = micros(); + while (sd.card()->isBusy()) {} + m = micros() - m; + if (m < minBusy) { + minBusy = m; + } + if (m > maxBusy) { + maxBusy = m; + } + } + m = micros(); + if (file.write(buf, sizeof(buf)) != sizeof(buf)) { + error("write failed"); + } + m = micros() - m; + if (m < minWrite) { + minWrite = m; + } + if (m > maxWrite) { + maxWrite = m; + } + } + file.close(); + ms = millis() - ms; + Serial.println(F("\nTimes in micros")); + if (waitBusy) { + Serial.print(F("minBusy: ")); + Serial.println(minBusy); + Serial.print(F("maxBusy: ")); + Serial.println(maxBusy); + } + Serial.print(F("minWrite: ")); + Serial.println(minWrite); + Serial.print(F("maxWrite: ")); + Serial.println(maxWrite); + Serial.print(1e-3*ms); + Serial.println(F(" Seconds")); + Serial.print(1.0*FILE_SIZE/ms); + Serial.println(F(" KB/sec")); + +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino new file mode 100644 index 00000000..165bf604 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino @@ -0,0 +1,51 @@ +#include "SdFat.h" +#define DUMP_RAW 0 +#define DUMP_UPCASE 0 +const uint8_t CS_PIN = SS; +//#define SD_CONFIG SdioConfig(FIFO_SDIO) +#define SD_CONFIG SdSpiConfig(CS_PIN) + +SdExFat sd; +#define error(s) sd.errorHalt(&Serial, F(s)) +void setup() { + Serial.begin(9600); + while (!Serial) { + yield(); + } + Serial.println(F("Type any character to begin")); + while (!Serial.available()) { + yield(); + } + if (!sd.begin(SD_CONFIG)){ + error("begin failed"); + } +#if DUMP_RAW + sd.dmpSector(&Serial, 0); + for (uint8_t i = 0; i < 24; i++) { + sd.dmpSector(&Serial, 0X8000 + i); + Serial.println(); + } + return; + #endif // DUMP_RAW + ExFatFile root; + if (!root.openRoot(&sd)) { + error("openRoot failed"); + } + sd.printDir(&Serial, &root); + // startSector = 0, sectorCount = 1. + sd.dmpFat(&Serial, 0, 1); + sd.dmpBitmap(&Serial); + sd.printVolInfo(&Serial); + + sd.checkUpcase(&Serial); +#if DUMP_UPCASE + sd.printUpcase(&Serial); +#endif // DUMP_UPCASE + // sd.dmpCluster(&Serial, 8, 0, 4); + Serial.println("Done"); +} + +void loop() { + // put your main code here, to run repeatedly: + +} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestGetName/TestGetName.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestGetName/TestGetName.ino new file mode 100644 index 00000000..48cfb533 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestGetName/TestGetName.ino @@ -0,0 +1,43 @@ +#include "SdFat.h" +SdFs sd; +FsFile file; +const char* name[] = { + "SFN.TXT", + "LongFilename.txt", +#if USE_UTF8_LONG_NAMES + u8"très élégant.txt", +#endif // USE_UTF8_LONG_NAMES + nullptr}; +char buf[32]; +void setup() { + Serial.begin(9600); + while (!Serial) {} + Serial.println("Type any character to begin"); + while (!Serial.available()) {} + if (!sd.begin(SS)) { + sd.initErrorHalt(); + } + for (uint8_t i = 0; name[i]; i++) { + if (!file.open(name[i], O_CREAT |O_RDWR)) { + sd.errorHalt("open"); + } + size_t len = strlen(name[i]); + size_t rtn = file.getName(buf, len); + if (rtn != 0) { + Serial.println("fail len"); + } + rtn = file.getName(buf, len + 1); + if (rtn != len) { + Serial.println("fail len + 1"); + } + Serial.print(rtn); + Serial.print(' '); + Serial.println(buf); + if (!file.remove()) { + sd.errorHalt("remove"); + } + } + Serial.println("Done"); +} + +void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestMkdir/TestMkdir.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestMkdir/TestMkdir.ino new file mode 100644 index 00000000..3101d7a4 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestMkdir/TestMkdir.ino @@ -0,0 +1,140 @@ +/* + * This sketch is a test of subdirectory and file creation. + * It also tests allocation of clusters to directories. + * + * It will create two subdirectories and create enough files + * to force the allocation of a cluster to each directory. + * + * More than 3000 files may be created on a FAT32 volume. + * + * Note: Some cards may 'stutter' others just get slow due + * to the number of flash erases this program causes. + */ +#include + +const uint8_t SD_CHIP_SELECT = SS; + +SdFat sd; +typedef File file_t; + +// store error strings in flash to save RAM +#define error(s) sd.errorHalt(&Serial, F(s)) + +/* + * create enough files to force a cluster to be allocated to dir. + */ +void dirAllocTest(file_t* dir) { + char buf[32], name[32]; + file_t file; + uint16_t n; + uint32_t size = dir->dirSize(); + + // create files and write name to file + for (n = 0; ; n++){ + // make file name + sprintf(name, "%u.TXT", n); + + // open start time + uint32_t t0 = millis(); + if (!file.open(dir, name, O_WRONLY | O_CREAT | O_EXCL)) { + error("open for write failed"); + } + + // open end time and write start time + uint32_t t1 = millis(); + // write file name to file + file.print(name); + if (!file.close()) error("close write"); + + // write end time + uint32_t t2 = millis(); + Serial.print(F("WR ")); + Serial.print(n); + Serial.write(' '); + + // print time to create file + Serial.print(t1 - t0); + Serial.write(' '); + + // print time to write file + Serial.println(t2 - t1); + + // directory size will change when a cluster is added + if (dir->curPosition() > size) break; + } + + // read files and check content + for (uint16_t i = 0; i <= n; i++) { + sprintf(name, "%u.TXT", i); + + // open start time + uint32_t t0 = millis(); + if (!file.open(dir, name, O_RDONLY)) { + error("open for read failed"); + } + + // open end time and read start time + uint32_t t1 = millis(); + int16_t nr = file.read(buf, sizeof(buf)); + if (nr < 5) error("file.read failed"); + + // read end time + uint32_t t2 = millis(); + + // check file content + if (strlen(name) != (size_t)nr || strncmp(name, buf, nr)) { + error("content compare failed"); + } + if (!file.close()) error("close read failed"); + + Serial.print(F("RD ")); + Serial.print(i); + Serial.write(' '); + + // print open time + Serial.print(t1 - t0); + Serial.write(' '); + + // print read time + Serial.println(t2 - t1); + } +} + +void setup() { + file_t root; + Serial.begin(9600); + while (!Serial) {} // wait for Leonardo + Serial.println(F("Type any character to start")); + while (Serial.read() <= 0) {} + delay(200); // Catch Due reset problem + + // initialize the SD card at SPI_FULL_SPEED for best performance. + // try lower speed if bus errors occur. + if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) { + sd.initErrorHalt(&Serial); + } + root.openRoot(&sd); + uint32_t m = millis(); + // write files to root if not FAT16 + if (sd.fatType() != 16) { + Serial.println(F("Writing files to root")); + dirAllocTest(&root); + } + + // create sub1 and write files + file_t sub1; + if (!sub1.mkdir(&root, "SUB1")) error("makdeDir SUB1 failed"); + Serial.println(F("Writing files to SUB1")); + dirAllocTest(&sub1); + + // create sub2 and write files + file_t sub2; + if (!sub2.mkdir(&sub1, "SUB2")) error("mkdir SUB2 failed"); + Serial.println(F("Writing files to SUB2")); + dirAllocTest(&sub2); + m = millis() - m; + Serial.print(F("Done millis: ")); + Serial.println(m); +} + +void loop() { } \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestRmdir/TestRmdir.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestRmdir/TestRmdir.ino new file mode 100644 index 00000000..90e29875 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TestRmdir/TestRmdir.ino @@ -0,0 +1,99 @@ +/* + * This sketch will remove the files and directories + * created by the SdFatMakeDir.pde sketch. + * + * Performance is erratic due to the large number + * of flash erase operations caused by many random + * writes to file structures. + */ +#include + +const uint8_t SD_CHIP_SELECT = SS; + +SdFat sd; +typedef File file_t; + +// store error strings in flash to save RAM +#define error(s) sd.errorHalt(&Serial, F(s)) + +/* + * remove all files in dir. + */ +void deleteFiles(FatFile* dir) { + char name[32]; + file_t file; + + // open and delete files + for (uint16_t n = 0; ; n++){ + sprintf(name, "%u.TXT", n); + + // open start time + uint32_t t0 = millis(); + + // assume done if open fails + if (!file.open(dir, name, O_WRONLY)) return; + + // open end time and remove start time + uint32_t t1 = millis(); + if (!file.remove()) error("file.remove failed"); + + // remove end time + uint32_t t2 = millis(); + + Serial.print(F("RM ")); + Serial.print(n); + Serial.write(' '); + + // open time + Serial.print(t1 - t0); + Serial.write(' '); + + // remove time + Serial.println(t2 - t1); + } +} + +void setup() { + file_t root; + Serial.begin(9600); + while (!Serial) {} // wait for Leonardo + Serial.println(F("Type any character to start")); + while (Serial.read() <= 0) {} + delay(200); // Catch Due reset problem + + // initialize the SD card at SPI_FULL_SPEED for best performance. + // try lower speed if bus errors occur. + if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) { + sd.initErrorHalt(&Serial); + } + root.openRoot(&sd); + // delete files in root if not FAT16. + if (sd.fatType() != 16) { + Serial.println(F("Remove files in root")); + deleteFiles(&root); + } + + // open SUB1 and delete files + file_t sub1; + if (!sub1.open("SUB1", O_RDONLY)) error("open SUB1 failed"); + Serial.println(F("Remove files in SUB1")); + deleteFiles(&sub1); + + // open SUB2 and delete files + file_t sub2; + if (!sub2.open(&sub1, "SUB2", O_RDONLY)) error("open SUB2 failed"); + Serial.println(F("Remove files in SUB2")); + deleteFiles(&sub2); + + // remove SUB2 + if (!sub2.rmdir()) error("sub2.rmdir failed"); + Serial.println(F("SUB2 removed")); + + // remove SUB1 + if (!sub1.rmdir()) error("sub1.rmdir failed"); + Serial.println(F("SUB1 removed")); + + Serial.println(F("Done")); +} + +void loop() { } \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TimestampTest/TimestampTest.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TimestampTest/TimestampTest.ino new file mode 100644 index 00000000..520084af --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/debug/TimestampTest/TimestampTest.ino @@ -0,0 +1,162 @@ +/* + * This program tests the dateTimeCallback() function + * and the timestamp() function. + */ +#include +#include "SdFat.h" +#include "sdios.h" +SdFs sd; + +FsFile file; + +// Default SD chip select is SS pin +const uint8_t chipSelect = SS; + +// create Serial stream +ArduinoOutStream cout(Serial); +//------------------------------------------------------------------------------ +// store error strings in flash to save RAM +#define error(s) sd.errorHalt(F(s)) +//------------------------------------------------------------------------------ +/* + * date/time values for debug + * normally supplied by a real-time clock or GPS + */ +// date 1-Oct-21 +uint16_t year = 2021; +uint8_t month = 10; +uint8_t day = 1; + +// time 20:30:40 +uint8_t hour = 20; +uint8_t minute = 30; +uint8_t second = 40; +//------------------------------------------------------------------------------ +/* + * User provided date time callback function. + * See SdFile::dateTimeCallback() for usage. + */ +void dateTime(uint16_t* date, uint16_t* time) { + // User gets date and time from GPS or real-time + // clock in real callback function + + // return date using FAT_DATE macro to format fields + *date = FAT_DATE(year, month, day); + + // return time using FAT_TIME macro to format fields + *time = FAT_TIME(hour, minute, second); +} +//------------------------------------------------------------------------------ +/* + * Function to print all timestamps. + */ +void printTimestamps(FsFile& f) { + cout << F("Creation: "); + f.printCreateDateTime(&Serial); + cout << endl << F("Modify: "); + f.printModifyDateTime(&Serial); + cout << endl << F("Access: "); + f.printAccessDateTime(&Serial); + cout << endl; +} +//------------------------------------------------------------------------------ +void setup(void) { + Serial.begin(9600); + // Wait for USB Serial + while (!Serial) { + yield(); + } + cout << F("Type any character to start\n"); + while (!Serial.available()) { + yield(); + } + // Initialize at the highest speed supported by the board that is + // not over 50 MHz. Try a lower speed if SPI errors occur. + if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { + sd.initErrorHalt(); + } + + // remove files if they exist + sd.remove("callback.txt"); + sd.remove("default.txt"); + sd.remove("stamp.txt"); + + // create a new file with default timestamps + if (!file.open("default.txt", O_WRONLY | O_CREAT)) { + error("open default.txt failed"); + } + cout << F("\nOpen with default times\n"); + printTimestamps(file); + + // close file + file.close(); + /* + * Test the date time callback function. + * + * dateTimeCallback() sets the function + * that is called when a file is created + * or when a file's directory entry is + * modified by sync(). + * + * The callback can be disabled by the call + * SdFile::dateTimeCallbackCancel() + */ + // set date time callback function + SdFile::dateTimeCallback(dateTime); + + // create a new file with callback timestamps + if (!file.open("callback.txt", O_WRONLY | O_CREAT)) { + error("open callback.txt failed"); + } + cout << ("\nOpen with callback times\n"); + printTimestamps(file); + + // change call back date + day += 1; + + // must add two to see change since FAT second field is 5-bits + second += 2; + + // modify file by writing a byte + file.write('t'); + + // force dir update + file.sync(); + + cout << F("\nTimes after write\n"); + printTimestamps(file); + + // close file + file.close(); + /* + * Test timestamp() function + * + * Cancel callback so sync will not + * change access/modify timestamp + */ + SdFile::dateTimeCallbackCancel(); + + // create a new file with default timestamps + if (!file.open("stamp.txt", O_WRONLY | O_CREAT)) { + error("open stamp.txt failed"); + } + // set creation date time + if (!file.timestamp(T_CREATE, 2021, 11, 10, 1, 2, 3)) { + error("set create time failed"); + } + // set write/modification date time + if (!file.timestamp(T_WRITE, 2021, 11, 11, 4, 5, 6)) { + error("set write time failed"); + } + // set access date + if (!file.timestamp(T_ACCESS, 2021, 11, 12, 7, 8, 9)) { + error("set access time failed"); + } + cout << F("\nTimes after timestamp() calls\n"); + printTimestamps(file); + + file.close(); + cout << F("\nDone\n"); +} + +void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino index 11b5f3ed..d0f21dd8 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino @@ -69,7 +69,7 @@ void setup() { // Wait for USB Serial. while (!Serial) { - SysCall::yield(); + yield(); } // F() stores strings in flash to save RAM cout << endl << F("FreeStack: ") << FreeStack() << endl; @@ -77,7 +77,7 @@ void setup() { #if WAIT_TO_START cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Discard input. do { @@ -193,5 +193,5 @@ void loop() { } logfile.close(); cout << F("Done!"); - SysCall::halt(); + while (true) {} } \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino index 9d6b1b5f..ea77e267 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino @@ -20,11 +20,11 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.println("type any character to start"); while (!Serial.available()) { - SysCall::yield(); + yield(); } if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { Serial.println("begin failed"); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino index 8a92300e..e90e1fc9 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino @@ -10,7 +10,7 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(2000); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino index c84664d3..9c7d19e3 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino @@ -15,7 +15,7 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } if (!sd.begin()) { diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino index 56623e55..3faf28ee 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino @@ -13,11 +13,11 @@ void setup() { Serial.begin(9600); // Wait for USB Serial. while(!Serial) { - SysCall::yield(); + yield(); } Serial.println(F("Type any character to start")); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize the SD. if (!SD.begin(csPin)) { diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/append/append.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/append/append.ino index 282668bd..3dfd8a8c 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/append/append.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/append/append.ino @@ -29,12 +29,12 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } // F() stores strings in flash to save RAM cout << endl << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/average/average.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/average/average.ino index eaa3d2da..e58714af 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/average/average.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/average/average.ino @@ -58,12 +58,12 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } // F() stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/bufstream/bufstream.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/bufstream/bufstream.ino index 27b00dd5..b4320919 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/bufstream/bufstream.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/bufstream/bufstream.ino @@ -16,7 +16,7 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(2000); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/cin_cout/cin_cout.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/cin_cout/cin_cout.ino index 5f8d72d8..4fb14154 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/cin_cout/cin_cout.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/cin_cout/cin_cout.ino @@ -18,7 +18,7 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } } //------------------------------------------------------------------------------ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/eventlog/eventlog.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/eventlog/eventlog.ino index 31bad67a..5bfb9566 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/eventlog/eventlog.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/eventlog/eventlog.ino @@ -38,12 +38,12 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } // F() stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } delay(400); // catch Due reset problem diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino index 05a9caac..4a99a4d1 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino @@ -89,11 +89,11 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/readlog/readlog.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/readlog/readlog.ino index 28522f98..613c3d52 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/readlog/readlog.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/#attic/readlog/readlog.ino @@ -21,7 +21,7 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is // not over 50 MHz. Try a lower speed if SPI errors occur. diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino index 67cf62b6..28346288 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino @@ -22,6 +22,7 @@ #ifdef __AVR__ #include #include "SdFat.h" +#include "sdios.h" #include "FreeStack.h" #include "AnalogBinLogger.h" //------------------------------------------------------------------------------ @@ -648,7 +649,7 @@ void logData() { bgnErase = endErase + 1; } // Start a multiple block write. - if (!sd.card()->writeStart(bgnBlock, FILE_BLOCK_COUNT)) { + if (!sd.card()->writeStart(bgnBlock)) { error("writeBegin failed"); } // Write metadata. @@ -798,7 +799,7 @@ void loop(void) { Serial.println(F("r - record ADC data")); while(!Serial.available()) { - SysCall::yield(); + yield(); } char c = tolower(Serial.read()); if (ERROR_LED_PIN >= 0) { diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino deleted file mode 100644 index 2d669f9b..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/DirectoryFunctions/DirectoryFunctions.ino +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Example use of chdir(), ls(), mkdir(), and rmdir(). - */ -#include -#include "SdFat.h" -#include "sdios.h" -// SD card chip select pin. -const uint8_t chipSelect = SS; -//------------------------------------------------------------------------------ - -// File system object. -SdFat sd; - -// Directory file. -SdFile root; - -// Use for file creation in folders. -SdFile file; - -// Create a Serial output stream. -ArduinoOutStream cout(Serial); - -// Buffer for Serial input. -char cinBuf[40]; - -// Create a serial input stream. -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//============================================================================== -// Error messages stored in flash. -#define error(msg) sd.errorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - - cout << F("Type any character to start\n"); - // Wait for input line and discard. - cin.readline(); - cout << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (sd.exists("Folder1") - || sd.exists("Folder1/file1.txt") - || sd.exists("Folder1/File2.txt")) { - error("Please remove existing Folder1, file1.txt, and File2.txt"); - } - - int rootFileCount = 0; - if (!root.open("/")) { - error("open root failed"); - } - while (file.openNext(&root, O_RDONLY)) { - if (!file.isHidden()) { - rootFileCount++; - } - file.close(); - if (rootFileCount > 10) { - error("Too many files in root. Please use an empty SD."); - } - } - if (rootFileCount) { - cout << F("\nPlease use an empty SD for best results.\n\n"); - delay(1000); - } - // Create a new folder. - if (!sd.mkdir("Folder1")) { - error("Create Folder1 failed"); - } - cout << F("Created Folder1\n"); - - // Create a file in Folder1 using a path. - if (!file.open("Folder1/file1.txt", O_WRONLY | O_CREAT)) { - error("create Folder1/file1.txt failed"); - } - file.close(); - cout << F("Created Folder1/file1.txt\n"); - - // Change volume working directory to Folder1. - if (!sd.chdir("Folder1")) { - error("chdir failed for Folder1.\n"); - } - cout << F("chdir to Folder1\n"); - - // Create File2.txt in current directory. - if (!file.open("File2.txt", O_WRONLY | O_CREAT)) { - error("create File2.txt failed"); - } - file.close(); - cout << F("Created File2.txt in current directory\n"); - - cout << F("\nList of files on the SD.\n"); - sd.ls("/", LS_R); - - // Remove files from current directory. - if (!sd.remove("file1.txt") || !sd.remove("File2.txt")) { - error("remove failed"); - } - cout << F("\nfile1.txt and File2.txt removed.\n"); - - // Change current directory to root. - if (!sd.chdir()) { - error("chdir to root failed.\n"); - } - - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - - // Remove Folder1. - if (!sd.rmdir("Folder1")) { - error("rmdir for Folder1 failed\n"); - } - - cout << F("\nFolder1 removed.\n"); - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - cout << F("Done!\n"); -} -//------------------------------------------------------------------------------ -// Nothing happens in loop. -void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LongFileName/LongFileName.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LongFileName/LongFileName.ino index 92d04a05..50f4b641 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LongFileName/LongFileName.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LongFileName/LongFileName.ino @@ -72,7 +72,7 @@ void loop() { Serial.print(F("\r\nEnter File Number: ")); while (!Serial.available()) { - SysCall::yield(); + yield(); } c = Serial.read(); uint8_t i = c - '0'; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino index 40aa40d3..52c10315 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino @@ -123,7 +123,7 @@ struct block_t { // void fatalBlink() { while (true) { - SysCall::yield(); + yield(); if (ERROR_LED_PIN >= 0) { digitalWrite(ERROR_LED_PIN, HIGH); delay(200); @@ -321,7 +321,7 @@ void openBinFile() { Serial.write(name, BASE_NAME_SIZE); for (int i = 0; i < 2; i++) { while (!Serial.available()) { - SysCall::yield(); + yield(); } char c = Serial.read(); Serial.write(c); @@ -566,7 +566,7 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.print(F("\nFreeStack: ")); Serial.println(FreeStack()); @@ -592,7 +592,7 @@ void setup(void) { if (sd.exists(TMP_FILE_NAME)) { Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); while (!Serial.available()) { - SysCall::yield(); + yield(); } if (Serial.read() == 'Y') { recoverTmpFile(); @@ -617,11 +617,11 @@ void loop(void) { Serial.println(F("r - record data")); Serial.println(F("t - test without logging")); while(!Serial.available()) { - SysCall::yield(); + yield(); } #if WDT_YIELD_TIME_MICROS Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); + while (true) {} #endif char c = tolower(Serial.read()); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino index 40aa40d3..52c10315 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino @@ -123,7 +123,7 @@ struct block_t { // void fatalBlink() { while (true) { - SysCall::yield(); + yield(); if (ERROR_LED_PIN >= 0) { digitalWrite(ERROR_LED_PIN, HIGH); delay(200); @@ -321,7 +321,7 @@ void openBinFile() { Serial.write(name, BASE_NAME_SIZE); for (int i = 0; i < 2; i++) { while (!Serial.available()) { - SysCall::yield(); + yield(); } char c = Serial.read(); Serial.write(c); @@ -566,7 +566,7 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.print(F("\nFreeStack: ")); Serial.println(FreeStack()); @@ -592,7 +592,7 @@ void setup(void) { if (sd.exists(TMP_FILE_NAME)) { Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); while (!Serial.available()) { - SysCall::yield(); + yield(); } if (Serial.read() == 'Y') { recoverTmpFile(); @@ -617,11 +617,11 @@ void loop(void) { Serial.println(F("r - record data")); Serial.println(F("t - test without logging")); while(!Serial.available()) { - SysCall::yield(); + yield(); } #if WDT_YIELD_TIME_MICROS Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); + while (true) {} #endif char c = tolower(Serial.read()); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino index 40aa40d3..52c10315 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino @@ -123,7 +123,7 @@ struct block_t { // void fatalBlink() { while (true) { - SysCall::yield(); + yield(); if (ERROR_LED_PIN >= 0) { digitalWrite(ERROR_LED_PIN, HIGH); delay(200); @@ -321,7 +321,7 @@ void openBinFile() { Serial.write(name, BASE_NAME_SIZE); for (int i = 0; i < 2; i++) { while (!Serial.available()) { - SysCall::yield(); + yield(); } char c = Serial.read(); Serial.write(c); @@ -566,7 +566,7 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.print(F("\nFreeStack: ")); Serial.println(FreeStack()); @@ -592,7 +592,7 @@ void setup(void) { if (sd.exists(TMP_FILE_NAME)) { Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); while (!Serial.available()) { - SysCall::yield(); + yield(); } if (Serial.read() == 'Y') { recoverTmpFile(); @@ -617,11 +617,11 @@ void loop(void) { Serial.println(F("r - record data")); Serial.println(F("t - test without logging")); while(!Serial.available()) { - SysCall::yield(); + yield(); } #if WDT_YIELD_TIME_MICROS Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); + while (true) {} #endif char c = tolower(Serial.read()); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/OpenNext/OpenNext.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/OpenNext/OpenNext.ino deleted file mode 100644 index 542203fb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/OpenNext/OpenNext.ino +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Print size, modify date/time, and name for all files in root. - */ -#include -#include "SdFat.h" - -// SD default chip select pin. -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -SdFile root; -SdFile file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (!root.open("/")) { - sd.errorHalt("open root failed"); - } - // Open next file in root. - // Warning, openNext starts at the current directory position - // so a rewind of the directory may be required. - while (file.openNext(&root, O_RDONLY)) { - file.printFileSize(&Serial); - Serial.write(' '); - file.printModifyDateTime(&Serial); - Serial.write(' '); - file.printName(&Serial); - if (file.isDir()) { - // Indicate a directory. - Serial.write('/'); - } - Serial.println(); - file.close(); - } - if (root.getError()) { - Serial.println("openNext failed"); - } else { - Serial.println("Done!"); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino index c475e193..ceed16b3 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino @@ -28,7 +28,7 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } } //------------------------------------------------------------------------------ @@ -44,7 +44,7 @@ void loop() { // F stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } delay(400); // catch Due reset problem diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/QuickStart/QuickStart.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/QuickStart/QuickStart.ino deleted file mode 100644 index f1141cc4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/QuickStart/QuickStart.ino +++ /dev/null @@ -1,161 +0,0 @@ -// Quick hardware test for SPI card access. -// -#include -#include "SdFat.h" -#include "sdios.h" -// -// Set DISABLE_CHIP_SELECT to disable a second SPI device. -// For example, with the Ethernet shield, set DISABLE_CHIP_SELECT -// to 10 to disable the Ethernet controller. -const int8_t DISABLE_CHIP_SELECT = -1; -// -// Test with reduced SPI speed for breadboards. SD_SCK_MHZ(4) will select -// the highest speed supported by the board that is not over 4 MHz. -// Change SPI_SPEED to SD_SCK_MHZ(50) for best performance. -#define SPI_SPEED SD_SCK_MHZ(4) -//------------------------------------------------------------------------------ -// File system object. -SdFat sd; - -// Serial streams -ArduinoOutStream cout(Serial); - -// input buffer for line -char cinBuf[40]; -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); - -// SD card chip select -int chipSelect; - -void cardOrSpeed() { - cout << F("Try another SD card or reduce the SPI bus speed.\n"); - cout << F("Edit SPI_SPEED in this program to change it.\n"); -} - -void reformatMsg() { - cout << F("Try reformatting the card. For best results use\n"); - cout << F("the SdFormatter program in SdFat/examples or download\n"); - cout << F("and use SDFormatter from www.sdcard.org/downloads.\n"); -} - -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("\nSPI pins:\n"); - cout << F("MISO: ") << int(MISO) << endl; - cout << F("MOSI: ") << int(MOSI) << endl; - cout << F("SCK: ") << int(SCK) << endl; - cout << F("SS: ") << int(SS) << endl; - - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" - "a second SPI device. For example, with the Ethernet\n" - "shield, DISABLE_CHIP_SELECT should be set to 10\n" - "to disable the Ethernet controller.\n"); - } - cout << F( - "\nSD chip select is the key hardware option.\n" - "Common values are:\n" - "Arduino Ethernet shield, pin 4\n" - "Sparkfun SD shield, pin 8\n" - "Adafruit SD shields and modules, pin 10\n"); -} - -bool firstTry = true; -void loop() { - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (!firstTry) { - cout << F("\nRestarting\n"); - } - firstTry = false; - - cout << F("\nEnter the chip select pin number: "); - while (!Serial.available()) { - SysCall::yield(); - } - cin.readline(); - if (cin >> chipSelect) { - cout << chipSelect << endl; - } else { - cout << F("\nInvalid pin number\n"); - return; - } - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - if (!sd.begin(chipSelect, SPI_SPEED)) { - if (sd.card()->errorCode()) { - cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is chipSelect set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - "Is there a wiring/soldering problem?\n"); - cout << F("\nerrorCode: ") << hex << showbase; - cout << int(sd.card()->errorCode()); - cout << F(", errorData: ") << int(sd.card()->errorData()); - cout << dec << noshowbase << endl; - return; - } - if (sd.vol()->fatType() == 0) { - cout << F("Can't find a valid FAT16/FAT32 partition.\n"); - reformatMsg(); - return; - } - cout << F("begin failed, can't determine error type\n"); - return; - } - cout << F("\nCard successfully initialized.\n"); - cout << endl; - - uint32_t size = sd.card()->cardSize(); - if (size == 0) { - cout << F("Can't determine the card size.\n"); - cardOrSpeed(); - return; - } - uint32_t sizeMB = 0.000512 * size + 0.5; - cout << F("Card size: ") << sizeMB; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - cout << endl; - cout << F("Volume is FAT") << int(sd.vol()->fatType()); - cout << F(", Cluster size (bytes): ") << 512L * sd.vol()->blocksPerCluster(); - cout << endl << endl; - - cout << F("Files found (date time size name):\n"); - sd.ls(LS_R | LS_DATE | LS_SIZE); - - if ((sizeMB > 1100 && sd.vol()->blocksPerCluster() < 64) - || (sizeMB < 2200 && sd.vol()->fatType() == 32)) { - cout << F("\nThis card should be reformatted for best performance.\n"); - cout << F("Use a cluster size of 32 KB for cards larger than 1 GB.\n"); - cout << F("Only cards larger than 2 GB should be formatted FAT32.\n"); - reformatMsg(); - return; - } - // Read any extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F("\nSuccess! Type any character to restart.\n"); - while (!Serial.available()) { - SysCall::yield(); - } -} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/RawWrite/RawWrite.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/RawWrite/RawWrite.ino index d3633d21..133f22fa 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/RawWrite/RawWrite.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/RawWrite/RawWrite.ino @@ -48,7 +48,7 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } } //------------------------------------------------------------------------------ @@ -60,7 +60,7 @@ void loop(void) { // F stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } cout << F("FreeStack: ") << FreeStack() << endl; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino index ea0e922c..8099b7ac 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino @@ -47,18 +47,18 @@ size_t readField(File* file, char* str, size_t size, const char* delim) { return n; } //------------------------------------------------------------------------------ -#define errorHalt(msg) {Serial.println(F(msg)); SysCall::halt();} +#define errorHalt(msg) {Serial.println(F(msg)); while (true) {}} //------------------------------------------------------------------------------ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.println("Type any character to start"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize the SD. if (!SD.begin(CS_PIN)) { diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino index 4e89b67c..949bc7b0 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino @@ -95,11 +95,11 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdFormatter/SdFormatter.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdFormatter/SdFormatter.ino deleted file mode 100644 index 570d9820..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdFormatter/SdFormatter.ino +++ /dev/null @@ -1,552 +0,0 @@ -/* - * This program will format an SD or SDHC card. - * Warning all data will be deleted! - * - * For SD/SDHC cards larger than 64 MB this - * program attempts to match the format - * generated by SDFormatter available here: - * - * http://www.sdcard.org/consumers/formatter/ - * - * For smaller cards this program uses FAT16 - * and SDFormatter uses FAT12. - */ -#error use new Version 2 SdFormatter -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -// -// Change the value of chipSelect if your hardware does -// not use the default value, SS. Common values are: -// Arduino Ethernet shield: pin 4 -// Sparkfun SD shield: pin 8 -// Adafruit SD shields and modules: pin 10 -const uint8_t chipSelect = SS; - -// Initialize at highest supported speed not over 50 MHz. -// Reduce max speed if errors occur. -#define SPI_SPEED SD_SCK_MHZ(50) - -// Print extra info for debug if DEBUG_PRINT is nonzero -#define DEBUG_PRINT 0 -#include -#include "SdFat.h" -#include "sdios.h" -#if DEBUG_PRINT -#include "FreeStack.h" -#endif // DEBUG_PRINT - -// Serial output stream -ArduinoOutStream cout(Serial); - -#if USE_SDIO -// Use faster SdioCardEX -SdioCardEX card; -// SdioCard card; -#else // USE_SDIO -Sd2Card card; -#endif // USE_SDIO - -uint32_t cardSizeBlocks; -uint32_t cardCapacityMB; - -// cache for SD block -cache_t cache; - -// MBR information -uint8_t partType; -uint32_t relSector; -uint32_t partSize; - -// Fake disk geometry -uint8_t numberOfHeads; -uint8_t sectorsPerTrack; - -// FAT parameters -uint16_t reservedSectors; -uint8_t sectorsPerCluster; -uint32_t fatStart; -uint32_t fatSize; -uint32_t dataStart; - -// constants for file system structure -uint16_t const BU16 = 128; -uint16_t const BU32 = 8192; - -// strings needed in file system structures -char noName[] = "NO NAME "; -char fat16str[] = "FAT16 "; -char fat32str[] = "FAT32 "; -//------------------------------------------------------------------------------ -#define sdError(msg) {cout << F("error: ") << F(msg) << endl; sdErrorHalt();} -//------------------------------------------------------------------------------ -void sdErrorHalt() { - if (card.errorCode()) { - cout << F("SD error: ") << hex << int(card.errorCode()); - cout << ',' << int(card.errorData()) << dec << endl; - } - SysCall::halt(); -} -//------------------------------------------------------------------------------ -#if DEBUG_PRINT -void debugPrint() { - cout << F("FreeStack: ") << FreeStack() << endl; - cout << F("partStart: ") << relSector << endl; - cout << F("partSize: ") << partSize << endl; - cout << F("reserved: ") << reservedSectors << endl; - cout << F("fatStart: ") << fatStart << endl; - cout << F("fatSize: ") << fatSize << endl; - cout << F("dataStart: ") << dataStart << endl; - cout << F("clusterCount: "); - cout << ((relSector + partSize - dataStart)/sectorsPerCluster) << endl; - cout << endl; - cout << F("Heads: ") << int(numberOfHeads) << endl; - cout << F("Sectors: ") << int(sectorsPerTrack) << endl; - cout << F("Cylinders: "); - cout << cardSizeBlocks/(numberOfHeads*sectorsPerTrack) << endl; -} -#endif // DEBUG_PRINT -//------------------------------------------------------------------------------ -// write cached block to the card -uint8_t writeCache(uint32_t lbn) { - return card.writeBlock(lbn, cache.data); -} -//------------------------------------------------------------------------------ -// initialize appropriate sizes for SD capacity -void initSizes() { - if (cardCapacityMB <= 6) { - sdError("Card is too small."); - } else if (cardCapacityMB <= 16) { - sectorsPerCluster = 2; - } else if (cardCapacityMB <= 32) { - sectorsPerCluster = 4; - } else if (cardCapacityMB <= 64) { - sectorsPerCluster = 8; - } else if (cardCapacityMB <= 128) { - sectorsPerCluster = 16; - } else if (cardCapacityMB <= 1024) { - sectorsPerCluster = 32; - } else if (cardCapacityMB <= 32768) { - sectorsPerCluster = 64; - } else { - // SDXC cards - sectorsPerCluster = 128; - } - - cout << F("Blocks/Cluster: ") << int(sectorsPerCluster) << endl; - // set fake disk geometry - sectorsPerTrack = cardCapacityMB <= 256 ? 32 : 63; - - if (cardCapacityMB <= 16) { - numberOfHeads = 2; - } else if (cardCapacityMB <= 32) { - numberOfHeads = 4; - } else if (cardCapacityMB <= 128) { - numberOfHeads = 8; - } else if (cardCapacityMB <= 504) { - numberOfHeads = 16; - } else if (cardCapacityMB <= 1008) { - numberOfHeads = 32; - } else if (cardCapacityMB <= 2016) { - numberOfHeads = 64; - } else if (cardCapacityMB <= 4032) { - numberOfHeads = 128; - } else { - numberOfHeads = 255; - } -} -//------------------------------------------------------------------------------ -// zero cache and optionally set the sector signature -void clearCache(uint8_t addSig) { - memset(&cache, 0, sizeof(cache)); - if (addSig) { - cache.mbr.mbrSig0 = BOOTSIG0; - cache.mbr.mbrSig1 = BOOTSIG1; - } -} -//------------------------------------------------------------------------------ -// zero FAT and root dir area on SD -void clearFatDir(uint32_t bgn, uint32_t count) { - clearCache(false); -#if USE_SDIO - for (uint32_t i = 0; i < count; i++) { - if (!card.writeBlock(bgn + i, cache.data)) { - sdError("Clear FAT/DIR writeBlock failed"); - } - if ((i & 0XFF) == 0) { - cout << '.'; - } - } -#else // USE_SDIO - if (!card.writeStart(bgn, count)) { - sdError("Clear FAT/DIR writeStart failed"); - } - for (uint32_t i = 0; i < count; i++) { - if ((i & 0XFF) == 0) { - cout << '.'; - } - if (!card.writeData(cache.data)) { - sdError("Clear FAT/DIR writeData failed"); - } - } - if (!card.writeStop()) { - sdError("Clear FAT/DIR writeStop failed"); - } -#endif // USE_SDIO - cout << endl; -} -//------------------------------------------------------------------------------ -// return cylinder number for a logical block number -uint16_t lbnToCylinder(uint32_t lbn) { - return lbn / (numberOfHeads * sectorsPerTrack); -} -//------------------------------------------------------------------------------ -// return head number for a logical block number -uint8_t lbnToHead(uint32_t lbn) { - return (lbn % (numberOfHeads * sectorsPerTrack)) / sectorsPerTrack; -} -//------------------------------------------------------------------------------ -// return sector number for a logical block number -uint8_t lbnToSector(uint32_t lbn) { - return (lbn % sectorsPerTrack) + 1; -} -//------------------------------------------------------------------------------ -// format and write the Master Boot Record -void writeMbr() { - clearCache(true); - part_t* p = cache.mbr.part; - p->boot = 0; - uint16_t c = lbnToCylinder(relSector); - if (c > 1023) { - sdError("MBR CHS"); - } - p->beginCylinderHigh = c >> 8; - p->beginCylinderLow = c & 0XFF; - p->beginHead = lbnToHead(relSector); - p->beginSector = lbnToSector(relSector); - p->type = partType; - uint32_t endLbn = relSector + partSize - 1; - c = lbnToCylinder(endLbn); - if (c <= 1023) { - p->endCylinderHigh = c >> 8; - p->endCylinderLow = c & 0XFF; - p->endHead = lbnToHead(endLbn); - p->endSector = lbnToSector(endLbn); - } else { - // Too big flag, c = 1023, h = 254, s = 63 - p->endCylinderHigh = 3; - p->endCylinderLow = 255; - p->endHead = 254; - p->endSector = 63; - } - p->firstSector = relSector; - p->totalSectors = partSize; - if (!writeCache(0)) { - sdError("write MBR"); - } -} -//------------------------------------------------------------------------------ -// generate serial number from card size and micros since boot -uint32_t volSerialNumber() { - return (cardSizeBlocks << 8) + micros(); -} -//------------------------------------------------------------------------------ -// format the SD as FAT16 -void makeFat16() { - uint32_t nc; - for (dataStart = 2 * BU16;; dataStart += BU16) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 255)/256; - uint32_t r = BU16 + 1 + 2 * fatSize + 32; - if (dataStart < r) { - continue; - } - relSector = dataStart - r + BU16; - break; - } - // check valid cluster count for FAT16 volume - if (nc < 4085 || nc >= 65525) { - sdError("Bad cluster count"); - } - reservedSectors = 1; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + 2 * fatSize + reservedSectors + 32; - if (partSize < 32680) { - partType = 0X01; - } else if (partSize < 65536) { - partType = 0X04; - } else { - partType = 0X06; - } - // write MBR - writeMbr(); - clearCache(true); - fat_boot_t* pb = &cache.fbs; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->rootDirEntryCount = 512; - pb->mediaType = 0XF8; - pb->sectorsPerFat16 = fatSize; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat16str, sizeof(pb->fileSystemType)); - // write partition boot sector - if (!writeCache(relSector)) { - sdError("FAT16 write PBS failed"); - } - // clear FAT and root directory - clearFatDir(fatStart, dataStart - fatStart); - clearCache(false); - cache.fat16[0] = 0XFFF8; - cache.fat16[1] = 0XFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT16 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// format the SD as FAT32 -void makeFat32() { - uint32_t nc; - relSector = BU32; - for (dataStart = 2 * BU32;; dataStart += BU32) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 127)/128; - uint32_t r = relSector + 9 + 2 * fatSize; - if (dataStart >= r) { - break; - } - } - // error if too few clusters in FAT32 volume - if (nc < 65525) { - sdError("Bad cluster count"); - } - reservedSectors = dataStart - relSector - 2 * fatSize; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + dataStart - relSector; - // type depends on address of end sector - // max CHS has lbn = 16450560 = 1024*255*63 - if ((relSector + partSize) <= 16450560) { - // FAT32 - partType = 0X0B; - } else { - // FAT32 with INT 13 - partType = 0X0C; - } - writeMbr(); - clearCache(true); - - fat32_boot_t* pb = &cache.fbs32; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->mediaType = 0XF8; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->sectorsPerFat32 = fatSize; - pb->fat32RootCluster = 2; - pb->fat32FSInfo = 1; - pb->fat32BackBootBlock = 6; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat32str, sizeof(pb->fileSystemType)); - // write partition boot sector and backup - if (!writeCache(relSector) - || !writeCache(relSector + 6)) { - sdError("FAT32 write PBS failed"); - } - clearCache(true); - // write extra boot area and backup - if (!writeCache(relSector + 2) - || !writeCache(relSector + 8)) { - sdError("FAT32 PBS ext failed"); - } - fat32_fsinfo_t* pf = &cache.fsinfo; - pf->leadSignature = FSINFO_LEAD_SIG; - pf->structSignature = FSINFO_STRUCT_SIG; - pf->freeCount = 0XFFFFFFFF; - pf->nextFree = 0XFFFFFFFF; - // write FSINFO sector and backup - if (!writeCache(relSector + 1) - || !writeCache(relSector + 7)) { - sdError("FAT32 FSINFO failed"); - } - clearFatDir(fatStart, 2 * fatSize + sectorsPerCluster); - clearCache(false); - cache.fat32[0] = 0x0FFFFFF8; - cache.fat32[1] = 0x0FFFFFFF; - cache.fat32[2] = 0x0FFFFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT32 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// flash erase all data -uint32_t const ERASE_SIZE = 262144L; -void eraseCard() { - cout << endl << F("Erasing\n"); - uint32_t firstBlock = 0; - uint32_t lastBlock; - uint16_t n = 0; - - do { - lastBlock = firstBlock + ERASE_SIZE - 1; - if (lastBlock >= cardSizeBlocks) { - lastBlock = cardSizeBlocks - 1; - } - if (!card.erase(firstBlock, lastBlock)) { - sdError("erase failed"); - } - cout << '.'; - if ((n++)%32 == 31) { - cout << endl; - } - firstBlock += ERASE_SIZE; - } while (firstBlock < cardSizeBlocks); - cout << endl; - - if (!card.readBlock(0, cache.data)) { - sdError("readBlock"); - } - cout << hex << showbase << setfill('0') << internal; - cout << F("All data set to ") << setw(4) << int(cache.data[0]) << endl; - cout << dec << noshowbase << setfill(' ') << right; - cout << F("Erase done\n"); -} -//------------------------------------------------------------------------------ -void formatCard() { - cout << endl; - cout << F("Formatting\n"); - initSizes(); - if (card.type() != SD_CARD_TYPE_SDHC) { - cout << F("FAT16\n"); - makeFat16(); - } else { - cout << F("FAT32\n"); - makeFat32(); - } -#if DEBUG_PRINT - debugPrint(); -#endif // DEBUG_PRINT - cout << F("Format done\n"); -} -//------------------------------------------------------------------------------ -void setup() { - char c; - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Discard any extra characters. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F( - "\n" - "This program can erase and/or format SD/SDHC cards.\n" - "\n" - "Erase uses the card's fast flash erase command.\n" - "Flash erase sets all data to 0X00 for most cards\n" - "and 0XFF for a few vendor's cards.\n" - "\n" - "Cards larger than 2 GB will be formatted FAT32 and\n" - "smaller cards will be formatted FAT16.\n" - "\n" - "Warning, all data on the card will be erased.\n" - "Enter 'Y' to continue: "); - while (!Serial.available()) { - SysCall::yield(); - } - - c = Serial.read(); - cout << c << endl; - if (c != 'Y') { - cout << F("Quiting, you did not enter 'Y'.\n"); - return; - } - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - cout << F( - "\n" - "Options are:\n" - "E - erase the card and skip formatting.\n" - "F - erase and then format the card. (recommended)\n" - "Q - quick format the card without erase.\n" - "\n" - "Enter option: "); - - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - cout << c << endl; - if (!strchr("EFQ", c)) { - cout << F("Quiting, invalid option entered.") << endl; - return; - } -#if USE_SDIO - if (!card.begin()) { - sdError("card.begin failed"); - } -#else // USE_SDIO - if (!card.begin(chipSelect, SPI_SPEED)) { - cout << F( - "\nSD initialization failure!\n" - "Is the SD card inserted correctly?\n" - "Is chip select correct at the top of this program?\n"); - sdError("card.begin failed"); - } -#endif - cardSizeBlocks = card.cardSize(); - if (cardSizeBlocks == 0) { - sdError("cardSize"); - } - cardCapacityMB = (cardSizeBlocks + 2047)/2048; - - cout << F("Card Size: ") << setprecision(0) << 1.048576*cardCapacityMB; - cout << F(" MB, (MB = 1,000,000 bytes)") << endl; - - if (c == 'E' || c == 'F') { - eraseCard(); - } - if (c == 'F' || c == 'Q') { - formatCard(); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdInfo/SdInfo.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdInfo/SdInfo.ino deleted file mode 100644 index 8549528f..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SdInfo/SdInfo.ino +++ /dev/null @@ -1,248 +0,0 @@ -/* - * This program attempts to initialize an SD card and analyze its structure. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#error Use new Version 2 SdInfo -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -/* - * SD chip select pin. Common values are: - * - * Arduino Ethernet shield, pin 4. - * SparkFun SD shield, pin 8. - * Adafruit SD shields and modules, pin 10. - * Default SD chip select is the SPI SS pin. - */ -const uint8_t SD_CHIP_SELECT = SS; -/* - * Set DISABLE_CHIP_SELECT to disable a second SPI device. - * For example, with the Ethernet shield, set DISABLE_CHIP_SELECT - * to 10 to disable the Ethernet controller. - */ -const int8_t DISABLE_CHIP_SELECT = -1; - -#if USE_SDIO -// Use faster SdioCardEX -SdFatSdioEX sd; -// SdFatSdio sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// serial output steam -ArduinoOutStream cout(Serial); - -// global for card size -uint32_t cardSize; - -// global for card erase size -uint32_t eraseSize; -//------------------------------------------------------------------------------ -// store error strings in flash -#define sdErrorMsg(msg) sd.errorPrint(F(msg)); -//------------------------------------------------------------------------------ -uint8_t cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - sdErrorMsg("readCID failed"); - return false; - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; - return true; -} -//------------------------------------------------------------------------------ -uint8_t csdDmp() { - csd_t csd; - uint8_t eraseSingleBlock; - if (!sd.card()->readCSD(&csd)) { - sdErrorMsg("readCSD failed"); - return false; - } - if (csd.v1.csd_ver == 0) { - eraseSingleBlock = csd.v1.erase_blk_en; - eraseSize = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - } else if (csd.v2.csd_ver == 1) { - eraseSingleBlock = csd.v2.erase_blk_en; - eraseSize = (csd.v2.sector_size_high << 1) | csd.v2.sector_size_low; - } else { - cout << F("csd version error\n"); - return false; - } - eraseSize++; - cout << F("cardSize: ") << 0.000512*cardSize; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - - cout << F("flashEraseSize: ") << int(eraseSize) << F(" blocks\n"); - cout << F("eraseSingleBlock: "); - if (eraseSingleBlock) { - cout << F("true\n"); - } else { - cout << F("false\n"); - } - return true; -} -//------------------------------------------------------------------------------ -// print partition table -uint8_t partDmp() { - mbr_t mbr; - if (!sd.card()->readBlock(0, (uint8_t*)&mbr)) { - sdErrorMsg("read MBR failed"); - return false; - } - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - if ((pt->boot & 0X7F) != 0 || pt->firstSector > cardSize) { - cout << F("\nNo MBR. Assuming Super Floppy format.\n"); - return true; - } - } - cout << F("\nSD Partition Table\n"); - cout << F("part,boot,type,start,length\n"); - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - cout << int(ip) << ',' << hex << int(pt->boot) << ',' << int(pt->type); - cout << dec << ',' << pt->firstSector <<',' << pt->totalSectors << endl; - } - return true; -} -//------------------------------------------------------------------------------ -void volDmp() { - cout << F("\nVolume is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("blocksPerCluster: ") << int(sd.vol()->blocksPerCluster()) << endl; - cout << F("clusterCount: ") << sd.vol()->clusterCount() << endl; - cout << F("freeClusters: "); - uint32_t volFree = sd.vol()->freeClusterCount(); - cout << volFree << endl; - float fs = 0.000512*volFree*sd.vol()->blocksPerCluster(); - cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n"); - cout << F("fatStartBlock: ") << sd.vol()->fatStartBlock() << endl; - cout << F("fatCount: ") << int(sd.vol()->fatCount()) << endl; - cout << F("blocksPerFat: ") << sd.vol()->blocksPerFat() << endl; - cout << F("rootDirStart: ") << sd.vol()->rootDirStart() << endl; - cout << F("dataStartBlock: ") << sd.vol()->dataStartBlock() << endl; - if (sd.vol()->dataStartBlock() % eraseSize) { - cout << F("Data area is not aligned on flash erase boundaries!\n"); - cout << F("Download and use formatter from www.sdcard.org!\n"); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; - - // F stores strings in flash to save RAM - cout << F("SdFat version: ") << SD_FAT_VERSION << endl; -#if !USE_SDIO - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - cout << F("\nAssuming the SD chip select pin is: ") <= 0); - - // F stores strings in flash to save RAM - cout << F("\ntype any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - uint32_t t = millis(); -#if USE_SDIO - if (!sd.cardBegin()) { - sdErrorMsg("\ncardBegin failed"); - return; - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.cardBegin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { - sdErrorMsg("cardBegin failed"); - return; - } - #endif // USE_SDIO - t = millis() - t; - - cardSize = sd.card()->cardSize(); - if (cardSize == 0) { - sdErrorMsg("cardSize failed"); - return; - } - cout << F("\ninit time: ") << t << " ms" << endl; - cout << F("\nCard type: "); - switch (sd.card()->type()) { - case SD_CARD_TYPE_SD1: - cout << F("SD1\n"); - break; - - case SD_CARD_TYPE_SD2: - cout << F("SD2\n"); - break; - - case SD_CARD_TYPE_SDHC: - if (cardSize < 70000000) { - cout << F("SDHC\n"); - } else { - cout << F("SDXC\n"); - } - break; - - default: - cout << F("Unknown\n"); - } - if (!cidDmp()) { - return; - } - if (!csdDmp()) { - return; - } - uint32_t ocr; - if (!sd.card()->readOCR(&ocr)) { - sdErrorMsg("\nreadOCR failed"); - return; - } - cout << F("OCR: ") << hex << ocr << dec << endl; - if (!partDmp()) { - return; - } - if (!sd.fsBegin()) { - sdErrorMsg("\nFile System initialization failed.\n"); - return; - } - volDmp(); -} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino deleted file mode 100644 index a3907939..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/SoftwareSpi/SoftwareSpi.ino +++ /dev/null @@ -1,59 +0,0 @@ -// An example of the SdFatSoftSpi template class. -// This example is for an Adafruit Data Logging Shield on a Mega. -// Software SPI is required on Mega since this shield connects to pins 10-13. -// This example will also run on an Uno and other boards using software SPI. -// -#include -#include "SdFat.h" -#error See Version 2 software SPI example -#if ENABLE_SOFTWARE_SPI_CLASS // Must be set in SdFat/SdFatConfig.h -// -// Pin numbers in templates must be constants. -const uint8_t SOFT_MISO_PIN = 12; -const uint8_t SOFT_MOSI_PIN = 11; -const uint8_t SOFT_SCK_PIN = 13; -// -// Chip select may be constant or RAM variable. -const uint8_t SD_CHIP_SELECT_PIN = 10; - -// SdFat software SPI template -SdFatSoftSpi sd; - -// Test file. -SdFile file; - -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - - if (!sd.begin(SD_CHIP_SELECT_PIN)) { - sd.initErrorHalt(); - } - - if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) { - sd.errorHalt(F("open failed")); - } - file.println(F("This line was printed using software SPI.")); - - file.rewind(); - - while (file.available()) { - Serial.write(file.read()); - } - - file.close(); - - Serial.println(F("Done.")); -} -//------------------------------------------------------------------------------ -void loop() {} -#else // ENABLE_SOFTWARE_SPI_CLASS -#error ENABLE_SOFTWARE_SPI_CLASS must be set non-zero in SdFat/SdFatConfig.h -#endif //ENABLE_SOFTWARE_SPI_CLASS \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/StdioBench/StdioBench.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/StdioBench/StdioBench.ino index 9412d628..c937520a 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/StdioBench/StdioBench.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/StdioBench/StdioBench.ino @@ -32,12 +32,12 @@ void setup() { Serial.begin(9600); while (!Serial) { - SysCall::yield(); + yield(); } Serial.println(F("Type any character to start")); while (!Serial.available()) { - SysCall::yield(); + yield(); } Serial.println(F("Starting test")); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino deleted file mode 100644 index 1c5214f4..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TeensySdioDemo/TeensySdioDemo.ino +++ /dev/null @@ -1,169 +0,0 @@ -// Simple performance test for Teensy 3.5/3.6 SDHC. -// Demonstrates yield() efficiency. - -// Warning SdFatSdio and SdFatSdioEX normally should -// not both be used in a program. -// Each has its own cache and member variables. - -#include "SdFat.h" -#error See Version 2 SDIO example -// 32 KiB buffer. -const size_t BUF_DIM = 32768; - -// 8 MiB file. -const uint32_t FILE_SIZE = 256UL*BUF_DIM; - -SdFatSdio sd; - -SdFatSdioEX sdEx; - -File file; - -uint8_t buf[BUF_DIM]; - -// buffer as uint32_t -uint32_t* buf32 = (uint32_t*)buf; - -// Total usec in read/write calls. -uint32_t totalMicros = 0; -// Time in yield() function. -uint32_t yieldMicros = 0; -// Number of yield calls. -uint32_t yieldCalls = 0; -// Max busy time for single yield call. -uint32_t yieldMaxUsec = 0; -// Control access to the two versions of SdFat. -bool useEx = false; -//----------------------------------------------------------------------------- -bool sdBusy() { - return useEx ? sdEx.card()->isBusy() : sd.card()->isBusy(); -} -//----------------------------------------------------------------------------- -void errorHalt(const char* msg) { - if (useEx) { - sdEx.errorHalt(msg); - } else { - sd.errorHalt(msg); - } -} -//------------------------------------------------------------------------------ -uint32_t kHzSdClk() { - return useEx ? sdEx.card()->kHzSdClk() : sd.card()->kHzSdClk(); -} -//------------------------------------------------------------------------------ -// Replace "weak" system yield() function. -void yield() { - // Only count cardBusy time. - if (!sdBusy()) { - return; - } - uint32_t m = micros(); - yieldCalls++; - while (sdBusy()) { - // Do something here. - } - m = micros() - m; - if (m > yieldMaxUsec) { - yieldMaxUsec = m; - } - yieldMicros += m; -} -//----------------------------------------------------------------------------- -void runTest() { - // Zero Stats - totalMicros = 0; - yieldMicros = 0; - yieldCalls = 0; - yieldMaxUsec = 0; - if (!file.open("TeensyDemo.bin", O_RDWR | O_CREAT)) { - errorHalt("open failed"); - } - Serial.println("\nsize,write,read"); - Serial.println("bytes,KB/sec,KB/sec"); - for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { - file.truncate(0); - uint32_t nRdWr = FILE_SIZE/nb; - Serial.print(nb); - Serial.print(','); - uint32_t t = micros(); - for (uint32_t n = 0; n < nRdWr; n++) { - // Set start and end of buffer. - buf32[0] = n; - buf32[nb/4 - 1] = n; - if (nb != file.write(buf, nb)) { - errorHalt("write failed"); - } - } - t = micros() - t; - totalMicros += t; - Serial.print(1000.0*FILE_SIZE/t); - Serial.print(','); - file.rewind(); - t = micros(); - - for (uint32_t n = 0; n < nRdWr; n++) { - if ((int)nb != file.read(buf, nb)) { - errorHalt("read failed"); - } - // crude check of data. - if (buf32[0] != n || buf32[nb/4 - 1] != n) { - errorHalt("data check"); - } - } - t = micros() - t; - totalMicros += t; - Serial.println(1000.0*FILE_SIZE/t); - } - file.close(); - Serial.print("\ntotalMicros "); - Serial.println(totalMicros); - Serial.print("yieldMicros "); - Serial.println(yieldMicros); - Serial.print("yieldCalls "); - Serial.println(yieldCalls); - Serial.print("yieldMaxUsec "); - Serial.println(yieldMaxUsec); - Serial.print("kHzSdClk "); - Serial.println(kHzSdClk()); - Serial.println("Done"); -} -//----------------------------------------------------------------------------- -void setup() { - Serial.begin(9600); - while (!Serial) { - } - Serial.println("SdFatSdioEX uses extended multi-block transfers without DMA."); - Serial.println("SdFatSdio uses a traditional DMA SDIO implementation."); - Serial.println("Note the difference is speed and busy yield time.\n"); -} -//----------------------------------------------------------------------------- -void loop() { - do { - delay(10); - } while (Serial.available() && Serial.read()); - - Serial.println("Type '1' for SdFatSdioEX or '2' for SdFatSdio"); - while (!Serial.available()) { - } - char c = Serial.read(); - if (c != '1' && c != '2') { - Serial.println("Invalid input"); - return; - } - if (c =='1') { - useEx = true; - if (!sdEx.begin()) { - sd.initErrorHalt("SdFatSdioEX begin() failed"); - } - // make sdEx the current volume. - sdEx.chvol(); - } else { - useEx = false; - if (!sd.begin()) { - sd.initErrorHalt("SdFatSdio begin() failed"); - } - // make sd the current volume. - sd.chvol(); - } - runTest(); -} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/Timestamp/Timestamp.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/Timestamp/Timestamp.ino index 19b232cd..0926f3a0 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/Timestamp/Timestamp.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/Timestamp/Timestamp.ino @@ -64,11 +64,11 @@ void setup(void) { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is // not over 50 MHz. Try a lower speed if SPI errors occur. diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TwoCards/TwoCards.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TwoCards/TwoCards.ino index 79fe6548..35f0ee91 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TwoCards/TwoCards.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/TwoCards/TwoCards.ino @@ -27,7 +27,7 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.print(F("FreeStack: ")); @@ -40,7 +40,7 @@ void setup() { Serial.println(F("type any character to start")); while (!Serial.available()) { - SysCall::yield(); + yield(); } // disable sd2 while initializing sd1 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino index 558bc5f4..5c92d639 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino @@ -38,7 +38,7 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } if (!MAINTAIN_FREE_CLUSTER_COUNT) { cout << F("Please edit SdFatConfig.h and set\n"); @@ -48,7 +48,7 @@ void setup() { // F stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is // not over 50 MHz. Try a lower speed if SPI errors occur. diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/bench/bench.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/bench/bench.ino deleted file mode 100644 index d8739847..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/bench/bench.ino +++ /dev/null @@ -1,222 +0,0 @@ -/* - * This program is a simple binary write/read benchmark. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 - -// SD chip select pin -const uint8_t chipSelect = SS; - -// Size of read/write. -const size_t BUF_SIZE = 512; - -// File size in MB where MB = 1,000,000 bytes. -const uint32_t FILE_SIZE_MB = 5; - -// Write pass count. -const uint8_t WRITE_COUNT = 2; - -// Read pass count. -const uint8_t READ_COUNT = 2; -//============================================================================== -// End of configuration constants. -//------------------------------------------------------------------------------ -// File size in bytes. -const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; - -uint8_t buf[BUF_SIZE]; - -// file system -#if USE_SDIO -// Traditional DMA version. -// SdFatSdio sd; -// Faster version. -SdFatSdioEX sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// Set ENABLE_EXTENDED_TRANSFER_CLASS to use extended SD I/O. -// Requires dedicated use of the SPI bus. -// SdFatEX sd; - -// Set ENABLE_SOFTWARE_SPI_CLASS to use software SPI. -// Args are misoPin, mosiPin, sckPin. -// SdFatSoftSpi<6, 7, 5> sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// Store error strings in flash to save RAM. -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - error("readCID failed"); - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - cout << F("\nUse a freshly formatted SD for best performance.\n"); - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; -} -//------------------------------------------------------------------------------ -void loop() { - float s; - uint32_t t; - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Discard any input. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F( stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - cout << F("chipSelect: ") << int(chipSelect) << endl; - cout << F("FreeStack: ") << FreeStack() << endl; - -#if USE_SDIO - if (!sd.begin()) { - sd.initErrorHalt(); - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } -#endif // USE_SDIO - cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("Card size: ") << sd.card()->cardSize()*512E-9; - cout << F(" GB (GB = 1E9 bytes)") << endl; - - cidDmp(); - - // open or create file - truncate existing file. - if (!file.open("bench.dat", O_RDWR | O_CREAT | O_TRUNC)) { - error("open failed"); - } - - // fill buf with known data - for (size_t i = 0; i < (BUF_SIZE-2); i++) { - buf[i] = 'A' + (i % 26); - } - buf[BUF_SIZE-2] = '\r'; - buf[BUF_SIZE-1] = '\n'; - - cout << F("File size ") << FILE_SIZE_MB << F(" MB\n"); - cout << F("Buffer size ") << BUF_SIZE << F(" bytes\n"); - cout << F("Starting write test, please wait.") << endl << endl; - - // do write test - uint32_t n = FILE_SIZE/sizeof(buf); - cout < m) { - minLatency = m; - } - totalLatency += m; - } - file.sync(); - t = millis() - t; - s = file.fileSize(); - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Starting read test, please wait.") << endl; - cout << endl < m) { - minLatency = m; - } - totalLatency += m; - if (buf[BUF_SIZE-1] != '\n') { - error("data check"); - } - } - s = file.fileSize(); - t = millis() - t; - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Done") << endl; - file.close(); -} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/dataLogger/dataLogger.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/dataLogger/dataLogger.ino index 69926fe9..c859bcdb 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/dataLogger/dataLogger.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/dataLogger/dataLogger.ino @@ -70,13 +70,13 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(1000); Serial.println(F("Type any character to start")); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is @@ -145,6 +145,6 @@ void loop() { // Close file and stop. file.close(); Serial.println(F("Done")); - SysCall::halt(); + while (true) {} } } \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/fgets/fgets.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/fgets/fgets.ino index 8d4a2451..29979dcc 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/fgets/fgets.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/fgets/fgets.ino @@ -64,12 +64,12 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } delay(400); // catch Due reset problem diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/formatting/formatting.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/formatting/formatting.ino index 90a43e48..7a6bb045 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/formatting/formatting.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/formatting/formatting.ino @@ -45,7 +45,7 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } delay(2000); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/getline/getline.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/getline/getline.ino index 88c68a97..17a928fd 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/getline/getline.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/getline/getline.ino @@ -58,13 +58,13 @@ void setup(void) { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } // F stores strings in flash to save RAM cout << F("Type any character to start\n"); while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/rename/rename.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/rename/rename.ino deleted file mode 100644 index 7ad745fb..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/rename/rename.ino +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This program demonstrates use of SdFile::rename() - * and SdFat::rename(). - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system -SdFat sd; - -// Serial print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Insert an empty SD. Type any character to start.") << endl; - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // Remove file/dirs from previous run. - if (sd.exists("dir2/DIR3/NAME3.txt")) { - cout << F("Removing /dir2/DIR3/NAME3.txt") << endl; - if (!sd.remove("dir2/DIR3/NAME3.txt") || - !sd.rmdir("dir2/DIR3/") || - !sd.rmdir("dir2/")) { - error("remove/rmdir failed"); - } - } - // create a file and write one line to the file - SdFile file("Name1.txt", O_WRONLY | O_CREAT); - if (!file.isOpen()) { - error("Name1.txt"); - } - file.println("A test line for Name1.txt"); - - // rename the file name2.txt and add a line. - if (!file.rename("name2.txt")) { - error("name2.txt"); - } - file.println("A test line for name2.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make a new directory - "Dir1" - if (!sd.mkdir("Dir1")) { - error("Dir1"); - } - - // move file into Dir1, rename it NAME3.txt and add a line - if (!file.rename("Dir1/NAME3.txt")) { - error("NAME3.txt"); - } - file.println("A line for Dir1/NAME3.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make directory "dir2" - if (!sd.mkdir("dir2")) { - error("dir2"); - } - - // close file before rename(oldPath, newPath) - file.close(); - - // move Dir1 into dir2 and rename it DIR3 - if (!sd.rename("Dir1", "dir2/DIR3")) { - error("dir2/DIR3"); - } - - // open file for append in new location and add a line - if (!file.open("dir2/DIR3/NAME3.txt", O_WRONLY | O_APPEND)) { - error("dir2/DIR3/NAME3.txt"); - } - file.println("A line for dir2/DIR3/NAME3.txt"); - file.close(); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - cout << F("Done") << endl; -} -void loop() {} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/v1v2.txt b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/v1v2.txt deleted file mode 100644 index a148d195..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/v1v2.txt +++ /dev/null @@ -1,66 +0,0 @@ -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/STM32Test/STM32Test.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/STM32Test/STM32Test.ino" -8c8 -< ---- -> #error See new Version 2 STM32 example -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/SdFormatter/SdFormatter.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/SdFormatter/SdFormatter.ino" -14c14 -< ---- -> #error use new Version 2 SdFormatter -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/SdInfo/SdInfo.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/SdInfo/SdInfo.ino" -7c7 -< ---- -> #error Use new Version 2 SdInfo -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/SoftwareSpi/SoftwareSpi.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/SoftwareSpi/SoftwareSpi.ino" -7a8 -> #error See Version 2 software SPI example -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/StdioBench/StdioBench.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/StdioBench/StdioBench.ino" -3a4 -> #include "sdios.h" -27c28 -< uint32_t printSize; ---- -> uint32_t printSize = 0; -29c30 -< uint32_t printTime; ---- -> uint32_t printTime = 0; -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/TeensySdioDemo/TeensySdioDemo.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/TeensySdioDemo/TeensySdioDemo.ino" -9c9 -< ---- -> #error See Version 2 SDIO example -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/Timestamp/Timestamp.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/Timestamp/Timestamp.ino" -8d7 -< -55,59d53 -< dir_t d; -< if (!f.dirEntry(&d)) { -< error("f.dirEntry failed"); -< } -< -61,73c55,59 -< f.printFatDate(d.creationDate); -< cout << ' '; -< f.printFatTime(d.creationTime); -< cout << endl; -< -< cout << F("Modify: "); -< f.printFatDate(d.lastWriteDate); -< cout <<' '; -< f.printFatTime(d.lastWriteTime); -< cout << endl; -< -< cout << F("Access: "); -< f.printFatDate(d.lastAccessDate); ---- -> f.printCreateDateTime(&Serial); -> cout << endl << F("Modify: "); -> f.printModifyDateTime(&Serial); -> cout << endl << F("Access: "); -> f.printAccessDateTime(&Serial); -diff -rb "C:\\Users\\bill\\Documents\\Arduino\\libraries\\SdFat\\examples/wipe/wipe.ino" "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\SdFat\\examples\\examplesV1/wipe/wipe.ino" -1a2 -> #error wipe is not supported in SdFat V2. Use bool format(print_t* pr = nullptr). diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/wipe/wipe.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/wipe/wipe.ino index b6341417..e79e1d4f 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/wipe/wipe.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/examplesV1/wipe/wipe.ino @@ -11,11 +11,11 @@ void setup() { Serial.begin(9600); // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } Serial.println("Type 'Y' to wipe all data."); while (!Serial.available()) { - SysCall::yield(); + yield(); } c = Serial.read(); if (c != 'Y') { diff --git a/extra-libraries/ESP8266/ESP8266SdFat/examples/rename/rename.ino b/extra-libraries/ESP8266/ESP8266SdFat/examples/rename/rename.ino index 1918ec37..3995fce5 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/examples/rename/rename.ino +++ b/extra-libraries/ESP8266/ESP8266SdFat/examples/rename/rename.ino @@ -4,12 +4,9 @@ #include "SdFat.h" #include "sdios.h" -using namespace sdfat; - - // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 1 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and @@ -23,19 +20,21 @@ using namespace sdfat; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN +// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. +#define SPI_CLOCK SD_SCK_MHZ(50) // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) #elif ENABLE_DEDICATED_SPI -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS -#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI) +#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) #endif // HAS_SDIO_CLASS #if SD_FAT_TYPE == 0 @@ -65,11 +64,11 @@ void setup() { // Wait for USB Serial while (!Serial) { - SysCall::yield(); + yield(); } cout << F("Insert an empty SD. Type any character to start.") << endl; while (!Serial.available()) { - SysCall::yield(); + yield(); } // Initialize at the highest speed supported by the board that is @@ -81,8 +80,7 @@ void setup() { // Remove file/dirs from previous run. if (sd.exists("dir2/DIR3/NAME3.txt")) { cout << F("Removing /dir2/DIR3/NAME3.txt") << endl; - if (!sd.remove("dir2/DIR3/NAME3.txt") || - !sd.rmdir("dir2/DIR3/") || + if (!sd.remove("dir2/DIR3/NAME3.txt") || !sd.rmdir("dir2/DIR3/") || !sd.rmdir("dir2/")) { error("remove/rmdir failed"); } @@ -144,4 +142,4 @@ void setup() { cout << F("Done") << endl; } -void loop() {} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/extras/AvrPrintStimmer.cpp b/extra-libraries/ESP8266/ESP8266SdFat/extras/AvrPrintStimmer.cpp new file mode 100644 index 00000000..188db166 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/AvrPrintStimmer.cpp @@ -0,0 +1,567 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + many modifications, by Paul Stoffregen + + This library 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.1 of the License, or (at your option) any later version. + + This library 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 library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include +#include "Arduino.h" // (was wiring.h) + +#include "Print.h" + + +#if ARDUINO >= 100 +#else +void Print::write(const char *str) +{ + write((const uint8_t *)str, strlen(str)); +} +#endif + + +#if ARDUINO >= 100 +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t count = 0; + while (size--) count += write(*buffer++); + return count; +} +#else +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) write(*buffer++); +} +#endif + + +#if ARDUINO >= 100 +size_t Print::print(const String &s) +{ + uint8_t buffer[33]; + size_t count = 0; + unsigned int index = 0; + unsigned int len = s.length(); + while (len > 0) { + s.getBytes(buffer, sizeof(buffer), index); + unsigned int nbytes = len; + if (nbytes > sizeof(buffer)-1) nbytes = sizeof(buffer)-1; + index += nbytes; + len -= nbytes; + count += write(buffer, nbytes); + } + return count; +} +#else +void Print::print(const String &s) +{ + unsigned int len = s.length(); + for (unsigned int i=0; i < len; i++) { + write(s[i]); + } +} +#endif + + +#if ARDUINO >= 100 +size_t Print::print(const __FlashStringHelper *ifsh) +{ + uint8_t buffer[32]; + size_t count = 0; + const char PROGMEM *p = (const char PROGMEM *)ifsh; + unsigned int len = strlen_P(p); + while (len > 0) { + unsigned int nbytes = len; + if (nbytes > sizeof(buffer)) nbytes = sizeof(buffer); + memcpy_P(buffer, p, nbytes); + p += nbytes; + len -= nbytes; + count += write(buffer, nbytes); + } + return count; +} +#else +void Print::print(const __FlashStringHelper *ifsh) +{ + const char PROGMEM *p = (const char PROGMEM *)ifsh; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) return; + write(c); + } +} +#endif + + +#if ARDUINO >= 100 +size_t Print::print(long n) +{ + uint8_t sign=0; + + if (n < 0) { + sign = 1; + n = -n; + } + return printNumber(n, sign, 10); +} +#else +void Print::print(long n) +{ + uint8_t sign=0; + + if (n < 0) { + sign = 1; + n = -n; + } + printNumber(n, sign, 10); +} +#endif + + +#if ARDUINO >= 100 +size_t Print::println(void) +{ + uint8_t buf[2]={'\r', '\n'}; + return write(buf, 2); +} +#else +void Print::println(void) +{ + uint8_t buf[2]={'\r', '\n'}; + write(buf, 2); +} +#endif + + +//#define USE_HACKER_DELIGHT_OPTIMIZATION +#define USE_STIMMER_OPTIMIZATION +#define USE_BENCHMARK_CODE + + +#ifdef USE_HACKER_DELIGHT_OPTIMIZATION +// Adapted from Hacker's Delight (Henry Warren, ISBN 0321842685) www.hackersdelight.org +// by Rob Tillaart, Tom Carpenter, "genom2" with input from others... +// http://forum.arduino.cc/index.php?topic=167414.0 +// +#define divmod10_asm(in32, tmp32, mod8) \ +asm volatile ( \ + "mov %2, %A0 \n\t" /* mod = in */ \ + "ori %A0, 1 \n\t" /* q = in | 1 */ \ + "movw %A1, %A0 \n\t" /* x = q */ \ + "movw %C1, %C0 \n\t" \ + "lsr %D1 \n\t" /* x = x >> 2 */ \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "sub %A0, %A1 \n\t" /* q = q - x */ \ + "sbc %B0, %B1 \n\t" \ + "sbc %C0, %C1 \n\t" \ + "sbc %D0, %D1 \n\t" \ + "movw %A1, %A0 \n\t" /* x = q */ \ + "movw %C1, %C0 \n\t" \ + "lsr %D1 \n\t" /* x = x >> 4 */ \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "add %A1, %A0 \n\t" /* x = x + q */ \ + "adc %B1, %B0 \n\t" \ + "adc %C1, %C0 \n\t" \ + "adc %D1, %D0 \n\t" \ + "movw %A0, %A1 \n\t" /* q = x */ \ + "movw %C0, %C1 \n\t" \ + "add %A0, %B1 \n\t" /* q = q + (x >> 8) */ \ + "adc %B0, %C1 \n\t" \ + "adc %C0, %D1 \n\t" \ + "adc %D0, r1 \n\t" \ + "mov %A0, %B0 \n\t" /* q = q >> 8 */ \ + "mov %B0, %C0 \n\t" \ + "mov %C0, %D0 \n\t" \ + "eor %D0, %D0 \n\t" \ + "add %A0, %A1 \n\t" /* q = q + x */ \ + "adc %B0, %B1 \n\t" \ + "adc %C0, %C1 \n\t" \ + "adc %D0, %D1 \n\t" \ + "mov %A0, %B0 \n\t" /* q = q >> 8 */ \ + "mov %B0, %C0 \n\t" \ + "mov %C0, %D0 \n\t" \ + "eor %D0, %D0 \n\t" \ + "add %A0, %A1 \n\t" /* q = q + x */ \ + "adc %B0, %B1 \n\t" \ + "adc %C0, %C1 \n\t" \ + "adc %D0, %D1 \n\t" \ + "mov %A0, %B0 \n\t" /* q = q >> 8 */ \ + "mov %B0, %C0 \n\t" \ + "mov %C0, %D0 \n\t" \ + "eor %D0, %D0 \n\t" \ + "add %A0, %A1 \n\t" /* q = q + x */ \ + "adc %B0, %B1 \n\t" \ + "adc %C0, %C1 \n\t" \ + "adc %D0, %D1 \n\t" \ + "andi %A0, 0xF8 \n\t" /* q = q & ~0x7 */ \ + "sub %2, %A0 \n\t" /* mod = mod - q */ \ + "lsr %D0 \n\t" /* q = q >> 2 */ \ + "ror %C0 \n\t" \ + "ror %B0 \n\t" \ + "ror %A0 \n\t" \ + "lsr %D0 \n\t" \ + "ror %C0 \n\t" \ + "ror %B0 \n\t" \ + "ror %A0 \n\t" \ + "sub %2, %A0 \n\t" /* mod = mod - q */ \ + "lsr %D0 \n\t" /* q = q >> 1 */ \ + "ror %C0 \n\t" \ + "ror %B0 \n\t" \ + "ror %A0 \n\t" \ + : "+d" (in32), "=r" (tmp32), "=r" (mod8) : : "r0" \ +) +#endif // USE_HACKER_DELIGHT_OPTIMIZATION + +#ifdef USE_STIMMER_OPTIMIZATION +// http://forum.arduino.cc/index.php?topic=167414.msg1293679#msg1293679 +#define divmod10_asm32(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " mul %C0,%2 \n\t" \ + " clr %C0 \n\t" \ + " add %B0,r0 \n\t" \ + " adc %C0,r1 \n\t" \ + " mul %D0,%2 \n\t" \ + " clr %D0 \n\t" \ + " add %C0,r0 \n\t" \ + " adc %D0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,%C0 \n\t" \ + " adc %C0,%D0 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,%C0 \n\t" \ + " adc %B0,%D0 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%D0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " lsr %D0 \n\t" \ + " ror %C0 \n\t" \ + " ror %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") + +#define divmod10_asm24(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " mul %C0,%2 \n\t" \ + " clr %C0 \n\t" \ + " add %B0,r0 \n\t" \ + " adc %C0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,%C0 \n\t" \ + " adc %C0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,%C0 \n\t" \ + " adc %B0,r1 \n\t" \ + " adc %C0,r1 \n\t" \ + " lsr %C0 \n\t" \ + " ror %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") + +#define divmod10_asm16(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " lsr %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") + +#define divmod10_asm8(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,r1 \n\t" \ + " lsr %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") +#endif // USE_STIMMER_OPTIMIZATION + + + +#ifdef USE_BENCHMARK_CODE +uint32_t usec_print = 0; +#endif + + +#if ARDUINO >= 100 +size_t Print::printNumberDec(unsigned long n, uint8_t sign) +#else +void Print::printNumberDec(unsigned long n, uint8_t sign) +#endif +{ + uint8_t digit, buf[11], *p; + uint32_t tmp32; + uint8_t tmp8; + +#ifdef USE_BENCHMARK_CODE + uint32_t usec = micros(); +#endif + p = buf + (sizeof(buf)-1); + + #if defined(USE_STIMMER_OPTIMIZATION) + + while(n & 0xff000000){divmod10_asm32(n, digit, tmp8);*--p = digit + '0';} + while(n & 0xff0000){divmod10_asm24(n, digit, tmp8);*--p = digit + '0';} + while(n & 0xff00){divmod10_asm16(n, digit, tmp8);*--p = digit + '0';} + while((n & 0xff)>9){divmod10_asm8(n, digit, tmp8);*--p = digit + '0';} + *--p = n + '0'; + + #else + do { + #if defined(USE_HACKER_DELIGHT_OPTIMIZATION) + divmod10_asm(n, tmp32, digit); + #else + tmp32 = n; + n = n / 10; + digit = tmp32 - n * 10; + #endif + *--p = digit + '0'; + } while (n); + #endif + if (sign) *--p = '-'; +#ifdef USE_BENCHMARK_CODE + usec_print += micros() - usec; +#endif +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + +#if ARDUINO >= 100 +size_t Print::printNumberHex(unsigned long n) +#else +void Print::printNumberHex(unsigned long n) +#endif +{ + uint8_t digit, buf[8], *p; + + p = buf + (sizeof(buf)-1); + do { + digit = n & 15; + *--p = (digit < 10) ? '0' + digit : 'A' + digit - 10; + n >>= 4; + } while (n); +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + +#if ARDUINO >= 100 +size_t Print::printNumberBin(unsigned long n) +#else +void Print::printNumberBin(unsigned long n) +#endif +{ + uint8_t buf[32], *p; + + p = buf + (sizeof(buf)-1); + do { + *--p = '0' + ((uint8_t)n & 1); + n >>= 1; + } while (n); +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + +#if ARDUINO >= 100 +size_t Print::printNumberAny(unsigned long n, uint8_t base) +#else +void Print::printNumberAny(unsigned long n, uint8_t base) +#endif +{ + uint8_t digit, buf[21], *p; + uint32_t tmp; + //uint32_t usec; + + //usec = micros(); + p = buf + (sizeof(buf)-1); + do { + tmp = n; + n = n / base; + digit = tmp - n * base; + *--p = (digit < 10) ? '0' + digit : 'A' + digit - 10; + } while (n); + //usec_print += micros() - usec; +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + + + + +#if ARDUINO >= 100 +size_t Print::printFloat(double number, uint8_t digits) +#else +void Print::printFloat(double number, uint8_t digits) +#endif +{ + uint8_t sign=0; +#if ARDUINO >= 100 + size_t count=0; +#endif + + // Handle negative numbers + if (number < 0.0) { + sign = 1; + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i= 100 + count += printNumber(int_part, sign, 10); +#else + printNumber(int_part, sign, 10); +#endif + + // Print the decimal point, but only if there are digits beyond + if (digits > 0) { + uint8_t n, buf[8], count=1; + buf[0] = '.'; + + // Extract digits from the remainder one at a time + if (digits > sizeof(buf) - 1) digits = sizeof(buf) - 1; + + while (digits-- > 0) { + remainder *= 10.0; + n = (uint8_t)(remainder); + buf[count++] = '0' + n; + remainder -= n; + } +#if ARDUINO >= 100 + count += write(buf, count); +#else + write(buf, count); +#endif + } +#if ARDUINO >= 100 + return count; +#endif +} + + diff --git a/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip b/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip index bb8e5440a17abebe327c6f1a13d52dd18d47d0cc..72b3069c450eb76bf9498010a7660e802acaff77 100644 GIT binary patch literal 476902 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 z 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

              *R#7*WBpu54Td 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⛄kmy*HRZZu@i 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

                ?xny~Bqmx{}fz-ht*q5V-kp`)j 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

                <3V5N*(8&*l*RUO*D_C?JA_#H|f# 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

                4dfs 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�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%0DpaTir(|a5kpKwX@JC0;t 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 ZSf$-J^<1}8@;LGp+fMXjULakD0=6hAU1?x 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 G$NvE}53*MP diff --git a/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/UsbHostShieldDiff.txt b/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/UsbHostShieldDiff.txt index bbe0f1d4..fdc70d78 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/UsbHostShieldDiff.txt +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/UsbHostShieldDiff.txt @@ -1,6 +1,4 @@ - - -+++ "C:\\Users\\bill\\Documents\\ArduinoSdFat\\libraries\\USB_Host_Shield_2.0/masstorage.cpp" 2020-02-20 06:02:48.567008200 -0800 +master/masstorage.cpp" 2022-10-18 08:48:03.639503200 -0700 @@ -796,6 +796,7 @@ buf[i] = 0x00; } @@ -9,3 +7,4 @@ uint8_t rc = ModeSense6(lun, 0, 0x3f, 0, 192, buf); if(!rc) { WriteOk[lun] = ((buf[2] & 0x80) == 0); + diff --git a/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/readme.txt b/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/readme.txt index 0d7b60bd..07b26fe2 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/readme.txt +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/USB_Host_Shield/readme.txt @@ -1,4 +1,4 @@ -This zip file was downloaded on 2/20/2020 from +This zip file was downloaded on 10/18/2022 from https://github.com/felis/USB_Host_Shield_2.0 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.cpp b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintBasic.cpp similarity index 93% rename from extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.cpp rename to extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintBasic.cpp index 2e2c6fa2..87cd5e1b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintBasic.cpp @@ -23,12 +23,9 @@ * DEALINGS IN THE SOFTWARE. */ #include "PrintBasic.h" +#if ENABLE_ARDUINO_FEATURES == 0 #include - -namespace sdfat { - - size_t PrintBasic::print(long n, uint8_t base) { if (n < 0 && base == 10) { return print('-') + printNum(-n, base); @@ -36,14 +33,14 @@ size_t PrintBasic::print(long n, uint8_t base) { return printNum(n, base); } size_t PrintBasic::printNum(unsigned long n, uint8_t base) { - const uint8_t DIM = 8*sizeof(long); + const uint8_t DIM = 8 * sizeof(long); char buf[DIM]; char *str = &buf[DIM]; if (base < 2) return 0; do { - char c = n%base; + char c = n % base; n /= base; *--str = c + (c < 10 ? '0' : 'A' - 10); } while (n); @@ -70,7 +67,7 @@ size_t PrintBasic::printDouble(double n, uint8_t prec) { } double round = 0.5; - for (uint8_t i = 0; i < prec; ++i) { + for (uint8_t i = 0; i < prec; ++i) { round *= 0.1; } @@ -91,6 +88,4 @@ size_t PrintBasic::printDouble(double n, uint8_t prec) { } return rtn; } - - -}; // namespace sdfat +#endif // ENABLE_ARDUINO_FEATURES == 0 diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.h b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintBasic.h similarity index 72% rename from extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.h rename to extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintBasic.h index ed44ec1e..55cb60a5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintBasic.h @@ -28,18 +28,21 @@ * \file * \brief Stream/Print like replacement for non-Arduino systems. */ -#include #include +#include #include -#ifdef F -#warning F() macro defined for non Arduino System -#elif defined(__AVR__) +#include "../SdFatConfig.h" + +#ifndef F +#if defined(__AVR__) #include class __FlashStringHelper; -#define F(str) (reinterpret_cast(PSTR(str))) -#else // F +#define F(string_literal) \ + (reinterpret_cast(PSTR(string_literal))) +#else // defined(__AVR__) #define F(str) (str) +#endif // defined(__AVR__) #endif // F #ifdef BIN @@ -54,63 +57,44 @@ class PrintBasic { public: PrintBasic() : m_error(0) {} - void clearWriteError() { - setWriteError(0); - } - int getWriteError() { - return m_error; - } - size_t print(char c) { - return write(c); - } - size_t print(const char* str) { - return write(str); - } + void clearWriteError() { setWriteError(0); } + int getWriteError() { return m_error; } + size_t print(char c) { return write(c); } + size_t print(const char *str) { return write(str); } size_t print(const __FlashStringHelper *str) { #ifdef __AVR__ - PGM_P p = reinterpret_cast(str); - size_t n = 0; - for (uint8_t c; (c = pgm_read_byte(p + n)) && write(c); n++) {} - return n; -#else // __AVR__ - return print(reinterpret_cast(str)); + PGM_P p = reinterpret_cast(str); + size_t n = 0; + for (uint8_t c; (c = pgm_read_byte(p + n)) && write(c); n++) { + } + return n; +#else // __AVR__ + return print(reinterpret_cast(str)); #endif // __AVR__ } size_t println(const __FlashStringHelper *str) { #ifdef __AVR__ return print(str) + println(); -#else // __AVR__ +#else // __AVR__ return println(reinterpret_cast(str)); #endif // __AVR__ } - size_t print(double n, uint8_t prec = 2) { - return printDouble(n, prec); - } + size_t print(double n, uint8_t prec = 2) { return printDouble(n, prec); } size_t print(signed char n, uint8_t base = 10) { return print((long)n, base); } size_t print(unsigned char n, uint8_t base = 10) { return print((unsigned long)n, base); } - size_t print(int n, uint8_t base = 10) { - return print((long)n, base); - } + size_t print(int n, uint8_t base = 10) { return print((long)n, base); } size_t print(unsigned int n, uint8_t base = 10) { return print((unsigned long)n, base); } size_t print(long n, uint8_t base = 10); - size_t print(unsigned long n, uint8_t base = 10) { - return printNum(n, base); - } - size_t println() { - return write("\r\n"); - } - size_t println(char c) { - return write(c) + println(); - } - size_t println(const char* str) { - return print(str) + println(); - } + size_t print(unsigned long n, uint8_t base = 10) { return printNum(n, base); } + size_t println() { return write("\r\n"); } + size_t println(char c) { return write(c) + println(); } + size_t println(const char *str) { return print(str) + println(); } size_t println(double n, uint8_t prec = 2) { return print(n, prec) + println(); } @@ -132,12 +116,10 @@ class PrintBasic { size_t println(unsigned long n, uint8_t base = 10) { return print(n, base) + println(); } - size_t write(const char *str) { - return write(str, strlen(str)); - } + size_t write(const char *str) { return write(str, strlen(str)); } virtual size_t write(uint8_t b) = 0; - virtual size_t write(const uint8_t* buffer, size_t size) { + virtual size_t write(const uint8_t *buffer, size_t size) { size_t i; for (i = 0; i < size; i++) { if (!write(buffer[i])) break; @@ -145,13 +127,11 @@ class PrintBasic { return i; } size_t write(const char *buffer, size_t size) { - return write((const uint8_t*)buffer, size); + return write(reinterpret_cast(buffer), size); } protected: - void setWriteError(int err = 1) { - m_error = err; - } + void setWriteError(int err = 1) { m_error = err; } private: size_t printDouble(double n, uint8_t prec); diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintTemplates.h b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintTemplates.h similarity index 99% rename from extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintTemplates.h rename to extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintTemplates.h index 839a6d72..e6f75b54 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintTemplates.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/PrintTemplates.h @@ -30,11 +30,6 @@ */ #include #include "FmtNumber.h" - - -namespace sdfat { - - /** test for digit */ #define isDigit(d) ('0' <= (d) && (d) <= '9') /** control for supported floating formats */ @@ -382,7 +377,7 @@ int vmprintf(F* file, const char *fmt, va_list ap) { break; default: - *--str = c;; + *--str = c; break; } ns = ptr - str; @@ -473,7 +468,7 @@ int vmprintf(F file, const __FlashStringHelper *ifsh, va_list ap) { break; default: - *--str = c;; + *--str = c; break; } ns = ptr - str; @@ -502,9 +497,4 @@ int mprintf(F* file, const __FlashStringHelper *ifsh, ...) { va_end(ap); return rtn; } - - -}; // namespace sdfat - - #endif // PrintTemplates_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/SysCallBareUno.cpp b/extra-libraries/ESP8266/ESP8266SdFat/extras/attic/SysCallBareUno.cpp similarity index 100% rename from extra-libraries/ESP8266/ESP8266SdFat/src/common/SysCallBareUno.cpp rename to extra-libraries/ESP8266/ESP8266SdFat/extras/attic/SysCallBareUno.cpp diff --git a/extra-libraries/ESP8266/ESP8266SdFat/extras/cpplint.py b/extra-libraries/ESP8266/ESP8266SdFat/extras/cpplint.py index 4a82bde4..704618f5 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/extras/cpplint.py +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/cpplint.py @@ -67,7 +67,7 @@ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] [file] ... The style guidelines this tries to follow are those in - https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml + https://google.github.io/styleguide/cppguide.html Every problem is given a confidence score from 1-5, with 5 meaning we are certain of the problem, and 1 meaning it could be a legitimate construct. diff --git a/extra-libraries/ESP8266/ESP8266SdFat/extras/fmt_src.bat b/extra-libraries/ESP8266/ESP8266SdFat/extras/fmt_src.bat new file mode 100644 index 00000000..7ddecdfe --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/extras/fmt_src.bat @@ -0,0 +1,11 @@ +clang-format --style=Google -i *.cpp *.h +rem clang-format --style=Google -i DigitalIO/*.h +rem clang-format --style=Google -i DigitalIO/boards/*.h +clang-format --style=Google -i common/*.cpp common/*.h +clang-format --style=Google -i ExFatLib/*.cpp ExFatLib/*.h +clang-format --style=Google -i FatLib/*.cpp FatLib/*.h +clang-format --style=Google -i FsLib/*.cpp FsLib/*.h +clang-format --style=Google -i iostream/*.cpp iostream/*.h +clang-format --style=Google -i SdCard/*.cpp SdCard/*.h +clang-format --style=Google -i SpiDriver/*.cpp SpiDriver/*.h +pause diff --git a/extra-libraries/ESP8266/ESP8266SdFat/library.properties b/extra-libraries/ESP8266/ESP8266SdFat/library.properties index bbdfd2ff..12abc4f5 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/library.properties +++ b/extra-libraries/ESP8266/ESP8266SdFat/library.properties @@ -1,10 +1,10 @@ -name=ESP8266SdFat -version=2.0.2 +name=SdFat +version=2.2.3 license=MIT author=Bill Greiman maintainer=Bill Greiman -sentence=FAT16/FAT32/exFAT file system. -paragraph=FAT16/FAT32/exFAT file system. +sentence=Provides access to SD memory cards. +paragraph=The SdFat library supports FAT16, FAT32, and exFAT file systems on Standard SD, SDHC, and SDXC cards. category=Data Storage url=https://github.com/greiman/SdFat repository=https://github.com/greiman/SdFat.git diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/BufferedPrint.h b/extra-libraries/ESP8266/ESP8266SdFat/src/BufferedPrint.h index 5bb26494..5145babb 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/BufferedPrint.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/BufferedPrint.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,17 +28,15 @@ * \file * \brief Fast buffered print. */ +#ifdef __AVR__ +#include +#endif // __AVR__ #include "common/FmtNumber.h" - - -namespace sdfat { - - /** * \class BufferedPrint * \brief Fast buffered print template. */ -template +template class BufferedPrint { public: BufferedPrint() : m_wr(nullptr), m_in(0) {} @@ -54,7 +52,7 @@ class BufferedPrint { m_in = 0; } /** Flush the buffer - same as sync() with no status return. */ - void flush() {sync();} + void flush() { sync(); } /** Print a character followed by a field terminator. * \param[in] c character to print. * \param[in] term The field terminator. Use '\\n' for CR LF. @@ -77,7 +75,7 @@ class BufferedPrint { * \param[in] term The field terminator. Use '\\n' for CR LF. * \return true for success or false if an error occurs. */ - size_t printField(const __FlashStringHelper *fsh, char term) { + size_t printField(const __FlashStringHelper* fsh, char term) { #ifdef __AVR__ size_t rtn = 0; PGM_P p = reinterpret_cast(fsh); @@ -98,8 +96,8 @@ class BufferedPrint { rtn += write(str, buf + sizeof(buf) - str); } return rtn; -#else // __AVR__ - return printField(reinterpret_cast(fsh), term); +#else // __AVR__ + return printField(reinterpret_cast(fsh), term); #endif // __AVR__ } /** Print a string followed by a field terminator. @@ -144,7 +142,7 @@ class BufferedPrint { * \param[in] prec Number of digits after decimal point. * \return true for success or false if an error occurs. */ - size_t printField(float f, char term, uint8_t prec = 2) { + size_t printField(float f, char term, uint8_t prec = 2) { return printField(static_cast(f), term, prec); } /** Print an integer value for 8, 16, and 32 bit signed and unsigned types. @@ -152,7 +150,7 @@ class BufferedPrint { * \param[in] term The field terminator. Use '\\n' for CR LF. * \return true for success or false if an error occurs. */ - template + template size_t printField(Type n, char term) { const uint8_t DIM = sizeof(Type) <= 2 ? 8 : 13; char buf[DIM]; @@ -189,9 +187,7 @@ class BufferedPrint { * \param[in] prec Number of digits after decimal point. * \return true for success or false if an error occurs. */ - size_t print(double d, uint8_t prec = 2) { - return printField(d, 0, prec); - } + size_t print(double d, uint8_t prec = 2) { return printField(d, 0, prec); } /** Print a double followed by CR LF. * \param[in] d The number to be printed. * \param[in] prec Number of digits after decimal point. @@ -220,7 +216,7 @@ class BufferedPrint { * \param[in] v item to print. * \return true for success or false if an error occurs. */ - template + template size_t print(Type v) { return printField(v, 0); } @@ -228,7 +224,7 @@ class BufferedPrint { * \param[in] v item to print. * \return true for success or false if an error occurs. */ - template + template size_t println(Type v) { return printField(v, '\n'); } @@ -243,7 +239,7 @@ class BufferedPrint { m_in = 0; return true; } - /** Write data to an open file. + /** Write data to an open file. * \param[in] src Pointer to the location of the data to be written. * * \param[in] n Number of bytes to write. @@ -271,9 +267,4 @@ class BufferedPrint { // Insure room for double. uint8_t m_buf[BUF_DIM < 24 ? 24 : BUF_DIM]; // NOLINT }; - - -}; // namespace sdfat - - #endif // BufferedPrint_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/DigitalPin.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/DigitalPin.h index ac3287b8..d44bb575 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/DigitalPin.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/DigitalPin.h @@ -225,11 +225,6 @@ void fastDigitalWrite(uint8_t pin, bool value) { } } #elif defined(ESP8266) - - -namespace sdfat { - - //------------------------------------------------------------------------------ /** Set pin value * @param[in] pin Arduino pin number @@ -265,11 +260,6 @@ bool fastDigitalRead(uint8_t pin) { } return 0; } - - -}; // namespace sdfat - - #else // CORE_TEENSY //------------------------------------------------------------------------------ inline void fastDigitalWrite(uint8_t pin, bool value) { diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/SoftSPI.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/SoftSPI.h index d36a7ac6..6dd58dff 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/SoftSPI.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/SoftSPI.h @@ -28,11 +28,6 @@ #ifndef SoftSPI_h #define SoftSPI_h #include "DigitalPin.h" - - -namespace sdfat { - - //------------------------------------------------------------------------------ /** Nop for timing. */ #define nop asm volatile ("nop\n\t") @@ -162,10 +157,5 @@ class SoftSPI { } //---------------------------------------------------------------------------- }; - - -}; // namespace sdfat - - #endif // SoftSPI_h /** @} */ diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h index a120426c..67a8ec29 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/AvrDevelopersGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef AvrDevelopersGpioPinMap_h #define AvrDevelopersGpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(B, 0), // D0 GPIO_PIN(B, 1), // D1 @@ -39,9 +34,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(A, 1), // D30 GPIO_PIN(A, 0) // D31 }; - - -}; // namespace sdfat - - -#endif // AvrDevelopersGpioPinMap_h +#endif // AvrDevelopersGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/BobuinoGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/BobuinoGpioPinMap.h index 7b641664..2d199445 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/BobuinoGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/BobuinoGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef BobuinoGpioPinMap_h #define BobuinoGpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(B, 0), // D0 GPIO_PIN(B, 1), // D1 @@ -39,9 +34,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(A, 6), // D30 GPIO_PIN(A, 7) // D31 }; - - -}; // namespace sdfat - - -#endif // BobuinoGpioPinMap_h +#endif // BobuinoGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/LeonardoGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/LeonardoGpioPinMap.h index 5756454c..73544e66 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/LeonardoGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/LeonardoGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef LeonardoGpioPinMap_h #define LeonardoGpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(D, 2), // D0 GPIO_PIN(D, 3), // D1 @@ -37,9 +32,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(B, 6), // D28 GPIO_PIN(D, 6) // D29 }; - - -}; // namespace sdfat - - #endif // LeonardoGpioPinMap_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/MegaGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/MegaGpioPinMap.h index 97164e02..c0413431 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/MegaGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/MegaGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef MegaGpioPinMap_h #define MegaGpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(E, 0), // D0 GPIO_PIN(E, 1), // D1 @@ -77,9 +72,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(K, 6), // D68 GPIO_PIN(K, 7) // D69 }; - - -}; // namespace sdfat - - #endif // MegaGpioPinMap_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h index c5439566..bf040d93 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/SleepingBeautyGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef SleepingBeautyGpioPinMap_h #define SleepingBeautyGpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(D, 0), // D0 GPIO_PIN(D, 1), // D1 @@ -39,9 +34,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(A, 6), // D30 GPIO_PIN(A, 7) // D31 }; - - -}; // namespace sdfat - - -#endif // SleepingBeautyGpioPinMap_h +#endif // SleepingBeautyGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Standard1284GpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Standard1284GpioPinMap.h index 9959ce90..d38ff0cd 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Standard1284GpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Standard1284GpioPinMap.h @@ -1,10 +1,5 @@ #ifndef Standard1284GpioPinMap_h #define Standard1284GpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(B, 0), // D0 GPIO_PIN(B, 1), // D1 @@ -39,8 +34,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(A, 6), // D30 GPIO_PIN(A, 7) // D31 }; - - -}; // namespace sdfat - -#endif // Standard1284GpioPinMap_h +#endif // Standard1284GpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2GpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2GpioPinMap.h index ba052001..00aa437d 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2GpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2GpioPinMap.h @@ -1,10 +1,5 @@ #ifndef Teensy2GpioPinMap_h #define Teensy2GpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(B, 0), // D0 GPIO_PIN(B, 1), // D1 @@ -32,9 +27,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(D, 5), // D23 GPIO_PIN(E, 6), // D24 }; - - -}; // namespace sdfat - - #endif // Teensy2GpioPinMap_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2ppGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2ppGpioPinMap.h index 96dddc78..68c51d72 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2ppGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/Teensy2ppGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef Teensypp2GpioPinMap_h #define Teensypp2GpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(D, 0), // D0 GPIO_PIN(D, 1), // D1 @@ -53,9 +48,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(F, 6), // D44 GPIO_PIN(F, 7), // D45 }; - - -}; // namespace sdfat - - #endif // Teensypp2GpioPinMap_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/UnoGpioPinMap.h b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/UnoGpioPinMap.h index 9680d2fc..21ec75dd 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/UnoGpioPinMap.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/DigitalIO/boards/UnoGpioPinMap.h @@ -1,10 +1,5 @@ #ifndef UnoGpioPinMap_h #define UnoGpioPinMap_h - - -namespace sdfat { - - static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(D, 0), // D0 GPIO_PIN(D, 1), // D1 @@ -27,9 +22,4 @@ static const GpioPinMap_t GpioPinMap[] = { GPIO_PIN(C, 4), // D18 GPIO_PIN(C, 5) // D19 }; - - -}; // namespace sdfat - - -#endif // UnoGpioPinMap_h +#endif // UnoGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatConfig.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatConfig.h index 08ffd188..a512314c 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatConfig.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatConfig.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,11 +24,10 @@ */ #ifndef ExFatConfig_h #define ExFatConfig_h -#include "../SdFatConfig.h" -#ifndef USE_EXFAT_UNICODE_NAMES -#define USE_EXFAT_UNICODE_NAMES 0 -#endif // USE_EXFAT_UNICODE_NAMES -#ifndef READ_ONLY -#define READ_ONLY 0 -#endif // READ_ONLY +#include "SdFatConfig.h" + +#ifndef EXFAT_READ_ONLY +#define EXFAT_READ_ONLY 0 +#endif // EXFAT_READ_ONLY + #endif // ExFatConfig_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp index ce5b7b4f..02cc1bf7 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatDbg.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,15 +22,10 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +#include "../common/upcase.h" +#include "ExFatLib.h" #include "ExFatVolume.h" -#include "upcase.h" -#include "ExFatFile.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS - - -namespace sdfat { - - //------------------------------------------------------------------------------ static void printHex(print_t* pr, uint8_t h); static void printHex(print_t* pr, uint16_t val); @@ -56,9 +51,23 @@ static uint16_t exFatDirChecksum(const void* dir, uint16_t checksum) { } return checksum; } + //------------------------------------------------------------------------------ -static void printDateTime(print_t* pr, - uint32_t timeDate, uint8_t ms, int8_t tz) { +static uint16_t hashDir(DirName_t* dir, uint16_t hash) { + for (uint8_t i = 0; i < 30; i += 2) { + uint16_t u = getLe16(dir->unicode + i); + if (!u) { + break; + } + uint16_t c = toUpcase(u); + hash = ((hash << 15) | (hash >> 1)) + (c & 0XFF); + hash = ((hash << 15) | (hash >> 1)) + (c >> 8); + } + return hash; +} +//------------------------------------------------------------------------------ +static void printDateTime(print_t* pr, uint32_t timeDate, uint8_t ms, + int8_t tz) { fsPrintDateTime(pr, timeDate, ms, tz); pr->println(); } @@ -84,11 +93,11 @@ static void printDirFile(print_t* pr, DirFile_t* dir) { pr->print(F("attributes: 0x")); pr->println(getLe16(dir->attributes), HEX); pr->print(F("createTime: ")); - printDateTime(pr, getLe32(dir->createTime), - dir->createTimeMs, dir->createTimezone); + printDateTime(pr, getLe32(dir->createTime), dir->createTimeMs, + dir->createTimezone); pr->print(F("modifyTime: ")); - printDateTime(pr, getLe32(dir->modifyTime), - dir->modifyTimeMs, dir->modifyTimezone); + printDateTime(pr, getLe32(dir->modifyTime), dir->modifyTimeMs, + dir->modifyTimezone); pr->print(F("accessTime: ")); printDateTime(pr, getLe32(dir->accessTime), 0, dir->accessTimezone); } @@ -100,7 +109,7 @@ static void printDirLabel(print_t* pr, DirLabel_t* dir) { pr->println(dir->labelLength); pr->print(F("unicode: ")); for (size_t i = 0; i < dir->labelLength; i++) { - pr->write(dir->unicode[2*i]); + pr->write(dir->unicode[2 * i]); } pr->println(); } @@ -110,8 +119,15 @@ static void printDirName(print_t* pr, DirName_t* dir) { pr->println(dir->type, HEX); pr->print(F("unicode: ")); for (size_t i = 0; i < 30; i += 2) { - if (dir->unicode[i] == 0) break; - pr->write(dir->unicode[i]); + uint16_t c = getLe16(dir->unicode + i); + if (c == 0) break; + if (c < 128) { + pr->print(static_cast(c)); + } else { + pr->print("0x"); + pr->print(c, HEX); + } + pr->print(' '); } pr->println(); } @@ -136,7 +152,7 @@ static void printDirStream(print_t* pr, DirStream_t* dir) { static void printDirUpcase(print_t* pr, DirUpcase_t* dir) { pr->print(F("dirUpcase: 0x")); pr->println(dir->type, HEX); - pr->print(F("checksum: 0x")); + pr->print(F("checksum: 0x")); pr->println(getLe32(dir->checksum), HEX); pr->print(F("firstCluster: ")); pr->println(getLe32(dir->firstCluster)); @@ -176,7 +192,7 @@ static void printExFatBoot(print_t* pr, pbs_t* pbs) { pr->print(F("FileSystemRevision: 0x")); pr->println(getLe32(ebs->fileSystemRevision), HEX); pr->print(F("VolumeFlags: 0x")); - pr->println(getLe16(ebs->volumeFlags) , HEX); + pr->println(getLe16(ebs->volumeFlags), HEX); pr->print(F("BytesPerSectorShift: ")); pr->println(ebs->bytesPerSectorShift); pr->print(F("SectorsPerClusterShift: ")); @@ -199,7 +215,7 @@ static void printHex(print_t* pr, uint8_t h) { static void printHex(print_t* pr, uint16_t val) { bool space = true; for (uint8_t i = 0; i < 4; i++) { - uint8_t h = (val >> (12 - 4*i)) & 15; + uint8_t h = (val >> (12 - 4 * i)) & 15; if (h || i == 3) { space = false; } @@ -214,7 +230,7 @@ static void printHex(print_t* pr, uint16_t val) { static void printHex(print_t* pr, uint32_t val) { bool space = true; for (uint8_t i = 0; i < 8; i++) { - uint8_t h = (val >> (28 - 4*i)) & 15; + uint8_t h = (val >> (28 - 4 * i)) & 15; if (h || i == 7) { space = false; } @@ -228,7 +244,7 @@ static void printHex(print_t* pr, uint32_t val) { //------------------------------------------------------------------------------ static void printHex64(print_t* pr, uint64_t n) { char buf[17]; - char *str = &buf[sizeof(buf) - 1]; + char* str = &buf[sizeof(buf) - 1]; *str = '\0'; do { uint8_t h = n & 15; @@ -240,12 +256,12 @@ static void printHex64(print_t* pr, uint64_t n) { //------------------------------------------------------------------------------ static void println64(print_t* pr, uint64_t n) { char buf[21]; - char *str = &buf[sizeof(buf) - 1]; + char* str = &buf[sizeof(buf) - 1]; *str = '\0'; do { uint64_t m = n; n /= 10; - *--str = m - 10*n + '0'; + *--str = m - 10 * n + '0'; } while (n); pr->println(str); } @@ -278,7 +294,7 @@ void ExFatPartition::checkUpcase(print_t* pr) { uint8_t* upcase = nullptr; uint32_t size = 0; uint32_t sector = clusterStartSector(m_rootDirectoryCluster); - uint8_t* cache = dataCacheGet(sector, FsCache::CACHE_FOR_READ); + uint8_t* cache = dataCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!cache) { pr->println(F("read root failed")); return; @@ -297,15 +313,15 @@ void ExFatPartition::checkUpcase(print_t* pr) { pr->println(F("upcase not found")); return; } - for (size_t i = 0; i < size/2; i++) { - if ((i%256) == 0) { - upcase = dataCacheGet(sector++, FsCache::CACHE_FOR_READ); + for (size_t i = 0; i < size / 2; i++) { + if ((i % 256) == 0) { + upcase = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!upcase) { pr->println(F("read upcase failed")); return; } } - uint16_t v = getLe16(&upcase[2*(i & 0XFF)]); + uint16_t v = getLe16(&upcase[2 * (i & 0XFF)]); if (skip) { pr->print("skip "); pr->print(u); @@ -318,7 +334,7 @@ void ExFatPartition::checkUpcase(print_t* pr) { for (uint16_t k = 0; k < v; k++) { uint16_t x = toUpcase(u + k); if (x != (u + k)) { - printHex(pr, (uint16_t)(u+k)); + printHex(pr, (uint16_t)(u + k)); pr->write(','); printHex(pr, x); pr->println("<<<<<<<<<<<<<<<<<<<<"); @@ -347,8 +363,8 @@ void ExFatPartition::dmpBitmap(print_t* pr) { dmpSector(pr, m_clusterHeapStartSector); } //------------------------------------------------------------------------------ -void ExFatPartition::dmpCluster(print_t* pr, uint32_t cluster, - uint32_t offset, uint32_t count) { +void ExFatPartition::dmpCluster(print_t* pr, uint32_t cluster, uint32_t offset, + uint32_t count) { uint32_t sector = clusterStartSector(cluster) + offset; for (uint32_t i = 0; i < count; i++) { pr->print(F("\nSector: ")); @@ -359,17 +375,17 @@ void ExFatPartition::dmpCluster(print_t* pr, uint32_t cluster, //------------------------------------------------------------------------------ void ExFatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { uint32_t sector = m_fatStartSector + start; - uint32_t cluster = 128*start; + uint32_t cluster = 128 * start; pr->println(F("FAT:")); for (uint32_t i = 0; i < count; i++) { - uint8_t* cache = dataCacheGet(sector + i, FsCache::CACHE_FOR_READ); + uint8_t* cache = dataCachePrepare(sector + i, FsCache::CACHE_FOR_READ); if (!cache) { pr->println(F("cache read failed")); return; } uint32_t* fat = reinterpret_cast(cache); for (size_t k = 0; k < 128; k++) { - if (0 == cluster%8) { + if (0 == cluster % 8) { if (k) { pr->println(); } @@ -384,13 +400,13 @@ void ExFatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { } //------------------------------------------------------------------------------ void ExFatPartition::dmpSector(print_t* pr, uint32_t sector) { - uint8_t* cache = dataCacheGet(sector, FsCache::CACHE_FOR_READ); + uint8_t* cache = dataCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!cache) { pr->println(F("dmpSector failed")); return; } - for (uint16_t i = 0; i < 512; i++) { - if (i%32 == 0) { + for (uint16_t i = 0; i < m_bytesPerSector; i++) { + if (i % 32 == 0) { if (i) { pr->println(); } @@ -410,27 +426,27 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { uint16_t calcHash = 0; uint16_t nameHash = 0; uint16_t setChecksum = 0; - uint16_t calcChecksum = 0;; - uint8_t nameLength = 0; - uint8_t setCount = 0; - uint8_t nUnicode; + uint16_t calcChecksum = 0; + uint8_t nameLength = 0; + uint8_t setCount = 0; + uint8_t nUnicode; #define RAW_ROOT #ifndef RAW_ROOT while (1) { - uint8_t buf[32]; - if (file->read(buf, 32) != 32) { + uint8_t buf[FS_DIR_SIZE]; + if (file->read(buf, FS_DIR_SIZE) != FS_DIR_SIZE) { break; } dir = reinterpret_cast(buf); -#else // RAW_ROOT +#else // RAW_ROOT (void)file; uint32_t nDir = 1UL << (m_sectorsPerClusterShift + 4); uint32_t sector = clusterStartSector(m_rootDirectoryCluster); for (uint32_t iDir = 0; iDir < nDir; iDir++) { - size_t i = iDir%16; + size_t i = iDir % 16; if (i == 0) { - uint8_t* cache = dataCacheGet(sector++, FsCache::CACHE_FOR_READ); + uint8_t* cache = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!cache) { return false; } @@ -439,7 +455,7 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { dir++; } #endif // RAW_ROOT - if (dir->type == 0) { + if (dir->type == EXFAT_TYPE_END_DIR) { break; } pr->println(); @@ -475,16 +491,15 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { calcHash = 0; break; - case EXFAT_TYPE_NAME: + case EXFAT_TYPE_NAME: dirName = reinterpret_cast(dir); printDirName(pr, dirName); calcChecksum = exFatDirChecksum(dir, calcChecksum); nUnicode = nameLength > 15 ? 15 : nameLength; - calcHash = exFatHashName(reinterpret_cast - (dirName->unicode), nUnicode, calcHash); + calcHash = hashDir(dirName, calcHash); nameLength -= nUnicode; setCount--; - if (nameLength == 0 || setCount == 0) { + if (nameLength == 0 || setCount == 0) { pr->print(F("setChecksum: 0x")); pr->print(setChecksum, HEX); if (setChecksum != calcChecksum) { @@ -505,7 +520,7 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { break; default: - if (dir->type & 0x80) { + if (dir->type & EXFAT_TYPE_USED) { pr->print(F("Unknown dirType: 0x")); } else { pr->print(F("Unused dirType: 0x")); @@ -521,10 +536,9 @@ bool ExFatPartition::printDir(print_t* pr, ExFatFile* file) { //------------------------------------------------------------------------------ void ExFatPartition::printFat(print_t* pr) { uint32_t next; - int8_t status; pr->println(F("FAT:")); for (uint32_t cluster = 0; cluster < 16; cluster++) { - status = fatGet(cluster, &next); + int8_t status = fatGet(cluster, &next); pr->print(cluster, HEX); pr->write(' '); if (status == 0) { @@ -541,7 +555,7 @@ void ExFatPartition::printUpcase(print_t* pr) { uint32_t checksum = 0; DirUpcase_t* dir; sector = clusterStartSector(m_rootDirectoryCluster); - upcase = dataCacheGet(sector, FsCache::CACHE_FOR_READ); + upcase = dataCachePrepare(sector, FsCache::CACHE_FOR_READ); dir = reinterpret_cast(upcase); if (!dir) { pr->println(F("read root dir failed")); @@ -558,20 +572,20 @@ void ExFatPartition::printUpcase(print_t* pr) { pr->println(F("upcase not found")); return; } - for (uint16_t i = 0; i < size/2; i++) { - if ((i%256) == 0) { - upcase = dataCacheGet(sector++, FsCache::CACHE_FOR_READ); + for (uint16_t i = 0; i < size / 2; i++) { + if ((i % 256) == 0) { + upcase = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!upcase) { pr->println(F("read upcase failed")); return; } } - if (i%16 == 0) { + if (i % 16 == 0) { pr->println(); printHex(pr, i); } pr->write(' '); - uint16_t uc = getLe16(&upcase[2*(i & 0XFF)]); + uint16_t uc = getLe16(&upcase[2 * (i & 0XFF)]); printHex(pr, uc); checksum = upcaseChecksum(uc, checksum); } @@ -582,7 +596,7 @@ void ExFatPartition::printUpcase(print_t* pr) { } //------------------------------------------------------------------------------ bool ExFatPartition::printVolInfo(print_t* pr) { - uint8_t* cache = dataCacheGet(0, FsCache::CACHE_FOR_READ); + uint8_t* cache = dataCachePrepare(0, FsCache::CACHE_FOR_READ); if (!cache) { pr->println(F("read mbr failed")); return false; @@ -595,7 +609,7 @@ bool ExFatPartition::printVolInfo(print_t* pr) { pr->print(F("bad partition size")); return false; } - cache = dataCacheGet(volStart, FsCache::CACHE_FOR_READ); + cache = dataCachePrepare(volStart, FsCache::CACHE_FOR_READ); if (!cache) { pr->println(F("read pbs failed")); return false; @@ -603,9 +617,4 @@ bool ExFatPartition::printVolInfo(print_t* pr) { printExFatBoot(pr, reinterpret_cast(cache)); return true; } - - -}; // namespace sdfat - - #endif // DOXYGEN_SHOULD_SKIP_THIS diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.cpp index 9b78cbcb..1301d4c0 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,14 +24,53 @@ */ #define DBG_FILE "ExFatFile.cpp" #include "../common/DebugMacros.h" -#include "ExFatFile.h" -#include "ExFatVolume.h" -#include "upcase.h" - - -namespace sdfat { - +#include "../common/FsUtf.h" +#include "ExFatLib.h" +//------------------------------------------------------------------------------ +/** test for legal character. + * + * \param[in] c character to be tested. + * + * \return true for legal character else false. + */ +inline bool lfnLegalChar(uint8_t c) { +#if USE_UTF8_LONG_NAMES + return !lfnReservedChar(c); +#else // USE_UTF8_LONG_NAMES + return !(lfnReservedChar(c) || c & 0X80); +#endif // USE_UTF8_LONG_NAMES +} +//------------------------------------------------------------------------------ +bool ExFatFile::attrib(uint8_t bits) { + if (!isFileOrSubDir() || (bits & FS_ATTRIB_USER_SETTABLE) != bits) { + DBG_FAIL_MACRO; + goto fail; + } + // Don't allow read-only to be set if the file is open for write. + if ((bits & FS_ATTRIB_READ_ONLY) && isWritable()) { + DBG_FAIL_MACRO; + goto fail; + } + m_attributes = (m_attributes & ~FS_ATTRIB_USER_SETTABLE) | bits; + // insure sync() will update dir entry + m_flags |= FILE_FLAG_DIR_DIRTY; + if (!sync()) { + DBG_FAIL_MACRO; + goto fail; + } + return true; +fail: + return false; +} +//------------------------------------------------------------------------------ +uint8_t* ExFatFile::dirCache(uint8_t set, uint8_t options) { + DirPos_t pos = m_dirPos; + if (m_vol->dirSeek(&pos, FS_DIR_SIZE * set) != 1) { + return nullptr; + } + return m_vol->dirCache(&pos, options); +} //------------------------------------------------------------------------------ bool ExFatFile::close() { bool rtn = sync(); @@ -48,13 +87,13 @@ bool ExFatFile::contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { *bgnSector = firstSector(); } if (endSector) { - *endSector = firstSector() + - ((m_validLength - 1) >> m_vol->bytesPerSectorShift()); + *endSector = + firstSector() + ((m_validLength - 1) >> m_vol->bytesPerSectorShift()); } return true; } //------------------------------------------------------------------------------ -void ExFatFile::fgetpos(fspos_t* pos) { +void ExFatFile::fgetpos(fspos_t* pos) const { pos->position = m_curPosition; pos->cluster = m_curCluster; } @@ -87,7 +126,7 @@ int ExFatFile::fgets(char* str, int num, char* delim) { return n; } //------------------------------------------------------------------------------ -uint32_t ExFatFile::firstSector() { +uint32_t ExFatFile::firstSector() const { return m_firstCluster ? m_vol->clusterStartSector(m_firstCluster) : 0; } //------------------------------------------------------------------------------ @@ -97,8 +136,8 @@ void ExFatFile::fsetpos(const fspos_t* pos) { } //------------------------------------------------------------------------------ bool ExFatFile::getAccessDateTime(uint16_t* pdate, uint16_t* ptime) { - DirFile_t* df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); + DirFile_t* df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -107,13 +146,13 @@ bool ExFatFile::getAccessDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(df->accessTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { - DirFile_t* df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); + DirFile_t* df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -122,13 +161,13 @@ bool ExFatFile::getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(df->createTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { - DirFile_t* df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); + DirFile_t* df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_READ)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -137,55 +176,21 @@ bool ExFatFile::getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(df->modifyTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -size_t ExFatFile::getName(ExChar_t* name, size_t length) { - DirName_t* dn; - DirPos_t pos = m_dirPos; - size_t n = 0; - if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t is = 1; is < m_setCount; is++) { - if (m_vol->dirSeek(&pos, is == 1 ? 64: 32) != 1) { - DBG_FAIL_MACRO; - goto fail; - } - dn = reinterpret_cast - (m_vol->dirCache(&pos, FsCache::CACHE_FOR_READ)); - if (!dn || dn->type != EXFAT_TYPE_NAME) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t in = 0; in < 15; in++) { - if ((n + 1) >= length) { - goto done; - } - uint16_t c = getLe16(dn->unicode + 2*in); - name[n++] = sizeof(ExChar_t) > 1 || c < 0X7F ? c : '?'; - } - } - done: - name[n] = 0; - return n; - - fail: - *name = 0; - return 0; -} +bool ExFatFile::isBusy() { return m_vol->isBusy(); } //------------------------------------------------------------------------------ -bool ExFatFile::open(const ExChar_t* path, int oflag) { +bool ExFatFile::open(const char* path, oflag_t oflag) { return open(ExFatVolume::cwv(), path, oflag); } //------------------------------------------------------------------------------ -bool ExFatFile::open(ExFatVolume* vol, const ExChar_t* path, int oflag) { +bool ExFatFile::open(ExFatVolume* vol, const char* path, oflag_t oflag) { return vol && open(vol->vwd(), path, oflag); } //------------------------------------------------------------------------------ -bool ExFatFile::open(ExFatFile* dirFile, const ExChar_t* path, oflag_t oflag) { +bool ExFatFile::open(ExFatFile* dirFile, const char* path, oflag_t oflag) { ExFatFile tmpDir; ExName_t fname; // error if already open @@ -214,22 +219,28 @@ bool ExFatFile::open(ExFatFile* dirFile, const ExChar_t* path, oflag_t oflag) { if (*path == 0) { break; } - if (!open(dirFile, &fname, O_RDONLY)) { - DBG_FAIL_MACRO; + if (!openPrivate(dirFile, &fname, O_RDONLY)) { + DBG_WARN_MACRO; goto fail; } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); dirFile = &tmpDir; close(); } - return open(dirFile, &fname, oflag); + return openPrivate(dirFile, &fname, oflag); - fail: +fail: return false; } //------------------------------------------------------------------------------ +bool ExFatFile::open(uint32_t index, oflag_t oflag) { + ExFatVolume* vol = ExFatVolume::cwv(); + return vol ? open(vol->vwd(), index, oflag) : false; +} +//------------------------------------------------------------------------------ bool ExFatFile::open(ExFatFile* dirFile, uint32_t index, oflag_t oflag) { - if (dirFile->seekSet(32*index) && openNext(dirFile, oflag)) { + if (dirFile->seekSet(FS_DIR_SIZE * index) && openNext(dirFile, oflag)) { if (dirIndex() == index) { return true; } @@ -239,41 +250,50 @@ bool ExFatFile::open(ExFatFile* dirFile, uint32_t index, oflag_t oflag) { return false; } //------------------------------------------------------------------------------ +bool ExFatFile::openCwd() { + if (isOpen() || !ExFatVolume::cwv()) { + DBG_FAIL_MACRO; + goto fail; + } + // *this = *ExFatVolume::cwv()->vwd(); + this->copy(ExFatVolume::cwv()->vwd()); + rewind(); + return true; + +fail: + return false; +} +//------------------------------------------------------------------------------ bool ExFatFile::openNext(ExFatFile* dir, oflag_t oflag) { if (isOpen() || !dir->isDir() || (dir->curPosition() & 0X1F)) { DBG_FAIL_MACRO; goto fail; } - return openRootFile(dir, nullptr, 0, oflag); + return openPrivate(dir, nullptr, oflag); - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool ExFatFile::openRootFile(ExFatFile* dir, const ExChar_t* name, - uint8_t nameLength, oflag_t oflag) { +bool ExFatFile::openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag) { int n; - uint8_t nameOffset = 0; - uint8_t nCmp; uint8_t modeFlags; - uint16_t nameHash = 0; - uint32_t curCluster __attribute__((unused)); uint8_t* cache __attribute__((unused)); DirPos_t freePos __attribute__((unused)); - - DirFile_t* dirFile; + DirFile_t* dirFile; DirStream_t* dirStream; - DirName_t* dirName; - uint8_t buf[32]; + DirName_t* dirName; + uint8_t buf[FS_DIR_SIZE]; uint8_t freeCount = 0; - uint8_t freeNeed; + uint8_t freeNeed = 3; bool inSet = false; - // error if already open + // error if already open, no access mode, or no directory. if (isOpen() || !dir->isDir()) { DBG_FAIL_MACRO; goto fail; } + switch (oflag & O_ACCMODE) { case O_RDONLY: modeFlags = FILE_FLAG_READ; @@ -289,32 +309,39 @@ bool ExFatFile::openRootFile(ExFatFile* dir, const ExChar_t* name, goto fail; } modeFlags |= oflag & O_APPEND ? FILE_FLAG_APPEND : 0; - if (name) { - nameHash = exFatHashName(name, nameLength, 0); + + if (fname) { + freeNeed = 2 + (fname->nameLength + 14) / 15; dir->rewind(); } - freeNeed = 2 + (nameLength + 14)/15; while (1) { - n = dir->read(buf, 32); + n = dir->read(buf, FS_DIR_SIZE); if (n == 0) { goto create; } - if (n != 32) { + if (n != FS_DIR_SIZE) { DBG_FAIL_MACRO; goto fail; } - if (!(buf[0] & 0x80)) { + if (!(buf[0] & EXFAT_TYPE_USED)) { + // Unused entry. if (freeCount == 0) { - freePos.position = dir->curPosition() - 32; + freePos.position = dir->curPosition() - FS_DIR_SIZE; freePos.cluster = dir->curCluster(); } if (freeCount < freeNeed) { freeCount++; } - if (!buf[0]) { - goto create; + if (buf[0] == EXFAT_TYPE_END_DIR) { + if (fname) { + goto create; + } + // Likely openNext call. + DBG_WARN_MACRO; + goto fail; } + inSet = false; } else if (!inSet) { if (freeCount < freeNeed) { freeCount = 0; @@ -323,66 +350,49 @@ bool ExFatFile::openRootFile(ExFatFile* dir, const ExChar_t* name, continue; } inSet = true; - } - switch (buf[0]) { - case EXFAT_TYPE_FILE: - memset(this, 0, sizeof(ExFatFile)); - dirFile = reinterpret_cast(buf); - m_setCount = dirFile->setCount; - m_attributes = getLe16(dirFile->attributes) & FILE_ATTR_COPY; - if (!(m_attributes & EXFAT_ATTRIB_DIRECTORY)) { - m_attributes |= FILE_ATTR_FILE; - } - m_vol = dir->volume(); - - m_dirPos.cluster = dir->curCluster(); - m_dirPos.position = dir->curPosition() - 32; - m_dirPos.isContiguous = dir->isContiguous(); - break; - - case EXFAT_TYPE_STREAM: - dirStream = reinterpret_cast(buf); - m_flags = modeFlags; - if (dirStream->flags & EXFAT_FLAG_CONTIGUOUS) { - m_flags |= FILE_FLAG_CONTIGUOUS; - } - nameOffset = 0; - m_validLength = getLe64(dirStream->validLength); - m_firstCluster = getLe32(dirStream->firstCluster); - m_dataLength = getLe64(dirStream->dataLength); - if (!name) { - goto found; - } - if (nameLength != dirStream->nameLength || - nameHash != getLe16(dirStream->nameHash)) { - inSet = false; - break; - } - break; - - case EXFAT_TYPE_NAME: - dirName = reinterpret_cast(buf); - nCmp = nameLength - nameOffset; - if (nCmp > 15) { - nCmp = 15; - } - if (!exFatCmpName(dirName, name, nameOffset, nCmp)) { - inSet = false; - break; - } - nameOffset += nCmp; - - if (nameOffset == nameLength) { - goto found; - } - break; - - default: - break; + memset(this, 0, sizeof(ExFatFile)); + dirFile = reinterpret_cast(buf); + m_setCount = dirFile->setCount; + m_attributes = getLe16(dirFile->attributes) & FS_ATTRIB_COPY; + if (!(m_attributes & FS_ATTRIB_DIRECTORY)) { + m_attributes |= FILE_ATTR_FILE; + } + m_vol = dir->volume(); + m_dirPos.cluster = dir->curCluster(); + m_dirPos.position = dir->curPosition() - FS_DIR_SIZE; + m_dirPos.isContiguous = dir->isContiguous(); + } else if (buf[0] == EXFAT_TYPE_STREAM) { + dirStream = reinterpret_cast(buf); + m_flags = modeFlags; + if (dirStream->flags & EXFAT_FLAG_CONTIGUOUS) { + m_flags |= FILE_FLAG_CONTIGUOUS; + } + m_validLength = getLe64(dirStream->validLength); + m_firstCluster = getLe32(dirStream->firstCluster); + m_dataLength = getLe64(dirStream->dataLength); + if (!fname) { + goto found; + } + fname->reset(); + if (fname->nameLength != dirStream->nameLength || + fname->nameHash != getLe16(dirStream->nameHash)) { + inSet = false; + } + } else if (buf[0] == EXFAT_TYPE_NAME) { + dirName = reinterpret_cast(buf); + if (!cmpName(dirName, fname)) { + inSet = false; + continue; + } + if (fname->atEnd()) { + goto found; + } + } else { + inSet = false; } } - found: +found: // Don't open if create only. if (oflag & O_EXCL) { DBG_FAIL_MACRO; @@ -390,13 +400,13 @@ bool ExFatFile::openRootFile(ExFatFile* dir, const ExChar_t* name, } // Write, truncate, or at end is an error for a directory or read-only file. if ((oflag & (O_TRUNC | O_AT_END)) || (m_flags & FILE_FLAG_WRITE)) { - if (isSubDir() || isReadOnly() || READ_ONLY) { + if (isSubDir() || isReadOnly() || EXFAT_READ_ONLY) { DBG_FAIL_MACRO; goto fail; } } -#if !READ_ONLY +#if !EXFAT_READ_ONLY if (oflag & O_TRUNC) { if (!(m_flags & FILE_FLAG_WRITE)) { DBG_FAIL_MACRO; @@ -410,59 +420,56 @@ bool ExFatFile::openRootFile(ExFatFile* dir, const ExChar_t* name, DBG_FAIL_MACRO; goto fail; } -#endif // READ_ONLY + if (isWritable()) { + m_attributes |= FS_ATTRIB_ARCHIVE; + } +#endif // !EXFAT_READ_ONLY return true; - create: -#if READ_ONLY +create: +#if EXFAT_READ_ONLY DBG_FAIL_MACRO; goto fail; -#else // READ_ONLY +#else // EXFAT_READ_ONLY // don't create unless O_CREAT and write - if (!(oflag & O_CREAT) || !(modeFlags & FILE_FLAG_WRITE) || !name) { - DBG_FAIL_MACRO; + if (!(oflag & O_CREAT) || !(modeFlags & FILE_FLAG_WRITE) || !fname) { + DBG_WARN_MACRO; goto fail; } while (freeCount < freeNeed) { - n = dir->read(buf, 32); + n = dir->read(buf, FS_DIR_SIZE); if (n == 0) { - curCluster = dir->m_curCluster; + uint32_t saveCurCluster = dir->m_curCluster; if (!dir->addDirCluster()) { DBG_FAIL_MACRO; goto fail; } - dir->m_curCluster = curCluster; + dir->m_curCluster = saveCurCluster; continue; } - if (n != 32) { + if (n != FS_DIR_SIZE) { DBG_FAIL_MACRO; goto fail; } if (freeCount == 0) { - freePos.position = dir->curPosition() - 32; + freePos.position = dir->curPosition() - FS_DIR_SIZE; freePos.cluster = dir->curCluster(); } freeCount++; } - freePos.isContiguous = dir->isContiguous(); memset(this, 0, sizeof(ExFatFile)); m_vol = dir->volume(); - m_attributes = FILE_ATTR_FILE; + m_attributes = FILE_ATTR_FILE | FS_ATTRIB_ARCHIVE; m_dirPos = freePos; + fname->reset(); for (uint8_t i = 0; i < freeNeed; i++) { - if (i) { - if (1 != m_vol->dirSeek(&freePos, 32)) { - DBG_FAIL_MACRO; - goto fail; - } - } - cache = m_vol->dirCache(&freePos, FsCache::CACHE_FOR_WRITE); + cache = dirCache(i, FsCache::CACHE_FOR_WRITE); if (!cache || (cache[0] & 0x80)) { DBG_FAIL_MACRO; goto fail; } - memset(cache, 0 , 32); + memset(cache, 0, FS_DIR_SIZE); if (i == 0) { dirFile = reinterpret_cast(cache); dirFile->type = EXFAT_TYPE_FILE; @@ -480,37 +487,35 @@ bool ExFatFile::openRootFile(ExFatFile* dir, const ExChar_t* name, setLe16(dirFile->createDate, FS_DEFAULT_DATE); setLe16(dirFile->modifyDate, FS_DEFAULT_DATE); setLe16(dirFile->accessDate, FS_DEFAULT_DATE); - if (FS_DEFAULT_TIME) { - setLe16(dirFile->createTime, FS_DEFAULT_TIME); - setLe16(dirFile->modifyTime, FS_DEFAULT_TIME); - setLe16(dirFile->accessTime, FS_DEFAULT_TIME); - } + if (FS_DEFAULT_TIME) { + setLe16(dirFile->createTime, FS_DEFAULT_TIME); + setLe16(dirFile->modifyTime, FS_DEFAULT_TIME); + setLe16(dirFile->accessTime, FS_DEFAULT_TIME); + } } } else if (i == 1) { dirStream = reinterpret_cast(cache); dirStream->type = EXFAT_TYPE_STREAM; - dirStream->flags = EXFAT_FLAG_ALWAYS1 | EXFAT_FLAG_CONTIGUOUS; - m_flags = modeFlags | FILE_FLAG_CONTIGUOUS | FILE_FLAG_DIR_DIRTY; - - dirStream->nameLength = nameLength; - setLe16(dirStream->nameHash, nameHash); + dirStream->flags = EXFAT_FLAG_ALWAYS1; + m_flags = modeFlags | FILE_FLAG_DIR_DIRTY; + dirStream->nameLength = fname->nameLength; + setLe16(dirStream->nameHash, fname->nameHash); } else { dirName = reinterpret_cast(cache); dirName->type = EXFAT_TYPE_NAME; - nameOffset = 15*(i - 2); - nCmp = nameLength - nameOffset; - if (nCmp > 15) { - nCmp = 15; - } - for (size_t k = 0; k < nCmp; k++) { - setLe16(dirName->unicode + 2*k, name[k + nameOffset]); + for (size_t k = 0; k < 15; k++) { + if (fname->atEnd()) { + break; + } + uint16_t u = fname->get16(); + setLe16(dirName->unicode + 2 * k, u); } } } return sync(); -#endif // READ_ONLY - fail: +#endif // EXFAT_READ_ONLY +fail: // close file m_attributes = FILE_ATTR_CLOSED; m_flags = 0; @@ -528,57 +533,45 @@ bool ExFatFile::openRoot(ExFatVolume* vol) { m_flags = FILE_FLAG_READ; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool ExFatFile::parsePathName(const ExChar_t* path, - ExName_t* fname, const ExChar_t** ptr) { - ExChar_t c; - int end; - int len = 0; - +bool ExFatFile::parsePathName(const char* path, ExName_t* fname, + const char** ptr) { // Skip leading spaces. while (*path == ' ') { path++; } - fname->lfn = path; - - for (len = 0; ; len++) { - c = path[len]; - if (c == 0 || isDirSeparator(c)) { - break; - } + fname->begin = path; + fname->end = path; + while (*path && !isDirSeparator(*path)) { + uint8_t c = *path++; if (!lfnLegalChar(c)) { - return false; + DBG_FAIL_MACRO; + goto fail; + } + if (c != '.' && c != ' ') { + // Need to trim trailing dots spaces. + fname->end = path; } } // Advance to next path component. - for (end = len; path[end] == ' ' || isDirSeparator(path[end]); end++) {} - *ptr = &path[end]; + for (; *path == ' ' || isDirSeparator(*path); path++) { + } + *ptr = path; + return hashName(fname); - // Back over spaces and dots. - while (len) { - c = path[len - 1]; - if (c != '.' && c != ' ') { - break; - } - len--; - } - // Max length of LFN is 255. - if (len > EXFAT_MAX_NAME_LENGTH) { - return false; - } - fname->len = len; - return true; +fail: + return false; } //------------------------------------------------------------------------------ int ExFatFile::peek() { - uint64_t curPosition = m_curPosition; - uint32_t curCluster = m_curCluster; + uint64_t saveCurPosition = m_curPosition; + uint32_t saveCurCluster = m_curCluster; int c = read(); - m_curPosition = curPosition; - m_curCluster = curCluster; + m_curPosition = saveCurPosition; + m_curCluster = saveCurCluster; return c; } //------------------------------------------------------------------------------ @@ -606,8 +599,8 @@ int ExFatFile::read(void* buf, size_t count) { sectorOffset = clusterOffset & m_vol->sectorMask(); if (clusterOffset == 0) { if (m_curPosition == 0) { - m_curCluster = isRoot() - ? m_vol->rootDirectoryCluster() : m_firstCluster; + m_curCluster = + isRoot() ? m_vol->rootDirectoryCluster() : m_firstCluster; } else if (isContiguous()) { m_curCluster++; } else { @@ -628,14 +621,14 @@ int ExFatFile::read(void* buf, size_t count) { } sector = m_vol->clusterStartSector(m_curCluster) + (clusterOffset >> m_vol->bytesPerSectorShift()); - if (sectorOffset != 0 || toRead < m_vol->bytesPerSector() - || sector == m_vol->dataCacheSector()) { + if (sectorOffset != 0 || toRead < m_vol->bytesPerSector() || + sector == m_vol->dataCacheSector()) { n = m_vol->bytesPerSector() - sectorOffset; if (n > toRead) { n = toRead; } // read sector to cache and copy data to caller - cache = m_vol->dataCacheGet(sector, FsCache::CACHE_FOR_READ); + cache = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -643,25 +636,16 @@ int ExFatFile::read(void* buf, size_t count) { uint8_t* src = cache + sectorOffset; memcpy(dst, src, n); #if USE_MULTI_SECTOR_IO - } else if (toRead >= 2*m_vol->bytesPerSector()) { + } else if (toRead >= 2 * m_vol->bytesPerSector()) { uint32_t ns = toRead >> m_vol->bytesPerSectorShift(); // Limit reads to current cluster. - uint32_t maxNs = m_vol->sectorsPerCluster() - - (clusterOffset >> m_vol->bytesPerSectorShift()); + uint32_t maxNs = m_vol->sectorsPerCluster() - + (clusterOffset >> m_vol->bytesPerSectorShift()); if (ns > maxNs) { ns = maxNs; } n = ns << m_vol->bytesPerSectorShift(); - // Check for cache sector in read range. - if (sector <= m_vol->dataCacheSector() - && m_vol->dataCacheSector() < (sector + ns)) { - // Flush cache if cache sector is in the range. - if (!m_vol->dataCacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (!m_vol->readSectors(sector, dst, ns)) { + if (!m_vol->cacheSafeRead(sector, dst, ns)) { DBG_FAIL_MACRO; goto fail; } @@ -669,7 +653,7 @@ int ExFatFile::read(void* buf, size_t count) { } else { // read single sector n = m_vol->bytesPerSector(); - if (!m_vol->readSector(sector, dst)) { + if (!m_vol->cacheSafeRead(sector, dst)) { DBG_FAIL_MACRO; goto fail; } @@ -680,12 +664,12 @@ int ExFatFile::read(void* buf, size_t count) { } return count - toRead; - fail: +fail: m_error |= READ_ERROR; return -1; } //------------------------------------------------------------------------------ -bool ExFatFile::remove(const ExChar_t* path) { +bool ExFatFile::remove(const char* path) { ExFatFile file; if (!file.open(this, path, O_WRONLY)) { DBG_FAIL_MACRO; @@ -693,7 +677,7 @@ bool ExFatFile::remove(const ExChar_t* path) { } return file.remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -743,14 +727,11 @@ bool ExFatFile::seekSet(uint64_t pos) { } } - done: +done: m_curPosition = pos; return true; - fail: +fail: m_curCluster = tmp; return false; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.h index 48e7ccd5..93c52510 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFile.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,63 +30,28 @@ */ #include #include -#include "ExFatConfig.h" -#include "../common/FsDateTime.h" -#include "../common/FsStructs.h" -#include "../common/FsApiConstants.h" + #include "../common/FmtNumber.h" -#include "ExFatTypes.h" +#include "../common/FsApiConstants.h" +#include "../common/FsDateTime.h" +#include "../common/FsName.h" #include "ExFatPartition.h" - -namespace sdfat { - - class ExFatVolume; - //------------------------------------------------------------------------------ /** Expression for path name separator. */ #define isDirSeparator(c) ((c) == '/') //------------------------------------------------------------------------------ -/** test for legal character. - * - * \param[in] c character to be tested. - * - * \return true for legal character else false. - */ -inline bool lfnLegalChar(ExChar_t c) { - if (c == '/' || c == '\\' || c == '"' || c == '*' || - c == ':' || c == '<' || c == '>' || c == '?' || c == '|') { - return false; - } -#if USE_EXFAT_UNICODE_NAMES - return 0X1F < c; -#else // USE_EXFAT_UNICODE_NAMES - return 0X1F < c && c < 0X7F; -#endif // USE_EXFAT_UNICODE_NAMES -} -//------------------------------------------------------------------------------ /** - * \struct ExName_t + * \class ExName_t * \brief Internal type for file name - do not use in user apps. */ -struct ExName_t { - /** length of Long File Name */ - size_t len; - /** Long File Name start. */ - const ExChar_t* lfn; -}; -//------------------------------------------------------------------------------ -/** - * \struct ExFatPos_t - * \brief Internal type for file position - do not use in user apps. - */ -struct ExFatPos_t { - /** stream position */ - uint64_t position; - /** cluster for position */ - uint32_t cluster; - ExFatPos_t() : position(0), cluster(0) {} +class ExName_t : public FsName { + public: + /** Length of UTF-16 name */ + size_t nameLength; + /** Hash for UTF-16 name */ + uint16_t nameHash; }; //------------------------------------------------------------------------------ /** @@ -96,29 +61,108 @@ struct ExFatPos_t { class ExFatFile { public: /** Create an instance. */ - ExFatFile() : m_attributes(FILE_ATTR_CLOSED), m_error(0), m_flags(0) {} + ExFatFile() {} + /** Create a file object and open it in the current working directory. + * + * \param[in] path A path for a file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t). + */ + ExFatFile(const char* path, oflag_t oflag) { open(path, oflag); } + /** Copy from to this. + * \param[in] from Source file. + */ + void copy(const ExFatFile* from) { + if (from != this) { +#if FILE_COPY_CONSTRUCTOR_SELECT + *this = *from; +#else // FILE_COPY_CONSTRUCTOR_SELECT + memcpy(this, from, sizeof(ExFatFile)); +#endif // FILE_COPY_CONSTRUCTOR_SELECT + } + } + /** move from to this. + * \param[in] from Source file. + */ + void move(ExFatFile* from) { + if (from != this) { + copy(from); + from->m_attributes = FILE_ATTR_CLOSED; + } + } + +#if FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PUBLIC + /** Copy constructor. + * \param[in] from Move from file. + * + */ + ExFatFile(const ExFatFile& from) = default; + /** Copy assignment operator. + * \param[in] from Move from file. + * \return Copied file. + */ + ExFatFile& operator=(const ExFatFile& from) = default; +#elif FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PRIVATE + + private: + ExFatFile(const ExFatFile& from) = default; + ExFatFile& operator=(const ExFatFile& from) = default; + + public: +#else // FILE_COPY_CONSTRUCTOR_SELECT + ExFatFile(const ExFatFile& from) = delete; + ExFatFile& operator=(const ExFatFile& from) = delete; +#endif // FILE_COPY_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT + /** Move constructor. + * \param[in] from Move from file. + */ + ExFatFile(ExFatFile&& from) { move(&from); } + /** Move assignment operator. + * \param[in] from Move from file. + * \return Moved file. + */ + ExFatFile& operator=(ExFatFile&& from) { + move(&from); + return *this; + } +#else // FILE_MOVE_CONSTRUCTOR_SELECT + ExFatFile(ExFatFile&& from) = delete; + ExFatFile& operator=(ExFatFile&& from) = delete; +#endif + + /** Destructor */ #if DESTRUCTOR_CLOSES_FILE ~ExFatFile() { if (isOpen()) { close(); } } +#else // DESTRUCTOR_CLOSES_FILE + ~ExFatFile() = default; #endif // DESTRUCTOR_CLOSES_FILE /** The parenthesis operator. - * - * \return true if a file is open. - */ - operator bool() { - return isOpen(); - } - /** \return The number of bytes available from the current position - * to EOF for normal files. Zero is returned for directory files. + * + * \return true if a file is open. */ - uint64_t available64() { - return isFile() ? fileSize() - curPosition() : 0; - } + operator bool() { return isOpen(); } + /** + * \return user settable file attributes for success else -1. + */ + int attrib() { return isFileOrSubDir() ? m_attributes & FS_ATTRIB_COPY : -1; } + /** Set file attributes + * + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \note attrib() will fail for set read-only if the file is open for write. + * \return true for success or false for failure. + */ + bool attrib(uint8_t bits); /** \return The number of bytes available from the current position * to EOF for normal files. INT_MAX is returned for very large files. * @@ -131,6 +175,14 @@ class ExFatFile { uint64_t n = available64(); return n > INT_MAX ? INT_MAX : n; } + /** \return The number of bytes available from the current position + * to EOF for normal files. Zero is returned for directory files. + */ + uint64_t available64() { return isFile() ? fileSize() - curPosition() : 0; } + /** Clear all error bits. */ + void clearError() { m_error = 0; } + /** Clear writeError. */ + void clearWriteError() { m_error &= ~WRITE_ERROR; } /** Close a file and force cached data and directory information * to be written to the storage device. * @@ -140,40 +192,41 @@ class ExFatFile { /** Check for contiguous file and return its raw sector range. * * \param[out] bgnSector the first sector address for the file. - * \param[out] endSector the last sector address for the file. + * \param[out] endSector the last sector address for the file. * * Parameters may be nullptr. * * \return true for success or false for failure. */ bool contiguousRange(uint32_t* bgnSector, uint32_t* endSector); + /** \return The current cluster number for a file or directory. */ + uint32_t curCluster() const { return m_curCluster; } /** \return The current position for a file or directory. */ - uint64_t curPosition() const {return m_curPosition;} - + uint64_t curPosition() const { return m_curPosition; } /** \return Total data length for file. */ - uint64_t dataLength() {return m_dataLength;} + uint64_t dataLength() const { return m_dataLength; } /** \return Directory entry index. */ - uint32_t dirIndex() {return m_dirPos.position/32;} + uint32_t dirIndex() const { return m_dirPos.position / FS_DIR_SIZE; } /** Test for the existence of a file in a directory * * \param[in] path Path of the file to be tested for. * * The calling instance must be an open directory file. * - * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory + * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory * dirFile. * * \return true if the file exists else false. */ - bool exists(const ExChar_t* path) { + bool exists(const char* path) { ExFatFile file; return file.open(this, path, O_RDONLY); } /** get position for streams * \param[out] pos struct to receive position */ - void fgetpos(fspos_t* pos); - /** + void fgetpos(fspos_t* pos) const; + /** * Get a string from a file. * * fgets() reads bytes from a file into the array pointed to by \a str, until @@ -196,31 +249,15 @@ class ExFatFile { */ int fgets(char* str, int num, char* delim = nullptr); /** \return The total number of bytes in a file. */ - uint64_t fileSize() {return m_validLength;} + uint64_t fileSize() const { return m_validLength; } /** \return Address of first sector or zero for empty file. */ - uint32_t firstSector(); + uint32_t firstSector() const; /** Set position for streams * \param[in] pos struct with value for new position */ void fsetpos(const fspos_t* pos); /** Arduino name for sync() */ - void flush() {sync();} - /** - * Get a file's name followed by a zero byte. - * - * \param[out] name An array of characters for the file's name. - * \param[in] size The size of the array in characters. - * \return the name length. - */ - size_t getName(ExChar_t* name, size_t size); - /** Clear all error bits. */ - void clearError() { - m_error = 0; - } - /** Clear writeError. */ - void clearWriteError() { - m_error &= ~WRITE_ERROR; - } + void flush() { sync(); } /** Get a file's access date and time. * * \param[out] pdate Packed date for directory entry. @@ -238,9 +275,7 @@ class ExFatFile { */ bool getCreateDateTime(uint16_t* pdate, uint16_t* ptime); /** \return All error bits. */ - uint8_t getError() { - return isOpen() ? m_error : 0XFF; - } + uint8_t getError() const { return isOpen() ? m_error : 0XFF; } /** Get a file's modify date and time. * * \param[out] pdate Packed date for directory entry. @@ -249,30 +284,68 @@ class ExFatFile { * \return true for success or false for failure. */ bool getModifyDateTime(uint16_t* pdate, uint16_t* ptime); - /** \return value of writeError */ - bool getWriteError() { - return isOpen() ? m_error & WRITE_ERROR : true; + /** + * Get a file's name followed by a zero. + * + * \param[out] name An array of characters for the file's name. + * \param[in] size The size of the array in characters. + * \return length for success or zero for failure. + */ + size_t getName(char* name, size_t size) { +#if USE_UTF8_LONG_NAMES + return getName8(name, size); +#else // USE_UTF8_LONG_NAMES + return getName7(name, size); +#endif // USE_UTF8_LONG_NAMES } + /** + * Get a file's ASCII name followed by a zero. + * + * \param[out] name An array of characters for the file's name. + * \param[in] size The size of the array in characters. + * \return the name length. + */ + size_t getName7(char* name, size_t size); + /** + * Get a file's UTF-8 name followed by a zero. + * + * \param[out] name An array of characters for the file's name. + * \param[in] size The size of the array in characters. + * \return the name length. + */ + size_t getName8(char* name, size_t size); + /** \return value of writeError */ + bool getWriteError() const { return isOpen() ? m_error & WRITE_ERROR : true; } + /** + * Check for FsBlockDevice busy. + * + * \return true if busy else false. + */ + bool isBusy(); /** \return True if the file is contiguous. */ - bool isContiguous() const {return m_flags & FILE_FLAG_CONTIGUOUS;} + bool isContiguous() const { return m_flags & FILE_FLAG_CONTIGUOUS; } /** \return True if this is a directory. */ - bool isDir() const {return m_attributes & FILE_ATTR_DIR;} + bool isDir() const { return m_attributes & FILE_ATTR_DIR; } /** \return True if this is a normal file. */ - bool isFile() const {return m_attributes & FILE_ATTR_FILE;} + bool isFile() const { return m_attributes & FILE_ATTR_FILE; } + /** \return True if this is a normal file or sub-directory. */ + bool isFileOrSubDir() const { return isFile() || isSubDir(); } /** \return True if this is a hidden. */ - bool isHidden() const {return m_attributes & FILE_ATTR_HIDDEN;} + bool isHidden() const { return m_attributes & FS_ATTRIB_HIDDEN; } /** \return true if the file is open. */ - bool isOpen() const {return m_attributes;} + bool isOpen() const { return m_attributes; } /** \return True if file is read-only */ - bool isReadOnly() const {return m_attributes & FILE_ATTR_READ_ONLY;} - /** \return True if this is a subdirectory. */ - bool isSubDir() const {return m_attributes & FILE_ATTR_SUBDIR;} + bool isReadOnly() const { return m_attributes & FS_ATTRIB_READ_ONLY; } /** \return True if this is the root directory. */ - bool isRoot() const {return m_attributes & FILE_ATTR_ROOT;} + bool isRoot() const { return m_attributes & FILE_ATTR_ROOT; } + /** \return True file is readable. */ + bool isReadable() const { return m_flags & FILE_FLAG_READ; } + /** \return True if this is a sub-directory. */ + bool isSubDir() const { return m_attributes & FILE_ATTR_SUBDIR; } + /** \return True if this is a system file. */ + bool isSystem() const { return m_attributes & FS_ATTRIB_SYSTEM; } /** \return True file is writable. */ - bool isReadable() const {return m_flags & FILE_FLAG_READ;} - /** \return True file is writable. */ - bool isWritable() const {return m_flags & FILE_FLAG_WRITE;} + bool isWritable() const { return m_flags & FILE_FLAG_WRITE; } /** List directory contents. * * \param[in] pr Print stream for list. @@ -289,10 +362,10 @@ class ExFatFile { * * LS_SIZE - %Print file size. * - * LS_R - Recursive list of subdirectories. + * LS_R - Recursive list of sub-directories. * * \param[in] indent Amount of space before file name. Used for recursive - * list to indicate subdirectory level. + * list to indicate sub-directory level. * * \return true for success or false for failure. */ @@ -308,7 +381,7 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool mkdir(ExFatFile* parent, const ExChar_t* path, bool pFlag = true); + bool mkdir(ExFatFile* parent, const char* path, bool pFlag = true); /** Open a file or directory by name. * * \param[in] dirFile An open directory containing the file to be opened. @@ -353,7 +426,7 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool open(ExFatFile* dirFile, const ExChar_t* path, oflag_t oflag); + bool open(ExFatFile* dirFile, const char* path, oflag_t oflag = O_RDONLY); /** Open a file in the volume working directory. * * \param[in] vol Volume where the file is located. @@ -365,7 +438,7 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool open(ExFatVolume* vol, const ExChar_t* path, int oflag); + bool open(ExFatVolume* vol, const char* path, oflag_t oflag = O_RDONLY); /** Open a file by index. * * \param[in] dirFile An open ExFatFile instance for the directory. @@ -374,12 +447,39 @@ class ExFatFile { * opened. The value for \a index is (directory file position)/32. * * \param[in] oflag bitwise-inclusive OR of open flags. - * See see ExFatFile::open(ExFatFile*, const ExChar_t*, uint8_t). + * See see ExFatFile::open(ExFatFile*, const char*, uint8_t). * * See open() by path for definition of flags. * \return true for success or false for failure. */ - bool open(ExFatFile* dirFile, uint32_t index, oflag_t oflag); + bool open(ExFatFile* dirFile, uint32_t index, oflag_t oflag = O_RDONLY); + /** Open a file by index in the current working directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag bitwise-inclusive OR of open flags. + * See see FatFile::open(FatFile*, const char*, uint8_t). + * + * See open() by path for definition of flags. + * \return true for success or false for failure. + */ + bool open(uint32_t index, oflag_t oflag = O_RDONLY); + /** Open a file in the current working directory. + * + * \param[in] path A path with a valid name for a file to be opened. + * + * \param[in] oflag bitwise-inclusive OR of open flags. + * See see ExFatFile::open(ExFatFile*, const char*, uint8_t). + * + * \return true for success or false for failure. + */ + bool open(const char* path, oflag_t oflag = O_RDONLY); + /** Open the current working directory. + * + * \return true for success or false for failure. + */ + bool openCwd(); /** Open the next file or subdirectory in a directory. * * \param[in] dirFile An open instance for the directory @@ -391,16 +491,6 @@ class ExFatFile { * \return true for success or false for failure. */ bool openNext(ExFatFile* dirFile, oflag_t oflag = O_RDONLY); - /** Open a file in the current working directory. - * - * \param[in] path A path with a valid name for a file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open flags. - * See see ExFatFile::open(ExFatFile*, const char*, uint8_t). - * - * \return true for success or false for failure. - */ - bool open(const ExChar_t* path, int oflag = O_RDONLY); /** Open a volume's root directory. * * \param[in] vol The FAT volume containing the root directory to be opened. @@ -424,6 +514,20 @@ class ExFatFile { * \return true for success or false for failure. */ bool preAllocate(uint64_t length); + /** Print a file's access date and time + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printAccessDateTime(print_t* pr); + /** Print a file's creation date and time + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printCreateDateTime(print_t* pr); /** Print a number followed by a field terminator. * \param[in] value The number to be printed. * \param[in] term The field terminator. Use '\\n' for CR LF. @@ -459,7 +563,7 @@ class ExFatFile { template size_t printField(Type value, char term) { char sign = 0; - char buf[3*sizeof(Type) + 3]; + char buf[3 * sizeof(Type) + 3]; char* str = buf + sizeof(buf); if (term) { @@ -487,21 +591,6 @@ class ExFatFile { * \return The number of bytes printed. */ size_t printFileSize(print_t* pr); - /** Print a file's access date and time - * - * \param[in] pr Print stream for output. - * - * \return true for success or false for failure. - */ - size_t printAccessDateTime(print_t* pr); - /** Print a file's creation date and time - * - * \param[in] pr Print stream for output. - * - * \return true for success or false for failure. - */ - size_t printCreateDateTime(print_t* pr); - /** Print a file's modify date and time * * \param[in] pr Print stream for output. @@ -510,12 +599,32 @@ class ExFatFile { */ size_t printModifyDateTime(print_t* pr); /** Print a file's name + * + * \param[in] pr Print stream for output. + * + * \return length for success or zero for failure. + */ + size_t printName(print_t* pr) { +#if USE_UTF8_LONG_NAMES + return printName8(pr); +#else // USE_UTF8_LONG_NAMES + return printName7(pr); +#endif // USE_UTF8_LONG_NAMES + } + /** Print a file's ASCII name * * \param[in] pr Print stream for output. * * \return true for success or false for failure. */ - size_t printName(print_t* pr); + size_t printName7(print_t* pr); + /** Print a file's UTF-8 name + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printName8(print_t* pr); /** Read the next byte from a file. * * \return For success read returns the next byte in the file as an int. @@ -562,26 +671,24 @@ class ExFatFile { * * \return true for success or false for failure. */ - bool remove(const ExChar_t* path); - /** Rename a file or subdirectory. + bool remove(const char* path); + /** Rename a file or subdirectory. * * \param[in] newPath New path name for the file/directory. * * \return true for success or false for failure. */ - bool rename(const ExChar_t* newPath); - /** Rename a file or subdirectory. + bool rename(const char* newPath); + /** Rename a file or subdirectory. * * \param[in] dirFile Directory for the new path. * \param[in] newPath New path name for the file/directory. * * \return true for success or false for failure. */ - bool rename(ExFatFile* dirFile, const ExChar_t* newPath); + bool rename(ExFatFile* dirFile, const char* newPath); /** Set the file's current position to zero. */ - void rewind() { - seekSet(0); - } + void rewind() { seekSet(0); } /** Remove a directory file. * * The directory file will be removed only if it is empty and is not the @@ -599,9 +706,7 @@ class ExFatFile { * \param[in] offset The new position in bytes from the current position. * \return true for success or false for failure. */ - bool seekCur(int64_t offset) { - return seekSet(m_curPosition + offset); - } + bool seekCur(int64_t offset) { return seekSet(m_curPosition + offset); } /** Set the files position to end-of-file + \a offset. See seekSet(). * Can't be used for directory files since file size is not defined. * \param[in] offset The new position in bytes from end-of-file. @@ -617,6 +722,8 @@ class ExFatFile { * \return true for success or false for failure. */ bool seekSet(uint64_t pos); + /** \return directory set count */ + uint8_t setCount() const { return m_setCount; } /** The sync() call causes all modified data and directory fields * to be written to the storage device. * @@ -668,32 +775,28 @@ class ExFatFile { * \return true for success or false for failure. */ bool truncate(); - /** Truncate a file to a specified length. The current file position + /** Truncate a file to a specified length. The current file position * will be set to end of file. * * \param[in] length The desired length for the file. * * \return true for success or false for failure. */ - bool truncate(uint64_t length) { - return seekSet(length) && truncate(); - } + bool truncate(uint64_t length) { return seekSet(length) && truncate(); } /** \return The valid number of bytes in a file. */ - uint64_t validLength() {return m_validLength;} + uint64_t validLength() const { return m_validLength; } /** Write a string to a file. Used by the Arduino Print class. * \param[in] str Pointer to the string. * Use getWriteError to check for errors. * \return count of characters written for success or -1 for failure. */ - size_t write(const char* str) { - return write(str, strlen(str)); - } + size_t write(const char* str) { return write(str, strlen(str)); } /** Write a single byte. * \param[in] b The byte to be written. * \return +1 for success or zero for failure. */ - size_t write(uint8_t b) {return write(&b, 1);} + size_t write(uint8_t b) { return write(&b, 1); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -704,102 +807,87 @@ class ExFatFile { * \param[in] count Number of bytes to write. * * \return For success write() returns the number of bytes written, always - * \a count. + * \a count. If an error occurs, write() returns zero and writeError is set. */ size_t write(const void* buf, size_t count); - //============================================================================ -#if USE_EXFAT_UNICODE_NAMES - // Not Implemented when Unicode is selected. - bool exists(const char* path); - size_t getName(char *name, size_t size); - bool mkdir(ExFatFile* parent, const char* path, bool pFlag = true); - bool open(ExFatVolume* vol, const char* path, int oflag); - bool open(ExFatFile* dir, const char* path, int oflag); - bool open(const char* path, int oflag = O_RDONLY); - bool remove(const char* path); - bool rename(const char* newPath); - bool rename(ExFatFile* dirFile, const char* newPath); -#endif // USE_EXFAT_UNICODE_NAMES +//------------------------------------------------------------------------------ +#if ENABLE_ARDUINO_SERIAL + /** List directory contents. + * + * \param[in] flags The inclusive OR of + * + * LS_DATE - %Print file modification date + * + * LS_SIZE - %Print file size. + * + * LS_R - Recursive list of subdirectories. + * + * \return true for success or false for failure. + */ + bool ls(uint8_t flags = 0) { return ls(&Serial, flags); } + /** Print a file's name. + * + * \return length for success or zero for failure. + */ + size_t printName() { return ExFatFile::printName(&Serial); } +#endif // ENABLE_ARDUINO_SERIAL private: /** ExFatVolume allowed access to private members. */ friend class ExFatVolume; bool addCluster(); bool addDirCluster(); - uint8_t setCount() {return m_setCount;} + bool cmpName(const DirName_t* dirName, ExName_t* fname); + uint8_t* dirCache(uint8_t set, uint8_t options); + bool hashName(ExName_t* fname); bool mkdir(ExFatFile* parent, ExName_t* fname); - bool openRootFile(ExFatFile* dir, - const ExChar_t* name, uint8_t nameLength, oflag_t oflag); - bool open(ExFatFile* dirFile, ExName_t* fname, oflag_t oflag) { - return openRootFile(dirFile, fname->lfn, fname->len, oflag); - } - bool parsePathName(const ExChar_t* path, - ExName_t* fname, const ExChar_t** ptr); - uint32_t curCluster() const {return m_curCluster;} - ExFatVolume* volume() const {return m_vol;} + + bool openPrivate(ExFatFile* dir, ExName_t* fname, oflag_t oflag); + bool parsePathName(const char* path, ExName_t* fname, const char** ptr); + ExFatVolume* volume() const { return m_vol; } bool syncDir(); //---------------------------------------------------------------------------- static const uint8_t WRITE_ERROR = 0X1; - static const uint8_t READ_ERROR = 0X2; + static const uint8_t READ_ERROR = 0X2; /** This file has not been opened. */ static const uint8_t FILE_ATTR_CLOSED = 0; - /** File is read-only. */ - static const uint8_t FILE_ATTR_READ_ONLY = EXFAT_ATTRIB_READ_ONLY; - /** File should be hidden in directory listings. */ - static const uint8_t FILE_ATTR_HIDDEN = EXFAT_ATTRIB_HIDDEN; - /** Entry is for a system file. */ - static const uint8_t FILE_ATTR_SYSTEM = EXFAT_ATTRIB_SYSTEM; /** Entry for normal data file */ static const uint8_t FILE_ATTR_FILE = 0X08; /** Entry is for a subdirectory */ - static const uint8_t FILE_ATTR_SUBDIR = EXFAT_ATTRIB_DIRECTORY; - static const uint8_t FILE_ATTR_ARCHIVE = EXFAT_ATTRIB_ARCHIVE; + static const uint8_t FILE_ATTR_SUBDIR = FS_ATTRIB_DIRECTORY; /** Root directory */ static const uint8_t FILE_ATTR_ROOT = 0X40; /** Directory type bits */ static const uint8_t FILE_ATTR_DIR = FILE_ATTR_SUBDIR | FILE_ATTR_ROOT; - /** Attributes to copy from directory entry */ - static const uint8_t FILE_ATTR_COPY = EXFAT_ATTRIB_READ_ONLY | - EXFAT_ATTRIB_HIDDEN | EXFAT_ATTRIB_SYSTEM | - EXFAT_ATTRIB_DIRECTORY | EXFAT_ATTRIB_ARCHIVE; static const uint8_t FILE_FLAG_READ = 0X01; static const uint8_t FILE_FLAG_WRITE = 0X02; static const uint8_t FILE_FLAG_APPEND = 0X08; - static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; + static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; static const uint8_t FILE_FLAG_DIR_DIRTY = 0X80; - - uint64_t m_curPosition; - uint64_t m_dataLength; - uint64_t m_validLength; - uint32_t m_curCluster; - uint32_t m_firstCluster; - ExFatVolume* m_vol; - DirPos_t m_dirPos; - uint8_t m_setCount; - uint8_t m_attributes; - uint8_t m_error; - uint8_t m_flags; + uint64_t m_curPosition; + uint64_t m_dataLength; + uint64_t m_validLength; + uint32_t m_curCluster; + uint32_t m_firstCluster; + ExFatVolume* m_vol; + DirPos_t m_dirPos; + uint8_t m_setCount; + uint8_t m_attributes = FILE_ATTR_CLOSED; + uint8_t m_error = 0; + uint8_t m_flags = 0; }; - -}; // namespace sdfat - - #include "../common/ArduinoFiles.h" - -namespace sdfat { - - /** * \class ExFile * \brief exFAT file with Arduino Stream. */ class ExFile : public StreamFile { public: - /** Opens the next file or folder in a directory. + /** Opens the next file or folder in a directory. * * \param[in] oflag open flags. * \return a FatStream object. @@ -810,9 +898,4 @@ class ExFile : public StreamFile { return tmpFile; } }; - - -}; // namespace sdfat - - #endif // ExFatFile_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFilePrint.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFilePrint.cpp index b76d33ff..38dd0f9e 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFilePrint.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFilePrint.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,14 +24,8 @@ */ #define DBG_FILE "ExFatFilePrint.cpp" #include "../common/DebugMacros.h" -#include "ExFatFile.h" -#include "upcase.h" -#include "ExFatVolume.h" - - -namespace sdfat { - - +#include "../common/FsUtf.h" +#include "ExFatLib.h" //------------------------------------------------------------------------------ bool ExFatFile::ls(print_t* pr) { ExFatFile file; @@ -57,7 +51,7 @@ bool ExFatFile::ls(print_t* pr) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -100,7 +94,7 @@ bool ExFatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -125,13 +119,13 @@ size_t ExFatFile::printCreateDateTime(print_t* pr) { size_t ExFatFile::printFileSize(print_t* pr) { uint64_t n = m_validLength; char buf[21]; - char *str = &buf[sizeof(buf) - 1]; - char *bgn = str - 12; + char* str = &buf[sizeof(buf) - 1]; + char* bgn = str - 12; *str = '\0'; do { uint64_t m = n; n /= 10; - *--str = m - 10*n + '0'; + *--str = m - 10 * n + '0'; } while (n); while (str > bgn) { *--str = ' '; @@ -148,42 +142,85 @@ size_t ExFatFile::printModifyDateTime(print_t* pr) { return 0; } //------------------------------------------------------------------------------ -size_t ExFatFile::printName(print_t* pr) { +size_t ExFatFile::printName7(print_t* pr) { DirName_t* dn; - DirPos_t pos = m_dirPos; size_t n = 0; uint8_t in; uint8_t buf[15]; if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; + DBG_FAIL_MACRO; + goto fail; } - for (uint8_t is = 1; is < m_setCount; is++) { - if (m_vol->dirSeek(&pos, is == 1 ? 64: 32) != 1) { - DBG_FAIL_MACRO; - goto fail; - } - dn = reinterpret_cast - (m_vol->dirCache(&pos, FsCache::CACHE_FOR_READ)); + for (uint8_t is = 2; is <= m_setCount; is++) { + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); if (!dn || dn->type != EXFAT_TYPE_NAME) { DBG_FAIL_MACRO; goto fail; } for (in = 0; in < 15; in++) { - uint16_t c = getLe16(dn->unicode + 2*in); + uint16_t c = getLe16(dn->unicode + 2 * in); if (!c) { - break;; + break; } - buf[in] = c < 0X7f ? c : '?'; + buf[in] = c < 0X7F ? c : '?'; n++; } pr->write(buf, in); } return n; - fail: +fail: return 0; } +//------------------------------------------------------------------------------ +size_t ExFatFile::printName8(print_t* pr) { + DirName_t* dn; + uint16_t hs = 0; + uint32_t cp; + size_t n = 0; + uint8_t in; + char buf[5]; + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t is = 2; is <= m_setCount; is++) { + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); + if (!dn || dn->type != EXFAT_TYPE_NAME) { + DBG_FAIL_MACRO; + goto fail; + } + for (in = 0; in < 15; in++) { + uint16_t c = getLe16(dn->unicode + 2 * in); + if (hs) { + if (!FsUtf::isLowSurrogate(c)) { + DBG_FAIL_MACRO; + goto fail; + } + cp = FsUtf::u16ToCp(hs, c); + hs = 0; + } else if (!FsUtf::isSurrogate(c)) { + if (c == 0) { + break; + } + cp = c; + } else if (FsUtf::isHighSurrogate(c)) { + hs = c; + continue; + } else { + DBG_FAIL_MACRO; + goto fail; + } + char* str = FsUtf::cpToMb(cp, buf, buf + sizeof(buf)); + if (!str) { + DBG_FAIL_MACRO; + goto fail; + } + n += pr->write(reinterpret_cast(buf), str - buf); + } + } + return n; - -}; // namespace sdfat +fail: + return 0; +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFileWrite.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFileWrite.cpp index 73afa7df..91977e0d 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFileWrite.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFileWrite.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,18 +24,11 @@ */ #define DBG_FILE "ExFatFileWrite.cpp" #include "../common/DebugMacros.h" -#include "ExFatFile.h" -#include "ExFatVolume.h" -#include "upcase.h" - - -namespace sdfat { - - +#include "ExFatLib.h" //============================================================================== -#if READ_ONLY -bool ExFatFile::mkdir(ExFatFile* parent, const ExChar_t* path, bool pFlag) { - (void) parent; +#if EXFAT_READ_ONLY +bool ExFatFile::mkdir(ExFatFile* parent, const char* path, bool pFlag) { + (void)parent; (void)path; (void)pFlag; return false; @@ -44,28 +37,24 @@ bool ExFatFile::preAllocate(uint64_t length) { (void)length; return false; } -bool ExFatFile::rename(const ExChar_t* newPath) { +bool ExFatFile::rename(const char* newPath) { (void)newPath; return false; } -bool ExFatFile::rename(ExFatFile* dirFile, const ExChar_t* newPath) { +bool ExFatFile::rename(ExFatFile* dirFile, const char* newPath) { (void)dirFile; (void)newPath; return false; } -bool ExFatFile::sync() { - return false; -} -bool ExFatFile::truncate() { - return false; -} +bool ExFatFile::sync() { return false; } +bool ExFatFile::truncate() { return false; } size_t ExFatFile::write(const void* buf, size_t nbyte) { (void)buf; (void)nbyte; return false; } //============================================================================== -#else // READ_ONLY +#else // EXFAT_READ_ONLY //------------------------------------------------------------------------------ static uint16_t exFatDirChecksum(const uint8_t* data, uint16_t checksum) { bool skip = data[0] == EXFAT_TYPE_FILE; @@ -76,7 +65,7 @@ static uint16_t exFatDirChecksum(const uint8_t* data, uint16_t checksum) { } //------------------------------------------------------------------------------ bool ExFatFile::addCluster() { - uint32_t find = m_vol->bitmapFind(m_curCluster ? m_curCluster + 1 : 0, 1); + uint32_t find = m_vol->bitmapFind(m_curCluster ? m_curCluster + 1 : 0, 1); if (find < 2) { DBG_FAIL_MACRO; goto fail; @@ -116,11 +105,11 @@ bool ExFatFile::addCluster() { } } - done: +done: m_curCluster = find; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -137,31 +126,28 @@ bool ExFatFile::addDirCluster() { DBG_FAIL_MACRO; goto fail; } - cache = m_vol->cacheClear(); - if (!cache) { - DBG_FAIL_MACRO; - goto fail; - } - memset(cache, 0, m_vol->bytesPerSector()); sector = m_vol->clusterStartSector(m_curCluster); for (uint32_t i = 0; i < m_vol->sectorsPerCluster(); i++) { - if (!m_vol->writeSector(sector + i, cache)) { + cache = + m_vol->dataCachePrepare(sector + i, FsCache::CACHE_RESERVE_FOR_WRITE); + if (!cache) { DBG_FAIL_MACRO; goto fail; } + memset(cache, 0, m_vol->bytesPerSector()); } if (!isRoot()) { m_flags |= FILE_FLAG_DIR_DIRTY; - m_dataLength += m_vol->bytesPerCluster(); + m_dataLength += m_vol->bytesPerCluster(); m_validLength += m_vol->bytesPerCluster(); } return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool ExFatFile::mkdir(ExFatFile* parent, const ExChar_t* path, bool pFlag) { +bool ExFatFile::mkdir(ExFatFile* parent, const char* path, bool pFlag) { ExName_t fname; ExFatFile tmpDir; @@ -187,19 +173,20 @@ bool ExFatFile::mkdir(ExFatFile* parent, const ExChar_t* path, bool pFlag) { if (!*path) { break; } - if (!open(parent, &fname, O_RDONLY)) { + if (!openPrivate(parent, &fname, O_RDONLY)) { if (!pFlag || !mkdir(parent, &fname)) { DBG_FAIL_MACRO; goto fail; } } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); parent = &tmpDir; close(); } return mkdir(parent, &fname); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -209,13 +196,12 @@ bool ExFatFile::mkdir(ExFatFile* parent, ExName_t* fname) { goto fail; } // create a normal file - if (!open(parent, fname, O_CREAT | O_EXCL | O_RDWR)) { + if (!openPrivate(parent, fname, O_CREAT | O_EXCL | O_RDWR)) { DBG_FAIL_MACRO; goto fail; } // convert file to directory - - m_attributes = FILE_ATTR_SUBDIR; + m_attributes = FILE_ATTR_SUBDIR | FS_ATTRIB_ARCHIVE; // allocate and zero first cluster if (!addDirCluster()) { @@ -229,7 +215,7 @@ bool ExFatFile::mkdir(ExFatFile* parent, ExName_t* fname) { m_flags = FILE_FLAG_READ | FILE_FLAG_CONTIGUOUS | FILE_FLAG_DIR_DIRTY; return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -259,12 +245,11 @@ bool ExFatFile::preAllocate(uint64_t length) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::remove() { - DirPos_t pos = m_dirPos; uint8_t* cache; if (!isWritable()) { DBG_FAIL_MACRO; @@ -286,12 +271,8 @@ bool ExFatFile::remove() { } } - for (uint8_t i = 0; i <= m_setCount; i++) { - if (i && m_vol->dirSeek(&pos, 32) != 1) { - DBG_FAIL_MACRO; - goto fail; - } - cache = m_vol->dirCache(&pos, FsCache::CACHE_FOR_WRITE); + for (uint8_t is = 0; is <= m_setCount; is++) { + cache = dirCache(is, FsCache::CACHE_FOR_WRITE); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -306,15 +287,15 @@ bool ExFatFile::remove() { // Write entry to device. return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool ExFatFile::rename(const ExChar_t* newPath) { +bool ExFatFile::rename(const char* newPath) { return rename(m_vol->vwd(), newPath); } //------------------------------------------------------------------------------ -bool ExFatFile::rename(ExFatFile* dirFile, const ExChar_t* newPath) { +bool ExFatFile::rename(ExFatFile* dirFile, const char* newPath) { ExFatFile file; ExFatFile oldFile; @@ -332,7 +313,8 @@ bool ExFatFile::rename(ExFatFile* dirFile, const ExChar_t* newPath) { DBG_FAIL_MACRO; goto fail; } - oldFile = *this; + // oldFile = *this; + oldFile.copy(this); m_dirPos = file.m_dirPos; m_setCount = file.m_setCount; m_flags |= FILE_FLAG_DIR_DIRTY; @@ -346,13 +328,13 @@ bool ExFatFile::rename(ExFatFile* dirFile, const ExChar_t* newPath) { oldFile.m_attributes = FILE_ATTR_FILE; return oldFile.remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ bool ExFatFile::rmdir() { int n; - uint8_t dir[32]; + uint8_t dir[FS_DIR_SIZE]; // must be open subdirectory if (!isSubDir()) { DBG_FAIL_MACRO; @@ -362,11 +344,11 @@ bool ExFatFile::rmdir() { // make sure directory is empty while (1) { - n = read(dir, 32); + n = read(dir, FS_DIR_SIZE); if (n == 0) { break; } - if (n != 32 || dir[0] & 0X80) { + if (n != FS_DIR_SIZE || dir[0] & 0X80) { DBG_FAIL_MACRO; goto fail; } @@ -379,7 +361,7 @@ bool ExFatFile::rmdir() { m_flags |= FILE_FLAG_WRITE; return remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -398,7 +380,7 @@ bool ExFatFile::sync() { } return true; - fail: +fail: m_error |= WRITE_ERROR; return false; } @@ -408,12 +390,9 @@ bool ExFatFile::syncDir() { DirStream_t* ds; uint8_t* cache; uint16_t checksum = 0; - uint8_t setCount = 0; - DirPos_t pos = m_dirPos; - - for (uint8_t i = 0;; i++) { - cache = m_vol->dirCache(&pos, FsCache::CACHE_FOR_READ); + for (uint8_t is = 0; is <= m_setCount; is++) { + cache = dirCache(is, FsCache::CACHE_FOR_READ); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -421,8 +400,7 @@ bool ExFatFile::syncDir() { switch (cache[0]) { case EXFAT_TYPE_FILE: df = reinterpret_cast(cache); - setCount = df->setCount; - setLe16(df->attributes, m_attributes & FILE_ATTR_COPY); + setLe16(df->attributes, m_attributes & FS_ATTRIB_COPY); if (FsDateTime::callback) { uint16_t date, time; uint8_t ms10; @@ -458,14 +436,9 @@ bool ExFatFile::syncDir() { break; } checksum = exFatDirChecksum(cache, checksum); - if (i == setCount) break; - if (m_vol->dirSeek(&pos, 32) != 1) { - DBG_FAIL_MACRO; - goto fail; - } } - df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); + df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -477,32 +450,24 @@ bool ExFatFile::syncDir() { } return true; - fail: +fail: m_error |= WRITE_ERROR; return false; } //------------------------------------------------------------------------------ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { + uint8_t day, uint8_t hour, uint8_t minute, + uint8_t second) { DirFile_t* df; uint8_t* cache; uint16_t checksum = 0; - uint8_t setCount = 0; uint16_t date; uint16_t time; uint8_t ms10; - DirPos_t pos; - if (!isFile() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { + if (!isFileOrSubDir() || year < 1980 || year > 2107 || month < 1 || + month > 12 || day < 1 || day > 31 || hour > 23 || minute > 59 || + second > 59) { DBG_FAIL_MACRO; goto fail; } @@ -515,10 +480,9 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, date = FS_DATE(year, month, day); time = FS_TIME(hour, minute, second); ms10 = second & 1 ? 100 : 0; - pos = m_dirPos; - for (uint8_t i = 0;; i++) { - cache = m_vol->dirCache(&pos, FsCache::CACHE_FOR_READ); + for (uint8_t is = 0; is <= m_setCount; is++) { + cache = dirCache(is, FsCache::CACHE_FOR_READ); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -526,8 +490,7 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, switch (cache[0]) { case EXFAT_TYPE_FILE: df = reinterpret_cast(cache); - setCount = df->setCount; - setLe16(df->attributes, m_attributes & FILE_ATTR_COPY); + setLe16(df->attributes, m_attributes & FS_ATTRIB_COPY); m_vol->dataCacheDirty(); if (flags & T_ACCESS) { setLe16(df->accessTime, time); @@ -557,14 +520,9 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, break; } checksum = exFatDirChecksum(cache, checksum); - if (i == setCount) break; - if (m_vol->dirSeek(&pos, 32) != 1) { - DBG_FAIL_MACRO; - goto fail; - } } - df = reinterpret_cast - (m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); + df = reinterpret_cast( + m_vol->dirCache(&m_dirPos, FsCache::CACHE_FOR_WRITE)); if (!df) { DBG_FAIL_MACRO; goto fail; @@ -576,7 +534,7 @@ bool ExFatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -588,7 +546,7 @@ bool ExFatFile::truncate() { goto fail; } if (m_firstCluster == 0) { - return true; + return true; } if (isContiguous()) { uint32_t nc = 1 + ((m_dataLength - 1) >> m_vol->bytesPerClusterShift()); @@ -635,7 +593,7 @@ bool ExFatFile::truncate() { m_flags |= FILE_FLAG_DIR_DIRTY; return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -727,7 +685,7 @@ size_t ExFatFile::write(const void* buf, size_t nbyte) { // rewrite part of sector cacheOption = FsCache::CACHE_FOR_WRITE; } - cache = m_vol->dataCacheGet(sector, cacheOption); + cache = m_vol->dataCachePrepare(sector, cacheOption); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -742,34 +700,24 @@ size_t ExFatFile::write(const void* buf, size_t nbyte) { } } #if USE_MULTI_SECTOR_IO - } else if (toWrite >= 2*m_vol->bytesPerSector()) { + } else if (toWrite >= 2 * m_vol->bytesPerSector()) { // use multiple sector write command uint32_t ns = toWrite >> m_vol->bytesPerSectorShift(); // Limit writes to current cluster. - uint32_t maxNs = m_vol->sectorsPerCluster() - - (clusterOffset >> m_vol->bytesPerSectorShift()); + uint32_t maxNs = m_vol->sectorsPerCluster() - + (clusterOffset >> m_vol->bytesPerSectorShift()); if (ns > maxNs) { ns = maxNs; } n = ns << m_vol->bytesPerSectorShift(); - // Check for cache sector in write range. - if (sector <= m_vol->dataCacheSector() - && m_vol->dataCacheSector() < (sector + ns)) { - // Invalidate cache if cache sector is in the range. - m_vol->dataCacheInvalidate(); - } - if (!m_vol->writeSectors(sector, src, ns)) { + if (!m_vol->cacheSafeWrite(sector, src, ns)) { DBG_FAIL_MACRO; goto fail; } #endif // USE_MULTI_SECTOR_IO } else { - // use single sector write command n = m_vol->bytesPerSector(); - if (m_vol->dataCacheSector() == sector) { - m_vol->dataCacheInvalidate(); - } - if (!m_vol->writeSector(sector, src)) { + if (!m_vol->cacheSafeWrite(sector, src)) { DBG_FAIL_MACRO; goto fail; } @@ -792,12 +740,9 @@ size_t ExFatFile::write(const void* buf, size_t nbyte) { } return nbyte; - fail: +fail: // return for write error m_error |= WRITE_ERROR; - return -1; + return 0; } -#endif // READ_ONLY - - -}; // namespace sdfat +#endif // EXFAT_READ_ONLY diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.cpp index 18d982c0..2710dddb 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,18 +24,14 @@ */ #define DBG_FILE "ExFatFormatter.cpp" #include "../common/DebugMacros.h" -#include "ExFatFormatter.h" - - -namespace sdfat { - - +#include "../common/upcase.h" +#include "ExFatLib.h" //------------------------------------------------------------------------------ // Formatter assumes 512 byte sectors. const uint32_t BOOT_BACKUP_OFFSET = 12; const uint16_t BYTES_PER_SECTOR = 512; const uint16_t SECTOR_MASK = BYTES_PER_SECTOR - 1; -const uint8_t BYTES_PER_SECTOR_SHIFT = 9; +const uint8_t BYTES_PER_SECTOR_SHIFT = 9; const uint16_t MINIMUM_UPCASE_SKIP = 512; const uint32_t BITMAP_CLUSTER = 2; const uint32_t UPCASE_CLUSTER = 3; @@ -45,14 +41,16 @@ const uint32_t ROOT_CLUSTER = 4; #if !PRINT_FORMAT_PROGRESS #define writeMsg(pr, str) #elif defined(__AVR__) -#define writeMsg(pr, str) if (pr) pr->print(F(str)) +#define writeMsg(pr, str) \ + if (pr) pr->print(F(str)) #else // PRINT_FORMAT_PROGRESS -#define writeMsg(pr, str) if (pr) pr->write(str) +#define writeMsg(pr, str) \ + if (pr) pr->write(str) #endif // PRINT_FORMAT_PROGRESS //------------------------------------------------------------------------------ -bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { +bool ExFatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { #if !PRINT_FORMAT_PROGRESS -(void)pr; + (void)pr; #endif // !PRINT_FORMAT_PROGRESS MbrSector_t* mbr; ExFatPbs_t* pbs; @@ -85,14 +83,15 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { goto fail; } // Determine partition layout. - for (m = 1, vs = 0; m && sectorCount > m; m <<= 1, vs++) {} - sectorsPerClusterShift = vs < 29 ? 8 : (vs - 11)/2; + for (m = 1, vs = 0; m && sectorCount > m; m <<= 1, vs++) { + } + sectorsPerClusterShift = vs < 29 ? 8 : (vs - 11) / 2; sectorsPerCluster = 1UL << sectorsPerClusterShift; - fatLength = 1UL << (vs < 27 ? 13 : (vs + 1)/2); + fatLength = 1UL << (vs < 27 ? 13 : (vs + 1) / 2); fatOffset = fatLength; - partitionOffset = 2*fatLength; - clusterHeapOffset = 2*fatLength; - clusterCount = (sectorCount - 4*fatLength) >> sectorsPerClusterShift; + partitionOffset = 2 * fatLength; + clusterHeapOffset = 2 * fatLength; + clusterCount = (sectorCount - 4 * fatLength) >> sectorsPerClusterShift; volumeLength = clusterHeapOffset + (clusterCount << sectorsPerClusterShift); // make Master Boot Record. Use fake CHS. @@ -156,8 +155,8 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { checksum = exFatChecksum(checksum, secBuf[i]); } sector = partitionOffset; - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } @@ -169,8 +168,8 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { for (size_t i = 0; i < BYTES_PER_SECTOR; i++) { checksum = exFatChecksum(checksum, secBuf[i]); } - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } @@ -182,8 +181,8 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { for (size_t i = 0; i < BYTES_PER_SECTOR; i++) { checksum = exFatChecksum(checksum, secBuf[i]); } - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } @@ -193,24 +192,24 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { for (size_t i = 0; i < BYTES_PER_SECTOR; i += 4) { setLe32(secBuf + i, checksum); } - if (!dev->writeSector(sector, secBuf) || - !dev->writeSector(sector + BOOT_BACKUP_OFFSET , secBuf)) { + if (!dev->writeSector(sector, secBuf) || + !dev->writeSector(sector + BOOT_BACKUP_OFFSET, secBuf)) { DBG_FAIL_MACRO; goto fail; } // Initialize FAT. writeMsg(pr, "Writing FAT "); sector = partitionOffset + fatOffset; - ns = ((clusterCount + 2)*4 + BYTES_PER_SECTOR - 1)/BYTES_PER_SECTOR; + ns = ((clusterCount + 2) * 4 + BYTES_PER_SECTOR - 1) / BYTES_PER_SECTOR; memset(secBuf, 0, BYTES_PER_SECTOR); // Allocate two reserved clusters, bitmap, upcase, and root clusters. secBuf[0] = 0XF8; - for (size_t i = 0; i < 20; i++) { + for (size_t i = 1; i < 20; i++) { secBuf[i] = 0XFF; } for (uint32_t i = 0; i < ns; i++) { - if (i%(ns/32) == 0) { + if (i % (ns / 32) == 0) { writeMsg(pr, "."); } if (!dev->writeSector(sector + i, secBuf)) { @@ -224,8 +223,8 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { writeMsg(pr, "\r\n"); // Write cluster two, bitmap. sector = partitionOffset + clusterHeapOffset; - bitmapSize = (clusterCount + 7)/8; - ns = (bitmapSize + BYTES_PER_SECTOR - 1)/BYTES_PER_SECTOR; + bitmapSize = (clusterCount + 7) / 8; + ns = (bitmapSize + BYTES_PER_SECTOR - 1) / BYTES_PER_SECTOR; if (ns > sectorsPerCluster) { DBG_FAIL_MACRO; goto fail; @@ -248,28 +247,28 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { DBG_FAIL_MACRO; goto fail; } - if (m_upcaseSize > BYTES_PER_SECTOR*sectorsPerCluster) { + if (m_upcaseSize > BYTES_PER_SECTOR * sectorsPerCluster) { DBG_FAIL_MACRO; goto fail; } // Initialize first sector of root. writeMsg(pr, "Writing root\r\n"); ns = sectorsPerCluster; - sector = partitionOffset + clusterHeapOffset + 2*sectorsPerCluster; + sector = partitionOffset + clusterHeapOffset + 2 * sectorsPerCluster; memset(secBuf, 0, BYTES_PER_SECTOR); // Unused Label entry. label = reinterpret_cast(secBuf); label->type = EXFAT_TYPE_LABEL & 0X7F; - // bitmap directory entry. + // bitmap directory entry. dbm = reinterpret_cast(secBuf + 32); dbm->type = EXFAT_TYPE_BITMAP; setLe32(dbm->firstCluster, BITMAP_CLUSTER); setLe64(dbm->size, bitmapSize); // upcase directory entry. - dup = reinterpret_cast(secBuf +64); + dup = reinterpret_cast(secBuf + 64); dup->type = EXFAT_TYPE_UPCASE; setLe32(dup->checksum, m_upcaseChecksum); setLe32(dup->firstCluster, UPCASE_CLUSTER); @@ -288,7 +287,7 @@ bool ExFatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { writeMsg(pr, "Format done\r\n"); return true; - fail: +fail: writeMsg(pr, "Format failed\r\n"); return false; } @@ -338,7 +337,8 @@ bool ExFatFormatter::writeUpcase(uint32_t sector) { } ch++; } else { - for (n = ch + 1; n < 0X10000 && n == toUpcase(n); n++) {} + for (n = ch + 1; n < 0X10000 && n == toUpcase(n); n++) { + } ns = n - ch; if (ns >= MINIMUM_UPCASE_SKIP) { if (!writeUpcaseUnicode(0XFFFF) || !writeUpcaseUnicode(ns)) { @@ -362,9 +362,6 @@ bool ExFatFormatter::writeUpcase(uint32_t sector) { } return true; - fail: +fail: return false; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.h index f1692589..16ec8908 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatFormatter.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,21 +24,15 @@ */ #ifndef ExFatFormatter_h #define ExFatFormatter_h -#include "ExFatConfig.h" -#include "../common/SysCall.h" -#include "../common/BlockDevice.h" -#include "upcase.h" - - -namespace sdfat { - - +#include "../common/FsBlockDevice.h" /** * \class ExFatFormatter * \brief Format an exFAT volume. */ class ExFatFormatter { public: + /** Constructor. */ + ExFatFormatter() = default; /** * Format an exFAT volume. * @@ -48,7 +42,8 @@ class ExFatFormatter { * * \return true for success or false for failure. */ - bool format(BlockDevice* dev, uint8_t* secBuf, print_t* pr = nullptr); + bool format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr = nullptr); + private: bool syncUpcase(); bool writeUpcase(uint32_t sector); @@ -57,12 +52,7 @@ class ExFatFormatter { uint32_t m_upcaseSector; uint32_t m_upcaseChecksum; uint32_t m_upcaseSize; - BlockDevice* m_dev; + FsBlockDevice* m_dev; uint8_t* m_secBuf; }; - - -}; // namespace sdfat - - #endif // ExFatFormatter_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatLib.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatLib.h index a004180a..26f7e708 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatLib.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatLib.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,7 +24,6 @@ */ #ifndef ExFatLib_h #define ExFatLib_h -#include "ExFatVolume.h" -#include "ExFatFile.h" #include "ExFatFormatter.h" +#include "ExFatVolume.h" #endif // ExFatLib_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatName.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatName.cpp new file mode 100644 index 00000000..70df62d8 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatName.cpp @@ -0,0 +1,189 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#define DBG_FILE "ExFatName.cpp" +#include "../common/DebugMacros.h" +#include "../common/FsUtf.h" +#include "../common/upcase.h" +#include "ExFatLib.h" +//------------------------------------------------------------------------------ +static char toUpper(char c) { return 'a' <= c && c <= 'z' ? c - 'a' + 'A' : c; } +//------------------------------------------------------------------------------ +inline uint16_t exFatHash(char c, uint16_t hash) { + uint8_t u = toUpper(c); + hash = ((hash << 15) | (hash >> 1)) + u; + hash = ((hash << 15) | (hash >> 1)); + return hash; +} +//------------------------------------------------------------------------------ +inline uint16_t exFatHash(uint16_t u, uint16_t hash) { + uint16_t c = toUpcase(u); + hash = ((hash << 15) | (hash >> 1)) + (c & 0XFF); + hash = ((hash << 15) | (hash >> 1)) + (c >> 8); + return hash; +} +//------------------------------------------------------------------------------ +bool ExFatFile::cmpName(const DirName_t* dirName, ExName_t* fname) { + for (uint8_t i = 0; i < 15; i++) { + uint16_t u = getLe16(dirName->unicode + 2 * i); + if (fname->atEnd()) { + return u == 0; + } +#if USE_UTF8_LONG_NAMES + uint16_t cp = fname->get16(); + if (toUpcase(cp) != toUpcase(u)) { + return false; + } +#else // USE_UTF8_LONG_NAMES + char c = fname->getch(); + if (u >= 0x7F || toUpper(c) != toUpper(u)) { + return false; + } +#endif // USE_UTF8_LONG_NAMES + } + return true; +} +//------------------------------------------------------------------------------ +size_t ExFatFile::getName7(char* name, size_t count) { + DirName_t* dn; + size_t n = 0; + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t is = 2; is <= m_setCount; is++) { + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); + if (!dn || dn->type != EXFAT_TYPE_NAME) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t in = 0; in < 15; in++) { + uint16_t c = getLe16(dn->unicode + 2 * in); + if (c == 0) { + goto done; + } + if ((n + 1) >= count) { + DBG_FAIL_MACRO; + goto fail; + } + name[n++] = c < 0X7F ? c : '?'; + } + } +done: + name[n] = 0; + return n; + +fail: + *name = 0; + return 0; +} +//------------------------------------------------------------------------------ +size_t ExFatFile::getName8(char* name, size_t count) { + char* end = name + count; + char* str = name; + char* ptr; + DirName_t* dn; + uint16_t hs = 0; + uint32_t cp; + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t is = 2; is <= m_setCount; is++) { + dn = reinterpret_cast(dirCache(is, FsCache::CACHE_FOR_READ)); + if (!dn || dn->type != EXFAT_TYPE_NAME) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t in = 0; in < 15; in++) { + uint16_t c = getLe16(dn->unicode + 2 * in); + if (hs) { + if (!FsUtf::isLowSurrogate(c)) { + DBG_FAIL_MACRO; + goto fail; + } + cp = FsUtf::u16ToCp(hs, c); + hs = 0; + } else if (!FsUtf::isSurrogate(c)) { + if (c == 0) { + goto done; + } + cp = c; + } else if (FsUtf::isHighSurrogate(c)) { + hs = c; + continue; + } else { + DBG_FAIL_MACRO; + goto fail; + } + // Save space for zero byte. + ptr = FsUtf::cpToMb(cp, str, end - 1); + if (!ptr) { + DBG_FAIL_MACRO; + goto fail; + } + str = ptr; + } + } +done: + *str = '\0'; + return str - name; + +fail: + *name = 0; + return 0; +} +//------------------------------------------------------------------------------ +bool ExFatFile::hashName(ExName_t* fname) { + uint16_t hash = 0; + fname->reset(); +#if USE_UTF8_LONG_NAMES + fname->nameLength = 0; + while (!fname->atEnd()) { + uint16_t u = fname->get16(); + if (u == 0XFFFF) { + DBG_FAIL_MACRO; + goto fail; + } + hash = exFatHash(u, hash); + fname->nameLength++; + } +#else // USE_UTF8_LONG_NAMES + while (!fname->atEnd()) { + // Convert to byte for smaller exFatHash. + char c = fname->getch(); + hash = exFatHash(c, hash); + } + fname->nameLength = fname->end - fname->begin; +#endif // USE_UTF8_LONG_NAMES + fname->nameHash = hash; + if (!fname->nameLength || fname->nameLength > EXFAT_MAX_NAME_LENGTH) { + DBG_FAIL_MACRO; + goto fail; + } + return true; + +fail: + return false; +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.cpp index fd128cd2..2d22b11f 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,59 +24,8 @@ */ #define DBG_FILE "ExFatPartition.cpp" #include "../common/DebugMacros.h" -#include "ExFatVolume.h" -#include "../common/FsStructs.h" - - -namespace sdfat { - - +#include "ExFatLib.h" //------------------------------------------------------------------------------ -uint8_t* FsCache::get(uint32_t sector, uint8_t option) { - if (!m_blockDev) { - DBG_FAIL_MACRO; - goto fail; - } - if (m_sector != sector) { - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - if (!(option & CACHE_OPTION_NO_READ)) { - if (!m_blockDev->readSector(sector, m_cacheBuffer)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status = 0; - m_sector = sector; - } - m_status |= option & CACHE_STATUS_MASK; - return m_cacheBuffer; - - fail: - return nullptr; -} -//------------------------------------------------------------------------------ -void FsCache::invalidate() { - m_status = 0; - m_sector = 0XFFFFFFFF; -} -//------------------------------------------------------------------------------ -bool FsCache::sync() { - if (m_status & CACHE_STATUS_DIRTY) { - if (!m_blockDev->writeSector(m_sector, m_cacheBuffer)) { - DBG_FAIL_MACRO; - goto fail; - } - m_status &= ~CACHE_STATUS_DIRTY; - } - return true; - - fail: - return false; -} -//============================================================================== // return 0 if error, 1 if no space, else start cluster. uint32_t ExFatPartition::bitmapFind(uint32_t cluster, uint32_t count) { uint32_t start = cluster ? cluster - 2 : m_bitmapStart; @@ -90,9 +39,9 @@ uint32_t ExFatPartition::bitmapFind(uint32_t cluster, uint32_t count) { uint8_t* cache; uint8_t mask = 1 << (start & 7); while (true) { - uint32_t sector = m_clusterHeapStartSector + - (endAlloc >> (m_bytesPerSectorShift + 3)); - cache = bitmapCacheGet(sector, FsCache::CACHE_FOR_READ); + uint32_t sector = + m_clusterHeapStartSector + (endAlloc >> (m_bytesPerSectorShift + 3)); + cache = bitmapCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!cache) { return 0; } @@ -126,8 +75,8 @@ uint32_t ExFatPartition::bitmapFind(uint32_t cluster, uint32_t count) { return 0; } //------------------------------------------------------------------------------ -bool ExFatPartition::bitmapModify(uint32_t cluster, - uint32_t count, bool value) { +bool ExFatPartition::bitmapModify(uint32_t cluster, uint32_t count, + bool value) { uint32_t sector; uint32_t start = cluster - 2; size_t i; @@ -139,7 +88,7 @@ bool ExFatPartition::bitmapModify(uint32_t cluster, goto fail; } if (value) { - if (start <= m_bitmapStart && m_bitmapStart < (start + count)) { + if (start <= m_bitmapStart && m_bitmapStart < (start + count)) { m_bitmapStart = (start + count) < m_clusterCount ? start + count : 0; } } else { @@ -148,11 +97,10 @@ bool ExFatPartition::bitmapModify(uint32_t cluster, } } mask = 1 << (start & 7); - sector = m_clusterHeapStartSector + - (start >> (m_bytesPerSectorShift + 3)); + sector = m_clusterHeapStartSector + (start >> (m_bytesPerSectorShift + 3)); i = (start >> 3) & m_sectorMask; while (true) { - cache = bitmapCacheGet(sector++, FsCache::CACHE_FOR_WRITE); + cache = bitmapCachePrepare(sector++, FsCache::CACHE_FOR_WRITE); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -173,7 +121,7 @@ bool ExFatPartition::bitmapModify(uint32_t cluster, i = 0; } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -181,7 +129,7 @@ uint32_t ExFatPartition::chainSize(uint32_t cluster) { uint32_t n = 0; int8_t status; do { - status = fatGet(cluster, & cluster); + status = fatGet(cluster, &cluster); if (status < 0) return 0; n++; } while (status); @@ -191,7 +139,7 @@ uint32_t ExFatPartition::chainSize(uint32_t cluster) { uint8_t* ExFatPartition::dirCache(DirPos_t* pos, uint8_t options) { uint32_t sector = clusterStartSector(pos->cluster); sector += (m_clusterMask & pos->position) >> m_bytesPerSectorShift; - uint8_t* cache = dataCacheGet(sector, options); + uint8_t* cache = dataCachePrepare(sector, options); return cache ? cache + (pos->position & m_sectorMask) : nullptr; } //------------------------------------------------------------------------------ @@ -214,7 +162,8 @@ int8_t ExFatPartition::dirSeek(DirPos_t* pos, uint32_t offset) { return 1; } //------------------------------------------------------------------------------ -uint8_t ExFatPartition::fatGet(uint32_t cluster, uint32_t* value) { +// return -1 error, 0 EOC, 1 OK +int8_t ExFatPartition::fatGet(uint32_t cluster, uint32_t* value) { uint8_t* cache; uint32_t next; uint32_t sector; @@ -225,12 +174,11 @@ uint8_t ExFatPartition::fatGet(uint32_t cluster, uint32_t* value) { } sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 2)); - cache = dataCacheGet(sector, FsCache::CACHE_FOR_READ); + cache = dataCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!cache) { return -1; } next = getLe32(cache + ((cluster << 2) & m_sectorMask)); - if (next == EXFAT_EOC) { return 0; } @@ -246,7 +194,7 @@ bool ExFatPartition::fatPut(uint32_t cluster, uint32_t value) { goto fail; } sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 2)); - cache = dataCacheGet(sector, FsCache::CACHE_FOR_WRITE); + cache = dataCachePrepare(sector, FsCache::CACHE_FOR_WRITE); if (!cache) { DBG_FAIL_MACRO; goto fail; @@ -254,7 +202,7 @@ bool ExFatPartition::fatPut(uint32_t cluster, uint32_t value) { setLe32(cache + ((cluster << 2) & m_sectorMask), value); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -272,7 +220,7 @@ bool ExFatPartition::freeChain(uint32_t cluster) { DBG_FAIL_MACRO; goto fail; } - if ((cluster + 1) != next || status == 0) { + if (status == 0 || (cluster + 1) != next) { if (!bitmapModify(start, cluster - start + 1, 0)) { DBG_FAIL_MACRO; goto fail; @@ -284,26 +232,26 @@ bool ExFatPartition::freeChain(uint32_t cluster) { return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -uint32_t ExFatPartition::freeClusterCount() { +int32_t ExFatPartition::freeClusterCount() { uint32_t nc = 0; uint32_t sector = m_clusterHeapStartSector; uint32_t usedCount = 0; uint8_t* cache; while (true) { - cache = dataCacheGet(sector++, FsCache::CACHE_FOR_READ); + cache = dataCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!cache) { - return 0; + return -1; } for (size_t i = 0; i < m_bytesPerSector; i++) { if (cache[i] == 0XFF) { - usedCount+= 8; + usedCount += 8; } else if (cache[i]) { - for (uint8_t mask = 1; mask ; mask <<=1) { + for (uint8_t mask = 1; mask; mask <<= 1) { if ((mask & cache[i])) { usedCount++; } @@ -317,37 +265,39 @@ uint32_t ExFatPartition::freeClusterCount() { } } //------------------------------------------------------------------------------ -bool ExFatPartition::init(BlockDevice* dev, uint8_t part) { - uint32_t volStart = 0; - uint8_t* cache; +bool ExFatPartition::init(FsBlockDevice* dev, uint8_t part, uint32_t volStart) { pbs_t* pbs; BpbExFat_t* bpb; MbrSector_t* mbr; - MbrPart_t* mp; - m_fatType = 0; m_blockDev = dev; cacheInit(m_blockDev); - cache = dataCacheGet(0, FsCache::CACHE_FOR_READ); - if (part > 4 || !cache) { - DBG_FAIL_MACRO; - goto fail; - } - if (part >= 1) { - mbr = reinterpret_cast(cache); - mp = &mbr->part[part - 1]; - if ((mp->boot != 0 && mp->boot != 0X80) || mp->type == 0) { + // if part == 0 assume super floppy with FAT boot sector in sector zero + // if part > 0 assume mbr volume with partition table + if (part) { + if (part > 4) { + DBG_FAIL_MACRO; + goto fail; + } + mbr = reinterpret_cast( + dataCachePrepare(0, FsCache::CACHE_FOR_READ)); + if (!mbr) { + DBG_FAIL_MACRO; + goto fail; + } + MbrPart_t* mp = mbr->part + part - 1; + if (mp->type == 0 || (mp->boot != 0 && mp->boot != 0X80)) { DBG_FAIL_MACRO; goto fail; } volStart = getLe32(mp->relativeSectors); - cache = dataCacheGet(volStart, FsCache::CACHE_FOR_READ); - if (!cache) { - DBG_FAIL_MACRO; - goto fail; - } } - pbs = reinterpret_cast(cache); + pbs = reinterpret_cast( + dataCachePrepare(volStart, FsCache::CACHE_FOR_READ)); + if (!pbs) { + DBG_FAIL_MACRO; + goto fail; + } if (strncmp(pbs->oemName, "EXFAT", 5)) { DBG_FAIL_MACRO; goto fail; @@ -371,7 +321,7 @@ bool ExFatPartition::init(BlockDevice* dev, uint8_t part) { m_fatType = FAT_TYPE_EXFAT; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -379,6 +329,3 @@ uint32_t ExFatPartition::rootLength() { uint32_t nc = chainSize(m_rootDirectoryCluster); return nc << bytesPerClusterShift(); } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.h index 3a6e7bea..b7ecf757 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatPartition.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,92 +28,30 @@ * \file * \brief ExFatPartition include file. */ +#include "../common/FsBlockDevice.h" +#include "../common/FsCache.h" +#include "../common/FsStructs.h" #include "../common/SysCall.h" -#include "../common/BlockDevice.h" -#include "ExFatConfig.h" -#include "ExFatTypes.h" - - -namespace sdfat { - - +/** Set EXFAT_READ_ONLY non-zero for read only */ +#ifndef EXFAT_READ_ONLY +#define EXFAT_READ_ONLY 0 +#endif // EXFAT_READ_ONLY /** Type for exFAT partition */ const uint8_t FAT_TYPE_EXFAT = 64; class ExFatFile; -//============================================================================== +//------------------------------------------------------------------------------ /** - * \class FsCache - * \brief Sector cache. + * \struct DirPos_t + * \brief Internal type for position in directory file. */ -class FsCache { - public: - /** Cached sector is dirty */ - static const uint8_t CACHE_STATUS_DIRTY = 1; - /** Cache sector status bits */ - static const uint8_t CACHE_STATUS_MASK = CACHE_STATUS_DIRTY; - /** Sync existing sector but do not read new sector. */ - static const uint8_t CACHE_OPTION_NO_READ = 2; - /** Cache sector for read. */ - static const uint8_t CACHE_FOR_READ = 0; - /** Cache sector for write. */ - static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY; - /** Reserve cache sector for write - do not read from sector device. */ - static const uint8_t CACHE_RESERVE_FOR_WRITE - = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; - - FsCache() : m_blockDev(nullptr) { - invalidate(); - } - - /** \return Cache sector address. */ - uint8_t* cacheBuffer() { - return m_cacheBuffer; - } - /** \return Clear the cache and returns a pointer to the cache. */ - uint8_t* clear() { - if (isDirty() && !sync()) { - return nullptr; - } - invalidate(); - return m_cacheBuffer; - } - /** Set current sector dirty. */ - void dirty() { - m_status |= CACHE_STATUS_DIRTY; - } - /** Initialize the cache. - * \param[in] blockDev Block device for this partition. - */ - void init(BlockDevice* blockDev) { - m_blockDev = blockDev; - invalidate(); - } - /** Invalidate current cache sector. */ - void invalidate(); - /** \return dirty status */ - bool isDirty() { - return m_status & CACHE_STATUS_DIRTY; - } - /** \return Logical sector number for cached sector. */ - uint32_t sector() { - return m_sector; - } - /** Fill cache with sector data. - * \param[in] sector Sector to read. - * \param[in] option mode for cached sector. - * \return Address of cached sector. */ - uint8_t* get(uint32_t sector, uint8_t option); - /** Write current sector if dirty. - * \return true for success or false for failure. - */ - bool sync(); - - private: - uint8_t m_status; - BlockDevice* m_blockDev; - uint32_t m_sector; - uint8_t m_cacheBuffer[512]; +struct DirPos_t { + /** current cluster */ + uint32_t cluster; + /** offset */ + uint32_t position; + /** directory is contiguous */ + bool isContiguous; }; //============================================================================== /** @@ -122,65 +60,76 @@ class FsCache { */ class ExFatPartition { public: - ExFatPartition() : m_fatType(0) {} + ExFatPartition() = default; /** \return the number of bytes in a cluster. */ - uint32_t bytesPerCluster() const {return m_bytesPerCluster;} + uint32_t bytesPerCluster() const { return m_bytesPerCluster; } /** \return the power of two for bytesPerCluster. */ uint8_t bytesPerClusterShift() const { return m_bytesPerSectorShift + m_sectorsPerClusterShift; } /** \return the number of bytes in a sector. */ - uint16_t bytesPerSector() const {return m_bytesPerSector;} + uint16_t bytesPerSector() const { return m_bytesPerSector; } /** \return the power of two for bytesPerSector. */ - uint8_t bytesPerSectorShift() const {return m_bytesPerSectorShift;} + uint8_t bytesPerSectorShift() const { return m_bytesPerSectorShift; } /** Clear the cache and returns a pointer to the cache. Not for normal apps. * \return A pointer to the cache buffer or zero if an error occurs. */ - uint8_t* cacheClear() { - return m_dataCache.clear(); - } + uint8_t* cacheClear() { return m_dataCache.clear(); } /** \return the cluster count for the partition. */ - uint32_t clusterCount() const {return m_clusterCount;} + uint32_t clusterCount() const { return m_clusterCount; } /** \return the cluster heap start sector. */ - uint32_t clusterHeapStartSector() const {return m_clusterHeapStartSector;} + uint32_t clusterHeapStartSector() const { return m_clusterHeapStartSector; } + /** End access to volume + * \return pointer to sector size buffer for format. + */ + uint8_t* end() { + m_fatType = 0; + return cacheClear(); + } /** \return the FAT length in sectors */ - uint32_t fatLength() const {return m_fatLength;} + uint32_t fatLength() const { return m_fatLength; } /** \return the FAT start sector number. */ - uint32_t fatStartSector() const {return m_fatStartSector;} + uint32_t fatStartSector() const { return m_fatStartSector; } /** \return Type FAT_TYPE_EXFAT for exFAT partition or zero for error. */ - uint8_t fatType() const {return m_fatType;} - /** \return the free cluster count. */ - uint32_t freeClusterCount(); + uint8_t fatType() const { return m_fatType; } + /** \return free cluster count or -1 if an error occurs. */ + int32_t freeClusterCount(); /** Initialize a exFAT partition. * \param[in] dev The blockDevice for the partition. * \param[in] part The partition to be used. Legal values for \a part are * 1-4 to use the corresponding partition on a device formatted with * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in sector zero. + * a super floppy with the FAT boot sector in sector volStart. + * \param[in] volStart location of volume if part is zero. * * \return true for success or false for failure. */ - bool init(BlockDevice* dev, uint8_t part); + bool init(FsBlockDevice* dev, uint8_t part, uint32_t volStart = 0); + /** + * Check for device busy. + * + * \return true if busy else false. + */ + bool isBusy() { return m_blockDev->isBusy(); } /** \return the root directory start cluster number. */ - uint32_t rootDirectoryCluster() const {return m_rootDirectoryCluster;} + uint32_t rootDirectoryCluster() const { return m_rootDirectoryCluster; } /** \return the root directory length. */ uint32_t rootLength(); /** \return the number of sectors in a cluster. */ - uint32_t sectorsPerCluster() const {return 1UL << m_sectorsPerClusterShift;} + uint32_t sectorsPerCluster() const { return 1UL << m_sectorsPerClusterShift; } #ifndef DOXYGEN_SHOULD_SKIP_THIS - // Use sectorsPerCluster(). blocksPerCluster() will be removed in the future. - uint32_t blocksPerCluster() __attribute__ ((deprecated)) {return sectorsPerCluster();} //NOLINT + uint32_t __attribute__((error("use sectorsPerCluster()"))) blocksPerCluster(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** \return the power of two for sectors per cluster. */ - uint8_t sectorsPerClusterShift() const {return m_sectorsPerClusterShift;} + uint8_t sectorsPerClusterShift() const { return m_sectorsPerClusterShift; } //---------------------------------------------------------------------------- #ifndef DOXYGEN_SHOULD_SKIP_THIS void checkUpcase(print_t* pr); bool printDir(print_t* pr, ExFatFile* file); void dmpBitmap(print_t* pr); - void dmpCluster(print_t* pr, uint32_t cluster, - uint32_t offset, uint32_t count); + void dmpCluster(print_t* pr, uint32_t cluster, uint32_t offset, + uint32_t count); void dmpFat(print_t* pr, uint32_t start, uint32_t count); void dmpSector(print_t* pr, uint32_t sector); bool printVolInfo(print_t* pr); @@ -195,14 +144,14 @@ class ExFatPartition { bool bitmapModify(uint32_t cluster, uint32_t count, bool value); //---------------------------------------------------------------------------- // Cache functions. - uint8_t* bitmapCacheGet(uint32_t sector, uint8_t option) { + uint8_t* bitmapCachePrepare(uint32_t sector, uint8_t option) { #if USE_EXFAT_BITMAP_CACHE - return m_bitmapCache.get(sector, option); -#else // USE_EXFAT_BITMAP_CACHE - return m_dataCache.get(sector, option); + return m_bitmapCache.prepare(sector, option); +#else // USE_EXFAT_BITMAP_CACHE + return m_dataCache.prepare(sector, option); #endif // USE_EXFAT_BITMAP_CACHE } - void cacheInit(BlockDevice* dev) { + void cacheInit(FsBlockDevice* dev) { #if USE_EXFAT_BITMAP_CACHE m_bitmapCache.init(dev); #endif // USE_EXFAT_BITMAP_CACHE @@ -211,32 +160,42 @@ class ExFatPartition { bool cacheSync() { #if USE_EXFAT_BITMAP_CACHE return m_bitmapCache.sync() && m_dataCache.sync() && syncDevice(); -#else // USE_EXFAT_BITMAP_CACHE +#else // USE_EXFAT_BITMAP_CACHE return m_dataCache.sync() && syncDevice(); #endif // USE_EXFAT_BITMAP_CACHE } - void dataCacheDirty() {m_dataCache.dirty();} - void dataCacheInvalidate() {m_dataCache.invalidate();} - uint8_t* dataCacheGet(uint32_t sector, uint8_t option) { - return m_dataCache.get(sector, option); + void dataCacheDirty() { m_dataCache.dirty(); } + void dataCacheInvalidate() { m_dataCache.invalidate(); } + uint8_t* dataCachePrepare(uint32_t sector, uint8_t option) { + return m_dataCache.prepare(sector, option); } - uint32_t dataCacheSector() {return m_dataCache.sector();} - bool dataCacheSync() {return m_dataCache.sync();} + uint32_t dataCacheSector() { return m_dataCache.sector(); } + bool dataCacheSync() { return m_dataCache.sync(); } //---------------------------------------------------------------------------- - uint32_t clusterMask() {return m_clusterMask;} + uint32_t clusterMask() const { return m_clusterMask; } uint32_t clusterStartSector(uint32_t cluster) { return m_clusterHeapStartSector + ((cluster - 2) << m_sectorsPerClusterShift); } uint8_t* dirCache(DirPos_t* pos, uint8_t options); int8_t dirSeek(DirPos_t* pos, uint32_t offset); - uint8_t fatGet(uint32_t cluster, uint32_t* value); + int8_t fatGet(uint32_t cluster, uint32_t* value); bool fatPut(uint32_t cluster, uint32_t value); uint32_t chainSize(uint32_t cluster); bool freeChain(uint32_t cluster); - uint16_t sectorMask() {return m_sectorMask;} - bool syncDevice() { - return m_blockDev->syncDevice(); + uint16_t sectorMask() const { return m_sectorMask; } + bool syncDevice() { return m_blockDev->syncDevice(); } + bool cacheSafeRead(uint32_t sector, uint8_t* dst) { + return m_dataCache.cacheSafeRead(sector, dst); + } + bool cacheSafeWrite(uint32_t sector, const uint8_t* src) { + return m_dataCache.cacheSafeWrite(sector, src); + } + bool cacheSafeRead(uint32_t sector, uint8_t* dst, size_t count) { + return m_dataCache.cacheSafeRead(sector, dst, count); + } + bool cacheSafeWrite(uint32_t sector, const uint8_t* src, size_t count) { + return m_dataCache.cacheSafeWrite(sector, src, count); } bool readSector(uint32_t sector, uint8_t* dst) { return m_blockDev->readSector(sector, dst); @@ -244,23 +203,15 @@ class ExFatPartition { bool writeSector(uint32_t sector, const uint8_t* src) { return m_blockDev->writeSector(sector, src); } -#if USE_MULTI_SECTOR_IO - bool readSectors(uint32_t sector, uint8_t* dst, size_t count) { - return m_blockDev->readSectors(sector, dst, count); - } - bool writeSectors(uint32_t sector, const uint8_t* src, size_t count) { - return m_blockDev->writeSectors(sector, src, count); - } -#endif // USE_MULTI_SECTOR_IO //---------------------------------------------------------------------------- - static const uint8_t m_bytesPerSectorShift = 9; - static const uint16_t m_bytesPerSector = 512; - static const uint16_t m_sectorMask = 0x1FF; + static const uint8_t m_bytesPerSectorShift = 9; + static const uint16_t m_bytesPerSector = 1 << m_bytesPerSectorShift; + static const uint16_t m_sectorMask = m_bytesPerSector - 1; //---------------------------------------------------------------------------- #if USE_EXFAT_BITMAP_CACHE - FsCache m_bitmapCache; + FsCache m_bitmapCache; #endif // USE_EXFAT_BITMAP_CACHE - FsCache m_dataCache; + FsCache m_dataCache; uint32_t m_bitmapStart; uint32_t m_fatStartSector; uint32_t m_fatLength; @@ -269,13 +220,8 @@ class ExFatPartition { uint32_t m_rootDirectoryCluster; uint32_t m_clusterMask; uint32_t m_bytesPerCluster; - BlockDevice* m_blockDev; - uint8_t m_fatType; - uint8_t m_sectorsPerClusterShift; + FsBlockDevice* m_blockDev; + uint8_t m_fatType = 0; + uint8_t m_sectorsPerClusterShift; }; - - -}; // namespace sdfat - - #endif // ExFatPartition_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp index eddc7f70..10e7f9a3 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,28 +22,25 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "ExFatVolume.h" - - -namespace sdfat { - - +#define DBG_FILE "ExFatVolume.cpp" +#include "../common/DebugMacros.h" +#include "ExFatLib.h" ExFatVolume* ExFatVolume::m_cwv = nullptr; //----------------------------------------------------------------------------- -bool ExFatVolume::chdir(const ExChar_t* path) { +bool ExFatVolume::chdir(const char* path) { ExFatFile dir; if (!dir.open(vwd(), path, O_RDONLY)) { + DBG_FAIL_MACRO; goto fail; } if (!dir.isDir()) { + DBG_FAIL_MACRO; goto fail; } - m_vwd = dir; + // m_vwd = dir; + m_vwd.copy(&dir); return true; - fail: +fail: return false; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.h index 5666f853..335cba6e 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatVolume.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,13 +24,7 @@ */ #ifndef ExFatVolume_h #define ExFatVolume_h -#include "ExFatPartition.h" #include "ExFatFile.h" - - -namespace sdfat { - - //============================================================================== /** * \class ExFatVolume @@ -38,23 +32,43 @@ namespace sdfat { */ class ExFatVolume : public ExFatPartition { public: - ExFatVolume() { + ExFatVolume() {} + /** Get file's user settable attributes. + * \param[in] path path to file. + * \return user settable file attributes for success else -1. + */ + int attrib(const char* path) { + ExFatFile tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib() : -1; + } + /** Set file's user settable attributes. + * \param[in] path path to file. + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \return true for success or false for failure. + */ + bool attrib(const char* path, uint8_t bits) { + ExFatFile tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib(bits) : false; } /** * Initialize an FatVolume object. * \param[in] dev Device block driver. * \param[in] setCwv Set current working volume if true. - * \param[in] part partition to initialize. + * \param[in] part Partition to initialize. + * \param[in] volStart Start sector of volume if part is zero. * \return true for success or false for failure. */ - bool begin(BlockDevice* dev, bool setCwv = true, uint8_t part = 1) { - if (!init(dev, part)) { + bool begin(FsBlockDevice* dev, bool setCwv = true, uint8_t part = 1, + uint32_t volStart = 0) { + if (!init(dev, part, volStart)) { return false; } if (!chdir()) { return false; } - if (setCwv) { + if (setCwv || !m_cwv) { m_cwv = this; } return true; @@ -72,11 +86,10 @@ class ExFatVolume : public ExFatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const ExChar_t* path); - /** \return current working volume. */ - static ExFatVolume* cwv() {return m_cwv;} + bool chdir(const char* path); + /** Change global working volume to this volume. */ - void chvol() {m_cwv = this;} + void chvol() { m_cwv = this; } /** * Test for the existence of a file. @@ -85,11 +98,10 @@ class ExFatVolume : public ExFatPartition { * * \return true if the file exists else false. */ - bool exists(const ExChar_t* path) { + bool exists(const char* path) { ExFatFile tmp; return tmp.open(this, path, O_RDONLY); } - //---------------------------------------------------------------------------- /** List the directory contents of the root directory. * @@ -105,9 +117,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls(print_t* pr, uint8_t flags = 0) { - return m_vwd.ls(pr, flags); - } + bool ls(print_t* pr, uint8_t flags = 0) { return m_vwd.ls(pr, flags); } /** List the contents of a directory. * * \param[in] pr Print stream for list. @@ -124,7 +134,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls(print_t* pr, const ExChar_t* path, uint8_t flags) { + bool ls(print_t* pr, const char* path, uint8_t flags) { ExFatFile dir; return dir.open(this, path, O_RDONLY) && dir.ls(pr, flags); } @@ -136,7 +146,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool mkdir(const ExChar_t* path, bool pFlag = true) { + bool mkdir(const char* path, bool pFlag = true) { ExFatFile sub; return sub.mkdir(vwd(), path, pFlag); } @@ -146,7 +156,7 @@ class ExFatVolume : public ExFatPartition { * \param[in] oflag open flags. * \return a ExFile object. */ - ExFile open(const ExChar_t* path, oflag_t oflag = O_RDONLY) { + ExFile open(const char* path, oflag_t oflag = O_RDONLY) { ExFile tmpFile; tmpFile.open(this, path, oflag); return tmpFile; @@ -157,7 +167,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool remove(const ExChar_t* path) { + bool remove(const char* path) { ExFatFile tmp; return tmp.open(this, path, O_WRONLY) && tmp.remove(); } @@ -175,7 +185,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool rename(const ExChar_t* oldPath, const ExChar_t* newPath) { + bool rename(const char* oldPath, const char* newPath) { ExFatFile file; return file.open(vwd(), oldPath, O_RDONLY) && file.rename(vwd(), newPath); } @@ -187,7 +197,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool rmdir(const ExChar_t* path) { + bool rmdir(const char* path) { ExFatFile sub; return sub.open(this, path, O_RDONLY) && sub.rmdir(); } @@ -199,7 +209,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool truncate(const ExChar_t* path, uint64_t length) { + bool truncate(const char* path, uint64_t length) { ExFatFile file; if (!file.open(this, path, O_WRONLY)) { return false; @@ -211,10 +221,8 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls() { - return ls(&Serial); - } - /** List the directory contents of the volume root to Serial. + bool ls() { return ls(&Serial); } + /** List the directory contents of the volume root to Serial. * * \param[in] flags The inclusive OR of * @@ -226,9 +234,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls(uint8_t flags) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags) { return ls(&Serial, flags); } /** List the directory contents of a directory to Serial. * * \param[in] path directory to list. @@ -243,7 +249,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool ls(const ExChar_t* path, uint8_t flags = 0) { + bool ls(const char* path, uint8_t flags = 0) { return ls(&Serial, path, flags); } #endif // ENABLE_ARDUINO_SERIAL @@ -253,18 +259,14 @@ class ExFatVolume : public ExFatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const String& path) { - return chdir(path.c_str()); - } + bool chdir(const String& path) { return chdir(path.c_str()); } /** Test for the existence of a file in a directory * * \param[in] path Path of the file to be tested for. * * \return true if the file exists else false. */ - bool exists(const String &path) { - return exists(path.c_str()); - } + bool exists(const String& path) { return exists(path.c_str()); } /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. @@ -273,7 +275,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool mkdir(const String &path, bool pFlag = true) { + bool mkdir(const String& path, bool pFlag = true) { return mkdir(path.c_str(), pFlag); } /** open a file @@ -282,7 +284,7 @@ class ExFatVolume : public ExFatPartition { * \param[in] oflag open oflag flags. * \return a ExFile object. */ - ExFile open(const String &path, oflag_t oflag = O_RDONLY) { + ExFile open(const String& path, oflag_t oflag = O_RDONLY) { return open(path.c_str(), oflag); } /** Remove a file from the volume root directory. @@ -291,9 +293,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool remove(const String& path) { - return remove(path.c_str()); - } + bool remove(const String& path) { return remove(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -319,9 +319,7 @@ class ExFatVolume : public ExFatPartition { * * \return true for success or false for failure. */ - bool rmdir(const String& path) { - return rmdir(path.c_str()); - } + bool rmdir(const String& path) { return rmdir(path.c_str()); } /** Truncate a file to a specified length. The current file position * will be at the new EOF. * @@ -334,25 +332,12 @@ class ExFatVolume : public ExFatPartition { return truncate(path.c_str(), length); } #endif // ENABLE_ARDUINO_STRING - //============================================================================ -#if USE_EXFAT_UNICODE_NAMES - // Not implemented when Unicode is selected. - bool exists(const char* path); - bool mkdir(const char* path, bool pFlag = true); - bool remove(const char* path); - bool rename(const char* oldPath, const char* newPath); - bool rmdir(const char* path); -#endif // USE_EXFAT_UNICODE_NAMES private: friend ExFatFile; - ExFatFile* vwd() {return &m_vwd;} - ExFatFile m_vwd; + static ExFatVolume* cwv() { return m_cwv; } + ExFatFile* vwd() { return &m_vwd; } static ExFatVolume* m_cwv; + ExFatFile m_vwd; }; - - -}; // namespace sdfat - - #endif // ExFatVolume_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.cpp deleted file mode 100644 index 2ecc5b5e..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/** - * Copyright (c) 2011-2020 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "upcase.h" - -#ifdef __AVR__ -#include -#define TABLE_MEM PROGMEM -#define readTable8(sym) pgm_read_byte(&sym) -#define readTable16(sym) pgm_read_word(&sym) -#else // __AVR__ -#define TABLE_MEM -#define readTable8(sym) (sym) -#define readTable16(sym) (sym) -#endif // __AVR__ - - -namespace sdfat { - - -struct map16 { - uint16_t base; - int8_t off; - uint8_t count; -}; -typedef struct map16 map16_t; - -struct pair16 { - uint16_t key; - uint16_t val; -}; -typedef struct pair16 pair16_t; -//------------------------------------------------------------------------------ -static const map16_t mapTable[] TABLE_MEM = { - {0X0061, -32, 26}, - {0X00E0, -32, 23}, - {0X00F8, -32, 7 }, - {0X0100, 1, 48}, - {0X0132, 1, 6}, - {0X0139, 1, 16}, - {0X014A, 1, 46}, - {0X0179, 1, 6}, - {0X0182, 1, 4}, - {0X01A0, 1, 6}, - {0X01B3, 1, 4}, - {0X01CD, 1, 16}, - {0X01DE, 1, 18}, - {0X01F8, 1, 40}, - {0X0222, 1, 18}, - {0X0246, 1, 10}, - {0X03AD, -37, 3}, - {0X03B1, -32, 17}, - {0X03C3, -32, 9}, - {0X03D8, 1, 24}, - {0X0430, -32, 32}, - {0X0450, -80, 16}, - {0X0460, 1, 34}, - {0X048A, 1, 54}, - {0X04C1, 1, 14}, - {0X04D0, 1, 68}, - {0X0561, -48, 38}, - {0X1E00, 1, 150}, - {0X1EA0, 1, 90}, - {0X1F00, 8, 8}, - {0X1F10, 8, 6}, - {0X1F20, 8, 8}, - {0X1F30, 8, 8}, - {0X1F40, 8, 6}, - {0X1F60, 8, 8}, - {0X1F70, 74, 2}, - {0X1F72, 86, 4}, - {0X1F76, 100, 2}, - {0X1F7A, 112, 2}, - {0X1F7C, 126, 2}, - {0X1F80, 8, 8}, - {0X1F90, 8, 8}, - {0X1FA0, 8, 8}, - {0X1FB0, 8, 2}, - {0X1FD0, 8, 2}, - {0X1FE0, 8, 2}, - {0X2170, -16, 16}, - {0X24D0, -26, 26}, - {0X2C30, -48, 47}, - {0X2C67, 1, 6}, - {0X2C80, 1, 100}, - {0X2D00, 0, 38}, - {0XFF41, -32, 26}, -}; -const size_t MAP_DIM = sizeof(mapTable)/sizeof(map16_t); -//------------------------------------------------------------------------------ -static const pair16_t lookupTable[] TABLE_MEM = { - {0X00FF, 0X0178}, - {0X0180, 0X0243}, - {0X0188, 0X0187}, - {0X018C, 0X018B}, - {0X0192, 0X0191}, - {0X0195, 0X01F6}, - {0X0199, 0X0198}, - {0X019A, 0X023D}, - {0X019E, 0X0220}, - {0X01A8, 0X01A7}, - {0X01AD, 0X01AC}, - {0X01B0, 0X01AF}, - {0X01B9, 0X01B8}, - {0X01BD, 0X01BC}, - {0X01BF, 0X01F7}, - {0X01C6, 0X01C4}, - {0X01C9, 0X01C7}, - {0X01CC, 0X01CA}, - {0X01DD, 0X018E}, - {0X01F3, 0X01F1}, - {0X01F5, 0X01F4}, - {0X023A, 0X2C65}, - {0X023C, 0X023B}, - {0X023E, 0X2C66}, - {0X0242, 0X0241}, - {0X0253, 0X0181}, - {0X0254, 0X0186}, - {0X0256, 0X0189}, - {0X0257, 0X018A}, - {0X0259, 0X018F}, - {0X025B, 0X0190}, - {0X0260, 0X0193}, - {0X0263, 0X0194}, - {0X0268, 0X0197}, - {0X0269, 0X0196}, - {0X026B, 0X2C62}, - {0X026F, 0X019C}, - {0X0272, 0X019D}, - {0X0275, 0X019F}, - {0X027D, 0X2C64}, - {0X0280, 0X01A6}, - {0X0283, 0X01A9}, - {0X0288, 0X01AE}, - {0X0289, 0X0244}, - {0X028A, 0X01B1}, - {0X028B, 0X01B2}, - {0X028C, 0X0245}, - {0X0292, 0X01B7}, - {0X037B, 0X03FD}, - {0X037C, 0X03FE}, - {0X037D, 0X03FF}, - {0X03AC, 0X0386}, - {0X03C2, 0X03A3}, - {0X03CC, 0X038C}, - {0X03CD, 0X038E}, - {0X03CE, 0X038F}, - {0X03F2, 0X03F9}, - {0X03F8, 0X03F7}, - {0X03FB, 0X03FA}, - {0X04CF, 0X04C0}, - {0X1D7D, 0X2C63}, - {0X1F51, 0X1F59}, - {0X1F53, 0X1F5B}, - {0X1F55, 0X1F5D}, - {0X1F57, 0X1F5F}, - {0X1F78, 0X1FF8}, - {0X1F79, 0X1FF9}, - {0X1FB3, 0X1FBC}, - {0X1FCC, 0X1FC3}, - {0X1FE5, 0X1FEC}, - {0X1FFC, 0X1FF3}, - {0X214E, 0X2132}, - {0X2184, 0X2183}, - {0X2C61, 0X2C60}, - {0X2C76, 0X2C75}, -}; -const size_t LOOKUP_DIM = sizeof(lookupTable)/sizeof(pair16_t); -//------------------------------------------------------------------------------ -static size_t searchPair16(const pair16_t* table, size_t size, uint16_t key) { - size_t left = 0; - size_t right = size; - size_t mid; - while (right - left > 1) { - mid = left + (right - left)/2; - if (readTable16(table[mid].key) <= key) { - left = mid; - } else { - right = mid; - } - } - return left; -} -//------------------------------------------------------------------------------ -static char toUpper(char c) { - return c - ('a' <= c && c <= 'z' ? 'a' - 'A' : 0); -} -//------------------------------------------------------------------------------ -bool exFatCmpName(const DirName_t* unicode, - const ExChar16_t* name, size_t offset, size_t n) { - uint16_t u; - for (size_t i = 0; i < n; i++) { - u = getLe16(unicode->unicode + 2*i); - if (toUpcase(name[i + offset]) != toUpcase(u)) { - return false; - } - } - return true; -} -//------------------------------------------------------------------------------ -bool exFatCmpName(const DirName_t* unicode, - const char* name, size_t offset, size_t n) { - uint16_t u; - for (size_t i = 0; i < n; i++) { - u = getLe16(unicode->unicode + 2*i); - if (u >= 0x7F || toUpper(name[i + offset]) != toUpper(u)) { - return false; - } - } - return true; -} -//------------------------------------------------------------------------------ -uint16_t exFatHashName(const ExChar16_t* name, size_t n, uint16_t hash) { - for (size_t i = 0; i < n; i++) { - uint16_t c = toUpcase(name[i]); - hash = ((hash << 15) | (hash >> 1)) + (c & 0XFF); - hash = ((hash << 15) | (hash >> 1)) + (c >> 8); - } - return hash; -} -//------------------------------------------------------------------------------ -uint16_t exFatHashName(const char* name, size_t n, uint16_t hash) { - for (size_t i = 0; i < n; i++) { - uint8_t c = name[i]; - if ('a' <= c && c <= 'z') { - c -= 'a' - 'A'; - } - hash = ((hash << 15) | (hash >> 1)) + c; - hash = ((hash << 15) | (hash >> 1)); - } - return hash; -} -//------------------------------------------------------------------------------ -uint16_t toUpcase(uint16_t chr) { - uint16_t i, first; - // Optimize for simple ASCII. - if (chr < 127) { - return chr - ('a' <= chr && chr <= 'z' ? 'a' - 'A' : 0); - } - i = searchPair16(reinterpret_cast(mapTable), MAP_DIM, chr); - first = readTable16(mapTable[i].base); - if (first <= chr && (chr - first) < readTable8(mapTable[i].count)) { - int8_t off = readTable8(mapTable[i].off); - if (off == 1) { - return chr - ((chr - first) & 1); - } - return chr + (off ? off : -0x1C60); - } - i = searchPair16(lookupTable, LOOKUP_DIM, chr); - if (readTable16(lookupTable[i].key) == chr) { - return readTable16(lookupTable[i].val); - } - return chr; -} -//------------------------------------------------------------------------------ -uint32_t upcaseChecksum(uint16_t uc, uint32_t sum) { - sum = (sum << 31) + (sum >> 1) + (uc & 0XFF); - sum = (sum << 31) + (sum >> 1) + (uc >> 8); - return sum; -} - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.h b/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.h deleted file mode 100644 index 78481744..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/upcase.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (c) 2011-2020 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef upcase_h -#define upcase_h -#include "ExFatFile.h" - - -namespace sdfat { - - -bool exFatCmpName(const DirName_t* unicode, - const char* name, size_t offset, size_t n); -bool exFatCmpName(const DirName_t* unicode, - const ExChar16_t* name, size_t offset, size_t n); -uint16_t exFatHashName(const char* name, size_t n, uint16_t hash); -uint16_t exFatHashName(const ExChar16_t* name, size_t n, uint16_t hash); -uint16_t toUpcase(uint16_t chr); -uint32_t upcaseChecksum(uint16_t unicode, uint32_t checksum); - - -}; // namespace sdfat - - -#endif // upcase_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatDbg.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatDbg.cpp index 32c4145a..47d46f92 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatDbg.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatDbg.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,14 +22,19 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "FatVolume.h" -#include "FatFile.h" +#include "FatLib.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS - - -namespace sdfat { - - +//------------------------------------------------------------------------------ +static uint16_t getLfnChar(DirLfn_t* ldir, uint8_t i) { + if (i < 5) { + return getLe16(ldir->unicode1 + 2 * i); + } else if (i < 11) { + return getLe16(ldir->unicode2 + 2 * (i - 5)); + } else if (i < 13) { + return getLe16(ldir->unicode3 + 2 * (i - 11)); + } + return 0; +} //------------------------------------------------------------------------------ static void printHex(print_t* pr, uint8_t h) { if (h < 16) { @@ -38,10 +43,22 @@ static void printHex(print_t* pr, uint8_t h) { pr->print(h, HEX); } //------------------------------------------------------------------------------ +static void printHex(print_t* pr, uint8_t w, uint16_t h) { + char buf[5]; + char* ptr = buf + sizeof(buf); + *--ptr = 0; + for (uint8_t i = 0; i < w; i++) { + char c = h & 0XF; + *--ptr = c < 10 ? c + '0' : c + 'A' - 10; + h >>= 4; + } + pr->write(ptr); +} +//------------------------------------------------------------------------------ static void printHex(print_t* pr, uint16_t val) { bool space = true; for (uint8_t i = 0; i < 4; i++) { - uint8_t h = (val >> (12 - 4*i)) & 15; + uint8_t h = (val >> (12 - 4 * i)) & 15; if (h || i == 3) { space = false; } @@ -56,7 +73,7 @@ static void printHex(print_t* pr, uint16_t val) { static void printHex(print_t* pr, uint32_t val) { bool space = true; for (uint8_t i = 0; i < 8; i++) { - uint8_t h = (val >> (28 - 4*i)) & 15; + uint8_t h = (val >> (28 - 4 * i)) & 15; if (h || i == 7) { space = false; } @@ -68,38 +85,117 @@ static void printHex(print_t* pr, uint32_t val) { } } //------------------------------------------------------------------------------ -static void printDir(print_t* pr, DirFat_t* dir) { - if (!dir->name[0] || dir->name[0] == FAT_NAME_DELETED) { - pr->println(F("Not Used")); - } else if (isFileOrSubdir(dir)) { - pr->print(F("name: ")); +template +static void printHexLn(print_t* pr, Uint val) { + printHex(pr, val); + pr->println(); +} +//------------------------------------------------------------------------------ +static bool printFatDir(print_t* pr, DirFat_t* dir) { + DirLfn_t* ldir = reinterpret_cast(dir); + if (!dir->name[0]) { + pr->println(F("Unused")); + return false; + } else if (dir->name[0] == FAT_NAME_DELETED) { + pr->println(F("Deleted")); + } else if (isFatFileOrSubdir(dir)) { + pr->print(F("SFN: ")); + for (uint8_t i = 0; i < 11; i++) { + printHex(pr, dir->name[i]); + pr->write(' '); + } + pr->write(' '); pr->write(dir->name, 11); pr->println(); - uint32_t fc = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) - | getLe16(dir->firstClusterLow); + pr->print(F("attributes: 0X")); + printHexLn(pr, dir->attributes); + pr->print(F("caseFlags: 0X")); + printHexLn(pr, dir->caseFlags); + uint32_t fc = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) | + getLe16(dir->firstClusterLow); pr->print(F("firstCluster: ")); pr->println(fc, HEX); pr->print(F("fileSize: ")); pr->println(getLe32(dir->fileSize)); - } else if (isLongName(dir)) { - pr->println(F("LFN")); + } else if (isFatLongName(dir)) { + pr->print(F("LFN: ")); + for (uint8_t i = 0; i < 13; i++) { + uint16_t c = getLfnChar(ldir, i); + if (15 < c && c < 128) { + pr->print(static_cast(c)); + } else { + pr->print("0X"); + pr->print(c, HEX); + } + pr->print(' '); + } + pr->println(); + pr->print(F("order: 0X")); + pr->println(ldir->order, HEX); + pr->print(F("attributes: 0X")); + pr->println(ldir->attributes, HEX); + pr->print(F("checksum: 0X")); + pr->println(ldir->checksum, HEX); } else { pr->println(F("Other")); } + pr->println(); + return true; } //------------------------------------------------------------------------------ -void FatPartition::dmpDirSector(print_t* pr, uint32_t sector) { - DirFat_t dir[16]; - if (!readSector(sector, reinterpret_cast(dir))) { - pr->println(F("dmpDir failed")); +void FatFile::dmpFile(print_t* pr, uint32_t pos, size_t n) { + char text[17]; + text[16] = 0; + if (n >= 0XFFF0) { + n = 0XFFF0; + } + if (!seekSet(pos)) { return; } - for (uint8_t i = 0; i < 16; i++) { - printDir(pr, dir + i); + for (size_t i = 0; i <= n; i++) { + if ((i & 15) == 0) { + if (i) { + pr->write(' '); + pr->write(text); + if (i == n) { + break; + } + } + pr->write('\r'); + pr->write('\n'); + if (i >= n) { + break; + } + printHex(pr, 4, i); + pr->write(' '); + } + int16_t h = read(); + if (h < 0) { + break; + } + pr->write(' '); + printHex(pr, 2, h); + text[i & 15] = ' ' <= h && h < 0X7F ? h : '.'; } + pr->write('\r'); + pr->write('\n'); } //------------------------------------------------------------------------------ -void FatPartition::dmpRootDir(print_t* pr) { +bool FatPartition::dmpDirSector(print_t* pr, uint32_t sector) { + DirFat_t dir[16]; + if (!cacheSafeRead(sector, reinterpret_cast(dir))) { + pr->println(F("dmpDir failed")); + return false; + } + for (uint8_t i = 0; i < 16; i++) { + if (!printFatDir(pr, dir + i)) { + return false; + } + } + return true; +} +//------------------------------------------------------------------------------ +bool FatPartition::dmpRootDir(print_t* pr, uint32_t n) { uint32_t sector; if (fatType() == 16) { sector = rootDirStart(); @@ -107,19 +203,19 @@ void FatPartition::dmpRootDir(print_t* pr) { sector = clusterStartSector(rootDirStart()); } else { pr->println(F("dmpRootDir failed")); - return; + return false; } - dmpDirSector(pr, sector); + return dmpDirSector(pr, sector + n); } //------------------------------------------------------------------------------ void FatPartition::dmpSector(print_t* pr, uint32_t sector, uint8_t bits) { - uint8_t data[512]; - if (!readSector(sector, data)) { + uint8_t data[FatPartition::m_bytesPerSector]; + if (!cacheSafeRead(sector, data)) { pr->println(F("dmpSector failed")); return; } - for (uint16_t i = 0; i < 512;) { - if (i%32 == 0) { + for (uint16_t i = 0; i < m_bytesPerSector;) { + if (i % 32 == 0) { if (i) { pr->println(); } @@ -147,15 +243,15 @@ void FatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { } pr->println(F("FAT:")); uint32_t sector = m_fatStartSector + start; - uint32_t cluster = nf*start; + uint32_t cluster = nf * start; for (uint32_t i = 0; i < count; i++) { - cache_t* pc = cacheFetchFat(sector + i, FatCache::CACHE_FOR_READ); + uint8_t* pc = fatCachePrepare(sector + i, FsCache::CACHE_FOR_READ); if (!pc) { pr->println(F("cache read failed")); return; } for (size_t k = 0; k < nf; k++) { - if (0 == cluster%8) { + if (0 == cluster % 8) { if (k) { pr->println(); } @@ -163,13 +259,10 @@ void FatPartition::dmpFat(print_t* pr, uint32_t start, uint32_t count) { } cluster++; pr->write(' '); - uint32_t v = fatType() == 32 ? pc->fat32[k] : pc->fat16[k]; + uint32_t v = fatType() == 32 ? getLe32(pc + 4 * k) : getLe16(pc + 2 * k); printHex(pr, v); } pr->println(); } } - - -}; // namespace sdfat #endif // DOXYGEN_SHOULD_SKIP_THIS diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.cpp index e51e6f34..d23efeed 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,13 +24,7 @@ */ #define DBG_FILE "FatFile.cpp" #include "../common/DebugMacros.h" -#include "FatFile.h" -#include "FatVolume.h" - - -namespace sdfat { - - +#include "FatLib.h" //------------------------------------------------------------------------------ // Add a cluster to a file. bool FatFile::addCluster() { @@ -48,9 +42,9 @@ bool FatFile::addCluster() { m_flags |= FILE_FLAG_DIR_DIRTY; return true; - fail: +fail: return false; -#else // USE_FAT_FILE_FLAG_CONTIGUOUS +#else // USE_FAT_FILE_FLAG_CONTIGUOUS m_flags |= FILE_FLAG_DIR_DIRTY; return m_vol->allocateCluster(m_curCluster, &m_curCluster); #endif // USE_FAT_FILE_FLAG_CONTIGUOUS @@ -60,14 +54,14 @@ bool FatFile::addCluster() { // Return with first sector of cluster in the cache. bool FatFile::addDirCluster() { uint32_t sector; - cache_t* pc; + uint8_t* pc; if (isRootFixed()) { DBG_FAIL_MACRO; goto fail; } // max folder size - if (m_curPosition >= 512UL*4095) { + if (m_curPosition >= 512UL * 4095) { DBG_FAIL_MACRO; goto fail; } @@ -76,39 +70,57 @@ bool FatFile::addDirCluster() { goto fail; } sector = m_vol->clusterStartSector(m_curCluster); - pc = m_vol->cacheFetchData(sector, FatCache::CACHE_RESERVE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memset(pc, 0, m_vol->bytesPerSector()); - // zero rest of clusters - for (uint8_t i = 1; i < m_vol->sectorsPerCluster(); i++) { - if (!m_vol->writeSector(sector + i, pc->data)) { + for (uint8_t i = 0; i < m_vol->sectorsPerCluster(); i++) { + pc = m_vol->dataCachePrepare(sector + i, FsCache::CACHE_RESERVE_FOR_WRITE); + if (!pc) { DBG_FAIL_MACRO; goto fail; } + memset(pc, 0, m_vol->bytesPerSector()); } // Set position to EOF to avoid inconsistent curCluster/curPosition. m_curPosition += m_vol->bytesPerCluster(); return true; - fail: +fail: + return false; +} +//------------------------------------------------------------------------------ +bool FatFile::attrib(uint8_t bits) { + if (!isFileOrSubDir() || (bits & FS_ATTRIB_USER_SETTABLE) != bits) { + DBG_FAIL_MACRO; + goto fail; + } + // Don't allow read-only to be set if the file is open for write. + if ((bits & FS_ATTRIB_READ_ONLY) && isWritable()) { + DBG_FAIL_MACRO; + goto fail; + } + m_attributes = (m_attributes & ~FS_ATTRIB_USER_SETTABLE) | bits; + // insure sync() will update dir entry + m_flags |= FILE_FLAG_DIR_DIRTY; + if (!sync()) { + DBG_FAIL_MACRO; + goto fail; + } + return true; + +fail: return false; } //------------------------------------------------------------------------------ // cache a file's directory entry // return pointer to cached entry or null for failure DirFat_t* FatFile::cacheDirEntry(uint8_t action) { - cache_t* pc; - pc = m_vol->cacheFetchData(m_dirSector, action); - if (!pc) { + uint8_t* pc = m_vol->dataCachePrepare(m_dirSector, action); + DirFat_t* dir = reinterpret_cast(pc); + if (!dir) { DBG_FAIL_MACRO; goto fail; } - return pc->dir + (m_dirIndex & 0XF); + return dir + (m_dirIndex & 0XF); - fail: +fail: return nullptr; } //------------------------------------------------------------------------------ @@ -125,7 +137,7 @@ bool FatFile::contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { DBG_FAIL_MACRO; goto fail; } - for (uint32_t c = m_firstCluster; ; c++) { + for (uint32_t c = m_firstCluster;; c++) { uint32_t next; int8_t fg = m_vol->fatGet(c, &next); if (fg < 0) { @@ -146,14 +158,14 @@ bool FatFile::contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { *bgnSector = m_vol->clusterStartSector(m_firstCluster); } if (endSector) { - *endSector = m_vol->clusterStartSector(c) - + m_vol->sectorsPerCluster() - 1; + *endSector = + m_vol->clusterStartSector(c) + m_vol->sectorsPerCluster() - 1; } return true; } } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -166,12 +178,12 @@ bool FatFile::createContiguous(const char* path, uint32_t size) { return true; } close(); - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::createContiguous(FatFile* dirFile, - const char* path, uint32_t size) { +bool FatFile::createContiguous(FatFile* dirFile, const char* path, + uint32_t size) { if (!open(dirFile, path, O_CREAT | O_EXCL | O_RDWR)) { DBG_FAIL_MACRO; goto fail; @@ -180,7 +192,7 @@ bool FatFile::createContiguous(FatFile* dirFile, return true; } close(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -192,7 +204,7 @@ bool FatFile::dirEntry(DirFat_t* dst) { goto fail; } // read entry - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); + dir = cacheDirEntry(FsCache::CACHE_FOR_READ); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -201,7 +213,7 @@ bool FatFile::dirEntry(DirFat_t* dst) { memcpy(dst, dir, sizeof(DirFat_t)); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -211,7 +223,7 @@ uint32_t FatFile::dirSize() { return 0; } if (isRootFixed()) { - return 32*m_vol->rootDirEntryCount(); + return FS_DIR_SIZE * m_vol->rootDirEntryCount(); } uint16_t n = 0; uint32_t c = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; @@ -222,7 +234,7 @@ uint32_t FatFile::dirSize() { } n += m_vol->sectorsPerCluster(); } while (fg); - return 512UL*n; + return 512UL * n; } //------------------------------------------------------------------------------ int FatFile::fgets(char* str, int num, char* delim) { @@ -253,7 +265,7 @@ int FatFile::fgets(char* str, int num, char* delim) { return n; } //------------------------------------------------------------------------------ -void FatFile::fgetpos(fspos_t* pos) { +void FatFile::fgetpos(fspos_t* pos) const { pos->position = m_curPosition; pos->cluster = m_curCluster; } @@ -276,7 +288,7 @@ bool FatFile::getAccessDate(uint16_t* pdate) { *pdate = getLe16(dir.accessDate); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -290,7 +302,7 @@ bool FatFile::getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(dir.createTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -304,12 +316,14 @@ bool FatFile::getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { *ptime = getLe16(dir.modifyTime); return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ +bool FatFile::isBusy() { return m_vol->isBusy(); } +//------------------------------------------------------------------------------ bool FatFile::mkdir(FatFile* parent, const char* path, bool pFlag) { - fname_t fname; + FatName_t fname; FatFile tmpDir; if (isOpen() || !parent->isDir()) { @@ -340,21 +354,22 @@ bool FatFile::mkdir(FatFile* parent, const char* path, bool pFlag) { goto fail; } } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); parent = &tmpDir; close(); } return mkdir(parent, &fname); - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::mkdir(FatFile* parent, fname_t* fname) { +bool FatFile::mkdir(FatFile* parent, FatName_t* fname) { uint32_t sector; DirFat_t dot; DirFat_t* dir; - cache_t* pc; + uint8_t* pc; if (!parent->isDir()) { DBG_FAIL_MACRO; @@ -383,13 +398,13 @@ bool FatFile::mkdir(FatFile* parent, fname_t* fname) { goto fail; } // cache entry - should already be in cache due to sync() call - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); + dir = cacheDirEntry(FsCache::CACHE_FOR_WRITE); if (!dir) { DBG_FAIL_MACRO; goto fail; } - // change directory entry attribute - dir->attributes = FAT_ATTRIB_DIRECTORY; + // change directory entry attribute + dir->attributes = FS_ATTRIB_DIRECTORY; // make entry for '.' memcpy(&dot, dir, sizeof(dot)); @@ -400,23 +415,24 @@ bool FatFile::mkdir(FatFile* parent, fname_t* fname) { // cache sector for '.' and '..' sector = m_vol->clusterStartSector(m_firstCluster); - pc = m_vol->cacheFetchData(sector, FatCache::CACHE_FOR_WRITE); - if (!pc) { + pc = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_WRITE); + dir = reinterpret_cast(pc); + if (!dir) { DBG_FAIL_MACRO; goto fail; } // copy '.' to sector - memcpy(&pc->dir[0], &dot, sizeof(dot)); + memcpy(&dir[0], &dot, sizeof(dot)); // make entry for '..' dot.name[1] = '.'; setLe16(dot.firstClusterLow, parent->m_firstCluster & 0XFFFF); setLe16(dot.firstClusterHigh, parent->m_firstCluster >> 16); // copy '..' to sector - memcpy(&pc->dir[1], &dot, sizeof(dot)); + memcpy(&dir[1], &dot, sizeof(dot)); // write first sector return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -430,7 +446,7 @@ bool FatFile::open(FatVolume* vol, const char* path, oflag_t oflag) { //------------------------------------------------------------------------------ bool FatFile::open(FatFile* dirFile, const char* path, oflag_t oflag) { FatFile tmpDir; - fname_t fname; + FatName_t fname; // error if already open if (isOpen() || !dirFile->isDir()) { @@ -459,30 +475,32 @@ bool FatFile::open(FatFile* dirFile, const char* path, oflag_t oflag) { break; } if (!open(dirFile, &fname, O_RDONLY)) { - DBG_FAIL_MACRO; + DBG_WARN_MACRO; goto fail; } - tmpDir = *this; + // tmpDir = *this; + tmpDir.copy(this); dirFile = &tmpDir; close(); } return open(dirFile, &fname, oflag); - fail: +fail: return false; } //------------------------------------------------------------------------------ +bool FatFile::open(uint16_t index, oflag_t oflag) { + FatVolume* vol = FatVolume::cwv(); + return vol ? open(vol->vwd(), index, oflag) : false; +} +//------------------------------------------------------------------------------ bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { if (index) { // Find start of LFN. DirLfn_t* ldir; uint8_t n = index < 20 ? index : 20; for (uint8_t i = 1; i <= n; i++) { - if (!dirFile->seekSet(32UL*(index - i))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile->readDirCache()); + ldir = reinterpret_cast(dirFile->cacheDir(index - i)); if (!ldir) { DBG_FAIL_MACRO; goto fail; @@ -491,7 +509,7 @@ bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { break; } if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { - if (!dirFile->seekSet(32UL*(index - i))) { + if (!dirFile->seekSet(32UL * (index - i))) { DBG_FAIL_MACRO; goto fail; } @@ -512,7 +530,7 @@ bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -529,12 +547,12 @@ bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, dir += 0XF & dirIndex; // Must be file or subdirectory. - if (!isFileOrSubdir(dir)) { + if (!isFatFileOrSubdir(dir)) { DBG_FAIL_MACRO; goto fail; } - m_attributes = dir->attributes & FILE_ATTR_COPY; - if (isFileDir(dir)) { + m_attributes = dir->attributes & FS_ATTRIB_COPY; + if (isFatFile(dir)) { m_attributes |= FILE_ATTR_FILE; } m_lfnOrd = lfnOrd; @@ -566,21 +584,21 @@ bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, DBG_FAIL_MACRO; goto fail; } + m_attributes |= FS_ATTRIB_ARCHIVE; } m_flags |= (oflag & O_APPEND ? FILE_FLAG_APPEND : 0); m_dirSector = m_vol->cacheSectorNumber(); // copy first cluster number for directory fields - firstCluster = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) - | getLe16(dir->firstClusterLow); + firstCluster = ((uint32_t)getLe16(dir->firstClusterHigh) << 16) | + getLe16(dir->firstClusterLow); if (oflag & O_TRUNC) { if (firstCluster && !m_vol->freeChain(firstCluster)) { DBG_FAIL_MACRO; goto fail; } - // need to update directory entry m_flags |= FILE_FLAG_DIR_DIRTY; } else { @@ -593,12 +611,38 @@ bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, } return true; - fail: +fail: m_attributes = FILE_ATTR_CLOSED; m_flags = 0; return false; } //------------------------------------------------------------------------------ +bool FatFile::openCluster(FatFile* file) { + if (file->m_dirCluster == 0) { + return openRoot(file->m_vol); + } + memset(this, 0, sizeof(FatFile)); + m_attributes = FILE_ATTR_SUBDIR; + m_flags = FILE_FLAG_READ; + m_vol = file->m_vol; + m_firstCluster = file->m_dirCluster; + return true; +} +//------------------------------------------------------------------------------ +bool FatFile::openCwd() { + if (isOpen() || !FatVolume::cwv()) { + DBG_FAIL_MACRO; + goto fail; + } + // *this = *FatVolume::cwv()->vwd(); + this->copy(FatVolume::cwv()->vwd()); + rewind(); + return true; + +fail: + return false; +} +//------------------------------------------------------------------------------ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { uint8_t checksum = 0; DirLfn_t* ldir; @@ -612,7 +656,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { } while (1) { // read entry into cache - index = dirFile->curPosition()/32; + index = dirFile->curPosition() / FS_DIR_SIZE; DirFat_t* dir = dirFile->readDirCache(); if (!dir) { if (dirFile->getError()) { @@ -627,7 +671,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { // skip empty slot or '.' or '..' if (dir->name[0] == '.' || dir->name[0] == FAT_NAME_DELETED) { lfnOrd = 0; - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { if (lfnOrd && checksum != lfnChecksum(dir->name)) { DBG_FAIL_MACRO; goto fail; @@ -637,7 +681,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { goto fail; } return true; - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { ldir = reinterpret_cast(dir); if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { lfnOrd = ldir->order & 0X1F; @@ -648,7 +692,7 @@ bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { } } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -663,28 +707,37 @@ bool FatFile::openRoot(FatVolume* vol) { m_vol = vol; switch (vol->fatType()) { #if FAT12_SUPPORT - case 12: + case 12: #endif // FAT12_SUPPORT - case 16: - m_attributes = FILE_ATTR_ROOT_FIXED; - break; + case 16: + m_attributes = FILE_ATTR_ROOT_FIXED; + break; - case 32: - m_attributes = FILE_ATTR_ROOT32; - break; + case 32: + m_attributes = FILE_ATTR_ROOT32; + break; - default: - DBG_FAIL_MACRO; - goto fail; + default: + DBG_FAIL_MACRO; + goto fail; } // read only m_flags = FILE_FLAG_READ; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ +int FatFile::peek() { + uint32_t saveCurPosition = m_curPosition; + uint32_t saveCurCluster = m_curCluster; + int c = read(); + m_curPosition = saveCurPosition; + m_curCluster = saveCurCluster; + return c; +} +//------------------------------------------------------------------------------ bool FatFile::preAllocate(uint32_t length) { uint32_t need; if (!length || !isWritable() || m_firstCluster) { @@ -702,25 +755,16 @@ bool FatFile::preAllocate(uint32_t length) { #if USE_FAT_FILE_FLAG_CONTIGUOUS // Mark contiguous and insure sync() will update dir entry m_flags |= FILE_FLAG_PREALLOCATE | FILE_FLAG_CONTIGUOUS | FILE_FLAG_DIR_DIRTY; -#else // USE_FAT_FILE_FLAG_CONTIGUOUS +#else // USE_FAT_FILE_FLAG_CONTIGUOUS // insure sync() will update dir entry m_flags |= FILE_FLAG_DIR_DIRTY; #endif // USE_FAT_FILE_FLAG_CONTIGUOUS return sync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ -int FatFile::peek() { - uint32_t curPosition = m_curPosition; - uint32_t curCluster = m_curCluster; - int c = read(); - m_curPosition = curPosition; - m_curCluster = curCluster; - return c; -} -//------------------------------------------------------------------------------ int FatFile::read(void* buf, size_t nbyte) { int8_t fg; uint8_t sectorOfCluster = 0; @@ -728,8 +772,7 @@ int FatFile::read(void* buf, size_t nbyte) { uint16_t offset; size_t toRead; uint32_t sector; // raw device sector number - cache_t* pc; - + uint8_t* pc; // error if not open for read if (!isReadable()) { DBG_FAIL_MACRO; @@ -742,7 +785,8 @@ int FatFile::read(void* buf, size_t nbyte) { nbyte = tmp32; } } else if (isRootFixed()) { - uint16_t tmp16 = 32*m_vol->m_rootDirEntryCount - (uint16_t)m_curPosition; + uint16_t tmp16 = + FS_DIR_SIZE * m_vol->m_rootDirEntryCount - (uint16_t)m_curPosition; if (nbyte > tmp16) { nbyte = tmp16; } @@ -752,8 +796,8 @@ int FatFile::read(void* buf, size_t nbyte) { size_t n; offset = m_curPosition & m_vol->sectorMask(); // offset in sector if (isRootFixed()) { - sector = m_vol->rootDirStart() - + (m_curPosition >> m_vol->bytesPerSectorShift()); + sector = m_vol->rootDirStart() + + (m_curPosition >> m_vol->bytesPerSectorShift()); } else { sectorOfCluster = m_vol->sectorOfCluster(m_curPosition); if (offset == 0 && sectorOfCluster == 0) { @@ -783,23 +827,23 @@ int FatFile::read(void* buf, size_t nbyte) { } sector = m_vol->clusterStartSector(m_curCluster) + sectorOfCluster; } - if (offset != 0 || toRead < m_vol->bytesPerSector() - || sector == m_vol->cacheSectorNumber()) { + if (offset != 0 || toRead < m_vol->bytesPerSector() || + sector == m_vol->cacheSectorNumber()) { // amount to be read from current sector n = m_vol->bytesPerSector() - offset; if (n > toRead) { n = toRead; } // read sector to cache and copy data to caller - pc = m_vol->cacheFetchData(sector, FatCache::CACHE_FOR_READ); + pc = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; goto fail; } - uint8_t* src = pc->data + offset; + uint8_t* src = pc + offset; memcpy(dst, src, n); #if USE_MULTI_SECTOR_IO - } else if (toRead >= 2*m_vol->bytesPerSector()) { + } else if (toRead >= 2 * m_vol->bytesPerSector()) { uint32_t ns = toRead >> m_vol->bytesPerSectorShift(); if (!isRootFixed()) { uint32_t mb = m_vol->sectorsPerCluster() - sectorOfCluster; @@ -808,16 +852,7 @@ int FatFile::read(void* buf, size_t nbyte) { } } n = ns << m_vol->bytesPerSectorShift(); - // Check for cache sector in read range. - if (sector <= m_vol->cacheSectorNumber() - && m_vol->cacheSectorNumber() < (sector + ns)) { - // Flush cache if cache sector is in the range. - if (!m_vol->cacheSyncData()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (!m_vol->readSectors(sector, dst, ns)) { + if (!m_vol->cacheSafeRead(sector, dst, ns)) { DBG_FAIL_MACRO; goto fail; } @@ -825,7 +860,7 @@ int FatFile::read(void* buf, size_t nbyte) { } else { // read single sector n = m_vol->bytesPerSector(); - if (!m_vol->readSector(sector, dst)) { + if (!m_vol->cacheSafeRead(sector, dst)) { DBG_FAIL_MACRO; goto fail; } @@ -836,20 +871,19 @@ int FatFile::read(void* buf, size_t nbyte) { } return nbyte - toRead; - fail: +fail: m_error |= READ_ERROR; return -1; } //------------------------------------------------------------------------------ int8_t FatFile::readDir(DirFat_t* dir) { - int16_t n; // if not a directory file or miss-positioned return an error if (!isDir() || (0X1F & m_curPosition)) { return -1; } while (1) { - n = read(dir, sizeof(DirFat_t)); + int16_t n = read(dir, sizeof(DirFat_t)); if (n != sizeof(DirFat_t)) { return n == 0 ? 0 : -1; } @@ -862,33 +896,34 @@ int8_t FatFile::readDir(DirFat_t* dir) { continue; } // return if normal file or subdirectory - if (isFileOrSubdir(dir)) { + if (isFatFileOrSubdir(dir)) { return n; } } } //------------------------------------------------------------------------------ -// Read next directory entry into the cache -// Assumes file is correctly positioned +// Read next directory entry into the cache. +// Assumes file is correctly positioned. DirFat_t* FatFile::readDirCache(bool skipReadOk) { + DBG_HALT_IF(m_curPosition & 0X1F); uint8_t i = (m_curPosition >> 5) & 0XF; if (i == 0 || !skipReadOk) { int8_t n = read(&n, 1); - if (n != 1) { + if (n != 1) { if (n != 0) { DBG_FAIL_MACRO; } goto fail; } - m_curPosition += 31; + m_curPosition += FS_DIR_SIZE - 1; } else { - m_curPosition += 32; + m_curPosition += FS_DIR_SIZE; } // return pointer to entry return reinterpret_cast(m_vol->cacheAddress()) + i; - fail: +fail: return nullptr; } //------------------------------------------------------------------------------ @@ -900,7 +935,7 @@ bool FatFile::remove(const char* path) { } return file.remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -913,7 +948,7 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { uint32_t dirCluster = 0; FatFile file; FatFile oldFile; - cache_t* pc; + uint8_t* pc; DirFat_t* dir; // Must be an open file or subdirectory. @@ -933,8 +968,9 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { } // sync() and cache directory entry sync(); - oldFile = *this; - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); + // oldFile = *this; + oldFile.copy(this); + dir = cacheDirEntry(FsCache::CACHE_FOR_READ); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -967,7 +1003,7 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { file.m_flags = 0; // cache new directory entry - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); + dir = cacheDirEntry(FsCache::CACHE_FOR_WRITE); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -981,12 +1017,13 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { if (dirCluster) { // get new dot dot uint32_t sector = m_vol->clusterStartSector(dirCluster); - pc = m_vol->cacheFetchData(sector, FatCache::CACHE_FOR_READ); - if (!pc) { + pc = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_READ); + dir = reinterpret_cast(pc); + if (!dir) { DBG_FAIL_MACRO; goto fail; } - memcpy(&entry, &pc->dir[1], sizeof(entry)); + memcpy(&entry, &dir[1], sizeof(entry)); // free unused cluster if (!m_vol->freeChain(dirCluster)) { @@ -995,12 +1032,13 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { } // store new dot dot sector = m_vol->clusterStartSector(m_firstCluster); - pc = m_vol->cacheFetchData(sector, FatCache::CACHE_FOR_WRITE); - if (!pc) { + pc = m_vol->dataCachePrepare(sector, FsCache::CACHE_FOR_WRITE); + dir = reinterpret_cast(pc); + if (!dir) { DBG_FAIL_MACRO; goto fail; } - memcpy(&pc->dir[1], &entry, sizeof(entry)); + memcpy(&dir[1], &entry, sizeof(entry)); } // Remove old directory entry; oldFile.m_firstCluster = 0; @@ -1012,7 +1050,7 @@ bool FatFile::rename(FatFile* dirFile, const char* newPath) { } return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1044,7 +1082,7 @@ bool FatFile::rmdir() { continue; } // error not empty - if (isFileOrSubdir(dir)) { + if (isFatFileOrSubdir(dir)) { DBG_FAIL_MACRO; goto fail; } @@ -1054,7 +1092,7 @@ bool FatFile::rmdir() { m_flags |= FILE_FLAG_WRITE; return remove(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1068,7 +1106,7 @@ bool FatFile::rmRfStar() { rewind(); while (1) { // remember position - index = m_curPosition/32; + index = m_curPosition / FS_DIR_SIZE; DirFat_t* dir = readDirCache(); if (!dir) { @@ -1090,7 +1128,7 @@ bool FatFile::rmRfStar() { } // skip if part of long file name or volume label in root - if (!isFileOrSubdir(dir)) { + if (!isFatFileOrSubdir(dir)) { continue; } @@ -1113,8 +1151,8 @@ bool FatFile::rmRfStar() { } } // position to next entry if required - if (m_curPosition != (32UL*(index + 1))) { - if (!seekSet(32UL*(index + 1))) { + if (m_curPosition != (32UL * (index + 1))) { + if (!seekSet(32UL * (index + 1))) { DBG_FAIL_MACRO; goto fail; } @@ -1129,7 +1167,7 @@ bool FatFile::rmRfStar() { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1157,7 +1195,7 @@ bool FatFile::seekSet(uint32_t pos) { goto fail; } } else if (isRootFixed()) { - if (pos <= 32*m_vol->rootDirEntryCount()) { + if (pos <= FS_DIR_SIZE * m_vol->rootDirEntryCount()) { goto done; } DBG_FAIL_MACRO; @@ -1188,12 +1226,12 @@ bool FatFile::seekSet(uint32_t pos) { } } - done: +done: m_curPosition = pos; m_flags &= ~FILE_FLAG_PREALLOCATE; return true; - fail: +fail: m_curCluster = tmp; return false; } @@ -1205,17 +1243,17 @@ bool FatFile::sync() { return true; } if (m_flags & FILE_FLAG_DIR_DIRTY) { - DirFat_t* dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); + DirFat_t* dir = cacheDirEntry(FsCache::CACHE_FOR_WRITE); // check for deleted by another open file object if (!dir || dir->name[0] == FAT_NAME_DELETED) { DBG_FAIL_MACRO; goto fail; } + dir->attributes = m_attributes & FS_ATTRIB_COPY; // do not set filesize for dir files if (isFile()) { setLe32(dir->fileSize, m_fileSize); } - // update first cluster fields setLe16(dir->firstClusterLow, m_firstCluster & 0XFFFF); setLe16(dir->firstClusterHigh, m_firstCluster >> 16); @@ -1235,27 +1273,21 @@ bool FatFile::sync() { } DBG_FAIL_MACRO; - fail: +fail: m_error |= WRITE_ERROR; return false; } //------------------------------------------------------------------------------ bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { + uint8_t day, uint8_t hour, uint8_t minute, + uint8_t second) { uint16_t dirDate; uint16_t dirTime; DirFat_t* dir; - if (!isFile() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { + if (!isFileOrSubDir() || year < 1980 || year > 2107 || month < 1 || + month > 12 || day < 1 || day > 31 || hour > 23 || minute > 59 || + second > 59) { DBG_FAIL_MACRO; goto fail; } @@ -1264,7 +1296,7 @@ bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, DBG_FAIL_MACRO; goto fail; } - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); + dir = cacheDirEntry(FsCache::CACHE_FOR_WRITE); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -1286,7 +1318,7 @@ bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, } return m_vol->cacheSync(); - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -1298,7 +1330,7 @@ bool FatFile::truncate() { goto fail; } if (m_firstCluster == 0) { - return true; + return true; } if (m_curCluster) { toFree = 0; @@ -1328,21 +1360,16 @@ bool FatFile::truncate() { // need to update directory entry m_flags |= FILE_FLAG_DIR_DIRTY; + return sync(); - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - - fail: +fail: return false; } //------------------------------------------------------------------------------ size_t FatFile::write(const void* buf, size_t nbyte) { // convert void* to uint8_t* - must be before goto statements const uint8_t* src = reinterpret_cast(buf); - cache_t* pc; + uint8_t* pc; uint8_t cacheOption; // number of bytes left to write - must be before goto statements size_t nToWrite = nbyte; @@ -1382,7 +1409,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { goto fail; } } -#else // USE_FAT_FILE_FLAG_CONTIGUOUS +#else // USE_FAT_FILE_FLAG_CONTIGUOUS int8_t fg = m_vol->fatGet(m_curCluster, &m_curCluster); if (fg < 0) { DBG_FAIL_MACRO; @@ -1410,8 +1437,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } } // sector for data write - uint32_t sector = m_vol->clusterStartSector(m_curCluster) - + sectorOfCluster; + uint32_t sector = m_vol->clusterStartSector(m_curCluster) + sectorOfCluster; if (sectorOffset != 0 || nToWrite < m_vol->bytesPerSector()) { // partial sector - must use cache @@ -1423,19 +1449,19 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } if (sectorOffset == 0 && - (m_curPosition >= m_fileSize || m_flags & FILE_FLAG_PREALLOCATE)) { + (m_curPosition >= m_fileSize || m_flags & FILE_FLAG_PREALLOCATE)) { // start of new sector don't need to read into cache - cacheOption = FatCache::CACHE_RESERVE_FOR_WRITE; + cacheOption = FsCache::CACHE_RESERVE_FOR_WRITE; } else { // rewrite part of sector - cacheOption = FatCache::CACHE_FOR_WRITE; + cacheOption = FsCache::CACHE_FOR_WRITE; } - pc = m_vol->cacheFetchData(sector, cacheOption); + pc = m_vol->dataCachePrepare(sector, cacheOption); if (!pc) { DBG_FAIL_MACRO; goto fail; } - uint8_t* dst = pc->data + sectorOffset; + uint8_t* dst = pc + sectorOffset; memcpy(dst, src, n); if (m_vol->bytesPerSector() == (n + sectorOffset)) { // Force write if sector is full - improves large writes. @@ -1445,7 +1471,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } } #if USE_MULTI_SECTOR_IO - } else if (nToWrite >= 2*m_vol->bytesPerSector()) { + } else if (nToWrite >= 2 * m_vol->bytesPerSector()) { // use multiple sector write command uint32_t maxSectors = m_vol->sectorsPerCluster() - sectorOfCluster; uint32_t nSector = nToWrite >> m_vol->bytesPerSectorShift(); @@ -1453,13 +1479,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { nSector = maxSectors; } n = nSector << m_vol->bytesPerSectorShift(); - // Check for cache sector in write range. - if (sector <= m_vol->cacheSectorNumber() - && m_vol->cacheSectorNumber() < (sector + nSector)) { - // Invalidate cache if cache sector is in the range. - m_vol->cacheInvalidate(); - } - if (!m_vol->writeSectors(sector, src, nSector)) { + if (!m_vol->cacheSafeWrite(sector, src, nSector)) { DBG_FAIL_MACRO; goto fail; } @@ -1467,10 +1487,7 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } else { // use single sector write command n = m_vol->bytesPerSector(); - if (m_vol->cacheSectorNumber() == sector) { - m_vol->cacheInvalidate(); - } - if (!m_vol->writeSector(sector, src)) { + if (!m_vol->cacheSafeWrite(sector, src)) { DBG_FAIL_MACRO; goto fail; } @@ -1489,32 +1506,8 @@ size_t FatFile::write(const void* buf, size_t nbyte) { } return nbyte; - fail: +fail: // return for write error m_error |= WRITE_ERROR; - return -1; + return 0; } - -//------------------------------------------------------- -// EFP3 - Match upstream Arduino hack -int FatFile::availableSpaceForWrite() { - // error if not a normal file or is read-only - if (!isWritable() || m_vol->m_blockDev->isBusy()) { - return 0; - } - // seek to end of file if append flag - if ((m_flags & FILE_FLAG_APPEND)) { - if (!seekSet(m_fileSize)) { - return 0; - } - } - uint8_t sectorOfCluster = m_vol->sectorOfCluster(m_curPosition); - uint16_t sectorOffset = m_curPosition & m_vol->sectorMask(); - if (sectorOfCluster == 0 && sectorOffset == 0) { - return 0; - } - return m_vol->bytesPerSector() - sectorOffset - 1; -} -//------------------------------------------------------- - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.h index b87b1983..62977559 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFile.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,53 +28,16 @@ * \file * \brief FatFile class */ -#include -#include #include -#include "FatLibConfig.h" +#include +#include + #include "../common/FmtNumber.h" #include "../common/FsApiConstants.h" #include "../common/FsDateTime.h" -#include "../common/FsStructs.h" +#include "../common/FsName.h" #include "FatPartition.h" - - -namespace sdfat { - - class FatVolume; - - -}; // namespace sdfat - - -//------------------------------------------------------------------------------ -// Stuff to store strings in AVR flash. -#ifdef __AVR__ -#include -#else // __AVR__ -#ifndef PSTR -/** store literal string in flash for ARM */ -#define PSTR(x) (x) -#endif // PSTR -#ifndef pgm_read_byte -/** read 8-bits from flash for ARM */ -#define pgm_read_byte(addr) (*(const unsigned char*)(addr)) -#endif // pgm_read_byte -#ifndef pgm_read_word -/** read 16-bits from flash for ARM */ -#define pgm_read_word(addr) (*(const uint16_t*)(addr)) -#endif // pgm_read_word -#ifndef PROGMEM -/** store in flash for ARM */ -#define PROGMEM -#endif // PROGMEM -#endif // __AVR__ - - -namespace sdfat { - - //------------------------------------------------------------------------------ /** * \struct FatPos_t @@ -85,35 +48,54 @@ struct FatPos_t { uint32_t position; /** cluster for position */ uint32_t cluster; - FatPos_t() : position(0), cluster(0) {} }; //------------------------------------------------------------------------------ /** Expression for path name separator. */ #define isDirSeparator(c) ((c) == '/') //------------------------------------------------------------------------------ /** - * \struct fname_t - * \brief Internal type for Short File Name - do not use in user apps. + * \class FatLfn_t + * \brief Internal type for Long File Name - do not use in user apps. */ -struct fname_t { + +class FatLfn_t : public FsName { + public: + /** UTF-16 length of Long File Name */ + size_t len; + /** Position for sequence number. */ + uint8_t seqPos; /** Flags for base and extension character case and LFN. */ uint8_t flags; - /** length of Long File Name */ - size_t len; - /** Long File Name start. */ - const char* lfn; - /** position for sequence number */ - uint8_t seqPos; /** Short File Name */ uint8_t sfn[11]; }; +/** + * \class FatSfn_t + * \brief Internal type for Short 8.3 File Name - do not use in user apps. + */ +class FatSfn_t { + public: + /** Flags for base and extension character case and LFN. */ + uint8_t flags; + /** Short File Name */ + uint8_t sfn[11]; +}; + +#if USE_LONG_FILE_NAMES +/** Internal class for file names */ +typedef FatLfn_t FatName_t; +#else // USE_LONG_FILE_NAMES +/** Internal class for file names */ +typedef FatSfn_t FatName_t; +#endif // USE_LONG_FILE_NAMES + /** Derived from a LFN with loss or conversion of characters. */ const uint8_t FNAME_FLAG_LOST_CHARS = 0X01; /** Base-name or extension has mixed case. */ const uint8_t FNAME_FLAG_MIXED_CASE = 0X02; /** LFN entries are required for file name. */ const uint8_t FNAME_FLAG_NEED_LFN = - FNAME_FLAG_LOST_CHARS | FNAME_FLAG_MIXED_CASE; + FNAME_FLAG_LOST_CHARS | FNAME_FLAG_MIXED_CASE; /** Filename base-name is all lower case */ const uint8_t FNAME_FLAG_LC_BASE = FAT_CASE_LC_BASE; /** Filename extension is all lower case. */ @@ -126,8 +108,7 @@ const uint8_t FNAME_FLAG_LC_EXT = FAT_CASE_LC_EXT; class FatFile { public: /** Create an instance. */ - FatFile() : m_attributes(FILE_ATTR_CLOSED), m_error(0), m_flags(0) {} - + FatFile() {} /** Create a file object and open it in the current working directory. * * \param[in] path A path for a file to be opened. @@ -135,37 +116,233 @@ class FatFile { * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive * OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t). */ - FatFile(const char* path, oflag_t oflag) { - m_attributes = FILE_ATTR_CLOSED; - m_error = 0; - open(path, oflag); + FatFile(const char* path, oflag_t oflag) { open(path, oflag); } + + /** Copy from to this. + * \param[in] from Source file. + */ + void copy(const FatFile* from) { + if (from != this) { +#if FILE_COPY_CONSTRUCTOR_SELECT + *this = *from; +#else // FILE_COPY_CONSTRUCTOR_SELECT + memcpy(this, from, sizeof(FatFile)); +#endif // FILE_COPY_CONSTRUCTOR_SELECT + } } + /** move from to this. + * \param[in] from Source file. + */ + void move(FatFile* from) { + if (from != this) { + copy(from); + from->m_attributes = FILE_ATTR_CLOSED; + } + } + +#if FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PUBLIC + /** Copy constructor. + * \param[in] from Move from file. + * + */ + FatFile(const FatFile& from) = default; + /** Copy assignment operator. + * \param[in] from Move from file. + * \return Copied file. + */ + FatFile& operator=(const FatFile& from) = default; +#elif FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PRIVATE + + private: + FatFile(const FatFile& from) = default; + FatFile& operator=(const FatFile& from) = default; + + public: +#else // FILE_COPY_CONSTRUCTOR_SELECT + FatFile(const FatFile& from) = delete; + FatFile& operator=(const FatFile& from) = delete; +#endif // FILE_COPY_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT + /** Move constructor. + * \param[in] from Move from file. + */ + FatFile(FatFile&& from) { move(&from); } + /** Move assignment operator. + * \param[in] from Move from file. + * \return Moved file. + */ + FatFile& operator=(FatFile&& from) { + move(&from); + return *this; + } +#else // FILE_MOVE_CONSTRUCTOR_SELECT + FatFile(FatFile&& from) = delete; + FatFile& operator=(FatFile&& from) = delete; +#endif + /** Destructor */ #if DESTRUCTOR_CLOSES_FILE ~FatFile() { if (isOpen()) { close(); } } +#else // DESTRUCTOR_CLOSES_FILE + ~FatFile() = default; #endif // DESTRUCTOR_CLOSES_FILE + /** The parenthesis operator. * * \return true if a file is open. */ - operator bool() { - return isOpen(); + operator bool() const { return isOpen(); } + /** + * \return user settable file attributes for success else -1. + */ + int attrib() { + return isFileOrSubDir() ? m_attributes & FS_ATTRIB_USER_SETTABLE : -1; + } + /** Set file attributes + * + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \note attrib() will fail for set read-only if the file is open for write. + * \return true for success or false for failure. + */ + bool attrib(uint8_t bits); + /** \return The number of bytes available from the current position + * to EOF for normal files. INT_MAX is returned for very large files. + * + * available32() is recomended for very large files. + * + * Zero is returned for directory files. + * + */ + int available() const { + uint32_t n = available32(); + return n > INT_MAX ? INT_MAX : n; + } + /** \return The number of bytes available from the current position + * to EOF for normal files. Zero is returned for directory files. + */ + uint32_t available32() const { + return isFile() ? fileSize() - curPosition() : 0; } - /** Arduino name for sync() */ - void flush() {sync();} /** Clear all error bits. */ - void clearError() { - m_error = 0; - } + void clearError() { m_error = 0; } /** Set writeError to zero */ - void clearWriteError() { - m_error &= ~WRITE_ERROR; - } + void clearWriteError() { m_error &= ~WRITE_ERROR; } + /** Close a file and force cached data and directory information + * to be written to the storage device. + * + * \return true for success or false for failure. + */ + bool close(); + /** Check for contiguous file and return its raw sector range. + * + * \param[out] bgnSector the first sector address for the file. + * \param[out] endSector the last sector address for the file. + * + * Set the contiguous flag if the file is contiguous. + * The parameters may be nullptr to only set the flag. + * \return true for success or false for failure. + */ + bool contiguousRange(uint32_t* bgnSector, uint32_t* endSector); + /** Create and open a new contiguous file of a specified size. + * + * \param[in] dirFile The directory where the file will be created. + * \param[in] path A path with a valid file name. + * \param[in] size The desired file size. + * + * \return true for success or false for failure. + */ + bool createContiguous(FatFile* dirFile, const char* path, uint32_t size); + /** Create and open a new contiguous file of a specified size. + * + * \param[in] path A path with a valid file name. + * \param[in] size The desired file size. + * + * \return true for success or false for failure. + */ + bool createContiguous(const char* path, uint32_t size); + /** \return The current cluster number for a file or directory. */ + uint32_t curCluster() const { return m_curCluster; } + + /** \return The current position for a file or directory. */ + uint32_t curPosition() const { return m_curPosition; } + /** Return a file's directory entry. + * + * \param[out] dir Location for return of the file's directory entry. + * + * \return true for success or false for failure. + */ + bool dirEntry(DirFat_t* dir); /** \return Directory entry index. */ - uint16_t dirIndex() {return m_dirIndex;} + uint16_t dirIndex() const { return m_dirIndex; } + /** \return The number of bytes allocated to a directory or zero + * if an error occurs. + */ + uint32_t dirSize(); + /** Dump file in Hex + * \param[in] pr Print stream for list. + * \param[in] pos Start position in file. + * \param[in] n number of locations to dump. + */ + void dmpFile(print_t* pr, uint32_t pos, size_t n); + /** Test for the existence of a file in a directory + * + * \param[in] path Path of the file to be tested for. + * + * The calling instance must be an open directory file. + * + * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory + * dirFile. + * + * \return True if the file exists. + */ + bool exists(const char* path) { + FatFile file; + return file.open(this, path, O_RDONLY); + } + /** get position for streams + * \param[out] pos struct to receive position + */ + void fgetpos(fspos_t* pos) const; + /** + * Get a string from a file. + * + * fgets() reads bytes from a file into the array pointed to by \a str, until + * \a num - 1 bytes are read, or a delimiter is read and transferred to + * \a str, or end-of-file is encountered. The string is then terminated + * with a null byte. + * + * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' + * terminates the string for Windows text files which use CRLF for newline. + * + * \param[out] str Pointer to the array where the string is stored. + * \param[in] num Maximum number of characters to be read + * (including the final null byte). Usually the length + * of the array \a str is used. + * \param[in] delim Optional set of delimiters. The default is "\n". + * + * \return For success fgets() returns the length of the string in \a str. + * If no data is read, fgets() returns zero for EOF or -1 if an error + * occurred. + */ + int fgets(char* str, int num, char* delim = nullptr); + /** \return The total number of bytes in a file. */ + uint32_t fileSize() const { return m_fileSize; } + /** \return first sector of file or zero for empty file. */ + uint32_t firstBlock() const { return firstSector(); } + /** \return Address of first sector or zero for empty file. */ + uint32_t firstSector() const; + /** Arduino name for sync() */ + void flush() { sync(); } + /** set position for streams + * \param[in] pos struct with value for new position + */ + void fsetpos(const fspos_t* pos); /** Get a file's access date. * * \param[out] pdate Packed date for directory entry. @@ -198,9 +375,7 @@ class FatFile { */ bool getCreateDateTime(uint16_t* pdate, uint16_t* ptime); /** \return All error bits. */ - uint8_t getError() { - return m_error; - } + uint8_t getError() const { return m_error; } /** Get a file's modify date and time. * * \param[out] pdate Packed date for directory entry. @@ -209,239 +384,83 @@ class FatFile { * \return true for success or false for failure. */ bool getModifyDateTime(uint16_t* pdate, uint16_t* ptime); - /** \return value of writeError */ - bool getWriteError() { - return isOpen() ? m_error & WRITE_ERROR : true; - } - /** get position for streams - * \param[out] pos struct to receive position - */ - void fgetpos(fspos_t* pos); - /** set position for streams - * \param[in] pos struct with value for new position - */ - void fsetpos(const fspos_t* pos); - /** \return The number of bytes available from the current position - * to EOF for normal files. Zero is returned for directory files. - */ - uint32_t available32() { - return isFile() ? fileSize() - curPosition() : 0; - } - /** \return The number of bytes available from the current position - * to EOF for normal files. INT_MAX is returned for very large files. - * - * available64() is recomended for very large files. - * - * Zero is returned for directory files. - * - */ - int available() { - uint32_t n = available32(); - return n > INT_MAX ? INT_MAX : n; - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - * - * \return true for success or false for failure. - */ - bool close(); - /** Check for contiguous file and return its raw sector range. - * - * \param[out] bgnSector the first sector address for the file. - * \param[out] endSector the last sector address for the file. - * - * Set the contiguous flag if the file is contiguous. - * The parameters may be nullptr to only set the flag. - * \return true for success or false for failure. - */ - bool contiguousRange(uint32_t* bgnSector, uint32_t* endSector); - - /** Create and open a new contiguous file of a specified size. - * - * \param[in] dirFile The directory where the file will be created. - * \param[in] path A path with a valid file name. - * \param[in] size The desired file size. - * - * \return true for success or false for failure. - */ - bool createContiguous(FatFile* dirFile, - const char* path, uint32_t size); - /** Create and open a new contiguous file of a specified size. - * - * \param[in] path A path with a valid file name. - * \param[in] size The desired file size. - * - * \return true for success or false for failure. - */ - bool createContiguous(const char* path, uint32_t size); - - /** \return The current cluster number for a file or directory. */ - uint32_t curCluster() const {return m_curCluster;} - - /** \return The current position for a file or directory. */ - uint32_t curPosition() const { - return m_curPosition; - } - - /** Return a file's directory entry. - * - * \param[out] dir Location for return of the file's directory entry. - * - * \return true for success or false for failure. - */ - bool dirEntry(DirFat_t* dir); - /** \return The number of bytes allocated to a directory or zero - * if an error occurs. - */ - uint32_t dirSize(); - /** Dump file in Hex - * \param[in] pr Print stream for list. - * \param[in] pos Start position in file. - * \param[in] n number of locations to dump. - */ - void dmpFile(print_t* pr, uint32_t pos, size_t n); - /** Test for the existence of a file in a directory - * - * \param[in] path Path of the file to be tested for. - * - * The calling instance must be an open directory file. - * - * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory - * dirFile. - * - * \return True if the file exists. - */ - bool exists(const char* path) { - FatFile file; - return file.open(this, path, O_RDONLY); - } - /** - * Get a string from a file. - * - * fgets() reads bytes from a file into the array pointed to by \a str, until - * \a num - 1 bytes are read, or a delimiter is read and transferred to - * \a str, or end-of-file is encountered. The string is then terminated - * with a null byte. - * - * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' - * terminates the string for Windows text files which use CRLF for newline. - * - * \param[out] str Pointer to the array where the string is stored. - * \param[in] num Maximum number of characters to be read - * (including the final null byte). Usually the length - * of the array \a str is used. - * \param[in] delim Optional set of delimiters. The default is "\n". - * - * \return For success fgets() returns the length of the string in \a str. - * If no data is read, fgets() returns zero for EOF or -1 if an error - * occurred. - */ - int fgets(char* str, int num, char* delim = nullptr); - - /** \return The total number of bytes in a file. */ - uint32_t fileSize() const { - return m_fileSize; - } - /** \return first sector of file or zero for empty file. */ - uint32_t firstBlock() const {return firstSector();} - /** \return Address of first sector or zero for empty file. */ - uint32_t firstSector() const; /** * Get a file's name followed by a zero byte. * * \param[out] name An array of characters for the file's name. * \param[in] size The size of the array in bytes. The array - * must be at least 13 bytes long. The file's name will be - * truncated if the file's name is too long. - * \return true for success or false for failure. + * must be at least 13 bytes long. + * \return length for success or zero for failure. */ - bool getName(char* name, size_t size); + size_t getName(char* name, size_t size); + /** + * Get a file's ASCII name followed by a zero. + * + * \param[out] name An array of characters for the file's name. + * \param[in] size The size of the array in characters. + * \return length for success or zero for failure. + */ + size_t getName7(char* name, size_t size); + /** + * Get a file's UTF-8 name followed by a zero. + * + * \param[out] name An array of characters for the file's name. + * \param[in] size The size of the array in characters. + * \return length for success or zero for failure. + */ + size_t getName8(char* name, size_t size); +#ifndef DOXYGEN_SHOULD_SKIP_THIS + size_t __attribute__((error("use getSFN(name, size)"))) getSFN(char* name); +#endif // DOXYGEN_SHOULD_SKIP_THIS /** * Get a file's Short File Name followed by a zero byte. * * \param[out] name An array of characters for the file's name. - * The array must be at least 13 bytes long. + * The array should be at least 13 bytes long. + * \param[in] size size of name array. * \return true for success or false for failure. */ - bool getSFN(char* name); + size_t getSFN(char* name, size_t size); + /** \return value of writeError */ + bool getWriteError() const { return isOpen() ? m_error & WRITE_ERROR : true; } + /** + * Check for device busy. + * + * \return true if busy else false. + */ + bool isBusy(); #if USE_FAT_FILE_FLAG_CONTIGUOUS - /** \return True if the file is contiguous. */ - bool isContiguous() const {return m_flags & FILE_FLAG_CONTIGUOUS;} + /** \return True if the file is contiguous. */ + bool isContiguous() const { return m_flags & FILE_FLAG_CONTIGUOUS; } #endif // USE_FAT_FILE_FLAG_CONTIGUOUS /** \return True if this is a directory. */ - bool isDir() const { - return m_attributes & FILE_ATTR_DIR; - } + bool isDir() const { return m_attributes & FILE_ATTR_DIR; } /** \return True if this is a normal file. */ - bool isFile() const { - return m_attributes & FILE_ATTR_FILE; - } + bool isFile() const { return m_attributes & FILE_ATTR_FILE; } + /** \return True if this is a normal file or sub-directory. */ + bool isFileOrSubDir() const { return isFile() || isSubDir(); } /** \return True if this is a hidden file. */ - bool isHidden() const { - return m_attributes & FILE_ATTR_HIDDEN; - } + bool isHidden() const { return m_attributes & FS_ATTRIB_HIDDEN; } /** \return true if this file has a Long File Name. */ - bool isLFN() const { - return m_lfnOrd; - } + bool isLFN() const { return m_lfnOrd; } /** \return True if this is an open file/directory. */ - bool isOpen() const { - return m_attributes; - } - /** \return True if this is the root directory. */ - bool isRoot() const { - return m_attributes & FILE_ATTR_ROOT; - } - /** \return True if this is the FAT32 root directory. */ - bool isRoot32() const { - return m_attributes & FILE_ATTR_ROOT32; - } - /** \return True if this is the FAT12 of FAT16 root directory. */ - bool isRootFixed() const { - return m_attributes & FILE_ATTR_ROOT_FIXED; - } + bool isOpen() const { return m_attributes; } + /** \return True file is readable. */ + bool isReadable() const { return m_flags & FILE_FLAG_READ; } /** \return True if file is read-only */ - bool isReadOnly() const { - return m_attributes & FILE_ATTR_READ_ONLY; - } - /** \return True if this is a subdirectory. */ - bool isSubDir() const { - return m_attributes & FILE_ATTR_SUBDIR; - } + bool isReadOnly() const { return m_attributes & FS_ATTRIB_READ_ONLY; } + /** \return True if this is the root directory. */ + bool isRoot() const { return m_attributes & FILE_ATTR_ROOT; } + /** \return True if this is the FAT32 root directory. */ + bool isRoot32() const { return m_attributes & FILE_ATTR_ROOT32; } + /** \return True if this is the FAT12 of FAT16 root directory. */ + bool isRootFixed() const { return m_attributes & FILE_ATTR_ROOT_FIXED; } + /** \return True if this is a sub-directory. */ + bool isSubDir() const { return m_attributes & FILE_ATTR_SUBDIR; } /** \return True if this is a system file. */ - bool isSystem() const { - return m_attributes & FILE_ATTR_SYSTEM; - } + bool isSystem() const { return m_attributes & FS_ATTRIB_SYSTEM; } /** \return True file is writable. */ - bool isReadable() const { - return m_flags & FILE_FLAG_READ; - } - /** \return True file is writable. */ - bool isWritable() const { - return m_flags & FILE_FLAG_WRITE; - } - /** Check for a legal 8.3 character. - * \param[in] c Character to be checked. - * \return true for a legal 8.3 character. - */ - static bool legal83Char(uint8_t c) { - if (c == '"' || c == '|') { - return false; - } - // *+,./ - if (0X2A <= c && c <= 0X2F && c != 0X2D) { - return false; - } - // :;<=>? - if (0X3A <= c && c <= 0X3F) { - return false; - } - // [\] - if (0X5B <= c && c <= 0X5D) { - return false; - } - return 0X20 < c && c < 0X7F; - } + bool isWritable() const { return m_flags & FILE_FLAG_WRITE; } /** List directory contents. * * \param[in] pr Print stream for list. @@ -472,7 +491,6 @@ class FatFile { * \return true for success or false for failure. */ bool mkdir(FatFile* dir, const char* path, bool pFlag = true); - /** Open a file in the volume root directory. * * \param[in] vol Volume where the file is located. @@ -484,7 +502,7 @@ class FatFile { * * \return true for success or false for failure. */ - bool open(FatVolume* vol, const char* path, oflag_t oflag); + bool open(FatVolume* vol, const char* path, oflag_t oflag = O_RDONLY); /** Open a file by index. * * \param[in] dirFile An open FatFile instance for the directory. @@ -498,7 +516,19 @@ class FatFile { * See open() by path for definition of flags. * \return true for success or false for failure. */ - bool open(FatFile* dirFile, uint16_t index, oflag_t oflag); + bool open(FatFile* dirFile, uint16_t index, oflag_t oflag = O_RDONLY); + /** Open a file by index in the current working directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag bitwise-inclusive OR of open flags. + * See see FatFile::open(FatFile*, const char*, uint8_t). + * + * See open() by path for definition of flags. + * \return true for success or false for failure. + */ + bool open(uint16_t index, oflag_t oflag = O_RDONLY); /** Open a file or directory by name. * * \param[in] dirFile An open FatFile instance for the directory containing @@ -506,7 +536,7 @@ class FatFile { * * \param[in] path A path with a valid name for a file to be opened. * - * \param[in] oflag Values for \a oflag are constructed by a + * \param[in] oflag Values for \a oflag are constructed by a * bitwise-inclusive OR of flags from the following list. * Only one of O_RDONLY, O_READ, O_WRONLY, O_WRITE, or * O_RDWR is allowed. @@ -544,7 +574,7 @@ class FatFile { * * \return true for success or false for failure. */ - bool open(FatFile* dirFile, const char* path, oflag_t oflag); + bool open(FatFile* dirFile, const char* path, oflag_t oflag = O_RDONLY); /** Open a file in the current working volume. * * \param[in] path A path with a valid name for a file to be opened. @@ -555,6 +585,21 @@ class FatFile { * \return true for success or false for failure. */ bool open(const char* path, oflag_t oflag = O_RDONLY); + /** Open the current working directory. + * + * \return true for success or false for failure. + */ + bool openCwd(); + /** Open existing file wih Short 8.3 names. + * \param[in] path with short 8.3 names. + * + * the purpose of this function is to save flash on Uno + * and other small boards. + * + * Directories will be opened O_RDONLY, files O_RDWR. + * \return true for success or false for failure. + */ + bool openExistingSFN(const char* path); /** Open the next file or subdirectory in a directory. * * \param[in] dirFile An open FatFile instance for the directory @@ -573,12 +618,13 @@ class FatFile { * \return true for success or false for failure. */ bool openRoot(FatVolume* vol); + /** Return the next available byte without consuming it. * * \return The byte if no error and not at eof else -1; */ int peek(); - /** Allocate contiguous clusters to an empty file. + /** Allocate contiguous clusters to an empty file. * * The file must be empty with no clusters allocated. * @@ -588,13 +634,27 @@ class FatFile { * \return true for success or false for failure. */ bool preAllocate(uint32_t length); + /** Print a file's access date + * + * \param[in] pr Print stream for output. + * + * \return The number of characters printed. + */ + size_t printAccessDate(print_t* pr); + /** Print a file's access date + * + * \param[in] pr Print stream for output. + * + * \return The number of characters printed. + */ + size_t printAccessDateTime(print_t* pr) { return printAccessDate(pr); } /** Print a file's creation date and time * * \param[in] pr Print stream for output. * * \return The number of bytes printed. */ - size_t printCreateDateTime(print_t* pr); + size_t printCreateDateTime(print_t* pr); /** %Print a directory date field. * * Format is yyyy-mm-dd. @@ -646,7 +706,7 @@ class FatFile { template size_t printField(Type value, char term) { char sign = 0; - char buf[3*sizeof(Type) + 3]; + char buf[3 * sizeof(Type) + 3]; char* str = buf + sizeof(buf); if (term) { @@ -669,22 +729,14 @@ class FatFile { } return write(str, &buf[sizeof(buf)] - str); } - /** Print a file's access date + /** Print a file's size. * * \param[in] pr Print stream for output. * - * \return The number of characters printed. + * \return The number of characters printed is returned + * for success and zero is returned for failure. */ - size_t printAccessDate(print_t* pr); - /** Print a file's access date - * - * \param[in] pr Print stream for output. - * - * \return The number of characters printed. - */ - size_t printAccessDateTime(print_t* pr) { - return printAccessDate(pr); - } + size_t printFileSize(print_t* pr); /** Print a file's modify date and time * * \param[in] pr Print stream for output. @@ -696,17 +748,23 @@ class FatFile { * * \param[in] pr Print stream for output. * - * \return true for success or false for failure. + * \return length for success or zero for failure. */ size_t printName(print_t* pr); - /** Print a file's size. + /** Print a file's ASCII name * * \param[in] pr Print stream for output. * - * \return The number of characters printed is returned - * for success and zero is returned for failure. + * \return true for success or false for failure. */ - size_t printFileSize(print_t* pr); + size_t printName7(print_t* pr); + /** Print a file's UTF-8 name + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printName8(print_t* pr); /** Print a file's Short File Name. * * \param[in] pr Print stream for output. @@ -773,10 +831,6 @@ class FatFile { * \return true for success or false for failure. */ bool remove(const char* path); - /** Set the file's current position to zero. */ - void rewind() { - seekSet(0); - } /** Rename a file or subdirectory. * \note the renamed file will be moved to the current volume working * directory. @@ -794,6 +848,8 @@ class FatFile { * \return true for success or false for failure. */ bool rename(FatFile* dirFile, const char* newPath); + /** Set the file's current position to zero. */ + void rewind() { seekSet(0UL); } /** Remove a directory file. * * The directory file will be removed only if it is empty and is not the @@ -826,9 +882,7 @@ class FatFile { * \param[in] offset The new position in bytes from the current position. * \return true for success or false for failure. */ - bool seekCur(int32_t offset) { - return seekSet(m_curPosition + offset); - } + bool seekCur(int32_t offset) { return seekSet(m_curPosition + offset); } /** Set the files position to end-of-file + \a offset. See seekSet(). * Can't be used for directory files since file size is not defined. * \param[in] offset The new position in bytes from end-of-file. @@ -844,14 +898,12 @@ class FatFile { * \return true for success or false for failure. */ bool seekSet(uint32_t pos); - /** The sync() call causes all modified data and directory fields * to be written to the storage device. * * \return true for success or false for failure. */ bool sync(); - /** Set a file's timestamps in its directory entry. * * \param[in] flags Values for \a flags are constructed by a bitwise-inclusive @@ -901,25 +953,18 @@ class FatFile { * * \return true for success or false for failure. */ - bool truncate(uint32_t length) { - return seekSet(length) && truncate(); - } - + bool truncate(uint32_t length) { return seekSet(length) && truncate(); } /** Write a string to a file. Used by the Arduino Print class. * \param[in] str Pointer to the string. * Use getWriteError to check for errors. * \return count of characters written for success or -1 for failure. */ - size_t write(const char* str) { - return write(str, strlen(str)); - } + size_t write(const char* str) { return write(str, strlen(str)); } /** Write a single byte. * \param[in] b The byte to be written. * \return +1 for success or -1 for failure. */ - size_t write(uint8_t b) { - return write(&b, 1); - } + size_t write(uint8_t b) { return write(&b, 1); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -930,15 +975,10 @@ class FatFile { * \param[in] count Number of bytes to write. * * \return For success write() returns the number of bytes written, always - * \a count. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an I/O - * error. + * \a count. If an error occurs, write() returns zero and writeError is set. * */ size_t write(const void* buf, size_t count); - - int availableSpaceForWrite(); //------------------------------------------------------------------------------ #if ENABLE_ARDUINO_SERIAL /** List directory contents. @@ -953,16 +993,12 @@ class FatFile { * * \return true for success or false for failure. */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags = 0) { return ls(&Serial, flags); } /** Print a file's name. * - * \return true for success or false for failure. + * \return length for success or zero for failure. */ - size_t printName() { - return FatFile::printName(&Serial); - } + size_t printName() { return FatFile::printName(&Serial); } #endif // ENABLE_ARDUINO_SERIAL private: @@ -971,40 +1007,46 @@ class FatFile { /** This file has not been opened. */ static const uint8_t FILE_ATTR_CLOSED = 0; - /** File is read-only. */ - static const uint8_t FILE_ATTR_READ_ONLY = FAT_ATTRIB_READ_ONLY; - /** File should be hidden in directory listings. */ - static const uint8_t FILE_ATTR_HIDDEN = FAT_ATTRIB_HIDDEN; - /** Entry is for a system file. */ - static const uint8_t FILE_ATTR_SYSTEM = FAT_ATTRIB_SYSTEM; /** Entry for normal data file */ static const uint8_t FILE_ATTR_FILE = 0X08; /** Entry is for a subdirectory */ - static const uint8_t FILE_ATTR_SUBDIR = FAT_ATTRIB_DIRECTORY; + static const uint8_t FILE_ATTR_SUBDIR = FS_ATTRIB_DIRECTORY; /** A FAT12 or FAT16 root directory */ - static const uint8_t FILE_ATTR_ROOT_FIXED = 0X20; + static const uint8_t FILE_ATTR_ROOT_FIXED = 0X40; /** A FAT32 root directory */ - static const uint8_t FILE_ATTR_ROOT32 = 0X40; + static const uint8_t FILE_ATTR_ROOT32 = 0X80; /** Entry is for root. */ - static const uint8_t FILE_ATTR_ROOT = - FILE_ATTR_ROOT_FIXED | FILE_ATTR_ROOT32; + static const uint8_t FILE_ATTR_ROOT = FILE_ATTR_ROOT_FIXED | FILE_ATTR_ROOT32; /** Directory type bits */ static const uint8_t FILE_ATTR_DIR = FILE_ATTR_SUBDIR | FILE_ATTR_ROOT; - /** Attributes to copy from directory entry */ - static const uint8_t FILE_ATTR_COPY = - FAT_ATTRIB_READ_ONLY | FAT_ATTRIB_HIDDEN | - FAT_ATTRIB_SYSTEM | FAT_ATTRIB_DIRECTORY; // private functions + bool addCluster(); bool addDirCluster(); + DirFat_t* cacheDir(uint16_t index) { + return seekSet(32UL * index) ? readDirCache() : nullptr; + } DirFat_t* cacheDirEntry(uint8_t action); - static uint8_t lfnChecksum(uint8_t* name); - bool lfnUniqueSfn(fname_t* fname); + bool cmpName(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd); + bool createLFN(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd); + uint16_t getLfnChar(DirLfn_t* ldir, uint8_t i); + uint8_t lfnChecksum(const uint8_t* name) { + uint8_t sum = 0; + for (uint8_t i = 0; i < 11; i++) { + sum = (((sum & 1) << 7) | (sum >> 1)) + name[i]; + } + return sum; + } + static bool makeSFN(FatLfn_t* fname); + bool makeUniqueSfn(FatLfn_t* fname); bool openCluster(FatFile* file); - static bool parsePathName(const char* str, fname_t* fname, const char** ptr); - bool mkdir(FatFile* parent, fname_t* fname); - bool open(FatFile* dirFile, fname_t* fname, oflag_t oflag); + bool parsePathName(const char* str, FatLfn_t* fname, const char** ptr); + bool parsePathName(const char* str, FatSfn_t* fname, const char** ptr); + bool mkdir(FatFile* parent, FatName_t* fname); + bool open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag); + bool open(FatFile* dirFile, FatSfn_t* fname, oflag_t oflag); + bool openSFN(FatSfn_t* fname); bool openCachedEntry(FatFile* dirFile, uint16_t cacheIndex, oflag_t oflag, uint8_t lfnOrd); DirFat_t* readDirCache(bool skipReadOk = false); @@ -1016,45 +1058,36 @@ class FatFile { // treat curPosition as valid length. static const uint8_t FILE_FLAG_PREALLOCATE = 0X20; // file is contiguous - static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; + static const uint8_t FILE_FLAG_CONTIGUOUS = 0X40; // sync of directory entry required static const uint8_t FILE_FLAG_DIR_DIRTY = 0X80; // private data static const uint8_t WRITE_ERROR = 0X1; - static const uint8_t READ_ERROR = 0X2; + static const uint8_t READ_ERROR = 0X2; - uint8_t m_attributes; // File attributes - uint8_t m_error; // Error bits. - uint8_t m_flags; // See above for definition of m_flags bits - uint8_t m_lfnOrd; - uint16_t m_dirIndex; // index of directory entry in dir file - FatVolume* m_vol; // volume where file is located - uint32_t m_dirCluster; - uint32_t m_curCluster; // cluster for current file position - uint32_t m_curPosition; // current file position - uint32_t m_dirSector; // sector for this files directory entry - uint32_t m_fileSize; // file size in bytes - uint32_t m_firstCluster; // first cluster of file + uint8_t m_attributes = FILE_ATTR_CLOSED; + uint8_t m_error = 0; // Error bits. + uint8_t m_flags = 0; // See above for definition of m_flags bits + uint8_t m_lfnOrd; + uint16_t m_dirIndex; // index of directory entry in dir file + FatVolume* m_vol; // volume where file is located + uint32_t m_dirCluster; + uint32_t m_curCluster; // cluster for current file position + uint32_t m_curPosition; // current file position + uint32_t m_dirSector; // sector for this files directory entry + uint32_t m_fileSize; // file size in bytes + uint32_t m_firstCluster; // first cluster of file }; - -}; // namespace sdfat - - #include "../common/ArduinoFiles.h" - - -namespace sdfat { - - /** * \class File32 * \brief FAT16/FAT32 file with Arduino Stream. */ class File32 : public StreamFile { public: - /** Opens the next file or folder in a directory. + /** Opens the next file or folder in a directory. * * \param[in] oflag open flags. * \return a FatStream object. @@ -1065,9 +1098,4 @@ class File32 : public StreamFile { return tmpFile; } }; - - -}; // namespace sdfat - - #endif // FatFile_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileLFN.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileLFN.cpp index ef069652..6844a573 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileLFN.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileLFN.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,260 +24,174 @@ */ #define DBG_FILE "FatFileLFN.cpp" #include "../common/DebugMacros.h" -#include "FatFile.h" -#include "FatVolume.h" - - -namespace sdfat { - - -//------------------------------------------------------------------------------ -// -uint8_t FatFile::lfnChecksum(uint8_t* name) { - uint8_t sum = 0; - for (uint8_t i = 0; i < 11; i++) { - sum = (((sum & 1) << 7) | ((sum & 0xfe) >> 1)) + name[i]; - } - return sum; -} +#include "../common/FsUtf.h" +#include "../common/upcase.h" +#include "FatLib.h" #if USE_LONG_FILE_NAMES //------------------------------------------------------------------------------ -// Saves about 90 bytes of flash on 328 over tolower(). -inline char lfnToLower(char c) { - return 'A' <= c && c <= 'Z' ? c + 'a' - 'A' : c; -} +static bool isLower(char c) { return 'a' <= c && c <= 'z'; } //------------------------------------------------------------------------------ -// Daniel Bernstein University of Illinois at Chicago. -// Original had + instead of ^ -static uint16_t Bernstein(uint16_t hash, const char *str, size_t len) { - for (size_t i = 0; i < len; i++) { - // hash = hash * 33 ^ str[i]; - hash = ((hash << 5) + hash) ^ str[i]; - } - return hash; -} +static bool isUpper(char c) { return 'A' <= c && c <= 'Z'; } //------------------------------------------------------------------------------ -/** - * Fetch a 16-bit long file name character. - * - * \param[in] ldir Pointer to long file name directory entry. - * \param[in] i Index of character. - * \return The 16-bit character. - */ -static uint16_t lfnGetChar(DirLfn_t* ldir, uint8_t i) { - if (i < 5) { - return getLe16(ldir->unicode1 + 2*i); - } else if (i < 11) { - return getLe16(ldir->unicode2 + 2*i - 10); - } else if (i < 13) { - return getLe16(ldir->unicode3 + 2*i - 22); - } - return 0; -} -//------------------------------------------------------------------------------ -static bool lfnGetName(DirLfn_t* ldir, char* name, size_t n) { - uint8_t i; - size_t k = 13*((ldir->order & 0X1F) - 1); - for (i = 0; i < 13; i++) { - uint16_t c = lfnGetChar(ldir, i); - if (c == 0 || k >= n) { - break; - } - name[k++] = c >= 0X7F ? '?' : c; - } - // Terminate with zero byte if name fits. - if (k < n && (ldir->order & FAT_ORDER_LAST_LONG_ENTRY)) { - name[k] = 0; - } - // Truncate if name is too long. - name[n - 1] = 0; - return true; -} -//------------------------------------------------------------------------------ -inline bool lfnLegalChar(uint8_t c) { - if (c == '/' || c == '\\' || c == '"' || c == '*' || - c == ':' || c == '<' || c == '>' || c == '?' || c == '|') { - return false; - } - return 0X1F < c && c < 0X7F; -} +// A bit smaller than toupper in AVR 328. +inline char toUpper(char c) { return isLower(c) ? c - 'a' + 'A' : c; } //------------------------------------------------------------------------------ /** * Store a 16-bit long file name character. * * \param[in] ldir Pointer to long file name directory entry. * \param[in] i Index of character. - * \param[in] c The 16-bit character. + * \param[in] c The 16-bit character. */ -static void lfnPutChar(DirLfn_t* ldir, uint8_t i, uint16_t c) { +static void putLfnChar(DirLfn_t* ldir, uint8_t i, uint16_t c) { if (i < 5) { - setLe16(ldir->unicode1 + 2*i, c); + setLe16(ldir->unicode1 + 2 * i, c); } else if (i < 11) { - setLe16(ldir->unicode2 + 2*i -10, c); + setLe16(ldir->unicode2 + 2 * (i - 5), c); } else if (i < 13) { - setLe16(ldir->unicode3 + 2*i - 22, c); - } -} -//------------------------------------------------------------------------------ -static void lfnPutName(DirLfn_t* ldir, const char* name, size_t n) { - size_t k = 13*((ldir->order & 0X1F) - 1); - for (uint8_t i = 0; i < 13; i++, k++) { - uint16_t c = k < n ? name[k] : k == n ? 0 : 0XFFFF; - lfnPutChar(ldir, i, c); + setLe16(ldir->unicode3 + 2 * (i - 11), c); } } //============================================================================== -bool FatFile::getName(char* name, size_t size) { - FatFile dirFile; +bool FatFile::cmpName(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { + // FatFile dir = *this; + FatFile dir; + dir.copy(this); DirLfn_t* ldir; - if (!isOpen() || size < 13) { - DBG_FAIL_MACRO; - goto fail; - } - if (!isLFN()) { - return getSFN(name); - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t order = 1; order <= m_lfnOrd; order++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - order))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); + fname->reset(); + for (uint8_t order = 1; order <= lfnOrd; order++) { + ldir = reinterpret_cast(dir.cacheDir(index - order)); if (!ldir) { DBG_FAIL_MACRO; goto fail; } - if (ldir->attributes != FAT_ATTRIB_LONG_NAME) { - DBG_FAIL_MACRO; - goto fail; - } - if (order != (ldir->order & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!lfnGetName(ldir, name, size)) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { - return true; + // These should be checked in caller. + DBG_HALT_IF(ldir->attributes != FAT_ATTRIB_LONG_NAME); + DBG_HALT_IF(order != (ldir->order & 0X1F)); + for (uint8_t i = 0; i < 13; i++) { + uint16_t u = getLfnChar(ldir, i); + if (fname->atEnd()) { + return u == 0; + } +#if USE_UTF8_LONG_NAMES + uint16_t cp = fname->get16(); + // Make sure caller checked for valid UTF-8. + DBG_HALT_IF(cp == 0XFFFF); + if (toUpcase(u) != toUpcase(cp)) { + return false; + } +#else // USE_UTF8_LONG_NAMES + if (u > 0X7F || toUpper(u) != toUpper(fname->getch())) { + return false; + } +#endif // USE_UTF8_LONG_NAMES } } - // Fall into fail. - DBG_FAIL_MACRO; + return true; - fail: - name[0] = 0; +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::openCluster(FatFile* file) { - if (file->m_dirCluster == 0) { - return openRoot(file->m_vol); +bool FatFile::createLFN(uint16_t index, FatLfn_t* fname, uint8_t lfnOrd) { + // FatFile dir = *this; + FatFile dir; + dir.copy(this); + DirLfn_t* ldir; + uint8_t checksum = lfnChecksum(fname->sfn); + uint8_t fc = 0; + fname->reset(); + + for (uint8_t order = 1; order <= lfnOrd; order++) { + ldir = reinterpret_cast(dir.cacheDir(index - order)); + if (!ldir) { + DBG_FAIL_MACRO; + goto fail; + } + dir.m_vol->cacheDirty(); + ldir->order = order == lfnOrd ? FAT_ORDER_LAST_LONG_ENTRY | order : order; + ldir->attributes = FAT_ATTRIB_LONG_NAME; + ldir->mustBeZero1 = 0; + ldir->checksum = checksum; + setLe16(ldir->mustBeZero2, 0); + for (uint8_t i = 0; i < 13; i++) { + uint16_t cp; + if (fname->atEnd()) { + cp = fc++ ? 0XFFFF : 0; + } else { + cp = fname->get16(); + // Verify caller checked for valid UTF-8. + DBG_HALT_IF(cp == 0XFFFF); + } + putLfnChar(ldir, i, cp); + } } - memset(this, 0, sizeof(FatFile)); - m_attributes = FILE_ATTR_SUBDIR; - m_flags = FILE_FLAG_READ; - m_vol = file->m_vol; - m_firstCluster = file->m_dirCluster; return true; + +fail: + return false; } //------------------------------------------------------------------------------ -bool FatFile::parsePathName(const char* path, - fname_t* fname, const char** ptr) { - char c; +bool FatFile::makeSFN(FatLfn_t* fname) { bool is83; + // char c; + uint8_t c; uint8_t bit = FAT_CASE_LC_BASE; uint8_t lc = 0; uint8_t uc = 0; uint8_t i = 0; uint8_t in = 7; - int end; - int len = 0; - int si; - int dot; + const char* dot; + const char* end = fname->end; + const char* ptr = fname->begin; - // Skip leading spaces. - while (*path == ' ') { - path++; - } - fname->lfn = path; + // Assume not zero length. + DBG_HALT_IF(end == ptr); + // Assume blanks removed from start and end. + DBG_HALT_IF(*ptr == ' ' || *(end - 1) == ' ' || *(end - 1) == '.'); - for (len = 0; ; len++) { - c = path[len]; - if (c == 0 || isDirSeparator(c)) { - break; - } - if (!lfnLegalChar(c)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Advance to next path component. - for (end = len; path[end] == ' ' || isDirSeparator(path[end]); end++) {} - *ptr = &path[end]; - - // Back over spaces and dots. - while (len) { - c = path[len - 1]; - if (c != '.' && c != ' ') { - break; - } - len--; - } - // Max length of LFN is 255. - if (len > 255) { - DBG_FAIL_MACRO; - goto fail; - } - fname->len = len; // Blank file short name. for (uint8_t k = 0; k < 11; k++) { fname->sfn[k] = ' '; } - // skip leading spaces and dots. - for (si = 0; path[si] == '.' || path[si] == ' '; si++) {} - // Not 8.3 if leading dot or space. - is83 = !si; + // Not 8.3 if starts with dot. + is83 = *ptr == '.' ? false : true; + // Skip leading dots. + for (; *ptr == '.'; ptr++) { + } + // Find last dot. + for (dot = end - 1; dot > ptr && *dot != '.'; dot--) { + } - // find last dot. - for (dot = len - 1; dot >= 0 && path[dot] != '.'; dot--) {} - for (; si < len; si++) { - c = path[si]; - if (c == ' ' || (c == '.' && dot != si)) { - is83 = false; - continue; - } - if (!legal83Char(c) && si != dot) { - is83 = false; - c = '_'; - } - if (si == dot || i > in) { - if (in == 10) { - // Done - extension longer than three characters. - is83 = false; - break; - } - if (si != dot) { - is83 = false; - } - // Break if no dot and base-name is longer than eight characters. - if (si > dot) { - break; - } - si = dot; - in = 10; // Max index for full 8.3 name. - i = 8; // Place for extension. + for (; ptr < end; ptr++) { + c = *ptr; + if (c == '.' && ptr == dot) { + in = 10; // Max index for full 8.3 name. + i = 8; // Place for extension. bit = FAT_CASE_LC_EXT; // bit for extension. } else { - if ('a' <= c && c <= 'z') { + if (sfnReservedChar(c)) { + is83 = false; + // Skip UTF-8 trailing characters. + if ((c & 0XC0) == 0X80) { + continue; + } + c = '_'; + } + if (i > in) { + is83 = false; + if (in == 10 || ptr > dot) { + // Done - extension longer than three characters or no extension. + break; + } + // Skip to dot. + ptr = dot - 1; + continue; + } + if (isLower(c)) { c += 'A' - 'a'; lc |= bit; - } else if ('A' <= c && c <= 'Z') { + } else if (isUpper(c)) { uc |= bit; } fname->sfn[i++] = c; @@ -287,12 +201,11 @@ bool FatFile::parsePathName(const char* path, } } if (fname->sfn[0] == ' ') { - DBG_FAIL_MACRO; + DBG_HALT_MACRO; goto fail; } - if (is83) { - fname->flags = lc & uc ? FNAME_FLAG_MIXED_CASE : lc; + fname->flags = (lc & uc) ? FNAME_FLAG_MIXED_CASE : lc; } else { fname->flags = FNAME_FLAG_LOST_CHARS; fname->sfn[fname->seqPos] = '~'; @@ -300,37 +213,91 @@ bool FatFile::parsePathName(const char* path, } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { +bool FatFile::makeUniqueSfn(FatLfn_t* fname) { + const uint8_t FIRST_HASH_SEQ = 2; // min value is 2 + uint8_t pos = fname->seqPos; + DirFat_t* dir; + uint16_t hex = 0; + + DBG_HALT_IF(!(fname->flags & FNAME_FLAG_LOST_CHARS)); + DBG_HALT_IF(fname->sfn[pos] != '~' && fname->sfn[pos + 1] != '1'); + + for (uint8_t seq = FIRST_HASH_SEQ; seq < 100; seq++) { + DBG_WARN_IF(seq > FIRST_HASH_SEQ); + hex += millis(); + if (pos > 3) { + // Make space in name for ~HHHH. + pos = 3; + } + for (uint8_t i = pos + 4; i > pos; i--) { + uint8_t h = hex & 0XF; + fname->sfn[i] = h < 10 ? h + '0' : h + 'A' - 10; + hex >>= 4; + } + fname->sfn[pos] = '~'; + rewind(); + while (1) { + dir = readDirCache(true); + if (!dir) { + if (!getError()) { + // At EOF and name not found if no error. + goto done; + } + DBG_FAIL_MACRO; + goto fail; + } + if (dir->name[0] == FAT_NAME_FREE) { + goto done; + } + if (isFatFileOrSubdir(dir) && !memcmp(fname->sfn, dir->name, 11)) { + // Name found - try another. + break; + } + } + } + // fall inti fail - too many tries. + DBG_FAIL_MACRO; + +fail: + return false; + +done: + return true; +} +//------------------------------------------------------------------------------ +bool FatFile::open(FatFile* dirFile, FatLfn_t* fname, oflag_t oflag) { bool fnameFound = false; uint8_t lfnOrd = 0; - uint8_t freeNeed; uint8_t freeFound = 0; + uint8_t freeNeed; uint8_t order = 0; uint8_t checksum = 0; uint8_t ms10; - uint16_t freeIndex = 0; + uint8_t nameOrd; uint16_t curIndex; uint16_t date; + uint16_t freeIndex = 0; + uint16_t freeTotal; uint16_t time; DirFat_t* dir; DirLfn_t* ldir; - size_t len = fname->len; + auto vol = dirFile->m_vol; if (!dirFile->isDir() || isOpen()) { DBG_FAIL_MACRO; goto fail; } // Number of directory entries needed. - freeNeed = fname->flags & FNAME_FLAG_NEED_LFN ? 1 + (len + 12)/13 : 1; - + nameOrd = (fname->len + 12) / 13; + freeNeed = (fname->flags & FNAME_FLAG_NEED_LFN) ? 1 + nameOrd : 1; dirFile->rewind(); while (1) { - curIndex = dirFile->m_curPosition/32; - dir = dirFile->readDirCache(true); + curIndex = dirFile->m_curPosition / FS_DIR_SIZE; + dir = dirFile->readDirCache(); if (!dir) { if (dirFile->getError()) { DBG_FAIL_MACRO; @@ -357,40 +324,26 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { // skip empty slot or '.' or '..' if (dir->name[0] == FAT_NAME_DELETED || dir->name[0] == '.') { lfnOrd = 0; - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { ldir = reinterpret_cast(dir); if (!lfnOrd) { - if ((ldir->order & FAT_ORDER_LAST_LONG_ENTRY) == 0) { + order = ldir->order & 0X1F; + if (order != nameOrd || + (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) == 0) { continue; } - lfnOrd = order = ldir->order & 0X1F; + lfnOrd = nameOrd; checksum = ldir->checksum; } else if (ldir->order != --order || checksum != ldir->checksum) { lfnOrd = 0; continue; } - size_t k = 13*(order - 1); - if (k >= len) { - // Not found. - lfnOrd = 0; - continue; - } - for (uint8_t i = 0; i < 13; i++) { - uint16_t u = lfnGetChar(ldir, i); - if (k == len) { - if (u != 0) { - // Not found. - lfnOrd = 0; - } - break; - } - if (u > 255 || lfnToLower(u) != lfnToLower(fname->lfn[k++])) { - // Not found. + if (order == 1) { + if (!dirFile->cmpName(curIndex + 1, fname, lfnOrd)) { lfnOrd = 0; - break; } } - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { if (lfnOrd) { if (1 == order && lfnChecksum(dir->name) == checksum) { goto found; @@ -409,7 +362,7 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { } } - found: +found: // Don't open if create only. if (oflag & O_EXCL) { DBG_FAIL_MACRO; @@ -417,17 +370,16 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { } goto open; - create: +create: // don't create unless O_CREAT and write mode if (!(oflag & O_CREAT) || !isWriteMode(oflag)) { - DBG_FAIL_MACRO; + DBG_WARN_MACRO; goto fail; } - // If at EOF start in next cluster. + // Keep found entries or start at current index if no free entries found. if (freeFound == 0) { freeIndex = curIndex; } - while (freeFound < freeNeed) { dir = dirFile->readDirCache(); if (!dir) { @@ -440,44 +392,28 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { } freeFound++; } - while (freeFound < freeNeed) { + // Loop handles the case of huge filename and cluster size one. + freeTotal = freeFound; + while (freeTotal < freeNeed) { // Will fail if FAT16 root. if (!dirFile->addDirCluster()) { DBG_FAIL_MACRO; goto fail; } - // Done if more than one sector per cluster. Max freeNeed is 21. - if (dirFile->m_vol->sectorsPerCluster() > 1) { - break; - } - freeFound += 16; + // 16-bit freeTotal needed for large cluster size. + freeTotal += vol->dirEntriesPerCluster(); } if (fnameFound) { - if (!dirFile->lfnUniqueSfn(fname)) { + if (!dirFile->makeUniqueSfn(fname)) { goto fail; } } - if (!dirFile->seekSet(32UL*freeIndex)) { - DBG_FAIL_MACRO; - goto fail; - } lfnOrd = freeNeed - 1; - for (order = lfnOrd ; order ; order--) { - ldir = reinterpret_cast(dirFile->readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - dirFile->m_vol->cacheDirty(); - ldir->order = order == lfnOrd ? FAT_ORDER_LAST_LONG_ENTRY | order : order; - ldir->attributes = FAT_ATTRIB_LONG_NAME; - ldir->mustBeZero1 = 0; - ldir->checksum = lfnChecksum(fname->sfn); - setLe16(ldir->mustBeZero2, 0); - lfnPutName(ldir, fname->lfn, len); + curIndex = freeIndex + lfnOrd; + if (!dirFile->createLFN(curIndex, fname, lfnOrd)) { + goto fail; } - curIndex = dirFile->m_curPosition/32; - dir = dirFile->readDirCache(); + dir = dirFile->cacheDir(curIndex); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -487,7 +423,7 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { memcpy(dir->name, fname->sfn, 11); // Set base-name and extension lower case bits. - dir->caseFlags = (FAT_CASE_LC_BASE | FAT_CASE_LC_EXT) & fname->flags; + dir->caseFlags = (FAT_CASE_LC_BASE | FAT_CASE_LC_EXT) & fname->flags; // Set timestamps. if (FsDateTime::callback) { @@ -506,9 +442,9 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { } } // Force write of entry to device. - dirFile->m_vol->cacheDirty(); + vol->cacheDirty(); - open: +open: // open entry in cache. if (!openCachedEntry(dirFile, curIndex, oflag, lfnOrd)) { DBG_FAIL_MACRO; @@ -516,55 +452,59 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -size_t FatFile::printName(print_t* pr) { - FatFile dirFile; - DirLfn_t* ldir; - size_t n = 0; - uint16_t u; - uint8_t buf[13]; - uint8_t i; - - if (!isLFN()) { - return printSFN(pr); +bool FatFile::parsePathName(const char* path, FatLfn_t* fname, + const char** ptr) { + size_t len = 0; + // Skip leading spaces. + while (*path == ' ') { + path++; } - if (!dirFile.openCluster(this)) { + fname->begin = path; + fname->len = 0; + while (*path && !isDirSeparator(*path)) { +#if USE_UTF8_LONG_NAMES + uint32_t cp; + // Allow end = path + 4 since path is zero terminated. + path = FsUtf::mbToCp(path, path + 4, &cp); + if (!path) { + DBG_FAIL_MACRO; + goto fail; + } + len += cp <= 0XFFFF ? 1 : 2; + if (cp < 0X80 && lfnReservedChar(cp)) { + DBG_FAIL_MACRO; + goto fail; + } +#else // USE_UTF8_LONG_NAMES + uint8_t cp = *path++; + if (cp >= 0X80 || lfnReservedChar(cp)) { + DBG_FAIL_MACRO; + goto fail; + } + len++; +#endif // USE_UTF8_LONG_NAMES + if (cp != '.' && cp != ' ') { + // Need to trim trailing dots spaces. + fname->len = len; + fname->end = path; + } + } + if (!fname->len || fname->len > FAT_MAX_LFN_LENGTH) { DBG_FAIL_MACRO; goto fail; } - for (uint8_t order = 1; order <= m_lfnOrd; order++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - order))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attributes != FAT_ATTRIB_LONG_NAME || - order != (ldir->order & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - for (i = 0; i < 13; i++) { - u = lfnGetChar(ldir, i); - if (u == 0) { - // End of name. - break; - } - buf[i] = u < 0X7F ? u : '?'; - n++; - } - pr->write(buf, i); + // Advance to next path component. + for (; *path == ' ' || isDirSeparator(*path); path++) { } - return n; + *ptr = path; + return makeSFN(fname); - fail: - return 0; +fail: + return false; } //------------------------------------------------------------------------------ bool FatFile::remove() { @@ -585,7 +525,7 @@ bool FatFile::remove() { goto fail; } // Cache directory entry. - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); + dir = cacheDirEntry(FsCache::CACHE_FOR_WRITE); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -613,18 +553,13 @@ bool FatFile::remove() { goto fail; } for (uint8_t order = 1; order <= m_lfnOrd; order++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - order))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); + ldir = reinterpret_cast(dirFile.cacheDir(m_dirIndex - order)); if (!ldir) { DBG_FAIL_MACRO; goto fail; } if (ldir->attributes != FAT_ATTRIB_LONG_NAME || - order != (ldir->order & 0X1F) || - checksum != ldir->checksum) { + order != (ldir->order & 0X1F) || checksum != ldir->checksum) { DBG_FAIL_MACRO; goto fail; } @@ -642,66 +577,7 @@ bool FatFile::remove() { // Fall into fail. DBG_FAIL_MACRO; - fail: +fail: return false; } -//------------------------------------------------------------------------------ -bool FatFile::lfnUniqueSfn(fname_t* fname) { - const uint8_t FIRST_HASH_SEQ = 2; // min value is 2 - uint8_t pos = fname->seqPos;; - DirFat_t* dir; - uint16_t hex; - - DBG_HALT_IF(!(fname->flags & FNAME_FLAG_LOST_CHARS)); - DBG_HALT_IF(fname->sfn[pos] != '~' && fname->sfn[pos + 1] != '1'); - - for (uint8_t seq = 2; seq < 100; seq++) { - if (seq < FIRST_HASH_SEQ) { - fname->sfn[pos + 1] = '0' + seq; - } else { - DBG_PRINT_IF(seq > FIRST_HASH_SEQ); - hex = Bernstein(seq + fname->len, fname->lfn, fname->len); - if (pos > 3) { - // Make space in name for ~HHHH. - pos = 3; - } - for (uint8_t i = pos + 4 ; i > pos; i--) { - uint8_t h = hex & 0XF; - fname->sfn[i] = h < 10 ? h + '0' : h + 'A' - 10; - hex >>= 4; - } - } - fname->sfn[pos] = '~'; - rewind(); - while (1) { - dir = readDirCache(true); - if (!dir) { - if (!getError()) { - // At EOF and name not found if no error. - goto done; - } - DBG_FAIL_MACRO; - goto fail; - } - if (dir->name[0] == FAT_NAME_FREE) { - goto done; - } - if (isFileOrSubdir(dir) && !memcmp(fname->sfn, dir->name, 11)) { - // Name found - try another. - break; - } - } - } - // fall inti fail - too many tries. - DBG_FAIL_MACRO; - - fail: - return false; - - done: - return true; -} #endif // #if USE_LONG_FILE_NAMES - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFilePrint.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFilePrint.cpp index 7b19292f..34f65946 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFilePrint.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFilePrint.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,62 +25,8 @@ #include #define DBG_FILE "FatFilePrint.cpp" #include "../common/DebugMacros.h" -#include "FatFile.h" +#include "FatLib.h" - -namespace sdfat { - - -//------------------------------------------------------------------------------ -static void printHex(print_t* pr, uint8_t w, uint16_t h) { - char buf[5]; - char* ptr = buf + sizeof(buf); - *--ptr = 0; - for (uint8_t i = 0; i < w; i++) { - char c = h & 0XF; - *--ptr = c < 10 ? c + '0' : c + 'A' - 10; - h >>= 4; - } - pr->write(ptr); -} -//------------------------------------------------------------------------------ -void FatFile::dmpFile(print_t* pr, uint32_t pos, size_t n) { - char text[17]; - text[16] = 0; - if (n >= 0XFFF0) { - n = 0XFFF0; - } - if (!seekSet(pos)) { - return; - } - for (size_t i = 0; i <= n; i++) { - if ((i & 15) == 0) { - if (i) { - pr->write(' '); - pr->write(text); - if (i == n) { - break; - } - } - pr->write('\r'); - pr->write('\n'); - if (i >= n) { - break; - } - printHex(pr, 4, i); - pr->write(' '); - } - int16_t h = read(); - if (h < 0) { - break; - } - pr->write(' '); - printHex(pr, 2, h); - text[i&15] = ' ' <= h && h < 0X7F ? h : '.'; - } - pr->write('\r'); - pr->write('\n'); -} //------------------------------------------------------------------------------ bool FatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { FatFile file; @@ -121,7 +67,7 @@ bool FatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { } return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -153,7 +99,7 @@ size_t FatFile::printModifyDateTime(print_t* pr) { //------------------------------------------------------------------------------ size_t FatFile::printFileSize(print_t* pr) { char buf[11]; - char *ptr = buf + sizeof(buf); + char* ptr = buf + sizeof(buf); *--ptr = 0; ptr = fmtBase10(ptr, fileSize()); while (ptr > buf) { @@ -161,6 +107,3 @@ size_t FatFile::printFileSize(print_t* pr) { } return pr->write(buf); } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileSFN.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileSFN.cpp index 11697038..3a5f6934 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileSFN.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFileSFN.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,132 +24,11 @@ */ #define DBG_FILE "FatFileSFN.cpp" #include "../common/DebugMacros.h" -#include "../common/FsStructs.h" -#include "FatFile.h" -#include "FatVolume.h" - - -namespace sdfat { - - -//------------------------------------------------------------------------------ -bool FatFile::getSFN(char* name) { - uint8_t j = 0; - uint8_t lcBit = FAT_CASE_LC_BASE; - DirFat_t* dir; - - if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isRoot()) { - name[0] = '/'; - name[1] = '\0'; - return true; - } - // cache entry - dir = reinterpret_cast(cacheDirEntry(FatCache::CACHE_FOR_READ)); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // format name - for (uint8_t i = 0; i < 11; i++) { - if (dir->name[i] == ' ') { - continue; - } - if (i == 8) { - // Position bit for extension. - lcBit = FAT_CASE_LC_EXT; - name[j++] = '.'; - } - char c = dir->name[i]; - if ('A' <= c && c <= 'Z' && (lcBit & dir->caseFlags)) { - c += 'a' - 'A'; - } - name[j++] = c; - } - name[j] = 0; - return true; - - fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printSFN(print_t* pr) { - char name[13]; - if (!getSFN(name)) { - DBG_FAIL_MACRO; - goto fail; - } - return pr->write(name); - - fail: - return 0; -} -#if !USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -bool FatFile::getName(char* name, size_t size) { - return size < 13 ? 0 : getSFN(name); -} -//------------------------------------------------------------------------------ -// format directory name field from a 8.3 name string -bool FatFile::parsePathName(const char* path, fname_t* fname, - const char** ptr) { - uint8_t uc = 0; - uint8_t lc = 0; - uint8_t bit = FNAME_FLAG_LC_BASE; - // blank fill name and extension - for (uint8_t i = 0; i < 11; i++) { - fname->sfn[i] = ' '; - } - - for (uint8_t i = 0, n = 7;; path++) { - uint8_t c = *path; - if (c == 0 || isDirSeparator(c)) { - // Done. - break; - } - if (c == '.' && n == 7) { - n = 10; // max index for full 8.3 name - i = 8; // place for extension - - // bit for extension. - bit = FNAME_FLAG_LC_EXT; - } else { - if (!legal83Char(c) || i > n) { - DBG_FAIL_MACRO; - goto fail; - } - if ('a' <= c && c <= 'z') { - c += 'A' - 'a'; - lc |= bit; - } else if ('A' <= c && c <= 'Z') { - uc |= bit; - } - fname->sfn[i++] = c; - } - } - // must have a file name, extension is optional - if (fname->sfn[0] == ' ') { - DBG_FAIL_MACRO; - goto fail; - } - // Set base-name and extension bits. - fname->flags = lc & uc ? 0 : lc; - while (isDirSeparator(*path)) { - path++; - } - *ptr = path; - return true; - - fail: - return false; -} +#include "FatLib.h" //------------------------------------------------------------------------------ // open with filename in fname #define SFN_OPEN_USES_CHKSUM 0 -bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { +bool FatFile::open(FatFile* dirFile, FatSfn_t* fname, oflag_t oflag) { uint16_t date; uint16_t time; uint8_t ms10; @@ -158,33 +37,32 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { uint8_t checksum; #endif // SFN_OPEN_USES_CHKSUM uint8_t lfnOrd = 0; - uint16_t emptyIndex; + uint16_t emptyIndex = 0; uint16_t index = 0; DirFat_t* dir; DirLfn_t* ldir; dirFile->rewind(); - while (1) { - if (!emptyFound) { - emptyIndex = index; - } - dir = reinterpret_cast(dirFile->readDirCache(true)); + while (true) { + dir = dirFile->readDirCache(true); if (!dir) { - if (dirFile->getError()) { + if (dirFile->getError()) { DBG_FAIL_MACRO; goto fail; } // At EOF if no error. break; } - if (dir->name[0] == FAT_NAME_FREE) { - emptyFound = true; - break; - } - if (dir->name[0] == FAT_NAME_DELETED) { + if (dir->name[0] == FAT_NAME_DELETED || dir->name[0] == FAT_NAME_FREE) { + if (!emptyFound) { + emptyIndex = index; + emptyFound = true; + } + if (dir->name[0] == FAT_NAME_FREE) { + break; + } lfnOrd = 0; - emptyFound = true; - } else if (isFileOrSubdir(dir)) { + } else if (isFatFileOrSubdir(dir)) { if (!memcmp(fname->sfn, dir->name, 11)) { // don't open existing file if O_EXCL if (oflag & O_EXCL) { @@ -205,7 +83,7 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { } else { lfnOrd = 0; } - } else if (isLongName(dir)) { + } else if (isFatLongName(dir)) { ldir = reinterpret_cast(dir); if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { lfnOrd = ldir->order & 0X1F; @@ -231,11 +109,7 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { goto fail; } } - if (!dirFile->seekSet(32UL*index)) { - DBG_FAIL_MACRO; - goto fail; - } - dir = reinterpret_cast(dirFile->readDirCache()); + dir = reinterpret_cast(dirFile->cacheDir(index)); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -269,14 +143,145 @@ bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { // open entry in cache. return openCachedEntry(dirFile, index, oflag, 0); - fail: +fail: return false; } //------------------------------------------------------------------------------ -size_t FatFile::printName(print_t* pr) { - return printSFN(pr); +bool FatFile::openExistingSFN(const char* path) { + FatSfn_t fname; + auto vol = FatVolume::cwv(); + while (*path == '/') { + path++; + } + if (*path == 0) { + return openRoot(vol); + } + // *this = *vol->vwd(); + this->copy(vol->vwd()); + do { + if (!parsePathName(path, &fname, &path)) { + DBG_FAIL_MACRO; + goto fail; + } + if (!openSFN(&fname)) { + DBG_FAIL_MACRO; + goto fail; + } + } while (*path); + return true; + +fail: + return false; } //------------------------------------------------------------------------------ +bool FatFile::openSFN(FatSfn_t* fname) { + DirFat_t dir; + DirLfn_t* ldir; + auto vol = m_vol; + uint8_t lfnOrd = 0; + if (!isDir()) { + DBG_FAIL_MACRO; + goto fail; + } + while (true) { + if (read(&dir, sizeof(dir)) != sizeof(dir)) { + DBG_FAIL_MACRO; + goto fail; + } + if (dir.name[0] == 0) { + DBG_FAIL_MACRO; + goto fail; + } + if (isFatFileOrSubdir(&dir) && memcmp(fname->sfn, dir.name, 11) == 0) { + uint16_t saveDirIndex = (m_curPosition - sizeof(dir)) >> 5; + uint32_t saveDirCluster = m_firstCluster; + memset(this, 0, sizeof(FatFile)); + m_attributes = dir.attributes & FS_ATTRIB_COPY; + m_flags = FILE_FLAG_READ; + if (isFatFile(&dir)) { + m_attributes |= FILE_ATTR_FILE; + if (!isReadOnly()) { + m_attributes |= FS_ATTRIB_ARCHIVE; + m_flags |= FILE_FLAG_WRITE; + } + } + m_lfnOrd = lfnOrd; + m_firstCluster = (uint32_t)getLe16(dir.firstClusterHigh) << 16; + m_firstCluster |= getLe16(dir.firstClusterLow); + m_fileSize = getLe32(dir.fileSize); + m_vol = vol; + m_dirCluster = saveDirCluster; + m_dirSector = m_vol->cacheSectorNumber(); + m_dirIndex = saveDirIndex; + return true; + } else if (isFatLongName(&dir)) { + ldir = reinterpret_cast(&dir); + if (ldir->order & FAT_ORDER_LAST_LONG_ENTRY) { + lfnOrd = ldir->order & 0X1F; + } + } else { + lfnOrd = 0; + } + } + +fail: + return false; +} +//------------------------------------------------------------------------------ +// format directory name field from a 8.3 name string +bool FatFile::parsePathName(const char* path, FatSfn_t* fname, + const char** ptr) { + uint8_t uc = 0; + uint8_t lc = 0; + uint8_t bit = FNAME_FLAG_LC_BASE; + // blank fill name and extension + for (uint8_t i = 0; i < 11; i++) { + fname->sfn[i] = ' '; + } + for (uint8_t i = 0, n = 7;; path++) { + uint8_t c = *path; + if (c == 0 || isDirSeparator(c)) { + // Done. + break; + } + if (c == '.' && n == 7) { + n = 10; // max index for full 8.3 name + i = 8; // place for extension + + // bit for extension. + bit = FNAME_FLAG_LC_EXT; + } else { + if (sfnReservedChar(c) || i > n) { + DBG_FAIL_MACRO; + goto fail; + } + if ('a' <= c && c <= 'z') { + c += 'A' - 'a'; + lc |= bit; + } else if ('A' <= c && c <= 'Z') { + uc |= bit; + } + fname->sfn[i++] = c; + } + } + // must have a file name, extension is optional + if (fname->sfn[0] == ' ') { + DBG_FAIL_MACRO; + goto fail; + } + // Set base-name and extension bits. + fname->flags = (lc & uc) ? 0 : lc; + while (isDirSeparator(*path)) { + path++; + } + *ptr = path; + return true; + +fail: + return false; +} +#if !USE_LONG_FILE_NAMES +//------------------------------------------------------------------------------ bool FatFile::remove() { DirFat_t* dir; // Can't remove if LFN or not open for write. @@ -290,7 +295,7 @@ bool FatFile::remove() { goto fail; } // Cache directory entry. - dir = reinterpret_cast(cacheDirEntry(FatCache::CACHE_FOR_WRITE)); + dir = cacheDirEntry(FsCache::CACHE_FOR_WRITE); if (!dir) { DBG_FAIL_MACRO; goto fail; @@ -305,10 +310,7 @@ bool FatFile::remove() { // Write entry to device. return m_vol->cacheSync(); - fail: +fail: return false; } #endif // !USE_LONG_FILE_NAMES - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.cpp index c476bfbc..5ea5b4be 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,41 +22,38 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "FatFormatter.h" - - -namespace sdfat { - - +#include "FatLib.h" // Set nonzero to use calculated CHS in MBR. Should not be required. -#define USE_LBA_TO_CHS 0 +#define USE_LBA_TO_CHS 1 // Constants for file system structure optimized for flash. uint16_t const BU16 = 128; uint16_t const BU32 = 8192; // Assume 512 byte sectors. const uint16_t BYTES_PER_SECTOR = 512; -const uint16_t SECTORS_PER_MB = 0X100000/BYTES_PER_SECTOR; +const uint16_t SECTORS_PER_MB = 0X100000 / BYTES_PER_SECTOR; const uint16_t FAT16_ROOT_ENTRY_COUNT = 512; const uint16_t FAT16_ROOT_SECTOR_COUNT = - 32*FAT16_ROOT_ENTRY_COUNT/BYTES_PER_SECTOR; + 32 * FAT16_ROOT_ENTRY_COUNT / BYTES_PER_SECTOR; //------------------------------------------------------------------------------ #define PRINT_FORMAT_PROGRESS 1 #if !PRINT_FORMAT_PROGRESS #define writeMsg(str) #elif defined(__AVR__) -#define writeMsg(str) if (m_pr) m_pr->print(F(str)) +#define writeMsg(str) \ + if (m_pr) m_pr->print(F(str)) #else // PRINT_FORMAT_PROGRESS -#define writeMsg(str) if (m_pr) m_pr->write(str) +#define writeMsg(str) \ + if (m_pr) m_pr->write(str) #endif // PRINT_FORMAT_PROGRESS //------------------------------------------------------------------------------ -bool FatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { +bool FatFormatter::format(FsBlockDevice* dev, uint8_t* secBuf, print_t* pr) { bool rtn; m_dev = dev; m_secBuf = secBuf; m_pr = pr; m_sectorCount = m_dev->sectorCount(); - m_capacityMB = (m_sectorCount + SECTORS_PER_MB - 1)/SECTORS_PER_MB; + m_capacityMB = (m_sectorCount + SECTORS_PER_MB - 1) / SECTORS_PER_MB; if (m_capacityMB <= 6) { writeMsg("Card is too small.\r\n"); @@ -77,7 +74,7 @@ bool FatFormatter::format(BlockDevice* dev, uint8_t* secBuf, print_t* pr) { // SDXC cards m_sectorsPerCluster = 128; } - rtn = m_sectorCount < 0X400000 ? makeFat16() :makeFat32(); + rtn = m_sectorCount < 0X400000 ? makeFat16() : makeFat32(); if (rtn) { writeMsg("Format Done\r\n"); } else { @@ -92,9 +89,9 @@ bool FatFormatter::initFatDir(uint8_t fatType, uint32_t sectorCount) { writeMsg("Writing FAT "); for (uint32_t i = 1; i < sectorCount; i++) { if (!m_dev->writeSector(m_fatStart + i, m_secBuf)) { - return false; + return false; } - if ((i%(sectorCount/32)) == 0) { + if ((i % (sectorCount / 32)) == 0) { writeMsg("."); } } @@ -136,13 +133,12 @@ void FatFormatter::initPbs() { //------------------------------------------------------------------------------ bool FatFormatter::makeFat16() { uint32_t nc; - uint32_t r; PbsFat_t* pbs = reinterpret_cast(m_secBuf); - for (m_dataStart = 2*BU16; ; m_dataStart += BU16) { - nc = (m_sectorCount - m_dataStart)/m_sectorsPerCluster; - m_fatSize = (nc + 2 + (BYTES_PER_SECTOR/2) - 1)/(BYTES_PER_SECTOR/2); - r = BU16 + 1 + 2*m_fatSize + FAT16_ROOT_SECTOR_COUNT; + for (m_dataStart = 2 * BU16;; m_dataStart += BU16) { + nc = (m_sectorCount - m_dataStart) / m_sectorsPerCluster; + m_fatSize = (nc + 2 + (BYTES_PER_SECTOR / 2) - 1) / (BYTES_PER_SECTOR / 2); + uint32_t r = BU16 + 1 + 2 * m_fatSize + FAT16_ROOT_SECTOR_COUNT; if (m_dataStart >= r) { m_relativeSectors = m_dataStart - r + BU16; break; @@ -155,8 +151,8 @@ bool FatFormatter::makeFat16() { } m_reservedSectorCount = 1; m_fatStart = m_relativeSectors + m_reservedSectorCount; - m_totalSectors = nc*m_sectorsPerCluster - + 2*m_fatSize + m_reservedSectorCount + 32; + m_totalSectors = + nc * m_sectorsPerCluster + 2 * m_fatSize + m_reservedSectorCount + 32; if (m_totalSectors < 65536) { m_partType = 0X04; } else { @@ -188,15 +184,14 @@ bool FatFormatter::makeFat16() { //------------------------------------------------------------------------------ bool FatFormatter::makeFat32() { uint32_t nc; - uint32_t r; PbsFat_t* pbs = reinterpret_cast(m_secBuf); FsInfo_t* fsi = reinterpret_cast(m_secBuf); m_relativeSectors = BU32; - for (m_dataStart = 2*BU32; ; m_dataStart += BU32) { - nc = (m_sectorCount - m_dataStart)/m_sectorsPerCluster; - m_fatSize = (nc + 2 + (BYTES_PER_SECTOR/4) - 1)/(BYTES_PER_SECTOR/4); - r = m_relativeSectors + 9 + 2*m_fatSize; + for (m_dataStart = 2 * BU32;; m_dataStart += BU32) { + nc = (m_sectorCount - m_dataStart) / m_sectorsPerCluster; + m_fatSize = (nc + 2 + (BYTES_PER_SECTOR / 4) - 1) / (BYTES_PER_SECTOR / 4); + uint32_t r = m_relativeSectors + 9 + 2 * m_fatSize; if (m_dataStart >= r) { break; } @@ -206,9 +201,9 @@ bool FatFormatter::makeFat32() { writeMsg("Bad cluster count\r\n"); return false; } - m_reservedSectorCount = m_dataStart - m_relativeSectors - 2*m_fatSize; + m_reservedSectorCount = m_dataStart - m_relativeSectors - 2 * m_fatSize; m_fatStart = m_relativeSectors + m_reservedSectorCount; - m_totalSectors = nc*m_sectorsPerCluster + m_dataStart - m_relativeSectors; + m_totalSectors = nc * m_sectorsPerCluster + m_dataStart - m_relativeSectors; // type depends on address of end sector // max CHS has lba = 16450560 = 1024*255*63 if ((m_relativeSectors + m_totalSectors) <= 16450560) { @@ -237,14 +232,14 @@ bool FatFormatter::makeFat32() { pbs->bpb.bpb32.volumeType[2] = 'T'; pbs->bpb.bpb32.volumeType[3] = '3'; pbs->bpb.bpb32.volumeType[4] = '2'; - if (!m_dev->writeSector(m_relativeSectors, m_secBuf) || + if (!m_dev->writeSector(m_relativeSectors, m_secBuf) || !m_dev->writeSector(m_relativeSectors + 6, m_secBuf)) { return false; } // write extra boot area and backup - memset(m_secBuf, 0 , BYTES_PER_SECTOR); + memset(m_secBuf, 0, BYTES_PER_SECTOR); setLe32(fsi->trailSignature, FSINFO_TRAIL_SIGNATURE); - if (!m_dev->writeSector(m_relativeSectors + 2, m_secBuf) || + if (!m_dev->writeSector(m_relativeSectors + 2, m_secBuf) || !m_dev->writeSector(m_relativeSectors + 8, m_secBuf)) { return false; } @@ -253,11 +248,11 @@ bool FatFormatter::makeFat32() { setLe32(fsi->structSignature, FSINFO_STRUCT_SIGNATURE); setLe32(fsi->freeCount, 0XFFFFFFFF); setLe32(fsi->nextFree, 0XFFFFFFFF); - if (!m_dev->writeSector(m_relativeSectors + 1, m_secBuf) || + if (!m_dev->writeSector(m_relativeSectors + 1, m_secBuf) || !m_dev->writeSector(m_relativeSectors + 7, m_secBuf)) { return false; } - return initFatDir(32, 2*m_fatSize + m_sectorsPerCluster); + return initFatDir(32, 2 * m_fatSize + m_sectorsPerCluster); } //------------------------------------------------------------------------------ bool FatFormatter::writeMbr() { @@ -267,8 +262,8 @@ bool FatFormatter::writeMbr() { #if USE_LBA_TO_CHS lbaToMbrChs(mbr->part->beginCHS, m_capacityMB, m_relativeSectors); lbaToMbrChs(mbr->part->endCHS, m_capacityMB, - m_relativeSectors + m_totalSectors -1); -#else // USE_LBA_TO_CHS + m_relativeSectors + m_totalSectors - 1); +#else // USE_LBA_TO_CHS mbr->part->beginCHS[0] = 1; mbr->part->beginCHS[1] = 1; mbr->part->beginCHS[2] = 0; @@ -283,6 +278,3 @@ bool FatFormatter::writeMbr() { setLe16(mbr->signature, MBR_SIGNATURE); return m_dev->writeSector(0, m_secBuf); } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.h index a572001a..d48a1fab 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatFormatter.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,21 +24,16 @@ */ #ifndef FatFormatter_h #define FatFormatter_h -#include "FatFile.h" +#include "../common/FsBlockDevice.h" #include "../common/SysCall.h" -#include "../common/BlockDevice.h" -#include "../common/FsStructs.h" - - -namespace sdfat { - - /** * \class FatFormatter * \brief Format a FAT volume. */ class FatFormatter { public: + /** Constructor. */ + FatFormatter() = default; /** * Format a FAT volume. * @@ -48,7 +43,7 @@ class FatFormatter { * * \return true for success or false for failure. */ - bool format(BlockDevice* dev, uint8_t* secBuffer, print_t* pr = nullptr); + bool format(FsBlockDevice* dev, uint8_t* secBuffer, print_t* pr = nullptr); private: bool initFatDir(uint8_t fatType, uint32_t sectorCount); @@ -63,16 +58,11 @@ class FatFormatter { uint32_t m_relativeSectors; uint32_t m_sectorCount; uint32_t m_totalSectors; - BlockDevice* m_dev; - print_t*m_pr; + FsBlockDevice* m_dev; + print_t* m_pr; uint8_t* m_secBuf; uint16_t m_reservedSectorCount; uint8_t m_partType; uint8_t m_sectorsPerCluster; }; - - -}; // namespace sdfat - - #endif // FatFormatter_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLib.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLib.h index ceaa348c..057d4041 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLib.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLib.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,7 +24,6 @@ */ #ifndef FatLib_h #define FatLib_h -#include "FatVolume.h" -#include "FatLibConfig.h" #include "FatFormatter.h" +#include "FatVolume.h" #endif // FatLib_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatName.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatName.cpp new file mode 100644 index 00000000..4a4dbff2 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatName.cpp @@ -0,0 +1,356 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#define DBG_FILE "FatName.cpp" +#include "../common/DebugMacros.h" +#include "../common/FsUtf.h" +#include "FatLib.h" +//------------------------------------------------------------------------------ +uint16_t FatFile::getLfnChar(DirLfn_t* ldir, uint8_t i) { + if (i < 5) { + return getLe16(ldir->unicode1 + 2 * i); + } else if (i < 11) { + return getLe16(ldir->unicode2 + 2 * (i - 5)); + } else if (i < 13) { + return getLe16(ldir->unicode3 + 2 * (i - 11)); + } + DBG_HALT_IF(i >= 13); + return 0; +} +//------------------------------------------------------------------------------ +size_t FatFile::getName(char* name, size_t size) { +#if !USE_LONG_FILE_NAMES + return getSFN(name, size); +#elif USE_UTF8_LONG_NAMES + return getName8(name, size); +#else + return getName7(name, size); +#endif // !USE_LONG_FILE_NAMES +} +//------------------------------------------------------------------------------ +size_t FatFile::getName7(char* name, size_t size) { + FatFile dir; + DirLfn_t* ldir; + size_t n = 0; + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + if (!isLFN()) { + return getSFN(name, size); + } + if (!dir.openCluster(this)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t order = 1; order <= m_lfnOrd; order++) { + ldir = reinterpret_cast(dir.cacheDir(m_dirIndex - order)); + if (!ldir) { + DBG_FAIL_MACRO; + goto fail; + } + if (ldir->attributes != FAT_ATTRIB_LONG_NAME || + order != (ldir->order & 0X1F)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t i = 0; i < 13; i++) { + uint16_t c = getLfnChar(ldir, i); + if (c == 0) { + goto done; + } + if ((n + 1) >= size) { + DBG_FAIL_MACRO; + goto fail; + } + name[n++] = c >= 0X7F ? '?' : c; + } + } +done: + name[n] = 0; + return n; + +fail: + name[0] = '\0'; + return 0; +} +//------------------------------------------------------------------------------ +size_t FatFile::getName8(char* name, size_t size) { + char* end = name + size; + char* str = name; + char* ptr; + FatFile dir; + DirLfn_t* ldir; + uint16_t hs = 0; + uint32_t cp; + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + if (!isLFN()) { + return getSFN(name, size); + } + if (!dir.openCluster(this)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t order = 1; order <= m_lfnOrd; order++) { + ldir = reinterpret_cast(dir.cacheDir(m_dirIndex - order)); + if (!ldir) { + DBG_FAIL_MACRO; + goto fail; + } + if (ldir->attributes != FAT_ATTRIB_LONG_NAME || + order != (ldir->order & 0X1F)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t i = 0; i < 13; i++) { + uint16_t c = getLfnChar(ldir, i); + if (hs) { + if (!FsUtf::isLowSurrogate(c)) { + DBG_FAIL_MACRO; + goto fail; + } + cp = FsUtf::u16ToCp(hs, c); + hs = 0; + } else if (!FsUtf::isSurrogate(c)) { + if (c == 0) { + goto done; + } + cp = c; + } else if (FsUtf::isHighSurrogate(c)) { + hs = c; + continue; + } else { + DBG_FAIL_MACRO; + goto fail; + } + // Save space for zero byte. + ptr = FsUtf::cpToMb(cp, str, end - 1); + if (!ptr) { + DBG_FAIL_MACRO; + goto fail; + } + str = ptr; + } + } +done: + *str = '\0'; + return str - name; + +fail: + *name = 0; + return 0; +} +//------------------------------------------------------------------------------ +size_t FatFile::getSFN(char* name, size_t size) { + char c; + uint8_t j = 0; + uint8_t lcBit = FAT_CASE_LC_BASE; + uint8_t* ptr; + DirFat_t* dir; + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + if (isRoot()) { + if (size < 2) { + DBG_FAIL_MACRO; + goto fail; + } + name[0] = '/'; + name[1] = '\0'; + return 1; + } + // cache entry + dir = cacheDirEntry(FsCache::CACHE_FOR_READ); + if (!dir) { + DBG_FAIL_MACRO; + goto fail; + } + ptr = dir->name; + // format name + for (uint8_t i = 0; i < 12; i++) { + if (i == 8) { + if (*ptr == ' ') { + break; + } + lcBit = FAT_CASE_LC_EXT; + c = '.'; + } else { + c = *ptr++; + if ('A' <= c && c <= 'Z' && (lcBit & dir->caseFlags)) { + c += 'a' - 'A'; + } + if (c == ' ') { + continue; + } + } + if ((j + 1u) >= size) { + DBG_FAIL_MACRO; + goto fail; + } + name[j++] = c; + } + name[j] = '\0'; + return j; + +fail: + name[0] = '\0'; + return 0; +} +//------------------------------------------------------------------------------ +size_t FatFile::printName(print_t* pr) { +#if !USE_LONG_FILE_NAMES + return printSFN(pr); +#elif USE_UTF8_LONG_NAMES + return printName8(pr); +#else // USE_LONG_FILE_NAMES + return printName7(pr); +#endif // !USE_LONG_FILE_NAMES +} +//------------------------------------------------------------------------------ +size_t FatFile::printName7(print_t* pr) { + FatFile dir; + DirLfn_t* ldir; + size_t n = 0; + uint8_t buf[13]; + uint8_t i; + + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + if (!isLFN()) { + return printSFN(pr); + } + if (!dir.openCluster(this)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t order = 1; order <= m_lfnOrd; order++) { + ldir = reinterpret_cast(dir.cacheDir(m_dirIndex - order)); + if (!ldir) { + DBG_FAIL_MACRO; + goto fail; + } + if (ldir->attributes != FAT_ATTRIB_LONG_NAME || + order != (ldir->order & 0X1F)) { + DBG_FAIL_MACRO; + goto fail; + } + for (i = 0; i < 13; i++) { + uint16_t u = getLfnChar(ldir, i); + if (u == 0) { + // End of name. + break; + } + buf[i] = u < 0X7F ? u : '?'; + n++; + } + pr->write(buf, i); + } + return n; + +fail: + return 0; +} +//------------------------------------------------------------------------------ +size_t FatFile::printName8(print_t* pr) { + FatFile dir; + DirLfn_t* ldir; + uint16_t hs = 0; + uint32_t cp; + size_t n = 0; + char buf[5]; + char* end = buf + sizeof(buf); + if (!isOpen()) { + DBG_FAIL_MACRO; + goto fail; + } + if (!isLFN()) { + return printSFN(pr); + } + if (!dir.openCluster(this)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t order = 1; order <= m_lfnOrd; order++) { + ldir = reinterpret_cast(dir.cacheDir(m_dirIndex - order)); + if (!ldir) { + DBG_FAIL_MACRO; + goto fail; + } + if (ldir->attributes != FAT_ATTRIB_LONG_NAME || + order != (ldir->order & 0X1F)) { + DBG_FAIL_MACRO; + goto fail; + } + for (uint8_t i = 0; i < 13; i++) { + uint16_t c = getLfnChar(ldir, i); + if (hs) { + if (!FsUtf::isLowSurrogate(c)) { + DBG_FAIL_MACRO; + goto fail; + } + cp = FsUtf::u16ToCp(hs, c); + hs = 0; + } else if (!FsUtf::isSurrogate(c)) { + if (c == 0) { + break; + } + cp = c; + } else if (FsUtf::isHighSurrogate(c)) { + hs = c; + continue; + } else { + DBG_FAIL_MACRO; + goto fail; + } + char* str = FsUtf::cpToMb(cp, buf, end); + if (!str) { + DBG_FAIL_MACRO; + goto fail; + } + n += pr->write(reinterpret_cast(buf), str - buf); + } + } + return n; + +fail: + return 0; +} +//------------------------------------------------------------------------------ +size_t FatFile::printSFN(print_t* pr) { + char name[13]; + if (!getSFN(name, sizeof(name))) { + DBG_FAIL_MACRO; + goto fail; + } + return pr->write(name); + +fail: + return 0; +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.cpp index 53304de1..f6d20437 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,58 +25,7 @@ #include #define DBG_FILE "FatPartition.cpp" #include "../common/DebugMacros.h" -#include "../common/FsStructs.h" -#include "FatPartition.h" - - -namespace sdfat { - - -//------------------------------------------------------------------------------ -cache_t* FatCache::read(uint32_t sector, uint8_t option) { - if (m_lbn != sector) { - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - if (!(option & CACHE_OPTION_NO_READ)) { - if (!m_part->readSector(sector, m_buffer.data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status = 0; - m_lbn = sector; - } - m_status |= option & CACHE_STATUS_MASK; - return &m_buffer; - - fail: - - return nullptr; -} -//------------------------------------------------------------------------------ -bool FatCache::sync() { - if (m_status & CACHE_STATUS_DIRTY) { - if (!m_part->writeSector(m_lbn, m_buffer.data)) { - DBG_FAIL_MACRO; - goto fail; - } - // mirror second FAT - if (m_status & CACHE_STATUS_MIRROR_FAT) { - uint32_t sector = m_lbn + m_part->sectorsPerFat(); - if (!m_part->writeSector(sector, m_buffer.data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status &= ~CACHE_STATUS_DIRTY; - } - return true; - - fail: - return false; -} +#include "FatLib.h" //------------------------------------------------------------------------------ bool FatPartition::allocateCluster(uint32_t current, uint32_t* next) { uint32_t find; @@ -89,15 +38,7 @@ bool FatPartition::allocateCluster(uint32_t current, uint32_t* next) { find = m_allocSearchStart; setStart = true; } - // Following loop may iterate over up to 268 million clusters, so we need to allow - // the OS/hardware to do its work occasionally during the search or a WDT error will - // occur on the ESP8266. - int yieldCnt = 5000; while (1) { - if (!(--yieldCnt)) { - yieldCnt = 5000; - SysCall::yield(); - } find++; if (find > m_lastCluster) { if (setStart) { @@ -143,7 +84,7 @@ bool FatPartition::allocateCluster(uint32_t current, uint32_t* next) { *next = find; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -159,15 +100,7 @@ bool FatPartition::allocContiguous(uint32_t count, uint32_t* firstCluster) { endCluster = bgnCluster = m_allocSearchStart + 1; // search the FAT for free clusters - // Following loop may iterate over up to 268 million clusters, so we need to allow - // the OS/hardware to do its work occasionally during the search or a WDT error will - // occur on the ESP8266. - int yieldCnt = 5000; while (1) { - if (!(--yieldCnt)) { - yieldCnt = 5000; - SysCall::yield(); - } if (endCluster > m_lastCluster) { // Can't find space. DBG_FAIL_MACRO; @@ -216,19 +149,15 @@ bool FatPartition::allocContiguous(uint32_t count, uint32_t* firstCluster) { *firstCluster = bgnCluster; return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ -uint32_t FatPartition::clusterStartSector(uint32_t cluster) const { - return m_dataStartSector + ((cluster - 2) << m_sectorsPerClusterShift); -} -//------------------------------------------------------------------------------ // Fetch a FAT entry - return -1 error, 0 EOC, else 1. int8_t FatPartition::fatGet(uint32_t cluster, uint32_t* value) { uint32_t sector; uint32_t next; - cache_t* pc; + uint8_t* pc; // error if reserved cluster of beyond FAT if (cluster < 2 || cluster > m_lastCluster) { @@ -238,44 +167,44 @@ int8_t FatPartition::fatGet(uint32_t cluster, uint32_t* value) { if (fatType() == 32) { sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 2)); - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_READ); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; goto fail; } - next = getLe32(reinterpret_cast - (&pc->fat32[cluster & (m_sectorMask >> 2)])); + uint16_t offset = (cluster << 2) & m_sectorMask; + next = getLe32(pc + offset); } else if (fatType() == 16) { cluster &= 0XFFFF; - sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1) ); - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_READ); + sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1)); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; goto fail; } - next = getLe16(reinterpret_cast - (&pc->fat16[cluster & (m_sectorMask >> 1)])); + uint16_t offset = (cluster << 1) & m_sectorMask; + next = getLe16(pc + offset); } else if (FAT12_SUPPORT && fatType() == 12) { uint16_t index = cluster; index += index >> 1; sector = m_fatStartSector + (index >> m_bytesPerSectorShift); - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_READ); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; goto fail; } index &= m_sectorMask; - uint16_t tmp = pc->data[index]; + uint16_t tmp = pc[index]; index++; if (index == m_bytesPerSector) { - pc = cacheFetchFat(sector + 1, FatCache::CACHE_FOR_READ); + pc = fatCachePrepare(sector + 1, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; goto fail; } index = 0; } - tmp |= pc->data[index] << 8; + tmp |= pc[index] << 8; next = cluster & 1 ? tmp >> 4 : tmp & 0XFFF; } else { DBG_FAIL_MACRO; @@ -287,14 +216,14 @@ int8_t FatPartition::fatGet(uint32_t cluster, uint32_t* value) { *value = next; return 1; - fail: +fail: return -1; } //------------------------------------------------------------------------------ // Store a FAT entry bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { uint32_t sector; - cache_t* pc; + uint8_t* pc; // error if reserved cluster of beyond FAT if (cluster < 2 || cluster > m_lastCluster) { @@ -304,26 +233,26 @@ bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { if (fatType() == 32) { sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 2)); - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_WRITE); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_WRITE); if (!pc) { DBG_FAIL_MACRO; goto fail; } - setLe32(reinterpret_cast - (&pc->fat32[cluster & (m_sectorMask >> 2)]), value); + uint16_t offset = (cluster << 2) & m_sectorMask; + setLe32(pc + offset, value); return true; } if (fatType() == 16) { cluster &= 0XFFFF; - sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1) ); - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_WRITE); + sector = m_fatStartSector + (cluster >> (m_bytesPerSectorShift - 1)); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_WRITE); if (!pc) { DBG_FAIL_MACRO; goto fail; } - setLe16(reinterpret_cast - (&pc->fat16[cluster & (m_sectorMask >> 1)]), value); + uint16_t offset = (cluster << 1) & m_sectorMask; + setLe16(pc + offset, value); return true; } @@ -331,7 +260,7 @@ bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { uint16_t index = cluster; index += index >> 1; sector = m_fatStartSector + (index >> m_bytesPerSectorShift); - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_WRITE); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_WRITE); if (!pc) { DBG_FAIL_MACRO; goto fail; @@ -339,15 +268,15 @@ bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { index &= m_sectorMask; uint8_t tmp = value; if (cluster & 1) { - tmp = (pc->data[index] & 0XF) | tmp << 4; + tmp = (pc[index] & 0XF) | tmp << 4; } - pc->data[index] = tmp; + pc[index] = tmp; index++; if (index == m_bytesPerSector) { sector++; index = 0; - pc = cacheFetchFat(sector, FatCache::CACHE_FOR_WRITE); + pc = fatCachePrepare(sector, FsCache::CACHE_FOR_WRITE); if (!pc) { DBG_FAIL_MACRO; goto fail; @@ -355,16 +284,16 @@ bool FatPartition::fatPut(uint32_t cluster, uint32_t value) { } tmp = value >> 4; if (!(cluster & 1)) { - tmp = ((pc->data[index] & 0XF0)) | tmp >> 4; + tmp = ((pc[index] & 0XF0)) | tmp >> 4; } - pc->data[index] = tmp; + pc[index] = tmp; return true; } else { DBG_FAIL_MACRO; goto fail; } - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -393,7 +322,7 @@ bool FatPartition::freeChain(uint32_t cluster) { return true; - fail: +fail: return false; } //------------------------------------------------------------------------------ @@ -423,24 +352,26 @@ int32_t FatPartition::freeClusterCount() { } else if (fatType() == 16 || fatType() == 32) { sector = m_fatStartSector; while (todo) { - cache_t* pc = cacheFetchFat(sector++, FatCache::CACHE_FOR_READ); + uint8_t* pc = fatCachePrepare(sector++, FsCache::CACHE_FOR_READ); if (!pc) { DBG_FAIL_MACRO; goto fail; } - n = fatType() == 16 ? m_bytesPerSector/2 : m_bytesPerSector/4; + n = fatType() == 16 ? m_bytesPerSector / 2 : m_bytesPerSector / 4; if (todo < n) { n = todo; } if (fatType() == 16) { + uint16_t* p16 = reinterpret_cast(pc); for (uint16_t i = 0; i < n; i++) { - if (pc->fat16[i] == 0) { + if (p16[i] == 0) { free++; } } } else { + uint32_t* p32 = reinterpret_cast(pc); for (uint16_t i = 0; i < n; i++) { - if (pc->fat32[i] == 0) { + if (p32[i] == 0) { free++; } } @@ -455,14 +386,13 @@ int32_t FatPartition::freeClusterCount() { setFreeClusterCount(free); return free; - fail: +fail: return -1; } //------------------------------------------------------------------------------ -bool FatPartition::init(BlockDevice* dev, uint8_t part) { - uint32_t clusterCount; +bool FatPartition::init(FsBlockDevice* dev, uint8_t part, uint32_t volStart) { + uint32_t countOfClusters; uint32_t totalSectors; - uint32_t volumeStartSector = 0; m_blockDev = dev; pbs_t* pbs; BpbFat32_t* bpb; @@ -470,9 +400,9 @@ bool FatPartition::init(BlockDevice* dev, uint8_t part) { uint8_t tmp; m_fatType = 0; m_allocSearchStart = 1; - m_cache.init(this); + m_cache.init(dev); #if USE_SEPARATE_FAT_CACHE - m_fatCache.init(this); + m_fatCache.init(dev); #endif // USE_SEPARATE_FAT_CACHE // if part == 0 assume super floppy with FAT boot sector in sector zero // if part > 0 assume mbr volume with partition table @@ -481,21 +411,27 @@ bool FatPartition::init(BlockDevice* dev, uint8_t part) { DBG_FAIL_MACRO; goto fail; } - mbr = reinterpret_cast - (cacheFetchData(0, FatCache::CACHE_FOR_READ)); - MbrPart_t* mp = mbr->part + part - 1; - - if (!mbr || mp->type == 0 || (mp->boot != 0 && mp->boot != 0X80)) { + mbr = reinterpret_cast( + dataCachePrepare(0, FsCache::CACHE_FOR_READ)); + if (!mbr) { DBG_FAIL_MACRO; goto fail; } - volumeStartSector = getLe32(mp->relativeSectors); + MbrPart_t* mp = mbr->part + part - 1; + if (mp->type == 0 || (mp->boot != 0 && mp->boot != 0X80)) { + DBG_FAIL_MACRO; + goto fail; + } + volStart = getLe32(mp->relativeSectors); + } + pbs = reinterpret_cast( + dataCachePrepare(volStart, FsCache::CACHE_FOR_READ)); + if (!pbs) { + DBG_FAIL_MACRO; + goto fail; } - pbs = reinterpret_cast - (cacheFetchData(volumeStartSector, FatCache::CACHE_FOR_READ)); bpb = reinterpret_cast(pbs->bpb); - - if (!pbs || bpb->fatCount != 2 || getLe16(bpb->bytesPerSector) != 512) { + if (bpb->fatCount != 2 || getLe16(bpb->bytesPerSector) != m_bytesPerSector) { DBG_FAIL_MACRO; goto fail; } @@ -514,7 +450,7 @@ bool FatPartition::init(BlockDevice* dev, uint8_t part) { if (m_sectorsPerFat == 0) { m_sectorsPerFat = getLe32(bpb->sectorsPerFat32); } - m_fatStartSector = volumeStartSector + getLe16(bpb->reservedSectorCount); + m_fatStartSector = volStart + getLe16(bpb->reservedSectorCount); // count for FAT16 zero for FAT32 m_rootDirEntryCount = getLe16(bpb->rootDirEntryCount); @@ -522,8 +458,10 @@ bool FatPartition::init(BlockDevice* dev, uint8_t part) { // directory start for FAT16 dataStart for FAT32 m_rootDirStart = m_fatStartSector + 2 * m_sectorsPerFat; // data start for FAT16 and FAT32 - m_dataStartSector = m_rootDirStart + - ((32 * m_rootDirEntryCount + m_bytesPerSector - 1)/m_bytesPerSector); + m_dataStartSector = + m_rootDirStart + + ((FS_DIR_SIZE * m_rootDirEntryCount + m_bytesPerSector - 1) / + m_bytesPerSector); // total sectors for FAT16 or FAT32 totalSectors = getLe16(bpb->totalSectors16); @@ -531,32 +469,33 @@ bool FatPartition::init(BlockDevice* dev, uint8_t part) { totalSectors = getLe32(bpb->totalSectors32); } // total data sectors - clusterCount = totalSectors - (m_dataStartSector - volumeStartSector); + countOfClusters = totalSectors - (m_dataStartSector - volStart); // divide by cluster size to get cluster count - clusterCount >>= m_sectorsPerClusterShift; - m_lastCluster = clusterCount + 1; + countOfClusters >>= m_sectorsPerClusterShift; + m_lastCluster = countOfClusters + 1; // Indicate unknown number of free clusters. setFreeClusterCount(-1); // FAT type is determined by cluster count - if (clusterCount < 4085) { + if (countOfClusters < 4085) { m_fatType = 12; if (!FAT12_SUPPORT) { DBG_FAIL_MACRO; goto fail; } - } else if (clusterCount < 65525) { + } else if (countOfClusters < 65525) { m_fatType = 16; } else { m_rootDirStart = getLe32(bpb->fat32RootCluster); m_fatType = 32; } + m_cache.setMirrorOffset(m_sectorsPerFat); +#if USE_SEPARATE_FAT_CACHE + m_fatCache.setMirrorOffset(m_sectorsPerFat); +#endif // USE_SEPARATE_FAT_CACHE return true; - fail: +fail: return false; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.h index 35371e53..076573d0 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatPartition.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,14 +29,11 @@ * \brief FatPartition class */ #include -#include "FatLibConfig.h" -#include "../common/SysCall.h" -#include "../common/BlockDevice.h" + +#include "../common/FsBlockDevice.h" +#include "../common/FsCache.h" #include "../common/FsStructs.h" - - -namespace sdfat { - +#include "../common/SysCall.h" /** Type for FAT12 partition */ const uint8_t FAT_TYPE_FAT12 = 12; @@ -47,90 +44,6 @@ const uint8_t FAT_TYPE_FAT16 = 16; /** Type for FAT12 partition */ const uint8_t FAT_TYPE_FAT32 = 32; -//------------------------------------------------------------------------------ -// Forward declaration of FatPartition. -class FatPartition; -//------------------------------------------------------------------------------ -/** - * \brief Cache for an raw data sector. - */ -union cache_t { - /** Used to access cached file data sectors. */ - uint8_t data[512]; - /** Used to access cached FAT16 entries. */ - uint16_t fat16[256]; - /** Used to access cached FAT32 entries. */ - uint32_t fat32[128]; - /** Used to access cached directory entries. */ - DirFat_t dir[16]; -}; -//============================================================================== -/** - * \class FatCache - * \brief Sector cache. - */ -class FatCache { - public: - /** Cached sector is dirty */ - static const uint8_t CACHE_STATUS_DIRTY = 1; - /** Cashed sector is FAT entry and must be mirrored in second FAT. */ - static const uint8_t CACHE_STATUS_MIRROR_FAT = 2; - /** Cache sector status bits */ - static const uint8_t CACHE_STATUS_MASK - = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT; - /** Sync existing sector but do not read new sector. */ - static const uint8_t CACHE_OPTION_NO_READ = 4; - /** Cache sector for read. */ - static const uint8_t CACHE_FOR_READ = 0; - /** Cache sector for write. */ - static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY; - /** Reserve cache sector for write - do not read from sector device. */ - static const uint8_t CACHE_RESERVE_FOR_WRITE - = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; - /** \return Cache sector address. */ - cache_t* buffer() { - return &m_buffer; - } - /** Set current sector dirty. */ - void dirty() { - m_status |= CACHE_STATUS_DIRTY; - } - /** Initialize the cache. - * \param[in] vol FatPartition that owns this FatCache. - */ - void init(FatPartition *vol) { - m_part = vol; - invalidate(); - } - /** Invalidate current cache sector. */ - void invalidate() { - m_status = 0; - m_lbn = 0XFFFFFFFF; - } - /** \return dirty status */ - bool isDirty() { - return m_status & CACHE_STATUS_DIRTY; - } - /** \return Logical sector number for cached sector. */ - uint32_t sector() { - return m_lbn; - } - /** Read a sector into the cache. - * \param[in] sector Sector to read. - * \param[in] option mode for cached sector. - * \return Address of cached sector. */ - cache_t* read(uint32_t sector, uint8_t option); - /** Write current sector if dirty. - * \return true for success or false for failure. - */ - bool sync(); - - private: - uint8_t m_status; - FatPartition* m_part; - uint32_t m_lbn; - cache_t m_buffer; -}; //============================================================================== /** * \class FatPartition @@ -140,102 +53,78 @@ class FatPartition { public: /** Create an instance of FatPartition */ - FatPartition() : m_fatType(0) {} + FatPartition() = default; /** \return The shift count required to multiply by bytesPerCluster. */ - uint8_t bytesPerClusterShift() { + uint8_t bytesPerClusterShift() const { return m_sectorsPerClusterShift + m_bytesPerSectorShift; } /** \return Number of bytes in a cluster. */ - uint16_t bytesPerCluster() { + uint16_t bytesPerCluster() const { return m_bytesPerSector << m_sectorsPerClusterShift; } /** \return Number of bytes per sector. */ - uint16_t bytesPerSector() { - return m_bytesPerSector; - } + uint16_t bytesPerSector() const { return m_bytesPerSector; } /** \return The shift count required to multiply by bytesPerCluster. */ - uint8_t bytesPerSectorShift() { - return m_bytesPerSectorShift; + uint8_t bytesPerSectorShift() const { return m_bytesPerSectorShift; } + /** \return Number of directory entries per cluster. */ + uint16_t dirEntriesPerCluster() const { + return m_sectorsPerCluster * (m_bytesPerSector / FS_DIR_SIZE); } /** \return Mask for sector offset. */ - uint16_t sectorMask() { - return m_sectorMask; - } + uint16_t sectorMask() const { return m_sectorMask; } /** \return The volume's cluster size in sectors. */ - uint8_t sectorsPerCluster() const { - return m_sectorsPerCluster; - } + uint8_t sectorsPerCluster() const { return m_sectorsPerCluster; } #ifndef DOXYGEN_SHOULD_SKIP_THIS - // Use sectorsPerCluster(). blocksPerCluster() will be removed in the future. - uint8_t blocksPerCluster() __attribute__ ((deprecated)) {return sectorsPerCluster();} //NOLINT + uint8_t __attribute__((error("use sectorsPerCluster()"))) blocksPerCluster(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** \return The number of sectors in one FAT. */ - uint32_t sectorsPerFat() const { - return m_sectorsPerFat; - } + uint32_t sectorsPerFat() const { return m_sectorsPerFat; } /** Clear the cache and returns a pointer to the cache. Not for normal apps. * \return A pointer to the cache buffer or zero if an error occurs. */ - cache_t* cacheClear() { - if (!cacheSync()) { - return nullptr; - } - m_cache.invalidate(); - return m_cache.buffer(); - } + uint8_t* cacheClear() { return m_cache.clear(); } /** \return The total number of clusters in the volume. */ - uint32_t clusterCount() const { - return m_lastCluster - 1; - } + uint32_t clusterCount() const { return m_lastCluster - 1; } /** \return The shift count required to multiply by sectorsPerCluster. */ - uint8_t sectorsPerClusterShift() const { - return m_sectorsPerClusterShift; - } + uint8_t sectorsPerClusterShift() const { return m_sectorsPerClusterShift; } /** \return The logical sector number for the start of file data. */ - uint32_t dataStartSector() const { - return m_dataStartSector; + uint32_t dataStartSector() const { return m_dataStartSector; } + /** End access to volume + * \return pointer to sector size buffer for format. + */ + uint8_t* end() { + m_fatType = 0; + return cacheClear(); } /** \return The number of File Allocation Tables. */ - uint8_t fatCount() { - return 2; - } + uint8_t fatCount() const { return 2; } /** \return The logical sector number for the start of the first FAT. */ - uint32_t fatStartSector() const { - return m_fatStartSector; - } + uint32_t fatStartSector() const { return m_fatStartSector; } /** \return The FAT type of the volume. Values are 12, 16 or 32. */ - uint8_t fatType() const { - return m_fatType; - } - /** Volume free space in clusters. - * - * \return Count of free clusters for success or -1 if an error occurs. - */ + uint8_t fatType() const { return m_fatType; } + /** \return free cluster count or -1 if an error occurs. */ int32_t freeClusterCount(); /** Initialize a FAT partition. * - * \param[in] dev BlockDevice for this partition. + * \param[in] dev FsBlockDevice for this partition. * \param[in] part The partition to be used. Legal values for \a part are * 1-4 to use the corresponding partition on a device formatted with * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in sector zero. + * a super floppy with the FAT boot sector in sector volStart. + * \param[in] volStart location of volume if part is zero. * * \return true for success or false for failure. */ - bool init(BlockDevice* dev, uint8_t part = 1); + bool init(FsBlockDevice* dev, uint8_t part = 1, uint32_t volStart = 0); /** \return The number of entries in the root directory for FAT16 volumes. */ - uint16_t rootDirEntryCount() const { - return m_rootDirEntryCount; - } + uint16_t rootDirEntryCount() const { return m_rootDirEntryCount; } /** \return The logical sector number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes. */ - uint32_t rootDirStart() const { - return m_rootDirStart; - } + uint32_t rootDirStart() const { return m_rootDirStart; } /** \return The number of sectors in the volume */ uint32_t volumeSectorCount() const { - return sectorsPerCluster()*clusterCount(); + return sectorsPerCluster() * clusterCount(); } /** Debug access to FAT table * @@ -243,135 +132,107 @@ class FatPartition { * \param[out] v value of entry * \return -1 error, 0 EOC, else 1. */ - int8_t dbgFat(uint32_t n, uint32_t* v) { - return fatGet(n, v); - } + int8_t dbgFat(uint32_t n, uint32_t* v) { return fatGet(n, v); } + /** + * Check for FsBlockDevice busy. + * + * \return true if busy else false. + */ + bool isBusy() { return m_blockDev->isBusy(); } //---------------------------------------------------------------------------- #ifndef DOXYGEN_SHOULD_SKIP_THIS - void dmpDirSector(print_t* pr, uint32_t sector); + bool dmpDirSector(print_t* pr, uint32_t sector); void dmpFat(print_t* pr, uint32_t start, uint32_t count); - void dmpRootDir(print_t* pr); + bool dmpRootDir(print_t* pr, uint32_t n = 0); void dmpSector(print_t* pr, uint32_t sector, uint8_t bits = 8); #endif // DOXYGEN_SHOULD_SKIP_THIS //---------------------------------------------------------------------------- private: - /** FatCache allowed access to private members. */ - friend class FatCache; /** FatFile allowed access to private members. */ friend class FatFile; //---------------------------------------------------------------------------- - static const uint8_t m_bytesPerSectorShift = 9; - static const uint16_t m_bytesPerSector = 512; - static const uint16_t m_sectorMask = 0x1FF; + static const uint8_t m_bytesPerSectorShift = 9; + static const uint16_t m_bytesPerSector = 1 << m_bytesPerSectorShift; + static const uint16_t m_sectorMask = m_bytesPerSector - 1; //---------------------------------------------------------------------------- - BlockDevice* m_blockDev; // sector device - uint8_t m_sectorsPerCluster; // Cluster size in sectors. - uint8_t m_clusterSectorMask; // Mask to extract sector of cluster. - uint8_t m_sectorsPerClusterShift; // Cluster count to sector count shift. - uint8_t m_fatType; // Volume type (12, 16, OR 32). - uint16_t m_rootDirEntryCount; // Number of entries in FAT16 root dir. - uint32_t m_allocSearchStart; // Start cluster for alloc search. - uint32_t m_sectorsPerFat; // FAT size in sectors - uint32_t m_dataStartSector; // First data sector number. - uint32_t m_fatStartSector; // Start sector for first FAT. - uint32_t m_lastCluster; // Last cluster number in FAT. - uint32_t m_rootDirStart; // Start sector FAT16, cluster FAT32. + FsBlockDevice* m_blockDev; // sector device + uint8_t m_sectorsPerCluster; // Cluster size in sectors. + uint8_t m_clusterSectorMask; // Mask to extract sector of cluster. + uint8_t m_sectorsPerClusterShift; // Cluster count to sector count shift. + uint8_t m_fatType = 0; // Volume type (12, 16, OR 32). + uint16_t m_rootDirEntryCount; // Number of entries in FAT16 root dir. + uint32_t m_allocSearchStart; // Start cluster for alloc search. + uint32_t m_sectorsPerFat; // FAT size in sectors + uint32_t m_dataStartSector; // First data sector number. + uint32_t m_fatStartSector; // Start sector for first FAT. + uint32_t m_lastCluster; // Last cluster number in FAT. + uint32_t m_rootDirStart; // Start sector FAT16, cluster FAT32. //---------------------------------------------------------------------------- // sector I/O functions. - bool readSector(uint32_t sector, uint8_t* dst) { - return m_blockDev->readSector(sector, dst); + bool cacheSafeRead(uint32_t sector, uint8_t* dst) { + return m_cache.cacheSafeRead(sector, dst); } - bool syncDevice() { - return m_blockDev->syncDevice(); + bool cacheSafeRead(uint32_t sector, uint8_t* dst, size_t count) { + return m_cache.cacheSafeRead(sector, dst, count); } - bool writeSector(uint32_t sector, const uint8_t* src) { - return m_blockDev->writeSector(sector, src); + bool cacheSafeWrite(uint32_t sector, const uint8_t* dst) { + return m_cache.cacheSafeWrite(sector, dst); } -#if USE_MULTI_SECTOR_IO - bool readSectors(uint32_t sector, uint8_t* dst, size_t ns) { - return m_blockDev->readSectors(sector, dst, ns); + bool cacheSafeWrite(uint32_t sector, const uint8_t* dst, size_t count) { + return m_cache.cacheSafeWrite(sector, dst, count); } - bool writeSectors(uint32_t sector, const uint8_t* src, size_t ns) { - return m_blockDev->writeSectors(sector, src, ns); - } -#endif // USE_MULTI_SECTOR_IO + bool syncDevice() { return m_blockDev->syncDevice(); } #if MAINTAIN_FREE_CLUSTER_COUNT - int32_t m_freeClusterCount; // Count of free clusters in volume. - void setFreeClusterCount(int32_t value) { - m_freeClusterCount = value; - } + int32_t m_freeClusterCount; // Count of free clusters in volume. + void setFreeClusterCount(int32_t value) { m_freeClusterCount = value; } void updateFreeClusterCount(int32_t change) { if (m_freeClusterCount >= 0) { m_freeClusterCount += change; } } -#else // MAINTAIN_FREE_CLUSTER_COUNT - void setFreeClusterCount(int32_t value) { - (void)value; - } - void updateFreeClusterCount(int32_t change) { - (void)change; - } +#else // MAINTAIN_FREE_CLUSTER_COUNT + void setFreeClusterCount(int32_t value) { (void)value; } + void updateFreeClusterCount(int32_t change) { (void)change; } #endif // MAINTAIN_FREE_CLUSTER_COUNT - -// sector caches - FatCache m_cache; + // sector caches + FsCache m_cache; + FsCache* dataCache() { return &m_cache; } #if USE_SEPARATE_FAT_CACHE - FatCache m_fatCache; - cache_t* cacheFetchFat(uint32_t sector, uint8_t options) { - return m_fatCache.read(sector, - options | FatCache::CACHE_STATUS_MIRROR_FAT); + FsCache m_fatCache; + uint8_t* fatCachePrepare(uint32_t sector, uint8_t options) { + options |= FsCache::CACHE_STATUS_MIRROR_FAT; + return m_fatCache.prepare(sector, options); } bool cacheSync() { return m_cache.sync() && m_fatCache.sync() && syncDevice(); } -#else // USE_SEPARATE_FAT_CACHE - cache_t* cacheFetchFat(uint32_t sector, uint8_t options) { - return cacheFetchData(sector, - options | FatCache::CACHE_STATUS_MIRROR_FAT); - } - bool cacheSync() { - return m_cache.sync() && syncDevice(); +#else // USE_SEPARATE_FAT_CACHE + uint8_t* fatCachePrepare(uint32_t sector, uint8_t options) { + options |= FsCache::CACHE_STATUS_MIRROR_FAT; + return dataCachePrepare(sector, options); } + bool cacheSync() { return m_cache.sync() && syncDevice(); } #endif // USE_SEPARATE_FAT_CACHE - cache_t* cacheFetchData(uint32_t sector, uint8_t options) { - return m_cache.read(sector, options); - } - void cacheInvalidate() { - m_cache.invalidate(); - } - bool cacheSyncData() { - return m_cache.sync(); - } - cache_t* cacheAddress() { - return m_cache.buffer(); - } - uint32_t cacheSectorNumber() { - return m_cache.sector(); - } - void cacheDirty() { - m_cache.dirty(); + uint8_t* dataCachePrepare(uint32_t sector, uint8_t options) { + return m_cache.prepare(sector, options); } + bool cacheSyncData() { return m_cache.sync(); } + uint8_t* cacheAddress() { return m_cache.cacheBuffer(); } + uint32_t cacheSectorNumber() { return m_cache.sector(); } + void cacheDirty() { m_cache.dirty(); } //---------------------------------------------------------------------------- bool allocateCluster(uint32_t current, uint32_t* next); bool allocContiguous(uint32_t count, uint32_t* firstCluster); uint8_t sectorOfCluster(uint32_t position) const { return (position >> 9) & m_clusterSectorMask; } - uint32_t clusterStartSector(uint32_t cluster) const; + uint32_t clusterStartSector(uint32_t cluster) const { + return m_dataStartSector + ((cluster - 2) << m_sectorsPerClusterShift); + } int8_t fatGet(uint32_t cluster, uint32_t* value); bool fatPut(uint32_t cluster, uint32_t value); - bool fatPutEOC(uint32_t cluster) { - return fatPut(cluster, 0x0FFFFFFF); - } + bool fatPutEOC(uint32_t cluster) { return fatPut(cluster, 0x0FFFFFFF); } bool freeChain(uint32_t cluster); - bool isEOC(uint32_t cluster) const { - return cluster > m_lastCluster; - } + bool isEOC(uint32_t cluster) const { return cluster > m_lastCluster; } }; - - -}; // namespace sdfat - - #endif // FatPartition diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.cpp index 4aa66277..3003546a 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,28 +22,25 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "FatVolume.h" - - -namespace sdfat { - - +#define DBG_FILE "FatVolume.cpp" +#include "../common/DebugMacros.h" +#include "FatLib.h" FatVolume* FatVolume::m_cwv = nullptr; //------------------------------------------------------------------------------ -bool FatVolume::chdir(const char *path) { +bool FatVolume::chdir(const char* path) { FatFile dir; if (!dir.open(vwd(), path, O_RDONLY)) { + DBG_FAIL_MACRO; goto fail; } if (!dir.isDir()) { + DBG_FAIL_MACRO; goto fail; } - m_vwd = dir; + // m_vwd = dir; + m_vwd.copy(&dir); return true; - fail: +fail: return false; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.h index be6e5d15..daf64c39 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatVolume.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,13 +24,7 @@ */ #ifndef FatVolume_h #define FatVolume_h -#include "FatPartition.h" #include "FatFile.h" - - -namespace sdfat { - - /** * \file * \brief FatVolume class @@ -40,31 +34,51 @@ namespace sdfat { * \class FatVolume * \brief Integration class for the FatLib library. */ -class FatVolume : public FatPartition { +class FatVolume : public FatPartition { public: + /** Get file's user settable attributes. + * \param[in] path path to file. + * \return user settable file attributes for success else -1. + */ + int attrib(const char* path) { + File32 tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib() : -1; + } + /** Set file's user settable attributes. + * \param[in] path path to file. + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \return true for success or false for failure. + */ + bool attrib(const char* path, uint8_t bits) { + File32 tmpFile; + return tmpFile.open(this, path, O_RDONLY) ? tmpFile.attrib(bits) : false; + } /** * Initialize an FatVolume object. * \param[in] dev Device block driver. * \param[in] setCwv Set current working volume if true. * \param[in] part partition to initialize. + * \param[in] volStart Start sector of volume if part is zero. * \return true for success or false for failure. */ - bool begin(BlockDevice* dev, bool setCwv = true, uint8_t part = 1) { - if (!init(dev, part)) { + bool begin(FsBlockDevice* dev, bool setCwv = true, uint8_t part = 1, + uint32_t volStart = 0) { + if (!init(dev, part, volStart)) { return false; } if (!chdir()) { return false; } - if (setCwv) { + if (setCwv || !m_cwv) { m_cwv = this; } return true; } /** Change global current working volume to this volume. */ - void chvol() {m_cwv = this;} - /** \return current working volume. */ - static FatVolume* cwv() {return m_cwv;} + void chvol() { m_cwv = this; } + /** * Set volume working directory to root. * \return true for success or false for failure. @@ -78,8 +92,7 @@ class FatVolume : public FatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const char *path); - + bool chdir(const char* path); //---------------------------------------------------------------------------- /** * Test for the existence of a file. @@ -107,9 +120,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool ls(print_t* pr, uint8_t flags = 0) { - return m_vwd.ls(pr, flags); - } + bool ls(print_t* pr, uint8_t flags = 0) { return m_vwd.ls(pr, flags); } //---------------------------------------------------------------------------- /** List the contents of a directory. * @@ -151,7 +162,7 @@ class FatVolume : public FatPartition { * \param[in] oflag open flags. * \return a File32 object. */ - File32 open(const char *path, oflag_t oflag = O_RDONLY) { + File32 open(const char* path, oflag_t oflag = O_RDONLY) { File32 tmpFile; tmpFile.open(this, path, oflag); return tmpFile; @@ -182,7 +193,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool rename(const char *oldPath, const char *newPath) { + bool rename(const char* oldPath, const char* newPath) { FatFile file; return file.open(vwd(), oldPath, O_RDONLY) && file.rename(vwd(), newPath); } @@ -213,7 +224,7 @@ class FatVolume : public FatPartition { return file.open(this, path, O_WRONLY) && file.truncate(length); } #if ENABLE_ARDUINO_SERIAL - /** List the directory contents of the root directory to Serial. + /** List the directory contents of the root directory to Serial. * * \param[in] flags The inclusive OR of * @@ -225,9 +236,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags = 0) { return ls(&Serial, flags); } /** List the directory contents of a directory to Serial. * * \param[in] path directory to list. @@ -253,19 +262,15 @@ class FatVolume : public FatPartition { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const String& path) { - return chdir(path.c_str()); - } - /** + bool chdir(const String& path) { return chdir(path.c_str()); } + /** * Test for the existence of a file. * * \param[in] path Path of the file to be tested for. * * \return true if the file exists else false. */ - bool exists(const String& path) { - return exists(path.c_str()); - } + bool exists(const String& path) { return exists(path.c_str()); } /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid name for the subdirectory. @@ -284,7 +289,7 @@ class FatVolume : public FatPartition { * \return a File32 object. */ File32 open(const String& path, oflag_t oflag = O_RDONLY) { - return open(path.c_str(), oflag ); + return open(path.c_str(), oflag); } /** Remove a file from the volume root directory. * @@ -292,9 +297,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool remove(const String& path) { - return remove(path.c_str()); - } + bool remove(const String& path) { return remove(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -320,9 +323,7 @@ class FatVolume : public FatPartition { * * \return true for success or false for failure. */ - bool rmdir(const String& path) { - return rmdir(path.c_str()); - } + bool rmdir(const String& path) { return rmdir(path.c_str()); } /** Truncate a file to a specified length. The current file position * will be at the new EOF. * @@ -337,14 +338,10 @@ class FatVolume : public FatPartition { #endif // ENABLE_ARDUINO_STRING private: - FatFile* vwd() {return &m_vwd;} friend FatFile; - FatFile m_vwd; + static FatVolume* cwv() { return m_cwv; } + FatFile* vwd() { return &m_vwd; } static FatVolume* m_cwv; + FatFile m_vwd; }; - - -}; // namespace sdfat - - #endif // FatVolume_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.cpp index a8018d13..d90959e9 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,11 +24,6 @@ */ #define FREE_STACK_CPP #include "FreeStack.h" - - -namespace sdfat { - - #if defined(HAS_UNUSED_STACK) && HAS_UNUSED_STACK //------------------------------------------------------------------------------ inline char* stackBegin() { @@ -44,7 +39,7 @@ inline char* stackBegin() { } //------------------------------------------------------------------------------ inline char* stackPointer() { -#if defined(__AVR__) +#if defined(__AVR__) return reinterpret_cast(SP); #elif defined(__arm__) register uint32_t sp asm("sp"); @@ -83,6 +78,3 @@ int UnusedStack() { return n; } #endif // defined(HAS_UNUSED_STACK) && HAS_UNUSED_STACK - - -}; // namepace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.h index 7901407b..60729fac 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FreeStack.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -34,7 +34,7 @@ /** Indicate FillStack() and UnusedStack() are available. */ #define HAS_UNUSED_STACK 1 /** boundary between stack and heap. */ -extern char *__brkval; +extern char* __brkval; /** End of bss section.*/ extern char __bss_end; /** Amount of free stack space. @@ -48,9 +48,7 @@ inline int FreeStack() { #define HAS_UNUSED_STACK 0 #elif defined(PLATFORM_ID) // Particle board #include "Arduino.h" -inline int FreeStack() { - return System.freeMemory(); -} +inline int FreeStack() { return System.freeMemory(); } #elif defined(__IMXRT1062__) #define HAS_UNUSED_STACK 1 extern uint8_t _ebss; @@ -65,29 +63,11 @@ inline int FreeStack() { register uint32_t sp asm("sp"); return reinterpret_cast(sp) - reinterpret_cast(sbrk(0)); } -#elif defined(ESP8266) - - -#include - -namespace sdfat { - - -inline int FreeStack() { - int free = (int)ESP.getFreeContStack(); - ESP.resetFreeContStack(); - return free; -} - - -}; // namespace sdfat - - #else // defined(__AVR__) || defined(DOXYGEN) #ifndef FREE_STACK_CPP #warning FreeStack is not defined for this system. #endif // FREE_STACK_CPP - +inline int FreeStack() { return 0; } #endif // defined(__AVR__) || defined(DOXYGEN) #if defined(HAS_UNUSED_STACK) || defined(DOXYGEN) /** Fill stack with 0x55 pattern */ @@ -104,17 +84,7 @@ void FillStack(); int UnusedStack(); #else // HAS_UNUSED_STACK #define HAS_UNUSED_STACK 0 - - -namespace sdfat { - - inline void FillStack() {} -inline int UnusedStack() {return 0;} - - -}; // namespace sdfat - - +inline int UnusedStack() { return 0; } #endif // defined(HAS_UNUSED_STACK) #endif // FreeStack_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.cpp index 633fc14b..4ac76131 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,47 +23,43 @@ * DEALINGS IN THE SOFTWARE. */ #include "FsLib.h" - - -namespace sdfat { - - +#if FILE_COPY_CONSTRUCTOR_SELECT //------------------------------------------------------------------------------ -FsBaseFile::FsBaseFile(const FsBaseFile& from) { - m_fFile = nullptr; - m_xFile = nullptr; - if (from.m_fFile) { - m_fFile = new (m_fileMem) FatFile; - *m_fFile = *from.m_fFile; - } else if (from.m_xFile) { - m_xFile = new (m_fileMem) ExFatFile; - *m_xFile = *from.m_xFile; +FsBaseFile::FsBaseFile(const FsBaseFile& from) { copy(&from); } +//------------------------------------------------------------------------------ +FsBaseFile& FsBaseFile::operator=(const FsBaseFile& from) { + copy(&from); + return *this; +} +#endif // FILE_COPY_CONSTRUCTOR_SELECT +//------------------------------------------------------------------------------ +void FsBaseFile::copy(const FsBaseFile* from) { + if (from != this) { + m_fFile = nullptr; + m_xFile = nullptr; + if (from->m_fFile) { + m_fFile = new (m_fileMem) FatFile; + m_fFile->copy(from->m_fFile); + } else if (from->m_xFile) { + m_xFile = new (m_fileMem) ExFatFile; + m_xFile->copy(from->m_xFile); + } } } //------------------------------------------------------------------------------ -FsBaseFile& FsBaseFile::operator=(const FsBaseFile& from) { - if (this == &from) return *this; - close(); - if (from.m_fFile) { - m_fFile = new (m_fileMem) FatFile; - *m_fFile = *from.m_fFile; - } else if (from.m_xFile) { - m_xFile = new (m_fileMem) ExFatFile; - *m_xFile = *from.m_xFile; +void FsBaseFile::move(FsBaseFile* from) { + if (from != this) { + copy(from); + from->m_fFile = nullptr; + from->m_xFile = nullptr; } - return *this; } //------------------------------------------------------------------------------ bool FsBaseFile::close() { - if (m_fFile && m_fFile->close()) { - m_fFile = nullptr; - return true; - } - if (m_xFile && m_xFile->close()) { - m_xFile = nullptr; - return true; - } - return false; + bool rtn = m_fFile ? m_fFile->close() : m_xFile ? m_xFile->close() : true; + m_fFile = nullptr; + m_xFile = nullptr; + return rtn; } //------------------------------------------------------------------------------ bool FsBaseFile::mkdir(FsBaseFile* dir, const char* path, bool pFlag) { @@ -95,7 +91,6 @@ bool FsBaseFile::open(FsVolume* vol, const char* path, oflag_t oflag) { return true; } m_fFile = nullptr; - return false; } else if (vol->m_xVol) { m_xFile = new (m_fileMem) ExFatFile; if (m_xFile && m_xFile->open(vol->m_xVol, path, oflag)) { @@ -142,6 +137,24 @@ bool FsBaseFile::open(FsBaseFile* dir, uint32_t index, oflag_t oflag) { return false; } //------------------------------------------------------------------------------ +bool FsBaseFile::openCwd() { + close(); + if (FsVolume::m_cwv && FsVolume::m_cwv->m_fVol) { + m_fFile = new (m_fileMem) FatFile; + if (m_fFile->openCwd()) { + return true; + } + m_fFile = nullptr; + } else if (FsVolume::m_cwv && FsVolume::m_cwv->m_xVol) { + m_xFile = new (m_fileMem) ExFatFile; + if (m_xFile->openCwd()) { + return true; + } + m_xFile = nullptr; + } + return false; +} +//------------------------------------------------------------------------------ bool FsBaseFile::openNext(FsBaseFile* dir, oflag_t oflag) { close(); if (dir->m_fFile) { @@ -160,6 +173,27 @@ bool FsBaseFile::openNext(FsBaseFile* dir, oflag_t oflag) { return false; } //------------------------------------------------------------------------------ +bool FsBaseFile::openRoot(FsVolume* vol) { + if (!vol) { + return false; + } + close(); + if (vol->m_fVol) { + m_fFile = new (m_fileMem) FatFile; + if (m_fFile && m_fFile->openRoot(vol->m_fVol)) { + return true; + } + m_fFile = nullptr; + } else if (vol->m_xVol) { + m_xFile = new (m_fileMem) ExFatFile; + if (m_xFile && m_xFile->openRoot(vol->m_xVol)) { + return true; + } + m_xFile = nullptr; + } + return false; +} +//------------------------------------------------------------------------------ bool FsBaseFile::remove() { if (m_fFile) { if (m_fFile->remove()) { @@ -189,6 +223,3 @@ bool FsBaseFile::rmdir() { } return false; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.h index d8df5cfb..c8df331e 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFile.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,25 +28,39 @@ * \file * \brief FsBaseFile include file. */ -#include "FsNew.h" -#include "FatLib/FatLib.h" #include "ExFatLib/ExFatLib.h" - - -namespace sdfat { - - +#include "FatLib/FatLib.h" +#include "FsNew.h" +#include "FsVolume.h" /** * \class FsBaseFile * \brief FsBaseFile class. */ class FsBaseFile { public: - FsBaseFile() : m_fFile(nullptr), m_xFile(nullptr) {} - - ~FsBaseFile() {close();} - /** Copy constructor. + /** Create an instance. */ + FsBaseFile() = default; + /** Create a file object and open it in the current working directory. * + * \param[in] path A path for a file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of open flags. see FatFile::open(FatFile*, const char*, uint8_t). + */ + FsBaseFile(const char* path, oflag_t oflag) { open(path, oflag); } + + /** Copy from to this. + * \param[in] from Source file. + */ + void copy(const FsBaseFile* from); + + /** move from to this. + * \param[in] from Source file. + */ + void move(FsBaseFile* from); + +#if FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PUBLIC + /** Copy constructor. * \param[in] from Object used to initialize this instance. */ FsBaseFile(const FsBaseFile& from); @@ -55,19 +69,84 @@ class FsBaseFile { * \return assigned object. */ FsBaseFile& operator=(const FsBaseFile& from); +#elif FILE_COPY_CONSTRUCTOR_SELECT == FILE_COPY_CONSTRUCTOR_PRIVATE + + private: + FsBaseFile(const FsBaseFile& from); + FsBaseFile& operator=(const FsBaseFile& from); + + public: +#else // FILE_COPY_CONSTRUCTOR_SELECT + FsBaseFile(const FsBaseFile& from) = delete; + FsBaseFile& operator=(const FsBaseFile& from) = delete; +#endif // FILE_COPY_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT + /** Move constructor. + * \param[in] from File to move. + */ + FsBaseFile(FsBaseFile&& from) { move(&from); } + /** Move assignment operator. + * \param[in] from File to move. + * \return Assigned file. + */ + FsBaseFile& operator=(FsBaseFile&& from) { + move(&from); + return *this; + } +#else // FILE_MOVE_CONSTRUCTOR_SELECT + FsBaseFile(FsBaseFile&& from) = delete; + FsBaseFile& operator=(FsBaseFile&& from) = delete; +#endif // FILE_MOVE_CONSTRUCTOR_SELECT + +#if DESTRUCTOR_CLOSES_FILE + ~FsBaseFile() { + if (isOpen()) { + close(); + } + } +#else // DESTRUCTOR_CLOSES_FILE + ~FsBaseFile() = default; +#endif // DESTRUCTOR_CLOSES_FILE + /** The parenthesis operator. - * - * \return true if a file is open. - */ - operator bool() {return isOpen();} + * + * \return true if a file is open. + */ + operator bool() const { return isOpen(); } + /** + * \return user settable file attributes for success else -1. + */ + int attrib() { + return m_fFile ? m_fFile->attrib() : m_xFile ? m_xFile->attrib() : -1; + } + /** Set file attributes + * + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \note attrib() will fail for set read-only if the file is open for write. + * \return true for success or false for failure. + */ + bool attrib(uint8_t bits) { + return m_fFile ? m_fFile->attrib(bits) + : m_xFile ? m_xFile->attrib(bits) + : false; + } /** \return number of bytes available from the current position to EOF * or INT_MAX if more than INT_MAX bytes are available. */ - int available() { - return m_fFile ? m_fFile->available() : - m_xFile ? m_xFile->available() : 0; + int available() const { + return m_fFile ? m_fFile->available() : m_xFile ? m_xFile->available() : 0; + } + /** \return The number of bytes available from the current position + * to EOF for normal files. Zero is returned for directory files. + */ + uint64_t available64() const { + return m_fFile ? m_fFile->available32() + : m_xFile ? m_xFile->available64() + : 0; } - /** Clear writeError. */ void clearWriteError() { if (m_fFile) m_fFile->clearWriteError(); @@ -90,18 +169,29 @@ class FsBaseFile { * \return true for success or false for failure. */ bool contiguousRange(uint32_t* bgnSector, uint32_t* endSector) { - return m_fFile ? m_fFile->contiguousRange(bgnSector, endSector) : - m_xFile ? m_xFile->contiguousRange(bgnSector, endSector) : false; + return m_fFile ? m_fFile->contiguousRange(bgnSector, endSector) + : m_xFile ? m_xFile->contiguousRange(bgnSector, endSector) + : false; + } + /** \return The current cluster number for a file or directory. */ + uint32_t curCluster() const { + return m_fFile ? m_fFile->curCluster() + : m_xFile ? m_xFile->curCluster() + : 0; } /** \return The current position for a file or directory. */ - uint64_t curPosition() { - return m_fFile ? m_fFile->curPosition() : - m_xFile ? m_xFile->curPosition() : 0; + uint64_t curPosition() const { + return m_fFile ? m_fFile->curPosition() + : m_xFile ? m_xFile->curPosition() + : 0; + } + /** \return Total allocated length for file. */ + uint64_t dataLength() const { + return m_fFile ? m_fFile->fileSize() : m_xFile ? m_xFile->dataLength() : 0; } /** \return Directory entry index. */ - uint32_t dirIndex() { - return m_fFile ? m_fFile->dirIndex() : - m_xFile ? m_xFile->dirIndex() : 0; + uint32_t dirIndex() const { + return m_fFile ? m_fFile->dirIndex() : m_xFile ? m_xFile->dirIndex() : 0; } /** Test for the existence of a file in a directory * @@ -115,23 +205,24 @@ class FsBaseFile { * \return true if the file exists else false. */ bool exists(const char* path) { - return m_fFile ? m_fFile->exists(path) : - m_xFile ? m_xFile->exists(path) : false; + return m_fFile ? m_fFile->exists(path) + : m_xFile ? m_xFile->exists(path) + : false; } /** get position for streams * \param[out] pos struct to receive position */ - void fgetpos(fspos_t* pos) { + void fgetpos(fspos_t* pos) const { if (m_fFile) m_fFile->fgetpos(pos); if (m_xFile) m_xFile->fgetpos(pos); } - /** + /** * Get a string from a file. * * fgets() reads bytes from a file into the array pointed to by \a str, until - * \a num - 1 bytes are read, or a delimiter is read and transferred to \a str, - * or end-of-file is encountered. The string is then terminated - * with a null byte. + * \a num - 1 bytes are read, or a delimiter is read and transferred to \a + * str, or end-of-file is encountered. The string is then terminated with a + * null byte. * * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' * terminates the string for Windows text files which use CRLF for newline. @@ -143,24 +234,26 @@ class FsBaseFile { * \param[in] delim Optional set of delimiters. The default is "\n". * * \return For success fgets() returns the length of the string in \a str. - * If no data is read, fgets() returns zero for EOF or -1 if an error occurred. + * If no data is read, fgets() returns zero for EOF or -1 if an error + * occurred. */ int fgets(char* str, int num, char* delim = nullptr) { - return m_fFile ? m_fFile->fgets(str, num, delim) : - m_xFile ? m_xFile->fgets(str, num, delim) : -1; + return m_fFile ? m_fFile->fgets(str, num, delim) + : m_xFile ? m_xFile->fgets(str, num, delim) + : -1; } /** \return The total number of bytes in a file. */ - uint64_t fileSize() { - return m_fFile ? m_fFile->fileSize() : - m_xFile ? m_xFile->fileSize() : 0; + uint64_t fileSize() const { + return m_fFile ? m_fFile->fileSize() : m_xFile ? m_xFile->fileSize() : 0; } /** \return Address of first sector or zero for empty file. */ - uint32_t firstSector() { - return m_fFile ? m_fFile->firstSector() : - m_xFile ? m_xFile->firstSector() : 0; + uint32_t firstSector() const { + return m_fFile ? m_fFile->firstSector() + : m_xFile ? m_xFile->firstSector() + : 0; } /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() {sync();} + void flush() { sync(); } /** set position for streams * \param[in] pos struct with value for new position */ @@ -176,8 +269,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool getAccessDateTime(uint16_t* pdate, uint16_t* ptime) { - return m_fFile ? m_fFile->getAccessDateTime(pdate, ptime) : - m_xFile ? m_xFile->getAccessDateTime(pdate, ptime) : false; + return m_fFile ? m_fFile->getAccessDateTime(pdate, ptime) + : m_xFile ? m_xFile->getAccessDateTime(pdate, ptime) + : false; } /** Get a file's create date and time. * @@ -187,13 +281,13 @@ class FsBaseFile { * \return true for success or false for failure. */ bool getCreateDateTime(uint16_t* pdate, uint16_t* ptime) { - return m_fFile ? m_fFile->getCreateDateTime(pdate, ptime) : - m_xFile ? m_xFile->getCreateDateTime(pdate, ptime) : false; + return m_fFile ? m_fFile->getCreateDateTime(pdate, ptime) + : m_xFile ? m_xFile->getCreateDateTime(pdate, ptime) + : false; } /** \return All error bits. */ - uint8_t getError() { - return m_fFile ? m_fFile->getError() : - m_xFile ? m_xFile->getError() : 0XFF; + uint8_t getError() const { + return m_fFile ? m_fFile->getError() : m_xFile ? m_xFile->getError() : 0XFF; } /** Get a file's Modify date and time. * @@ -203,8 +297,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool getModifyDateTime(uint16_t* pdate, uint16_t* ptime) { - return m_fFile ? m_fFile->getModifyDateTime(pdate, ptime) : - m_xFile ? m_xFile->getModifyDateTime(pdate, ptime) : false; + return m_fFile ? m_fFile->getModifyDateTime(pdate, ptime) + : m_xFile ? m_xFile->getModifyDateTime(pdate, ptime) + : false; } /** * Get a file's name followed by a zero byte. @@ -217,44 +312,84 @@ class FsBaseFile { */ size_t getName(char* name, size_t len) { *name = 0; - return m_fFile ? m_fFile->getName(name, len) : - m_xFile ? m_xFile->getName(name, len) : 0; + return m_fFile ? m_fFile->getName(name, len) + : m_xFile ? m_xFile->getName(name, len) + : 0; } /** \return value of writeError */ - bool getWriteError() { - return m_fFile ? m_fFile->getWriteError() : - m_xFile ? m_xFile->getWriteError() : true; + bool getWriteError() const { + return m_fFile ? m_fFile->getWriteError() + : m_xFile ? m_xFile->getWriteError() + : true; + } + /** + * Check for FsBlockDevice busy. + * + * \return true if busy else false. + */ + bool isBusy() { + return m_fFile ? m_fFile->isBusy() : m_xFile ? m_xFile->isBusy() : true; } /** \return True if the file is contiguous. */ - bool isContiguous() { + bool isContiguous() const { #if USE_FAT_FILE_FLAG_CONTIGUOUS - return m_fFile ? m_fFile->isContiguous() : - m_xFile ? m_xFile->isContiguous() : false; -#else // USE_FAT_FILE_FLAG_CONTIGUOUS + return m_fFile ? m_fFile->isContiguous() + : m_xFile ? m_xFile->isContiguous() + : false; +#else // USE_FAT_FILE_FLAG_CONTIGUOUS return m_xFile ? m_xFile->isContiguous() : false; #endif // USE_FAT_FILE_FLAG_CONTIGUOUS } /** \return True if this is a directory else false. */ - bool isDir() { - return m_fFile ? m_fFile->isDir() : - m_xFile ? m_xFile->isDir() : false; + bool isDir() const { + return m_fFile ? m_fFile->isDir() : m_xFile ? m_xFile->isDir() : false; } /** This function reports if the current file is a directory or not. * \return true if the file is a directory. */ - bool isDirectory() {return isDir();} + bool isDirectory() const { return isDir(); } + /** \return True if this is a normal file. */ + bool isFile() const { + return m_fFile ? m_fFile->isFile() : m_xFile ? m_xFile->isFile() : false; + } + /** \return True if this is a normal file or sub-directory. */ + bool isFileOrSubDir() const { + return m_fFile ? m_fFile->isFileOrSubDir() + : m_xFile ? m_xFile->isFileOrSubDir() + : false; + } /** \return True if this is a hidden file else false. */ - bool isHidden() { - return m_fFile ? m_fFile->isHidden() : - m_xFile ? m_xFile->isHidden() : false; + bool isHidden() const { + return m_fFile ? m_fFile->isHidden() + : m_xFile ? m_xFile->isHidden() + : false; } /** \return True if this is an open file/directory else false. */ - bool isOpen() {return m_fFile || m_xFile;} - /** \return True if this is a subdirectory file else false. */ - bool isSubDir() { - return m_fFile ? m_fFile->isSubDir() : - m_xFile ? m_xFile->isSubDir() : false; + bool isOpen() const { return m_fFile || m_xFile; } + /** \return True file is readable. */ + bool isReadable() const { + return m_fFile ? m_fFile->isReadable() + : m_xFile ? m_xFile->isReadable() + : false; + } + /** \return True if file is read-only */ + bool isReadOnly() const { + return m_fFile ? m_fFile->isReadOnly() + : m_xFile ? m_xFile->isReadOnly() + : false; + } + /** \return True if this is a sub-directory file else false. */ + bool isSubDir() const { + return m_fFile ? m_fFile->isSubDir() + : m_xFile ? m_xFile->isSubDir() + : false; + } + /** \return True file is writable. */ + bool isWritable() const { + return m_fFile ? m_fFile->isWritable() + : m_xFile ? m_xFile->isWritable() + : false; } #if ENABLE_ARDUINO_SERIAL /** List directory contents. @@ -266,14 +401,13 @@ class FsBaseFile { * LS_SIZE - %Print file size. * * LS_R - Recursive list of subdirectories. + * \return true for success or false for failure. */ - bool ls(uint8_t flags) { - return ls(&Serial, flags); - } - /** List directory contents. */ - bool ls() { - return ls(&Serial); - } + bool ls(uint8_t flags) { return ls(&Serial, flags); } + /** List directory contents. + * \return true for success or false for failure. + */ + bool ls() { return ls(&Serial); } #endif // ENABLE_ARDUINO_SERIAL /** List directory contents. * @@ -282,8 +416,7 @@ class FsBaseFile { * \return true for success or false for failure. */ bool ls(print_t* pr) { - return m_fFile ? m_fFile->ls(pr) : - m_xFile ? m_xFile->ls(pr) : false; + return m_fFile ? m_fFile->ls(pr) : m_xFile ? m_xFile->ls(pr) : false; } /** List directory contents. * @@ -299,8 +432,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool ls(print_t* pr, uint8_t flags) { - return m_fFile ? m_fFile->ls(pr, flags) : - m_xFile ? m_xFile->ls(pr, flags) : false; + return m_fFile ? m_fFile->ls(pr, flags) + : m_xFile ? m_xFile->ls(pr, flags) + : false; } /** Make a new directory. * @@ -314,14 +448,6 @@ class FsBaseFile { * \return true for success or false for failure. */ bool mkdir(FsBaseFile* dir, const char* path, bool pFlag = true); - /** No longer implemented due to Long File Names. - * - * Use getName(char* name, size_t size). - * \return a pointer to replacement suggestion. - */ - const char* name() const { - return "use getName()"; - } /** Open a file or directory by name. * * \param[in] dir An open file instance for the directory containing @@ -350,10 +476,12 @@ class FsBaseFile { * O_CREAT - If the file exists, this flag has no effect except as noted * under O_EXCL below. Otherwise, the file shall be created * - * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. + * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file + * exists. * * O_TRUNC - If the file exists and is a regular file, and the file is - * successfully opened and is not read only, its length shall be truncated to 0. + * successfully opened and is not read only, its length shall be truncated to + * 0. * * WARNING: A given file must not be opened by more than one file object * or file corruption may occur. @@ -377,7 +505,7 @@ class FsBaseFile { * See open() by path for definition of flags. * \return true for success or false for failure. */ - bool open(FsBaseFile* dir, uint32_t index, oflag_t oflag); + bool open(FsBaseFile* dir, uint32_t index, oflag_t oflag = O_RDONLY); /** Open a file or directory by name. * * \param[in] vol Volume where the file is located. @@ -389,7 +517,7 @@ class FsBaseFile { * * \return true for success or false for failure. */ - bool open(FsVolume* vol, const char* path, oflag_t oflag); + bool open(FsVolume* vol, const char* path, oflag_t oflag = O_RDONLY); /** Open a file or directory by name. * * \param[in] path A path for a file to be opened. @@ -402,70 +530,46 @@ class FsBaseFile { bool open(const char* path, oflag_t oflag = O_RDONLY) { return FsVolume::m_cwv && open(FsVolume::m_cwv, path, oflag); } + /** Open a file or directory by index in the current working directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag Values for \a oflag are constructed by a + * bitwise-inclusive OR of open flags. + * + * \return true for success or false for failure. + */ + bool open(uint32_t index, oflag_t oflag = O_RDONLY) { + FsBaseFile cwd; + return cwd.openCwd() && open(&cwd, index, oflag); + } + /** Open the current working directory. + * + * \return true for success or false for failure. + */ + bool openCwd(); /** Opens the next file or folder in a directory. * \param[in] dir directory containing files. * \param[in] oflag open flags. * \return a file object. */ bool openNext(FsBaseFile* dir, oflag_t oflag = O_RDONLY); + /** Open a volume's root directory. + * + * \param[in] vol The SdFs volume containing the root directory to be opened. + * + * \return true for success or false for failure. + */ + bool openRoot(FsVolume* vol); + /** \return the current file position. */ + uint64_t position() const { return curPosition(); } /** Return the next available byte without consuming it. * * \return The byte if no error and not at eof else -1; */ int peek() { - return m_fFile ? m_fFile->peek() : - m_xFile ? m_xFile->peek() : -1; - } - /** Print a file's access date and time - * - * \param[in] pr Print stream for output. - * - * \return true for success or false for failure. - */ - size_t printAccessDateTime(print_t* pr) { - return m_fFile ? m_fFile->printAccessDateTime(pr) : - m_xFile ? m_xFile->printAccessDateTime(pr) : 0; - } - /** Print a file's creation date and time - * - * \param[in] pr Print stream for output. - * - * \return true for success or false for failure. - */ - size_t printCreateDateTime(print_t* pr) { - return m_fFile ? m_fFile->printCreateDateTime(pr) : - m_xFile ? m_xFile->printCreateDateTime(pr) : 0; - } - /** Print a file's modify date and time - * - * \param[in] pr Print stream for output. - * - * \return true for success or false for failure. - */ - size_t printModifyDateTime(print_t* pr) { - return m_fFile ? m_fFile->printModifyDateTime(pr) : - m_xFile ? m_xFile->printModifyDateTime(pr) : 0; - } - /** Print a file's name - * - * \param[in] pr Print stream for output. - * - * \return true for success or false for failure. - */ - size_t printName(print_t* pr) { - return m_fFile ? m_fFile->printName(pr) : - m_xFile ? m_xFile->printName(pr) : 0; - } - /** Print a file's size. - * - * \param[in] pr Print stream for output. - * - * \return The number of characters printed is returned - * for success and zero is returned for failure. - */ - size_t printFileSize(print_t* pr) { - return m_fFile ? m_fFile->printFileSize(pr) : - m_xFile ? m_xFile->printFileSize(pr) : 0; + return m_fFile ? m_fFile->peek() : m_xFile ? m_xFile->peek() : -1; } /** Allocate contiguous clusters to an empty file. * @@ -479,20 +583,42 @@ class FsBaseFile { * \return true for success or false for failure. */ bool preAllocate(uint64_t length) { - return m_fFile ? length < (1ULL << 32) && m_fFile->preAllocate(length) : - m_xFile ? m_xFile->preAllocate(length) : false; + return m_fFile ? length < (1ULL << 32) && m_fFile->preAllocate(length) + : m_xFile ? m_xFile->preAllocate(length) + : false; } - /** \return the current file position. */ - uint64_t position() {return curPosition();} - /** Print a number followed by a field terminator. + /** Print a file's access date and time + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printAccessDateTime(print_t* pr) { + return m_fFile ? m_fFile->printAccessDateTime(pr) + : m_xFile ? m_xFile->printAccessDateTime(pr) + : 0; + } + /** Print a file's creation date and time + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printCreateDateTime(print_t* pr) { + return m_fFile ? m_fFile->printCreateDateTime(pr) + : m_xFile ? m_xFile->printCreateDateTime(pr) + : 0; + } + /** Print a number followed by a field terminator. * \param[in] value The number to be printed. * \param[in] term The field terminator. Use '\\n' for CR LF. * \param[in] prec Number of digits after decimal point. * \return The number of bytes written or -1 if an error occurs. */ size_t printField(double value, char term, uint8_t prec = 2) { - return m_fFile ? m_fFile->printField(value, term, prec) : - m_xFile ? m_xFile->printField(value, term, prec) : 0; + return m_fFile ? m_fFile->printField(value, term, prec) + : m_xFile ? m_xFile->printField(value, term, prec) + : 0; } /** Print a number followed by a field terminator. * \param[in] value The number to be printed. @@ -501,17 +627,52 @@ class FsBaseFile { * \return The number of bytes written or -1 if an error occurs. */ size_t printField(float value, char term, uint8_t prec = 2) { - return printField(static_cast(value), term, prec); + return printField(static_cast(value), term, prec); } /** Print a number followed by a field terminator. * \param[in] value The number to be printed. * \param[in] term The field terminator. Use '\\n' for CR LF. * \return The number of bytes written or -1 if an error occurs. */ - template + template size_t printField(Type value, char term) { - return m_fFile ? m_fFile->printField(value, term) : - m_xFile ? m_xFile->printField(value, term) : 0; + return m_fFile ? m_fFile->printField(value, term) + : m_xFile ? m_xFile->printField(value, term) + : 0; + } + /** Print a file's size. + * + * \param[in] pr Print stream for output. + * + * \return The number of characters printed is returned + * for success and zero is returned for failure. + */ + size_t printFileSize(print_t* pr) { + return m_fFile ? m_fFile->printFileSize(pr) + : m_xFile ? m_xFile->printFileSize(pr) + : 0; + } + /** Print a file's modify date and time + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printModifyDateTime(print_t* pr) { + return m_fFile ? m_fFile->printModifyDateTime(pr) + : m_xFile ? m_xFile->printModifyDateTime(pr) + : 0; + } + /** Print a file's name + * + * \param[in] pr Print stream for output. + * + * \return true for success or false for failure. + */ + size_t printName(print_t* pr) { + return m_fFile ? m_fFile->printName(pr) + : m_xFile ? m_xFile->printName(pr) + : 0; } /** Read the next byte from a file. * @@ -536,8 +697,9 @@ class FsBaseFile { * or an I/O error occurred. */ int read(void* buf, size_t count) { - return m_fFile ? m_fFile->read(buf, count) : - m_xFile ? m_xFile->read(buf, count) : -1; + return m_fFile ? m_fFile->read(buf, count) + : m_xFile ? m_xFile->read(buf, count) + : -1; } /** Remove a file. * @@ -550,7 +712,7 @@ class FsBaseFile { * \return true for success or false for failure. */ bool remove(); - /** Remove a file. + /** Remove a file. * * The directory entry and all data for the file are deleted. * @@ -565,8 +727,9 @@ class FsBaseFile { * \return true for success or false for failure. */ bool remove(const char* path) { - return m_fFile ? m_fFile->remove(path) : - m_xFile ? m_xFile->remove(path) : false; + return m_fFile ? m_fFile->remove(path) + : m_xFile ? m_xFile->remove(path) + : false; } /** Rename a file or subdirectory. * @@ -575,19 +738,21 @@ class FsBaseFile { * \return true for success or false for failure. */ bool rename(const char* newPath) { - return m_fFile ? m_fFile->rename(newPath) : - m_xFile ? m_xFile->rename(newPath) : false; + return m_fFile ? m_fFile->rename(newPath) + : m_xFile ? m_xFile->rename(newPath) + : false; } /** Rename a file or subdirectory. * - * \param[in] dirFile Directory for the new path. + * \param[in] dir Directory for the new path. * \param[in] newPath New path name for the file/directory. * * \return true for success or false for failure. */ - bool rename(FsBaseFile* dirFile, const char* newPath) { - return m_fFile ? m_fFile->rename(dirFile->m_fFile, newPath) : - m_xFile ? m_xFile->rename(dirFile->m_xFile, newPath) : false; + bool rename(FsBaseFile* dir, const char* newPath) { + return m_fFile && dir->m_fFile ? m_fFile->rename(dir->m_fFile, newPath) + : m_xFile && dir->m_xFile ? m_xFile->rename(dir->m_xFile, newPath) + : false; } /** Set the file's current position to zero. */ void rewind() { @@ -617,22 +782,18 @@ class FsBaseFile { * \param[in] pos the new file position. * \return true for success or false for failure. */ - bool seek(uint64_t pos) {return seekSet(pos);} + bool seek(uint64_t pos) { return seekSet(pos); } /** Set the files position to current position + \a pos. See seekSet(). * \param[in] offset The new position in bytes from the current position. * \return true for success or false for failure. */ - bool seekCur(int64_t offset) { - return seekSet(curPosition() + offset); - } + bool seekCur(int64_t offset) { return seekSet(curPosition() + offset); } /** Set the files position to end-of-file + \a offset. See seekSet(). * Can't be used for directory files since file size is not defined. * \param[in] offset The new position in bytes from end-of-file. * \return true for success or false for failure. */ - bool seekEnd(int64_t offset = 0) { - return seekSet(fileSize() + offset); - } + bool seekEnd(int64_t offset = 0) { return seekSet(fileSize() + offset); } /** Sets a file's position. * * \param[in] pos The new position in bytes from the beginning of the file. @@ -640,19 +801,19 @@ class FsBaseFile { * \return true for success or false for failure. */ bool seekSet(uint64_t pos) { - return m_fFile ? pos < (1ULL << 32) && m_fFile->seekSet(pos) : - m_xFile ? m_xFile->seekSet(pos) : false; + return m_fFile ? pos < (1ULL << 32) && m_fFile->seekSet((uint32_t)pos) + : m_xFile ? m_xFile->seekSet(pos) + : false; } /** \return the file's size. */ - uint64_t size() {return fileSize();} + uint64_t size() const { return fileSize(); } /** The sync() call causes all modified data and directory fields * to be written to the storage device. * * \return true for success or false for failure. */ bool sync() { - return m_fFile ? m_fFile->sync() : - m_xFile ? m_xFile->sync() : false; + return m_fFile ? m_fFile->sync() : m_xFile ? m_xFile->sync() : false; } /** Set a file's timestamps in its directory entry. * @@ -688,20 +849,20 @@ class FsBaseFile { */ bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { - return m_fFile ? - m_fFile->timestamp(flags, year, month, day, hour, minute, second) : - m_xFile ? - m_xFile->timestamp(flags, year, month, day, hour, minute, second) : - false; + return m_fFile ? m_fFile->timestamp(flags, year, month, day, hour, minute, + second) + : m_xFile ? m_xFile->timestamp(flags, year, month, day, hour, minute, + second) + : false; } - /** Truncate a file to the current position. * * \return true for success or false for failure. */ bool truncate() { - return m_fFile ? m_fFile->truncate() : - m_xFile ? m_xFile->truncate() : false; + return m_fFile ? m_fFile->truncate() + : m_xFile ? m_xFile->truncate() + : false; } /** Truncate a file to a specified length. * The current file position will be set to end of file. @@ -711,15 +872,22 @@ class FsBaseFile { * \return true for success or false for failure. */ bool truncate(uint64_t length) { - return m_fFile ? length < (1ULL << 32) && m_fFile->truncate(length) : - m_xFile ? m_xFile->truncate(length) : false; + return m_fFile ? length < (1ULL << 32) && m_fFile->truncate(length) + : m_xFile ? m_xFile->truncate(length) + : false; } + /** Write a string to a file. Used by the Arduino Print class. + * \param[in] str Pointer to the string. + * Use getWriteError to check for errors. + * \return count of characters written for success or -1 for failure. + */ + size_t write(const char* str) { return write(str, strlen(str)); } /** Write a byte to a file. Required by the Arduino Print class. * \param[in] b the byte to be written. * Use getWriteError to check for errors. * \return 1 for success and 0 for failure. */ - size_t write(uint8_t b) {return write(&b, 1);} + size_t write(uint8_t b) { return write(&b, 1); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -730,20 +898,18 @@ class FsBaseFile { * \param[in] count Number of bytes to write. * * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an - * I/O error. + * \a nbyte. If an error occurs, write() returns zero and writeError is set. */ size_t write(const void* buf, size_t count) { - return m_fFile ? m_fFile->write(buf, count) : - m_xFile ? m_xFile->write(buf, count) : 0; + return m_fFile ? m_fFile->write(buf, count) + : m_xFile ? m_xFile->write(buf, count) + : 0; } private: newalign_t m_fileMem[FS_ALIGN_DIM(ExFatFile, FatFile)]; - FatFile* m_fFile; - ExFatFile* m_xFile; + FatFile* m_fFile = nullptr; + ExFatFile* m_xFile = nullptr; }; /** * \class FsFile @@ -762,9 +928,4 @@ class FsFile : public StreamFile { return tmpFile; } }; - - -}; // namespace sdfat - - #endif // FsFile_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatTypes.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFormatter.h similarity index 55% rename from extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatTypes.h rename to extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFormatter.h index 1abb95a3..96266edd 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/ExFatLib/ExFatTypes.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsFormatter.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,44 +22,38 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#ifndef ExFatTypes_h -#define ExFatTypes_h -#include "ExFatConfig.h" - - -namespace sdfat { - - -#if __cplusplus < 201103 -#warning no char16_t -typedef uint16_t ExChar16_t; -// #error C++11 Support required -#else // __cplusplus < 201103 -typedef char16_t ExChar16_t; -#endif // __cplusplus < 201103 - -#if USE_EXFAT_UNICODE_NAMES -/** exFAT API character type */ -typedef ExChar16_t ExChar_t; -#else // USE_EXFAT_UNICODE_NAMES -/** exFAT API character type */ -typedef char ExChar_t; -#endif // USE_EXFAT_UNICODE_NAMES +#ifndef FsFormatter_h +#define FsFormatter_h +#include "ExFatLib/ExFatLib.h" +#include "FatLib/FatLib.h" /** - * \struct DirPos_t - * \brief Internal type for position in directory file. + * \class FsFormatter + * \brief Format a exFAT/FAT volume. */ -struct DirPos_t { - /** current cluster */ - uint32_t cluster; - /** offset */ - uint32_t position; - /** directory is contiguous */ - bool isContiguous; +class FsFormatter { + public: + /** Constructor. */ + FsFormatter() = default; + /** + * Format a FAT volume. + * + * \param[in] dev Block device for volume. + * \param[in] secBuffer buffer for writing to volume. + * \param[in] pr Print device for progress output. + * + * \return true for success or false for failure. + */ + bool format(FsBlockDevice* dev, uint8_t* secBuffer, print_t* pr = nullptr) { + uint32_t sectorCount = dev->sectorCount(); + if (sectorCount == 0) { + return false; + } + return sectorCount <= 67108864 ? m_fFmt.format(dev, secBuffer, pr) + : m_xFmt.format(dev, secBuffer, pr); + } + + private: + FatFormatter m_fFmt; + ExFatFormatter m_xFmt; }; - - -}; // namespace sdfat - - -#endif // ExFatTypes_h +#endif // FsFormatter_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsLib.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsLib.h index a39f620b..97eeb07d 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsLib.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsLib.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,6 +28,7 @@ * \file * \brief FsLib include file. */ -#include "FsVolume.h" #include "FsFile.h" +#include "FsFormatter.h" +#include "FsVolume.h" #endif // FsLib_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.cpp index f0867ac7..b9063978 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,8 +23,7 @@ * DEALINGS IN THE SOFTWARE. */ #include "FsNew.h" - -void* operator new(size_t size, sdfat::newalign_t* ptr) { +void* operator new(size_t size, newalign_t* ptr) { (void)size; return ptr; } diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.h index 5e6a5fc4..1b19f865 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsNew.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -27,10 +27,6 @@ #include #include - -namespace sdfat { - - /** 32-bit alignment */ typedef uint32_t newalign_t; @@ -40,21 +36,11 @@ typedef uint32_t newalign_t; /** Dimension of aligned area. */ #define NEW_ALIGN_DIM(n) \ - (((size_t)(n) + sizeof(newalign_t) - 1U)/sizeof(newalign_t)) + (((size_t)(n) + sizeof(newalign_t) - 1U) / sizeof(newalign_t)) /** Dimension of aligned area for etype or ftype class. */ #define FS_ALIGN_DIM(etype, ftype) NEW_ALIGN_DIM(FS_SIZE(etype, ftype)) - -}; // namespace sdfat - - -// This placement new can't be inside a namespace, per C++ standard. Hope this breaks nothing else. - /** Custom new placement operator */ -void* operator new(size_t size, sdfat::newalign_t* ptr); - - - - +void* operator new(size_t size, newalign_t* ptr); #endif // FsNew_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.cpp index 6416d9bb..a578ff30 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,31 +23,27 @@ * DEALINGS IN THE SOFTWARE. */ #include "FsLib.h" - - -namespace sdfat { - - FsVolume* FsVolume::m_cwv = nullptr; //------------------------------------------------------------------------------ -bool FsVolume::begin(BlockDevice* blockDev) { - m_blockDev = blockDev; +bool FsVolume::begin(FsBlockDevice* blockDev, bool setCwv, uint8_t part, + uint32_t volStart) { m_fVol = nullptr; m_xVol = new (m_volMem) ExFatVolume; - if (m_xVol && m_xVol->begin(m_blockDev, false)) { + if (m_xVol && m_xVol->begin(blockDev, false, part, volStart)) { goto done; } m_xVol = nullptr; m_fVol = new (m_volMem) FatVolume; - if (m_fVol && m_fVol->begin(m_blockDev, false)) { + if (m_fVol && m_fVol->begin(blockDev, false, part, volStart)) { goto done; } - m_cwv = nullptr; m_fVol = nullptr; return false; - done: - m_cwv = this; +done: + if (setCwv || !m_cwv) { + m_cwv = this; + } return true; } //------------------------------------------------------------------------------ @@ -56,17 +52,14 @@ bool FsVolume::ls(print_t* pr, const char* path, uint8_t flags) { return dir.open(this, path, O_RDONLY) && dir.ls(pr, flags); } //------------------------------------------------------------------------------ -FsFile FsVolume::open(const char *path, oflag_t oflag) { +FsFile FsVolume::open(const char* path, oflag_t oflag) { FsFile tmpFile; tmpFile.open(this, path, oflag); return tmpFile; } #if ENABLE_ARDUINO_STRING //------------------------------------------------------------------------------ -FsFile FsVolume::open(const String &path, oflag_t oflag) { - return open(path.c_str(), oflag ); +FsFile FsVolume::open(const String& path, oflag_t oflag) { + return open(path.c_str(), oflag); } #endif // ENABLE_ARDUINO_STRING - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.h b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.h index b09c3bdb..7a386e0b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/FsLib/FsVolume.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,13 +28,9 @@ * \file * \brief FsVolume include file. */ -#include "FsNew.h" -#include "../FatLib/FatLib.h" #include "../ExFatLib/ExFatLib.h" - - -namespace sdfat { - +#include "../FatLib/FatLib.h" +#include "FsNew.h" class FsFile; /** @@ -43,75 +39,84 @@ class FsFile; */ class FsVolume { public: - FsVolume() : m_fVol(nullptr), m_xVol(nullptr) {} - - ~FsVolume() {end();} + FsVolume() = default; + ~FsVolume() { end(); } + /** Get file's user settable attributes. + * \param[in] path path to file. + * \return user settable file attributes for success else -1. + */ + int attrib(const char* path) { + return m_fVol ? m_fVol->attrib(path) : m_xVol ? m_xVol->attrib(path) : -1; + } + /** Set file's user settable attributes. + * \param[in] path path to file. + * \param[in] bits bit-wise or of selected attributes: FS_ATTRIB_READ_ONLY, + * FS_ATTRIB_HIDDEN, FS_ATTRIB_SYSTEM, FS_ATTRIB_ARCHIVE. + * + * \return true for success or false for failure. + */ + bool attrib(const char* path, uint8_t bits) { + return m_fVol ? m_fVol->attrib(path, bits) + : m_xVol ? m_xVol->attrib(path, bits) + : false; + } /** * Initialize an FatVolume object. * \param[in] blockDev Device block driver. + * \param[in] setCwv Set current working volume if true. + * \param[in] part partition to initialize. + * \param[in] volStart Start sector of volume if part is zero. * \return true for success or false for failure. */ - bool begin(BlockDevice* blockDev); - /** \return the number of bytes in a cluster. */ - uint32_t bytesPerCluster() { - return m_fVol ? m_fVol->bytesPerCluster() : - m_xVol ? m_xVol->bytesPerCluster() : 0; - } - /** \return current working volume. */ - static FsVolume* cwv() {return m_cwv;} - /** Change global working volume to this volume. */ - void chvol() {m_cwv = this;} - /** \return The total number of clusters in the volume. */ - uint32_t clusterCount() { - return m_fVol ? m_fVol->clusterCount() : - m_xVol ? m_xVol->clusterCount() : 0; - } - /** \return The logical sector number for the start of file data. */ - uint32_t dataStartSector() const { - return m_fVol ? m_fVol->dataStartSector() : - m_xVol ? m_xVol->clusterHeapStartSector() : 0; - } - /** \return The logical sector number for the start of the first FAT. */ - uint32_t fatStartSector() const { - return m_fVol ? m_fVol->fatStartSector() : - m_xVol ? m_xVol->fatStartSector() : 0; - } - /** \return the free cluster count. */ - uint32_t freeClusterCount() { - return m_fVol ? m_fVol->freeClusterCount() : - m_xVol ? m_xVol->freeClusterCount() : 0; - } - /** \return The volume's cluster size in sectors. */ - uint32_t sectorsPerCluster() const { - return m_fVol ? m_fVol->sectorsPerCluster() : - m_xVol ? m_xVol->sectorsPerCluster() : 0; - } + bool begin(FsBlockDevice* blockDev, bool setCwv = true, uint8_t part = 1, + uint32_t volStart = 0); #ifndef DOXYGEN_SHOULD_SKIP_THIS - // Use sectorsPerCluster(). blocksPerCluster() will be removed in the future. - uint32_t blocksPerCluster() __attribute__ ((deprecated)) {return sectorsPerCluster();} //NOLINT + uint32_t __attribute__((error("use sectorsPerCluster()"))) blocksPerCluster(); #endif // DOXYGEN_SHOULD_SKIP_THIS + /** \return the number of bytes in a cluster. */ + uint32_t bytesPerCluster() const { + return m_fVol ? m_fVol->bytesPerCluster() + : m_xVol ? m_xVol->bytesPerCluster() + : 0; + } /** * Set volume working directory to root. * \return true for success or false for failure. */ bool chdir() { - return m_fVol ? m_fVol->chdir() : - m_xVol ? m_xVol->chdir() : false; + return m_fVol ? m_fVol->chdir() : m_xVol ? m_xVol->chdir() : false; } /** * Set volume working directory. * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const char* path) { - return m_fVol ? m_fVol->chdir(path) : - m_xVol ? m_xVol->chdir(path) : false; + bool chdir(const char* path) { + return m_fVol ? m_fVol->chdir(path) : m_xVol ? m_xVol->chdir(path) : false; } - /** free dynamic memory and end access to volume */ - void end() { + /** Change global working volume to this volume. */ + void chvol() { m_cwv = this; } + /** \return The total number of clusters in the volume. */ + uint32_t clusterCount() const { + return m_fVol ? m_fVol->clusterCount() + : m_xVol ? m_xVol->clusterCount() + : 0; + } + /** \return The logical sector number for the start of file data. */ + uint32_t dataStartSector() const { + return m_fVol ? m_fVol->dataStartSector() + : m_xVol ? m_xVol->clusterHeapStartSector() + : 0; + } + /** End access to volume + * \return pointer to sector size buffer for format. + */ + uint8_t* end() { m_fVol = nullptr; m_xVol = nullptr; + static_assert(sizeof(m_volMem) >= 512, "m_volMem too small"); + return reinterpret_cast(m_volMem); } /** Test for the existence of a file in a directory * @@ -120,15 +125,35 @@ class FsVolume { * \return true if the file exists else false. */ bool exists(const char* path) { - return m_fVol ? m_fVol->exists(path) : - m_xVol ? m_xVol->exists(path) : false; + return m_fVol ? m_fVol->exists(path) + : m_xVol ? m_xVol->exists(path) + : false; + } + /** \return The logical sector number for the start of the first FAT. */ + uint32_t fatStartSector() const { + return m_fVol ? m_fVol->fatStartSector() + : m_xVol ? m_xVol->fatStartSector() + : 0; } /** \return Partition type, FAT_TYPE_EXFAT, FAT_TYPE_FAT32, * FAT_TYPE_FAT16, or zero for error. */ uint8_t fatType() const { - return m_fVol ? m_fVol->fatType() : - m_xVol ? m_xVol->fatType() : 0; + return m_fVol ? m_fVol->fatType() : m_xVol ? m_xVol->fatType() : 0; + } + /** \return free cluster count or -1 if an error occurs. */ + int32_t freeClusterCount() const { + return m_fVol ? m_fVol->freeClusterCount() + : m_xVol ? m_xVol->freeClusterCount() + : -1; + } + /** + * Check for device busy. + * + * \return true if busy else false. + */ + bool isBusy() { + return m_fVol ? m_fVol->isBusy() : m_xVol ? m_xVol->isBusy() : false; } /** List directory contents. * @@ -137,8 +162,7 @@ class FsVolume { * \return true for success or false for failure. */ bool ls(print_t* pr) { - return m_fVol ? m_fVol->ls(pr) : - m_xVol ? m_xVol->ls(pr) : false; + return m_fVol ? m_fVol->ls(pr) : m_xVol ? m_xVol->ls(pr) : false; } /** List directory contents. * @@ -154,8 +178,9 @@ class FsVolume { * \return true for success or false for failure. */ bool ls(print_t* pr, uint8_t flags) { - return m_fVol ? m_fVol->ls(pr, flags) : - m_xVol ? m_xVol->ls(pr, flags) : false; + return m_fVol ? m_fVol->ls(pr, flags) + : m_xVol ? m_xVol->ls(pr, flags) + : false; } /** List the directory contents of a directory. * @@ -174,7 +199,7 @@ class FsVolume { * \return true for success or false for failure. */ bool ls(print_t* pr, const char* path, uint8_t flags); - /** Make a subdirectory in the volume root directory. + /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. * @@ -182,9 +207,10 @@ class FsVolume { * * \return true for success or false for failure. */ - bool mkdir(const char *path, bool pFlag = true) { - return m_fVol ? m_fVol->mkdir(path, pFlag) : - m_xVol ? m_xVol->mkdir(path, pFlag) : false; + bool mkdir(const char* path, bool pFlag = true) { + return m_fVol ? m_fVol->mkdir(path, pFlag) + : m_xVol ? m_xVol->mkdir(path, pFlag) + : false; } /** open a file * @@ -194,14 +220,15 @@ class FsVolume { */ FsFile open(const char* path, oflag_t oflag = O_RDONLY); /** Remove a file from the volume root directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * + * + * \param[in] path A path with a valid 8.3 DOS name for the file. + * * \return true for success or false for failure. - */ - bool remove(const char *path) { - return m_fVol ? m_fVol->remove(path) : - m_xVol ? m_xVol->remove(path) : false; + */ + bool remove(const char* path) { + return m_fVol ? m_fVol->remove(path) + : m_xVol ? m_xVol->remove(path) + : false; } /** Rename a file or subdirectory. * @@ -217,9 +244,10 @@ class FsVolume { * * \return true for success or false for failure. */ - bool rename(const char *oldPath, const char *newPath) { - return m_fVol ? m_fVol->rename(oldPath, newPath) : - m_xVol ? m_xVol->rename(oldPath, newPath) : false; + bool rename(const char* oldPath, const char* newPath) { + return m_fVol ? m_fVol->rename(oldPath, newPath) + : m_xVol ? m_xVol->rename(oldPath, newPath) + : false; } /** Remove a subdirectory from the volume's root directory. * @@ -229,17 +257,20 @@ class FsVolume { * * \return true for success or false for failure. */ - bool rmdir(const char *path) { - return m_fVol ? m_fVol->rmdir(path) : - m_xVol ? m_xVol->rmdir(path) : false; + bool rmdir(const char* path) { + return m_fVol ? m_fVol->rmdir(path) : m_xVol ? m_xVol->rmdir(path) : false; + } + /** \return The volume's cluster size in sectors. */ + uint32_t sectorsPerCluster() const { + return m_fVol ? m_fVol->sectorsPerCluster() + : m_xVol ? m_xVol->sectorsPerCluster() + : 0; } #if ENABLE_ARDUINO_SERIAL /** List directory contents. * \return true for success or false for failure. */ - bool ls() { - return ls(&Serial); - } + bool ls() { return ls(&Serial); } /** List directory contents. * * \param[in] flags The inclusive OR of @@ -252,9 +283,7 @@ class FsVolume { * * \return true for success or false for failure. */ - bool ls(uint8_t flags) { - return ls(&Serial, flags); - } + bool ls(uint8_t flags) { return ls(&Serial, flags); } /** List the directory contents of a directory to Serial. * * \param[in] path directory to list. @@ -281,18 +310,14 @@ class FsVolume { * \param[in] path Path for volume working directory. * \return true for success or false for failure. */ - bool chdir(const String& path) { - return chdir(path.c_str()); - } + bool chdir(const String& path) { return chdir(path.c_str()); } /** Test for the existence of a file in a directory * * \param[in] path Path of the file to be tested for. * * \return true if the file exists else false. */ - bool exists(const String &path) { - return exists(path.c_str()); - } + bool exists(const String& path) { return exists(path.c_str()); } /** Make a subdirectory in the volume root directory. * * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. @@ -301,7 +326,7 @@ class FsVolume { * * \return true for success or false for failure. */ - bool mkdir(const String &path, bool pFlag = true) { + bool mkdir(const String& path, bool pFlag = true) { return mkdir(path.c_str(), pFlag); } /** open a file @@ -310,16 +335,14 @@ class FsVolume { * \param[in] oflag open flags. * \return a FsBaseFile object. */ - FsFile open(const String &path, oflag_t oflag = O_RDONLY); + FsFile open(const String& path, oflag_t oflag = O_RDONLY); /** Remove a file from the volume root directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * + * + * \param[in] path A path with a valid 8.3 DOS name for the file. + * * \return true for success or false for failure. - */ - bool remove(const String &path) { - return remove(path.c_str()); - } + */ + bool remove(const String& path) { return remove(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -345,9 +368,7 @@ class FsVolume { * * \return true for success or false for failure. */ - bool rmdir(const String &path) { - return rmdir(path.c_str()); - } + bool rmdir(const String& path) { return rmdir(path.c_str()); } /** Rename a file or subdirectory. * * \param[in] oldPath Path name to the file or subdirectory to be renamed. @@ -364,20 +385,18 @@ class FsVolume { */ #endif // ENABLE_ARDUINO_STRING + protected: + newalign_t m_volMem[FS_ALIGN_DIM(ExFatVolume, FatVolume)]; + private: /** FsBaseFile allowed access to private members. */ friend class FsBaseFile; - static FsVolume* m_cwv; + static FsVolume* cwv() { return m_cwv; } FsVolume(const FsVolume& from); FsVolume& operator=(const FsVolume& from); - newalign_t m_volMem[FS_ALIGN_DIM(ExFatVolume, FatVolume)]; - FatVolume* m_fVol; - ExFatVolume* m_xVol; - BlockDevice* m_blockDev; + + static FsVolume* m_cwv; + FatVolume* m_fVol = nullptr; + ExFatVolume* m_xVol = nullptr; }; - - -}; // namespace sdfat - - #endif // FsVolume_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.cpp index 1d163d0e..6a9259a9 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,19 +22,11 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "common/SysCall.h" -#if defined(UDR0) || defined(DOXYGEN) #include "MinimumSerial.h" - - -namespace sdfat { - - -const uint16_t MIN_2X_BAUD = F_CPU/(4*(2*0XFFF + 1)) + 1; +#if defined(UDR0) || defined(DOXYGEN) +const uint16_t MIN_2X_BAUD = F_CPU / (4 * (2 * 0XFFF + 1)) + 1; //------------------------------------------------------------------------------ -int MinimumSerial::available() { - return UCSR0A & (1 << RXC0) ? 1 : 0; -} +int MinimumSerial::available() { return UCSR0A & (1 << RXC0) ? 1 : 0; } //------------------------------------------------------------------------------ void MinimumSerial::begin(uint32_t baud) { uint16_t baud_setting; @@ -58,7 +50,8 @@ void MinimumSerial::begin(uint32_t baud) { } //------------------------------------------------------------------------------ void MinimumSerial::flush() { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} + while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) { + } } //------------------------------------------------------------------------------ int MinimumSerial::read() { @@ -69,12 +62,9 @@ int MinimumSerial::read() { } //------------------------------------------------------------------------------ size_t MinimumSerial::write(uint8_t b) { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} + while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) { + } UDR0 = b; return 1; } - -}; // namepace sdfat - - #endif // defined(UDR0) || defined(DOXYGEN) diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.h b/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.h index 7ed21d7b..7e232a31 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/MinimumSerial.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,18 +22,13 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ - /** +/** * \file * \brief Minimal AVR Serial driver. */ #ifndef MinimumSerial_h #define MinimumSerial_h #include "common/SysCall.h" - - -namespace sdfat { - - //============================================================================== /** * \class MinimumSerial @@ -42,7 +37,7 @@ namespace sdfat { class MinimumSerial : public print_t { public: /** \return true for hardware serial */ - operator bool() {return true;} + operator bool() { return true; } /** * \return one if data is available. */ @@ -69,9 +64,4 @@ class MinimumSerial : public print_t { size_t write(uint8_t b); using print_t::write; }; - - -}; // namespace sdfat - - #endif // MinimumSerial_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/RingBuf.h b/extra-libraries/ESP8266/ESP8266SdFat/src/RingBuf.h new file mode 100644 index 00000000..f796768c --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/RingBuf.h @@ -0,0 +1,400 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#ifndef RingBuf_h +#define RingBuf_h +/** + * \file + * \brief Ring buffer for data loggers. + */ +#include "common/FmtNumber.h" +#include "common/SysCall.h" + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Teensy 3.5/3.6 has hard fault at 0x20000000 for unaligned memcpy. +#if defined(__MK64FX512__) || defined(__MK66FX1M0__) +inline bool is_aligned(const void* ptr, uintptr_t alignment) { + auto iptr = reinterpret_cast(ptr); + return !(iptr % alignment); +} +inline void memcpyBuf(void* dst, const void* src, size_t len) { + const uint8_t* b = reinterpret_cast(0X20000000UL); + uint8_t* d = reinterpret_cast(dst); + const uint8_t* s = reinterpret_cast(src); + if ((is_aligned(d, 4) && is_aligned(s, 4) && (len & 3) == 0) || + !((d < b && b <= (d + len)) || (s < b && b <= (s + len)))) { + memcpy(dst, src, len); + } else { + while (len--) { + *d++ = *s++; + } + } +} +#else // defined(__MK64FX512__) || defined(__MK66FX1M0__) +inline void memcpyBuf(void* dst, const void* src, size_t len) { + memcpy(dst, src, len); +} +#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) +#endif // DOXYGEN_SHOULD_SKIP_THIS +/** + * \class RingBuf + * \brief Ring buffer for data loggers and data transmitters. + * + * This ring buffer may be used in ISRs. Use beginISR(), endISR(), write() + * and print() in the ISR and use writeOut() in non-interrupt code + * to write data to a file. + * + * Use beginISR(), endISR() and read() in an ISR with readIn() in non-interrupt + * code to provide file data to an ISR. + */ +template +class RingBuf : public Print { + public: + /** + * RingBuf Constructor. + */ + RingBuf() { begin(nullptr); } + /** + * Initialize RingBuf. + * \param[in] file Underlying file. + */ + void begin(F* file) { + m_file = file; + m_count = 0; + m_head = 0; + m_tail = 0; + m_inISR = false; + clearWriteError(); + } + /** + * Disable protection of m_count by noInterrupts()/interrupts. + */ + void beginISR() { m_inISR = true; } + /** + * \return the RingBuf free space in bytes. + */ + size_t bytesFree() const { return Size - bytesUsed(); } + /** + * \return the RingBuf used space in bytes. + */ + size_t bytesUsed() const { + if (m_inISR) { + return m_count; + } else { + noInterrupts(); + size_t rtn = m_count; + interrupts(); + return rtn; + } + } + /** + * Enable protection of m_count by noInterrupts()/interrupts. + */ + void endISR() { m_inISR = false; } +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // See write(), read(), beginISR() and endISR(). + size_t __attribute__((error("use write(buf, count), beginISR(), endISR()"))) + memcpyIn(const void* buf, size_t count); + size_t __attribute__((error("use read(buf, count), beginISR(), endISR()"))) + memcpyOut(void* buf, size_t count); +#endif // DOXYGEN_SHOULD_SKIP_THIS + /** Print a number followed by a field terminator. + * \param[in] value The number to be printed. + * \param[in] term The field terminator. Use '\\n' for CR LF. + * \param[in] prec Number of digits after decimal point. + * \return The number of bytes written. + */ + size_t printField(double value, char term, uint8_t prec = 2) { + char buf[24]; + char* str = buf + sizeof(buf); + if (term) { + *--str = term; + if (term == '\n') { + *--str = '\r'; + } + } + str = fmtDouble(str, value, prec, false); + return write(str, buf + sizeof(buf) - str); + } + /** Print a number followed by a field terminator. + * \param[in] value The number to be printed. + * \param[in] term The field terminator. Use '\\n' for CR LF. + * \param[in] prec Number of digits after decimal point. + * \return The number of bytes written or -1 if an error occurs. + */ + size_t printField(float value, char term, uint8_t prec = 2) { + return printField(static_cast(value), term, prec); + } + /** Print a number followed by a field terminator. + * \param[in] value The number to be printed. + * \param[in] term The field terminator. Use '\\n' for CR LF. + * \return The number of bytes written or -1 if an error occurs. + */ + template + size_t printField(Type value, char term) { + char sign = 0; + char buf[3 * sizeof(Type) + 3]; + char* str = buf + sizeof(buf); + + if (term) { + *--str = term; + if (term == '\n') { + *--str = '\r'; + } + } + if (value < 0) { + value = -value; + sign = '-'; + } + if (sizeof(Type) < 4) { + str = fmtBase10(str, (uint16_t)value); + } else { + str = fmtBase10(str, (uint32_t)value); + } + if (sign) { + *--str = sign; + } + return write((const uint8_t*)str, &buf[sizeof(buf)] - str); + } + /** Read data from RingBuf. + * \param[out] buf destination for data. + * \param[in] count number of bytes to read. + * \return Actual count of bytes read. + */ + size_t read(void* buf, size_t count) { + size_t n = bytesFree(); + if (count > n) { + count = n; + } + uint8_t* dst = reinterpret_cast(buf); + n = minSize(Size - m_tail, count); + if (n == count) { + memcpyBuf(dst, m_buf + m_tail, n); + m_tail = advance(m_tail, n); + } else { + memcpyBuf(dst, m_buf + m_tail, n); + memcpyBuf(dst + n, m_buf, count - n); + m_tail = count - n; + } + adjustCount(-count); + return count; + } + /** + * Efficient read for small types. + * + * \param[in] data location for data item. + * \return true for success else false. + */ + template + bool read(Type* data) { + if (bytesUsed() < sizeof(Type)) { + return false; + } + uint8_t* ptr = reinterpret_cast(data); + for (size_t i = 0; i < sizeof(Type); i++) { + ptr[i] = m_buf[m_tail]; + m_tail = advance(m_tail); + } + adjustCount(-sizeof(Type)); + return true; + } + /** + * Read data into the RingBuf from the underlying file. + * the number of bytes read may be less than count if + * bytesFree is less than count. + * + * This function must not be used in an ISR. + * + * \param[in] count number of bytes to be read. + * \return Number of bytes actually read or negative for read error. + */ + int readIn(size_t count) { + size_t n = bytesFree(); + if (count > n) { + count = n; + } + n = minSize(Size - m_head, count); + auto rtn = m_file->read(m_buf + m_head, n); + if (rtn <= 0) { + return rtn; + } + size_t nread = rtn; + if (n < count && nread == n) { + rtn = m_file->read(m_buf, count - n); + if (rtn > 0) { + nread += rtn; + } + } + m_head = advance(m_head, nread); + adjustCount(nread); + return nread; + } + /** + * Write all data in the RingBuf to the underlying file. + * \return true for success. + */ + bool sync() { + size_t n = bytesUsed(); + return n ? writeOut(n) == n : true; + } + /** + * Copy data to the RingBuf from buf. + * + * No data will be copied if count is greater than bytesFree. + * Use getWriteError() to check for print errors and + * clearWriteError() to clear the error. + * + * \param[in] buf Location of data to be written. + * \param[in] count number of bytes to be written. + * \return Number of bytes actually written. + */ + size_t write(const void* buf, size_t count) { + if (bytesFree() < count) { + setWriteError(); + return 0; + } + const uint8_t* src = (const uint8_t*)buf; + size_t n = minSize(Size - m_head, count); + if (n == count) { + memcpyBuf(m_buf + m_head, src, n); + m_head = advance(m_head, n); + } else { + memcpyBuf(m_buf + m_head, src, n); + memcpyBuf(m_buf, src + n, count - n); + m_head = count - n; + } + adjustCount(count); + return count; + } + /** + * Copy str to RingBuf. + * + * \param[in] str Location of data to be written. + * \return Number of bytes actually written. + */ + size_t write(const char* str) { return Print::write(str); } + /** + * Override virtual function in Print for efficiency. + * + * \param[in] buf Location of data to be written. + * \param[in] count number of bytes to be written. + * \return Number of bytes actually written. + */ + size_t write(const uint8_t* buf, size_t count) override { + return write((const void*)buf, count); + } + /** + * Efficient write for small types. + * \param[in] data Item to be written. + * \return Number of bytes actually written. + */ + template + size_t write(Type data) { + uint8_t* ptr = reinterpret_cast(&data); + if (bytesFree() < sizeof(Type)) { + setWriteError(); + return 0; + } + for (size_t i = 0; i < sizeof(Type); i++) { + m_buf[m_head] = ptr[i]; + m_head = advance(m_head); + } + adjustCount(sizeof(Type)); + return sizeof(Type); + } + /** + * Required function for Print. + * \param[in] data Byte to be written. + * \return Number of bytes actually written. + * + * Try to force devirtualization by using final and always_inline. + */ + size_t write(uint8_t data) final __attribute__((always_inline)) { + // Use this if above does not compile size_t write(uint8_t data) final { + return write(data); + } + /** + * Write data to file from RingBuf buffer. + * \param[in] count number of bytes to be written. + * + * The number of bytes written may be less than count if + * bytesUsed is less than count or if an error occurs. + * + * This function must only be used in non-interrupt code. + * + * \return Number of bytes actually written. + */ + size_t writeOut(size_t count) { + size_t n = bytesUsed(); // Protected from interrupts; + if (count > n) { + count = n; + } + n = minSize(Size - m_tail, count); + auto rtn = m_file->write(m_buf + m_tail, n); + if (rtn <= 0) { + return 0; + } + size_t nwrite = rtn; + if (n < count && nwrite == n) { + rtn = m_file->write(m_buf, count - n); + if (rtn > 0) { + nwrite += rtn; + } + } + m_tail = advance(m_tail, nwrite); + adjustCount(-nwrite); + return nwrite; + } + + private: + uint8_t __attribute__((aligned(4))) m_buf[Size]; + F* m_file; + volatile size_t m_count; + size_t m_head; + size_t m_tail; + volatile bool m_inISR; + + void adjustCount(int amount) { + if (m_inISR) { + m_count += amount; + } else { + noInterrupts(); + m_count += amount; + interrupts(); + } + } + size_t advance(size_t index) { + if (!((Size - 1) & Size)) { + return (index + 1) & (Size - 1); + } + return index + 1 < Size ? index + 1 : 0; + } + size_t advance(size_t index, size_t n) { + index += n; + return index < Size ? index : index - Size; + } + // avoid macro MIN + size_t minSize(size_t a, size_t b) { return a < b ? a : b; } +}; +#endif // RingBuf_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCard.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCard.h index 8a96c610..86697bbd 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCard.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCard.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,18 +22,19 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Top level include for SPI and SDIO cards. + */ #ifndef SdCard_h #define SdCard_h -#include "SdioCard.h" #include "SdSpiCard.h" - - -namespace sdfat { - - +#include "SdioCard.h" #if HAS_SDIO_CLASS +/** Type for both SPI and SDIO cards. */ typedef SdCardInterface SdCard; -#else // HAS_SDIO_CLASS +#else // HAS_SDIO_CLASS +/** Type for SPI card. */ typedef SdSpiCard SdCard; #endif // HAS_SDIO_CLASS /** Determine card configuration type. @@ -41,13 +42,19 @@ typedef SdSpiCard SdCard; * \param[in] cfg Card configuration. * \return true if SPI. */ -inline bool isSpi(SdSpiConfig cfg) {(void)cfg; return true;} +inline bool isSpi(SdSpiConfig cfg) { + (void)cfg; + return true; +} /** Determine card configuration type. * * \param[in] cfg Card configuration. * \return true if SPI. */ -inline bool isSpi(SdioConfig cfg) {(void)cfg; return false;} +inline bool isSpi(SdioConfig cfg) { + (void)cfg; + return false; +} /** * \class SdCardFactory * \brief Setup a SPI card or SDIO card. @@ -57,11 +64,10 @@ class SdCardFactory { /** Initialize SPI card. * * \param[in] config SPI configuration. - * \return generic card pointer. + * \return generic card pointer or nullptr if failure. */ SdCard* newCard(SdSpiConfig config) { - m_spiCard.begin(config); - return &m_spiCard; + return m_spiCard.begin(config) ? &m_spiCard : nullptr; } /** Initialize SDIO card. * @@ -70,9 +76,8 @@ class SdCardFactory { */ SdCard* newCard(SdioConfig config) { #if HAS_SDIO_CLASS - m_sdioCard.begin(config); - return &m_sdioCard; -#else // HAS_SDIO_CLASS + return m_sdioCard.begin(config) ? &m_sdioCard : nullptr; +#else // HAS_SDIO_CLASS (void)config; return nullptr; #endif // HAS_SDIO_CLASS @@ -84,9 +89,4 @@ class SdCardFactory { #endif // HAS_SDIO_CLASS SdSpiCard m_spiCard; }; - - -}; // namespace sdfat - - #endif // SdCard_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.cpp index 6abb5214..f3a52f2a 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,31 +23,30 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdCardInfo.h" - - -namespace sdfat { - - //------------------------------------------------------------------------------ #undef SD_CARD_ERROR -#define SD_CARD_ERROR(e, m) case SD_CARD_ERROR_##e: pr->print(F(#e)); break; +#define SD_CARD_ERROR(e, m) \ + case SD_CARD_ERROR_##e: \ + pr->print(F(#e)); \ + break; void printSdErrorSymbol(print_t* pr, uint8_t code) { pr->print(F("SD_CARD_ERROR_")); switch (code) { SD_ERROR_CODE_LIST - default: pr->print(F("UNKNOWN")); + default: + pr->print(F("UNKNOWN")); } } //------------------------------------------------------------------------------ #undef SD_CARD_ERROR -#define SD_CARD_ERROR(e, m) case SD_CARD_ERROR_##e: pr->print(F(m)); break; +#define SD_CARD_ERROR(e, m) \ + case SD_CARD_ERROR_##e: \ + pr->print(F(m)); \ + break; void printSdErrorText(print_t* pr, uint8_t code) { - switch - (code) { + switch (code) { SD_ERROR_CODE_LIST - default: pr->print(F("Unknown error")); + default: + pr->print(F("Unknown error")); } } - - -}; // namespce sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.h index 791d25da..9ef7f75b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInfo.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,94 +22,107 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Definitions for SD cards. + */ #ifndef SdCardInfo_h #define SdCardInfo_h #include + #include "../common/SysCall.h" - - -namespace sdfat { - - // Based on the document: // // SD Specifications // Part 1 // Physical Layer // Simplified Specification -// Version 5.00 -// Aug 10, 2016 +// Version 8.00 +// Sep 23, 2020 // // https://www.sdcard.org/downloads/pls/ +#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ +// SD registers are big endian. +#error bit fields in structures assume little endian processor. +#endif // __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ //------------------------------------------------------------------------------ // SD card errors // See the SD Specification for command info. -#define SD_ERROR_CODE_LIST\ - SD_CARD_ERROR(NONE, "No error")\ - SD_CARD_ERROR(CMD0, "Card reset failed")\ - SD_CARD_ERROR(CMD2, "SDIO read CID")\ - SD_CARD_ERROR(CMD3, "SDIO publish RCA")\ - SD_CARD_ERROR(CMD6, "Switch card function")\ - SD_CARD_ERROR(CMD7, "SDIO card select")\ - SD_CARD_ERROR(CMD8, "Send and check interface settings")\ - SD_CARD_ERROR(CMD9, "Read CSD data")\ - SD_CARD_ERROR(CMD10, "Read CID data")\ - SD_CARD_ERROR(CMD12, "Stop multiple block read")\ - SD_CARD_ERROR(CMD13, "Read card status")\ - SD_CARD_ERROR(CMD17, "Read single block")\ - SD_CARD_ERROR(CMD18, "Read multiple blocks")\ - SD_CARD_ERROR(CMD24, "Write single block")\ - SD_CARD_ERROR(CMD25, "Write multiple blocks")\ - SD_CARD_ERROR(CMD32, "Set first erase block")\ - SD_CARD_ERROR(CMD33, "Set last erase block")\ - SD_CARD_ERROR(CMD38, "Erase selected blocks")\ - SD_CARD_ERROR(CMD58, "Read OCR register")\ - SD_CARD_ERROR(CMD59, "Set CRC mode")\ - SD_CARD_ERROR(ACMD6, "Set SDIO bus width")\ - SD_CARD_ERROR(ACMD13, "Read extended status")\ - SD_CARD_ERROR(ACMD23, "Set pre-erased count")\ - SD_CARD_ERROR(ACMD41, "Activate card initialization")\ - SD_CARD_ERROR(READ_TOKEN, "Bad read data token")\ - SD_CARD_ERROR(READ_CRC, "Read CRC error")\ - SD_CARD_ERROR(READ_FIFO, "SDIO fifo read timeout")\ - SD_CARD_ERROR(READ_REG, "Read CID or CSD failed.")\ - SD_CARD_ERROR(READ_START, "Bad readStart argument")\ - SD_CARD_ERROR(READ_TIMEOUT, "Read data timeout")\ - SD_CARD_ERROR(STOP_TRAN, "Multiple block stop failed")\ - SD_CARD_ERROR(WRITE_DATA, "Write data not accepted")\ - SD_CARD_ERROR(WRITE_FIFO, "SDIO fifo write timeout")\ - SD_CARD_ERROR(WRITE_START, "Bad writeStart argument")\ - SD_CARD_ERROR(WRITE_PROGRAMMING, "Flash programming")\ - SD_CARD_ERROR(WRITE_TIMEOUT, "Write timeout")\ - SD_CARD_ERROR(DMA, "DMA transfer failed")\ - SD_CARD_ERROR(ERASE, "Card did not accept erase commands")\ - SD_CARD_ERROR(ERASE_SINGLE_SECTOR, "Card does not support erase")\ - SD_CARD_ERROR(ERASE_TIMEOUT, "Erase command timeout")\ - SD_CARD_ERROR(INIT_NOT_CALLED, "Card has not been initialized")\ - SD_CARD_ERROR(INVALID_CARD_CONFIG, "Invalid card config")\ +/** Define error codes and brief description. */ +#define SD_ERROR_CODE_LIST \ + SD_CARD_ERROR(NONE, "No error") \ + SD_CARD_ERROR(CMD0, "Card reset failed") \ + SD_CARD_ERROR(CMD2, "SDIO read CID") \ + SD_CARD_ERROR(CMD3, "SDIO publish RCA") \ + SD_CARD_ERROR(CMD6, "Switch card function") \ + SD_CARD_ERROR(CMD7, "SDIO card select") \ + SD_CARD_ERROR(CMD8, "Send and check interface settings") \ + SD_CARD_ERROR(CMD9, "Read CSD data") \ + SD_CARD_ERROR(CMD10, "Read CID data") \ + SD_CARD_ERROR(CMD12, "Stop multiple block transmission") \ + SD_CARD_ERROR(CMD13, "Read card status") \ + SD_CARD_ERROR(CMD17, "Read single block") \ + SD_CARD_ERROR(CMD18, "Read multiple blocks") \ + SD_CARD_ERROR(CMD24, "Write single block") \ + SD_CARD_ERROR(CMD25, "Write multiple blocks") \ + SD_CARD_ERROR(CMD32, "Set first erase block") \ + SD_CARD_ERROR(CMD33, "Set last erase block") \ + SD_CARD_ERROR(CMD38, "Erase selected blocks") \ + SD_CARD_ERROR(CMD58, "Read OCR register") \ + SD_CARD_ERROR(CMD59, "Set CRC mode") \ + SD_CARD_ERROR(ACMD6, "Set SDIO bus width") \ + SD_CARD_ERROR(ACMD13, "Read extended status") \ + SD_CARD_ERROR(ACMD23, "Set pre-erased count") \ + SD_CARD_ERROR(ACMD41, "Activate card initialization") \ + SD_CARD_ERROR(ACMD51, "Read SCR data") \ + SD_CARD_ERROR(READ_TOKEN, "Bad read data token") \ + SD_CARD_ERROR(READ_CRC, "Read CRC error") \ + SD_CARD_ERROR(READ_FIFO, "SDIO fifo read timeout") \ + SD_CARD_ERROR(READ_REG, "Read CID or CSD failed.") \ + SD_CARD_ERROR(READ_START, "Bad readStart argument") \ + SD_CARD_ERROR(READ_TIMEOUT, "Read data timeout") \ + SD_CARD_ERROR(STOP_TRAN, "Multiple block stop failed") \ + SD_CARD_ERROR(TRANSFER_COMPLETE, "SDIO transfer complete") \ + SD_CARD_ERROR(WRITE_DATA, "Write data not accepted") \ + SD_CARD_ERROR(WRITE_FIFO, "SDIO fifo write timeout") \ + SD_CARD_ERROR(WRITE_START, "Bad writeStart argument") \ + SD_CARD_ERROR(WRITE_PROGRAMMING, "Flash programming") \ + SD_CARD_ERROR(WRITE_TIMEOUT, "Write timeout") \ + SD_CARD_ERROR(DMA, "DMA transfer failed") \ + SD_CARD_ERROR(ERASE, "Card did not accept erase commands") \ + SD_CARD_ERROR(ERASE_SINGLE_SECTOR, "Card does not support erase") \ + SD_CARD_ERROR(ERASE_TIMEOUT, "Erase command timeout") \ + SD_CARD_ERROR(INIT_NOT_CALLED, "Card has not been initialized") \ + SD_CARD_ERROR(INVALID_CARD_CONFIG, "Invalid card config") \ SD_CARD_ERROR(FUNCTION_NOT_SUPPORTED, "Unsupported SDIO command") - enum { -#define SD_CARD_ERROR(e, m) SD_CARD_ERROR_##e, +/** Macro for generation of error codes using an enum. */ +#define SD_CARD_ERROR(e, m) SD_CARD_ERROR_##e, SD_ERROR_CODE_LIST #undef SD_CARD_ERROR - SD_CARD_ERROR_UNKNOWN + SD_CARD_ERROR_UNKNOWN }; +/** Print the enum symbol for an error code. + * \param[in] pr Print stream. + * \param[in] code enum value for error. + */ void printSdErrorSymbol(print_t* pr, uint8_t code); +/** Print text for an error code. + * \param[in] pr Print stream. + * \param[in] code enum value for error. + */ void printSdErrorText(print_t* pr, uint8_t code); //------------------------------------------------------------------------------ // card types /** Standard capacity V1 SD card */ -const uint8_t SD_CARD_TYPE_SD1 = 1; +const uint8_t SD_CARD_TYPE_SD1 = 1; /** Standard capacity V2 SD card */ -const uint8_t SD_CARD_TYPE_SD2 = 2; +const uint8_t SD_CARD_TYPE_SD2 = 2; /** High Capacity SD card */ const uint8_t SD_CARD_TYPE_SDHC = 3; //------------------------------------------------------------------------------ // SD operation timeouts -/** CMD0 retry count */ -const uint8_t SD_CMD0_RETRY = 10; /** command timeout ms */ const uint16_t SD_CMD_TIMEOUT = 300; /** erase timeout ms */ @@ -175,6 +188,8 @@ const uint8_t ACMD23 = 0X17; /** SD_SEND_OP_COMD - Sends host capacity support information and activates the card's initialization process */ const uint8_t ACMD41 = 0X29; +/** Reads the SD Configuration Register (SCR). */ +const uint8_t ACMD51 = 0X33; //============================================================================== // CARD_STATUS /** The command's argument was out of the allowed range for this card. */ @@ -184,7 +199,7 @@ const uint32_t CARD_STATUS_ADDRESS_ERROR = 1UL << 30; /** The transferred sector length is not allowed for this card. */ const uint32_t CARD_STATUS_SECTOR_LEN_ERROR = 1UL << 29; /** An error in the sequence of erase commands occurred. */ -const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL <<28; +const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL << 28; /** An invalid selection of write-sectors for erase occurred. */ const uint32_t CARD_STATUS_ERASE_PARAM = 1UL << 27; /** Set when the host attempts to write to a protected sector. */ @@ -205,7 +220,7 @@ const uint32_t CARD_STATUS_CC_ERROR = 1UL << 20; const uint32_t CARD_STATUS_ERROR = 1UL << 19; // bits 19, 18, and 17 reserved. /** Permanent WP set or attempt to change read only values of CSD. */ -const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL <<16; +const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL << 16; /** partial address space was erased due to write protect. */ const uint32_t CARD_STATUS_WP_ERASE_SKIP = 1UL << 15; /** The command has been executed without using the internal ECC. */ @@ -258,243 +273,205 @@ const uint8_t DATA_RES_MASK = 0X1F; const uint8_t DATA_RES_ACCEPTED = 0X05; //============================================================================== /** - * \class CID - * \brief Card IDentification (CID) register. + * \class cid_t + * \brief Card Identification (CID) register. */ -typedef struct CID { +struct cid_t { // byte 0 /** Manufacturer ID */ - unsigned char mid; + uint8_t mid; // byte 1-2 - /** OEM/Application ID */ + /** OEM/Application ID. */ char oid[2]; // byte 3-7 - /** Product name */ + /** Product name. */ char pnm[5]; // byte 8 - /** Product revision least significant digit */ - unsigned char prv_m : 4; - /** Product revision most significant digit */ - unsigned char prv_n : 4; + /** Product revision - n.m two 4-bit nibbles. */ + uint8_t prv; // byte 9-12 - /** Product serial number */ - uint32_t psn; - // byte 13 - /** Manufacturing date year high digit */ - unsigned char mdt_year_high : 4; - /** not used */ - unsigned char reserved : 4; - // byte 14 - /** Manufacturing date month */ - unsigned char mdt_month : 4; - /** Manufacturing date year low digit */ - unsigned char mdt_year_low : 4; + /** Product serial 32-bit number Big Endian format. */ + uint8_t psn8[4]; + // byte 13-14 + /** Manufacturing date big endian - four nibbles RYYM Reserved Year Month. */ + uint8_t mdt[2]; // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** CRC7 checksum */ - unsigned char crc : 7; -} __attribute__((packed)) cid_t; - -//============================================================================== -#ifndef DOXYGEN_SHOULD_SKIP_THIS -/** - * \class CSDV1 - * \brief CSD register for version 1.00 cards . - */ -typedef struct CSDV1 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - unsigned char taac; - // byte 2 - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - unsigned char c_size_high : 2; - unsigned char reserved2 : 2; - unsigned char dsr_imp : 1; - unsigned char read_blk_misalign : 1; - unsigned char write_blk_misalign : 1; - unsigned char read_bl_partial : 1; - // byte 7 - unsigned char c_size_mid; - // byte 8 - unsigned char vdd_r_curr_max : 3; - unsigned char vdd_r_curr_min : 3; - unsigned char c_size_low : 2; - // byte 9 - unsigned char c_size_mult_high : 2; - unsigned char vdd_w_cur_max : 3; - unsigned char vdd_w_curr_min : 3; - // byte 10 - unsigned char sector_size_high : 6; - unsigned char erase_blk_en : 1; - unsigned char c_size_mult_low : 1; - // byte 11 - unsigned char wp_grp_size : 7; - unsigned char sector_size_low : 1; - // byte 12 - unsigned char write_bl_len_high : 2; - unsigned char r2w_factor : 3; - unsigned char reserved3 : 2; - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved4 : 5; - unsigned char write_partial : 1; - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved5: 2; - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Indicates the file format on the card */ - unsigned char file_format_grp : 1; - // byte 15 - unsigned char always1 : 1; - unsigned char crc : 7; -} __attribute__((packed)) csd1_t; -//============================================================================== -/** - * \class CSDV2 - * \brief CSD register for version 2.00 cards. - */ -typedef struct CSDV2 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - /** fixed to 0X0E */ - unsigned char taac; - // byte 2 - /** fixed to 0 */ - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - /** This field is fixed to 9h, which indicates READ_BL_LEN=512 Byte */ - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - /** not used */ - unsigned char reserved2 : 4; - unsigned char dsr_imp : 1; - /** fixed to 0 */ - unsigned char read_blk_misalign : 1; - /** fixed to 0 */ - unsigned char write_blk_misalign : 1; - /** fixed to 0 - no partial read */ - unsigned char read_bl_partial : 1; - // byte 7 - /** high part of card size */ - unsigned char c_size_high : 6; - /** not used */ - unsigned char reserved3 : 2; - // byte 8 - /** middle part of card size */ - unsigned char c_size_mid; - // byte 9 - /** low part of card size */ - unsigned char c_size_low; - // byte 10 - /** sector size is fixed at 64 KB */ - unsigned char sector_size_high : 6; - /** fixed to 1 - erase single is supported */ - unsigned char erase_blk_en : 1; - /** not used */ - unsigned char reserved4 : 1; - // byte 11 - unsigned char wp_grp_size : 7; - /** sector size is fixed at 64 KB */ - unsigned char sector_size_low : 1; - // byte 12 - /** write_bl_len fixed for 512 byte sectors */ - unsigned char write_bl_len_high : 2; - /** fixed value of 2 */ - unsigned char r2w_factor : 3; - /** not used */ - unsigned char reserved5 : 2; - /** fixed value of 0 - no write protect groups */ - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved6 : 5; - /** always zero - no partial sector read*/ - unsigned char write_partial : 1; - /** write_bl_len fixed for 512 byte sectors */ - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved7: 2; - /** Do not use always 0 */ - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Do not use always 0 */ - unsigned char file_format_grp : 1; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** checksum */ - unsigned char crc : 7; -} __attribute__((packed)) csd2_t; + /** CRC7 bits 1-7 checksum, bit 0 always 1 */ + uint8_t crc; + // Extract big endian fields. + /** \return major revision number. */ + int prvN() const { return prv >> 4; } + /** \return minor revision number. */ + int prvM() const { return prv & 0XF; } + /** \return Manufacturing Year. */ + int mdtYear() const { return 2000 + ((mdt[0] & 0XF) << 4) + (mdt[1] >> 4); } + /** \return Manufacturing Month. */ + int mdtMonth() const { return mdt[1] & 0XF; } + /** \return Product Serial Number. */ + uint32_t psn() const { + return (uint32_t)psn8[0] << 24 | (uint32_t)psn8[1] << 16 | + (uint32_t)psn8[2] << 8 | (uint32_t)psn8[3]; + } +} __attribute__((packed)); //============================================================================== /** * \class csd_t * \brief Union of old and new style CSD register. */ -union csd_t { - csd1_t v1; - csd2_t v2; -}; -//----------------------------------------------------------------------------- -inline uint32_t sdCardCapacity(csd_t* csd) { - if (csd->v1.csd_ver == 0) { - uint8_t read_bl_len = csd->v1.read_bl_len; - uint16_t c_size = (csd->v1.c_size_high << 10) - | (csd->v1.c_size_mid << 2) | csd->v1.c_size_low; - uint8_t c_size_mult = (csd->v1.c_size_mult_high << 1) - | csd->v1.c_size_mult_low; - return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); - } else if (csd->v2.csd_ver == 1) { - return (((uint32_t)csd->v2.c_size_high << 16) + - ((uint16_t)csd->v2.c_size_mid << 8) + csd->v2.c_size_low + 1) << 10; - } else { - return 0; +struct csd_t { + /** union of all CSD versions */ + uint8_t csd[16]; + // Extract big endian fields. + /** \return Capacity in sectors */ + uint32_t capacity() const { + uint32_t c_size; + uint8_t ver = csd[0] >> 6; + if (ver == 0) { + c_size = (uint32_t)(csd[6] & 3) << 10; + c_size |= (uint32_t)csd[7] << 2 | csd[8] >> 6; + uint8_t c_size_mult = (csd[9] & 3) << 1 | csd[10] >> 7; + uint8_t read_bl_len = csd[5] & 15; + return (c_size + 1) << (c_size_mult + read_bl_len + 2 - 9); + } else if (ver == 1) { + c_size = (uint32_t)(csd[7] & 63) << 16; + c_size |= (uint32_t)csd[8] << 8; + c_size |= csd[9]; + return (c_size + 1) << 10; + } else { + return 0; + } } -} -//----------------------------------------------------------------------------- + /** \return true if erase granularity is single block. */ + bool eraseSingleBlock() const { return csd[10] & 0X40; } + /** \return erase size in 512 byte blocks if eraseSingleBlock is false. */ + int eraseSize() const { return ((csd[10] & 0X3F) << 1 | csd[11] >> 7) + 1; } + /** \return true if the contents is copied or true if original. */ + bool copy() const { return csd[14] & 0X40; } + /** \return true if the entire card is permanently write protected. */ + bool permWriteProtect() const { return csd[14] & 0X20; } + /** \return true if the entire card is temporarily write protected. */ + bool tempWriteProtect() const { return csd[14] & 0X10; } +}; +//============================================================================== +/** + * \class scr_t + * \brief SCR register. + */ +struct scr_t { + /** Bytes 0-3 SD Association, bytes 4-7 reserved for manufacturer. */ + uint8_t scr[8]; + /** \return SCR_STRUCTURE field - must be zero.*/ + uint8_t srcStructure() const { return scr[0] >> 4; } + /** \return SD_SPEC field 0 - v1.0 or V1.01, 1 - 1.10, 2 - V2.00 or greater */ + uint8_t sdSpec() const { return scr[0] & 0XF; } + /** \return false if all zero, true if all one. */ + bool dataAfterErase() const { return scr[1] & 0X80; } + /** \return CPRM Security Version. */ + uint8_t sdSecurity() const { return (scr[1] >> 4) & 0X7; } + /** \return 0101b. */ + uint8_t sdBusWidths() const { return scr[1] & 0XF; } + /** \return true if V3.0 or greater. */ + bool sdSpec3() const { return scr[2] & 0X80; } + /** \return if true and sdSpecX is zero V4.xx. */ + bool sdSpec4() const { return scr[2] & 0X4; } + /** \return nonzero for version 5 or greater if sdSpec == 2, + sdSpec3 == true. Version is return plus four.*/ + uint8_t sdSpecX() const { return (scr[2] & 0X3) << 2 | scr[3] >> 6; } + /** \return bit map for support CMD58/59, CMD48/49, CMD23, and CMD20 */ + uint8_t cmdSupport() const { return scr[3] & 0XF; } + /** \return SD spec version */ + int16_t sdSpecVer() const { + if (sdSpec() > 2) { + return -1; + } else if (sdSpec() < 2) { + return sdSpec() ? 110 : 101; + } else if (!sdSpec3()) { + return 200; + } else if (!sdSpec4() && !sdSpecX()) { + return 300; + } + return 400 + 100 * sdSpecX(); + } +}; +//============================================================================== +/** + * \class sds_t + * \brief SD Status. + */ // fields are big endian -typedef struct SdStatus { +struct sds_t { + /** byte 0, bit 7-6 width, bit 5 secured mode, bits 4-0 reserved. */ uint8_t busWidthSecureMode; + /** byte 1 reserved */ uint8_t reserved1; + /** byte 2-3 zero for SD rd/wr memory card. */ uint8_t sdCardType[2]; + /** byte 4-7 size of protected area big endian */ uint8_t sizeOfProtectedArea[4]; - uint8_t speedClass; + /** byte 8 speed class. */ + uint8_t speed; + /** byte 9 performance move */ uint8_t performanceMove; + /** byte 10 AU size code. */ uint8_t auSize; + /** byte 11-12 erase size big endian */ uint8_t eraseSize[2]; + /** byte 13 erase timeout and erase offset */ uint8_t eraseTimeoutOffset; - uint8_t uhsSpeedAuSize; - uint8_t videoSpeed; + /** byte 14 */ + uint8_t uhsClassAuSize; + /** byte 15 */ + uint8_t videoSpeedClass; + /** byte 16-17 */ uint8_t vscAuSize[2]; + /** byte 18-21 */ uint8_t susAddr[3]; - uint8_t reserved2[3]; + /** byte 21 */ + uint8_t appPerfClass; + /** byte 22 */ + uint8_t perfEnhance; + /** byte 23 */ + uint8_t discardFule; + /** byte 24 */ uint8_t reservedManufacturer[40]; -} SdStatus_t; -#endif // DOXYGEN_SHOULD_SKIP_THIS - - -}; // namespace sdfat - + /** \return appClass. */ + int appClass() { return appPerfClass; } + /** \return AU size in KB. or zero for error. */ + uint32_t auSizeKB() { + // 0XF mask and uint16_t array helps compiler optimize size on Uno. + uint8_t val = (auSize >> 4) & 0XF; + static const uint16_t au[] = {0, 16, 32, 64, 128, + 256, 512, 1024, 2048, 4096, + 8192, 12288, 16384, 24576, 32768}; + return val < 0XF ? au[val] : 65536UL; + } + /** \return current bus width or -1 for error. */ + uint8_t busWidth() const { + uint8_t w = busWidthSecureMode >> 6; + return w == 2 ? 4 : w == 0 ? 1 : -1; + } + /** \return true is discard operation is supported else true. */ + bool discard() const { return discardFule & 2; } + /** \return eraseSize in AUs. */ + uint16_t eraseSizeAU() const { + return (uint16_t)eraseSize[0] << 8 | (uint16_t)eraseSize[1]; + } + /** \return eraseTimeout seconds. */ + uint8_t eraseTimeout() const { return eraseTimeoutOffset >> 2; } + /** \return eraseOffset seconds. */ + uint8_t eraseOffset() const { return eraseTimeoutOffset & 3; } + /** \return true if full user logical erase is supported else false. */ + bool fule() const { return discardFule & 1; } + /** \return true for secure mode else false. */ + bool secureMode() const { return busWidthSecureMode & 0X20; } + /** \return speed class or -1 for error. */ + int speedClass() const { + return speed < 4 ? 2 * speed : speed == 4 ? 10 : -1; + } + /** \return UHS Speed Grade. */ + int uhsClass() const { return uhsClassAuSize >> 4; } + /** \return Video Speed */ + int videoClass() { return videoSpeedClass; } +}; #endif // SdCardInfo_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInterface.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInterface.h index 5bb9b507..586fbdd3 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInterface.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdCardInterface.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,22 +22,28 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Abstract interface for an SD card. + */ #ifndef SdCardInterface_h #define SdCardInterface_h -#include "../common/BlockDeviceInterface.h" +#include "../common/FsBlockDeviceInterface.h" #include "SdCardInfo.h" - - -namespace sdfat { - - /** * \class SdCardInterface * \brief Abstract interface for an SD card. */ -class SdCardInterface : public BlockDeviceInterface { +class SdCardInterface : public FsBlockDeviceInterface { public: - /** Erase a range of sectors. + /** CMD6 Switch mode: Check Function Set Function. + * \param[in] arg CMD6 argument. + * \param[out] status return status data. + * + * \return true for success or false for failure. + */ + virtual bool cardCMD6(uint32_t arg, uint8_t* status) = 0; + /** Erase a range of sectors. * * \param[in] firstSector The address of the first sector in the range. * \param[in] lastSector The address of the last sector in the range. @@ -49,8 +55,20 @@ class SdCardInterface : public BlockDeviceInterface { virtual uint8_t errorCode() const = 0; /** \return error data. */ virtual uint32_t errorData() const = 0; - /** \return true if card is busy. */ - virtual bool isBusy() = 0; + /** \return false by default */ + virtual bool hasDedicatedSpi() { return false; } + /** \return false by default */ + bool virtual isDedicatedSpi() { return false; } + /** \return false by default */ + bool virtual isSpi() { return false; } + /** Set SPI sharing state + * \param[in] value desired state. + * \return false by default. + */ + virtual bool setDedicatedSpi(bool value) { + (void)value; + return false; + } /** * Read a card's CID register. * @@ -59,7 +77,7 @@ class SdCardInterface : public BlockDeviceInterface { * \return true for success or false for failure. */ virtual bool readCID(cid_t* cid) = 0; - /** + /** * Read a card's CSD register. * * \param[out] csd pointer to area for returned data. @@ -73,15 +91,19 @@ class SdCardInterface : public BlockDeviceInterface { * \return true for success or false for failure. */ virtual bool readOCR(uint32_t* ocr) = 0; - /** - * Determine the size of an SD flash memory card. + /** Read SCR register. * - * \return The number of 512 byte data sectors in the card - * or zero if an error occurs. + * \param[out] scr Value of SCR register. + * \return true for success or false for failure. */ - virtual uint32_t sectorCount() = 0; + virtual bool readSCR(scr_t* scr) = 0; + /** Return the 64 byte SD Status register. + * \param[out] sds location for 64 status bytes. + * \return true for success or false for failure. + */ + virtual bool readSDS(sds_t* sds) = 0; /** \return card status. */ - virtual uint32_t status() {return 0XFFFFFFFF;} + virtual uint32_t status() { return 0XFFFFFFFF; } /** Return the card type: SD V1, SD V2 or SDHC/SDXC * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC. */ @@ -104,8 +126,4 @@ class SdCardInterface : public BlockDeviceInterface { */ virtual bool writeStop() = 0; }; - - -}; // namespace sdfat - #endif // SdCardInterface_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.cpp index 4052cd3d..e924336c 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,118 +23,18 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiCard.h" - - -namespace sdfat { - - - //============================================================================== -// Debug aids -#define DBG_PROFILE_STATS 0 -#if DBG_PROFILE_STATS +class Timeout { + public: + Timeout() {} + explicit Timeout(uint16_t ms) { set(ms); } + uint16_t millis16() { return millis(); } + void set(uint16_t ms) { m_endTime = ms + millis16(); } + bool timedOut() { return (int16_t)(m_endTime - millis16()) < 0; } -#define DBG_TAG_LIST\ - DBG_TAG(DBG_CMD0_TIME, "CMD0 time")\ - DBG_TAG(DBG_ACMD41_TIME, "ACMD41 time")\ - DBG_TAG(DBG_CMD_BUSY, "cmd busy")\ - DBG_TAG(DBG_ERASE_BUSY, "erase busy")\ - DBG_TAG(DBG_WAIT_READ, "wait read")\ - DBG_TAG(DBG_WRITE_FLASH, "write flash")\ - DBG_TAG(DBG_WRITE_BUSY, "write busy")\ - DBG_TAG(DBG_WRITE_STOP, "write stop")\ - DBG_TAG(DBG_ACMD41_COUNT, "ACMD41 count")\ - DBG_TAG(DBG_CMD0_COUNT, "CMD0 count") - -#define DBG_TIME_DIM DBG_ACMD41_COUNT - -enum DbgTag { - #define DBG_TAG(tag, str) tag, - DBG_TAG_LIST - DBG_COUNT_DIM - #undef DBG_TAG + private: + uint16_t m_endTime; }; - -static uint32_t dbgCount[DBG_COUNT_DIM]; -static uint32_t dbgBgnTime[DBG_TIME_DIM]; -static uint32_t dbgMaxTime[DBG_TIME_DIM]; -static uint32_t dbgMinTime[DBG_TIME_DIM]; -static uint32_t dbgTotalTime[DBG_TIME_DIM]; -//------------------------------------------------------------------------------ -static void dbgBeginTime(DbgTag tag) { - dbgBgnTime[tag] = micros(); -} -//------------------------------------------------------------------------------ -static void dbgClearStats() { - for (int i = 0; i < DBG_COUNT_DIM; i++) { - dbgCount[i] = 0; - if (i < DBG_TIME_DIM) { - dbgMaxTime[i] = 0; - dbgMinTime[i] = 9999999; - dbgTotalTime[i] = 0; - } - } -} -//------------------------------------------------------------------------------ -static void dbgEndTime(DbgTag tag) { - uint32_t m = micros() - dbgBgnTime[tag]; - dbgTotalTime[tag] += m; - if (m > dbgMaxTime[tag]) { - dbgMaxTime[tag] = m; - } - if (m < dbgMinTime[tag]) { - dbgMinTime[tag] = m; - } - dbgCount[tag]++; -} -//------------------------------------------------------------------------------ -static void dbgEventCount(DbgTag tag) { - dbgCount[tag]++; -} -//------------------------------------------------------------------------------ -static void dbgPrintTagText(uint8_t tag) { - #define DBG_TAG(e, m) case e: Serial.print(F(m)); break; - switch (tag) { - DBG_TAG_LIST - } - #undef DBG_TAG -} -//------------------------------------------------------------------------------ -static void dbgPrintStats() { - Serial.println(); - Serial.println(F("=======================")); - Serial.println(F("item,event,min,max,avg")); - Serial.println(F("tag,count,usec,usec,usec")); - for (int i = 0; i < DBG_COUNT_DIM; i++) { - if (dbgCount[i]) { - dbgPrintTagText(i); - Serial.print(','); - Serial.print(dbgCount[i]); - if (i < DBG_TIME_DIM) { - Serial.print(','); - Serial.print(dbgMinTime[i]); - Serial.print(','); - Serial.print(dbgMaxTime[i]); - Serial.print(','); - Serial.print(dbgTotalTime[i]/dbgCount[i]); - } - Serial.println(); - } - } - Serial.println(F("=======================")); - Serial.println(); -} -#undef DBG_TAG_LIST -#define DBG_BEGIN_TIME(tag) dbgBeginTime(tag) -#define DBG_END_TIME(tag) dbgEndTime(tag) -#define DBG_EVENT_COUNT(tag) dbgEventCount(tag) -#else // DBG_PROFILE_STATS -#define DBG_BEGIN_TIME(tag) -#define DBG_END_TIME(tag) -#define DBG_EVENT_COUNT(tag) -static void dbgClearStats() {} -static void dbgPrintStats() {} -#endif // DBG_PROFILE_STATS //============================================================================== #if USE_SD_CRC // CRC functions @@ -174,48 +74,44 @@ static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { // uses the x^16,x^12,x^5,x^1 polynomial. #ifdef __AVR__ static const uint16_t crctab[] PROGMEM = { -#else // __AVR__ +#else // __AVR__ static const uint16_t crctab[] = { #endif // __AVR__ - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, - 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, - 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, - 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, - 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, - 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, - 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, - 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, - 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, - 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, - 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, - 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, - 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, - 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, - 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, - 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, - 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, - 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, - 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, - 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, - 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, - 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, - 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 -}; + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, + 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, + 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, + 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, + 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, + 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, + 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, + 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, + 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, + 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, + 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, + 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, + 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, + 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, + 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, + 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, + 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, + 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, + 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, + 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, + 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, + 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, + 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, + 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, + 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, + 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0}; static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { uint16_t crc = 0; for (size_t i = 0; i < n; i++) { #ifdef __AVR__ crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8); -#else // __AVR__ +#else // __AVR__ crc = crctab[(crc >> 8 ^ data[i]) & 0XFF] ^ (crc << 8); #endif // __AVR__ } @@ -224,12 +120,15 @@ static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { #endif // CRC_CCITT #endif // USE_SD_CRC //============================================================================== -// SdSpiCard member functions +// SharedSpiCard member functions //------------------------------------------------------------------------------ -bool SdSpiCard::begin(SdSpiConfig spiConfig) { - SdMillis_t t0 = SysCall::curTimeMS(); +bool SharedSpiCard::begin(SdSpiConfig spiConfig) { + uint8_t cardType; + uint32_t arg; + Timeout timeout; + // Restore state to creator. + initSharedSpiCard(); m_errorCode = SD_CARD_ERROR_NONE; - m_type = 0; m_csPin = spiConfig.csPin; #if SPI_DRIVER_SELECT >= 2 m_spiDriverPtr = spiConfig.spiPort; @@ -240,88 +139,71 @@ bool SdSpiCard::begin(SdSpiConfig spiConfig) { #endif // SPI_DRIVER_SELECT sdCsInit(m_csPin); spiUnselect(); - spiSetSckSpeed(1000UL*SD_MAX_INIT_RATE_KHZ); + spiSetSckSpeed(1000UL * SD_MAX_INIT_RATE_KHZ); spiBegin(spiConfig); - uint32_t arg; -#if ENABLE_DEDICATED_SPI - m_sharedSpi = !(spiConfig.options & DEDICATED_SPI); - m_spiActive = false; - m_curState = IDLE_STATE; -#else // ENABLE_DEDICATED_SPI - if (spiConfig.options & DEDICATED_SPI) { - error(SD_CARD_ERROR_INVALID_CARD_CONFIG); - goto fail; - } -#endif // ENABLE_DEDICATED_SPI + m_beginCalled = true; spiStart(); // must supply min of 74 clock cycles with CS high. spiUnselect(); for (uint8_t i = 0; i < 10; i++) { - spiSend(0XFF); + spiReceive(); } spiSelect(); - DBG_BEGIN_TIME(DBG_CMD0_TIME); - // command to go idle in SPI mode - for (uint8_t i = 1;; i++) { - DBG_EVENT_COUNT(DBG_CMD0_COUNT); + timeout.set(SD_INIT_TIMEOUT); + while (true) { + // command to go idle in SPI mode if (cardCommand(CMD0, 0) == R1_IDLE_STATE) { break; } - if (i == SD_CMD0_RETRY) { + if (timeout.timedOut()) { error(SD_CARD_ERROR_CMD0); goto fail; } - // stop multi-block write - spiSend(STOP_TRAN_TOKEN); - // finish block transfer - for (int i = 0; i < 520; i++) { - spiReceive(); - } } - DBG_END_TIME(DBG_CMD0_TIME); #if USE_SD_CRC if (cardCommand(CMD59, 1) != R1_IDLE_STATE) { error(SD_CARD_ERROR_CMD59); goto fail; } #endif // USE_SD_CRC - // check SD version - if (!(cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) { - type(SD_CARD_TYPE_SD2); + while (true) { + if (cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND) { + cardType = SD_CARD_TYPE_SD1; + break; + } + // Skip first three bytes. for (uint8_t i = 0; i < 4; i++) { m_status = spiReceive(); } - if (m_status != 0XAA) { + if (m_status == 0XAA) { + cardType = SD_CARD_TYPE_SD2; + break; + } + if (timeout.timedOut()) { error(SD_CARD_ERROR_CMD8); goto fail; } - } else { - type(SD_CARD_TYPE_SD1); } // initialize card and send host supports SDHC if SD2 - arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; - DBG_BEGIN_TIME(DBG_ACMD41_TIME); + arg = cardType == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; while (cardAcmd(ACMD41, arg) != R1_READY_STATE) { - DBG_EVENT_COUNT(DBG_ACMD41_COUNT); // check for timeout - if (isTimedOut(t0, SD_INIT_TIMEOUT)) { + if (timeout.timedOut()) { error(SD_CARD_ERROR_ACMD41); goto fail; } } - DBG_END_TIME(DBG_ACMD41_TIME); - // if SD2 read OCR register to check for SDHC card - if (type() == SD_CARD_TYPE_SD2) { + if (cardType == SD_CARD_TYPE_SD2) { if (cardCommand(CMD58, 0)) { error(SD_CARD_ERROR_CMD58); goto fail; } if ((spiReceive() & 0XC0) == 0XC0) { - type(SD_CARD_TYPE_SDHC); + cardType = SD_CARD_TYPE_SDHC; } // Discard rest of ocr - contains allowed voltage range. for (uint8_t i = 0; i < 3; i++) { @@ -330,26 +212,42 @@ bool SdSpiCard::begin(SdSpiConfig spiConfig) { } spiStop(); spiSetSckSpeed(spiConfig.maxSck); + m_type = cardType; return true; - fail: +fail: + spiStop(); + return false; +} +//------------------------------------------------------------------------------ +bool SharedSpiCard::cardCMD6(uint32_t arg, uint8_t* status) { + if (cardCommand(CMD6, arg)) { + error(SD_CARD_ERROR_CMD6); + goto fail; + } + if (!readData(status, 64)) { + goto fail; + } + spiStop(); + return true; + +fail: spiStop(); return false; } //------------------------------------------------------------------------------ // send command and return error code. Return zero for OK -uint8_t SdSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { +uint8_t SharedSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { + if (!syncDevice()) { + return 0XFF; + } // select card if (!m_spiActive) { spiStart(); } - // wait if busy unless CMD0 - if (cmd != CMD0) { - DBG_BEGIN_TIME(DBG_CMD_BUSY); - waitNotBusy(SD_CMD_TIMEOUT); - DBG_END_TIME(DBG_CMD_BUSY); + if (cmd != CMD0 && cmd != CMD12 && !waitReady(SD_CMD_TIMEOUT)) { + return 0XFF; } - #if USE_SD_CRC // form message uint8_t buf[6]; @@ -364,7 +262,7 @@ uint8_t SdSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { // send message spiSend(buf, 6); -#else // USE_SD_CRC +#else // USE_SD_CRC // send command spiSend(cmd | 0x40); @@ -382,107 +280,92 @@ uint8_t SdSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { spiReceive(); // there are 1-8 fill bytes before response. fill bytes should be 0XFF. - for (uint8_t i = 0; ((m_status = spiReceive()) & 0X80) && i < 10; i++) { - } + uint8_t n = 0; + do { + m_status = spiReceive(); + } while (m_status & 0X80 && ++n < 10); return m_status; } //------------------------------------------------------------------------------ -void SdSpiCard::dbgClearStats() {sdfat::dbgClearStats();} +void SharedSpiCard::end() { + if (m_beginCalled) { + syncDevice(); + spiEnd(); + m_beginCalled = false; + } +} //------------------------------------------------------------------------------ -void SdSpiCard::dbgPrintStats() {sdfat::dbgPrintStats();} -//------------------------------------------------------------------------------ -bool SdSpiCard::erase(uint32_t firstSector, uint32_t lastSector) { +bool SharedSpiCard::erase(uint32_t firstSector, uint32_t lastSector) { csd_t csd; if (!readCSD(&csd)) { goto fail; } // check for single sector erase - if (!csd.v1.erase_blk_en) { + if (!csd.eraseSingleBlock()) { // erase size mask - uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; + uint8_t m = csd.eraseSize() - 1; if ((firstSector & m) != 0 || ((lastSector + 1) & m) != 0) { // error card can't erase specified area error(SD_CARD_ERROR_ERASE_SINGLE_SECTOR); goto fail; } } - if (m_type != SD_CARD_TYPE_SDHC) { + if (type() != SD_CARD_TYPE_SDHC) { firstSector <<= 9; lastSector <<= 9; } - if (cardCommand(CMD32, firstSector) - || cardCommand(CMD33, lastSector) - || cardCommand(CMD38, 0)) { + if (cardCommand(CMD32, firstSector) || cardCommand(CMD33, lastSector) || + cardCommand(CMD38, 0)) { error(SD_CARD_ERROR_ERASE); goto fail; } - DBG_BEGIN_TIME(DBG_ERASE_BUSY); - if (!waitNotBusy(SD_ERASE_TIMEOUT)) { + if (!waitReady(SD_ERASE_TIMEOUT)) { error(SD_CARD_ERROR_ERASE_TIMEOUT); goto fail; } - DBG_END_TIME(DBG_ERASE_BUSY); spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::eraseSingleSectorEnable() { +bool SharedSpiCard::eraseSingleSectorEnable() { csd_t csd; - return readCSD(&csd) ? csd.v1.erase_blk_en : false; + return readCSD(&csd) ? csd.eraseSingleBlock() : false; } //------------------------------------------------------------------------------ -bool SdSpiCard::isBusy() { - bool rtn = true; +bool SharedSpiCard::isBusy() { + if (m_state == READ_STATE) { + return false; + } bool spiActive = m_spiActive; if (!spiActive) { spiStart(); } - for (uint8_t i = 0; i < 8; i++) { - if (0XFF == spiReceive()) { - rtn = false; - break; - } - } + bool rtn = 0XFF != spiReceive(); if (!spiActive) { spiStop(); } return rtn; } //------------------------------------------------------------------------------ -bool SdSpiCard::isTimedOut(SdMillis_t startMS, SdMillis_t timeoutMS) { -#if WDT_YIELD_TIME_MILLIS - static SdMillis_t last; - if ((SysCall::curTimeMS() - last) > WDT_YIELD_TIME_MILLIS) { - SysCall::yield(); - last = SysCall::curTimeMS(); - } -#endif // WDT_YIELD_TIME_MILLIS - return (SysCall::curTimeMS() - startMS) > timeoutMS; -} +bool SharedSpiCard::readData(uint8_t* dst) { return readData(dst, 512); } //------------------------------------------------------------------------------ -bool SdSpiCard::readData(uint8_t* dst) { - return readData(dst, 512); -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readData(uint8_t* dst, size_t count) { +bool SharedSpiCard::readData(uint8_t* dst, size_t count) { #if USE_SD_CRC uint16_t crc; #endif // USE_SD_CRC - DBG_BEGIN_TIME(DBG_WAIT_READ); // wait for start sector token - SdMillis_t t0 = SysCall::curTimeMS(); + Timeout timeout(SD_READ_TIMEOUT); while ((m_status = spiReceive()) == 0XFF) { - if (isTimedOut(t0, SD_READ_TIMEOUT)) { + if (timeout.timedOut()) { error(SD_CARD_ERROR_READ_TIMEOUT); goto fail; } } - DBG_END_TIME(DBG_WAIT_READ); if (m_status != DATA_START_SECTOR) { error(SD_CARD_ERROR_READ_TOKEN); goto fail; @@ -500,40 +383,42 @@ bool SdSpiCard::readData(uint8_t* dst, size_t count) { error(SD_CARD_ERROR_READ_CRC); goto fail; } -#else // USE_SD_CRC +#else // USE_SD_CRC // discard crc spiReceive(); spiReceive(); #endif // USE_SD_CRC return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::readOCR(uint32_t* ocr) { +bool SharedSpiCard::readOCR(uint32_t* ocr) { uint8_t* p = reinterpret_cast(ocr); - syncDevice(); if (cardCommand(CMD58, 0)) { error(SD_CARD_ERROR_CMD58); goto fail; } for (uint8_t i = 0; i < 4; i++) { +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ p[3 - i] = spiReceive(); +#else // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + p[i] = spiReceive(); +#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ } spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ /** read CID or CSR register */ -bool SdSpiCard::readRegister(uint8_t cmd, void* buf) { +bool SharedSpiCard::readRegister(uint8_t cmd, void* buf) { uint8_t* dst = reinterpret_cast(buf); - syncDevice(); if (cardCommand(cmd, 0)) { error(SD_CARD_ERROR_READ_REG); goto fail; @@ -544,12 +429,29 @@ bool SdSpiCard::readRegister(uint8_t cmd, void* buf) { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::readSingle(uint32_t sector, uint8_t* dst) { +bool SharedSpiCard::readSCR(scr_t* scr) { + uint8_t* dst = reinterpret_cast(scr); + if (cardAcmd(ACMD51, 0)) { + error(SD_CARD_ERROR_ACMD51); + goto fail; + } + if (!readData(dst, sizeof(scr_t))) { + goto fail; + } + spiStop(); + return true; + +fail: + spiStop(); + return false; +} +//------------------------------------------------------------------------------ +bool SharedSpiCard::readSector(uint32_t sector, uint8_t* dst) { // use address if not SDHC card if (type() != SD_CARD_TYPE_SDHC) { sector <<= 9; @@ -564,12 +466,26 @@ bool SdSpiCard::readSingle(uint32_t sector, uint8_t* dst) { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::readStart(uint32_t sector) { +bool SharedSpiCard::readSectors(uint32_t sector, uint8_t* dst, size_t ns) { + if (!readStart(sector)) { + goto fail; + } + for (size_t i = 0; i < ns; i++, dst += 512) { + if (!readData(dst, 512)) { + goto fail; + } + } + return readStop(); +fail: + return false; +} +//------------------------------------------------------------------------------ +bool SharedSpiCard::readStart(uint32_t sector) { if (type() != SD_CARD_TYPE_SDHC) { sector <<= 9; } @@ -577,64 +493,34 @@ bool SdSpiCard::readStart(uint32_t sector) { error(SD_CARD_ERROR_CMD18); goto fail; } -// spiStop(); + m_state = READ_STATE; return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::readStatus(uint8_t* status) { +bool SharedSpiCard::readSDS(sds_t* sds) { + uint8_t* dst = reinterpret_cast(sds); // retrun is R2 so read extra status byte. if (cardAcmd(ACMD13, 0) || spiReceive()) { error(SD_CARD_ERROR_ACMD13); goto fail; } - if (!readData(status, 64)) { + if (!readData(dst, sizeof(sds_t))) { goto fail; } spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::readSectors(uint32_t sector, uint8_t* dst, size_t ns) { -#if ENABLE_DEDICATED_SPI - if (m_curState != READ_STATE || sector != m_curSector) { - if (!syncDevice()) { - return false; - } - if (!SdSpiCard::readStart(sector)) { - return false; - } - m_curSector = sector; - m_curState = READ_STATE; - } - for (size_t i = 0; i < ns; i++, dst += 512) { - if (!readData(dst, 512)) { - return false; - } - } - m_curSector += ns; - return m_sharedSpi ? syncDevice() : true; -#else // ENABLE_DEDICATED_SPI - if (!readStart(sector)) { - return false; - } - for (size_t i = 0; i < ns; i++, dst += 512) { - if (!readData(dst, 512)) { - return false; - } - } - return readStop(); -#endif // ENABLE_DEDICATED_SPI -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readStop() { +bool SharedSpiCard::readStop() { + m_state = IDLE_STATE; if (cardCommand(CMD12, 0)) { error(SD_CARD_ERROR_CMD12); goto fail; @@ -642,94 +528,79 @@ bool SdSpiCard::readStop() { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -uint32_t SdSpiCard::sectorCount() { +uint32_t SharedSpiCard::sectorCount() { csd_t csd; - return readCSD(&csd) ? sdCardCapacity(&csd) : 0; + return readCSD(&csd) ? csd.capacity() : 0; } //------------------------------------------------------------------------------ -void SdSpiCard::spiStart() { +void SharedSpiCard::spiStart() { + SPI_ASSERT_NOT_ACTIVE; if (!m_spiActive) { spiActivate(); - spiSelect(); m_spiActive = true; + spiSelect(); + // Dummy byte to drive MISO busy status. + spiSend(0XFF); } } //------------------------------------------------------------------------------ -void SdSpiCard::spiStop() { +void SharedSpiCard::spiStop() { + SPI_ASSERT_ACTIVE; if (m_spiActive) { spiUnselect(); + // Insure MISO goes to low Z. spiSend(0XFF); spiDeactivate(); m_spiActive = false; } } //------------------------------------------------------------------------------ -bool SdSpiCard::syncDevice() { -#if ENABLE_DEDICATED_SPI - if (m_curState == READ_STATE) { - if (!SdSpiCard::readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - if (!SdSpiCard::writeStop()) { - return false; - } +bool SharedSpiCard::syncDevice() { + if (m_state == WRITE_STATE) { + return writeStop(); + } + if (m_state == READ_STATE) { + return readStop(); } - m_curState = IDLE_STATE; -#endif // ENABLE_DEDICATED_SPI return true; } //------------------------------------------------------------------------------ -// wait for card to go not busy -bool SdSpiCard::waitNotBusy(SdMillis_t timeoutMS) { - SdMillis_t t0 = SysCall::curTimeMS(); -#if WDT_YIELD_TIME_MILLIS - // Call isTimedOut first to insure yield is called. - while (!isTimedOut(t0, timeoutMS)) { - if (spiReceive() == 0XFF) { - return true; - } - } - return false; -#else // WDT_YIELD_TIME_MILLIS - // Check not busy first since yield is not called in isTimedOut. +bool SharedSpiCard::waitReady(uint16_t ms) { + Timeout timeout(ms); while (spiReceive() != 0XFF) { - if (isTimedOut(t0, timeoutMS)) { + if (timeout.timedOut()) { return false; } } return true; -#endif // WDT_YIELD_TIME_MILLIS } //------------------------------------------------------------------------------ -bool SdSpiCard::writeData(const uint8_t* src) { +bool SharedSpiCard::writeData(const uint8_t* src) { // wait for previous write to finish - DBG_BEGIN_TIME(DBG_WRITE_BUSY); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { + if (!waitReady(SD_WRITE_TIMEOUT)) { error(SD_CARD_ERROR_WRITE_TIMEOUT); goto fail; } - DBG_END_TIME(DBG_WRITE_BUSY); if (!writeData(WRITE_MULTIPLE_TOKEN, src)) { goto fail; } return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ // send one sector of data for write sector or write multiple sectors -bool SdSpiCard::writeData(uint8_t token, const uint8_t* src) { +bool SharedSpiCard::writeData(uint8_t token, const uint8_t* src) { #if USE_SD_CRC uint16_t crc = CRC_CCITT(src, 512); -#else // USE_SD_CRC +#else // USE_SD_CRC uint16_t crc = 0XFFFF; #endif // USE_SD_CRC spiSend(token); @@ -744,12 +615,12 @@ bool SdSpiCard::writeData(uint8_t token, const uint8_t* src) { } return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::writeSingle(uint32_t sector, const uint8_t* src) { +bool SharedSpiCard::writeSector(uint32_t sector, const uint8_t* src) { // use address if not SDHC card if (type() != SD_CARD_TYPE_SDHC) { sector <<= 9; @@ -764,12 +635,10 @@ bool SdSpiCard::writeSingle(uint32_t sector, const uint8_t* src) { #if CHECK_FLASH_PROGRAMMING // wait for flash programming to complete - DBG_BEGIN_TIME(DBG_WRITE_FLASH); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { + if (!waitReady(SD_WRITE_TIMEOUT)) { error(SD_CARD_ERROR_WRITE_PROGRAMMING); goto fail; } - DBG_END_TIME(DBG_WRITE_FLASH); // response is r2 so get and check two bytes for nonzero if (cardCommand(CMD13, 0) || spiReceive()) { error(SD_CARD_ERROR_CMD13); @@ -780,31 +649,13 @@ bool SdSpiCard::writeSingle(uint32_t sector, const uint8_t* src) { spiStop(); return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::writeSectors(uint32_t sector, const uint8_t* src, size_t ns) { - #if ENABLE_DEDICATED_SPI - if (m_curState != WRITE_STATE || m_curSector != sector) { - if (!syncDevice()) { - return false; - } - if (!writeStart(sector)) { - return false; - } - m_curSector = sector; - m_curState = WRITE_STATE; - } - for (size_t i = 0; i < ns; i++, src += 512) { - if (!writeData(src)) { - return false; - } - } - m_curSector += ns; - return m_sharedSpi ? syncDevice() : true; -#else // ENABLE_DEDICATED_SPI +bool SharedSpiCard::writeSectors(uint32_t sector, const uint8_t* src, + size_t ns) { if (!writeStart(sector)) { goto fail; } @@ -815,13 +666,12 @@ bool SdSpiCard::writeSectors(uint32_t sector, const uint8_t* src, size_t ns) { } return writeStop(); - fail: +fail: spiStop(); return false; -#endif // ENABLE_DEDICATED_SPI } //------------------------------------------------------------------------------ -bool SdSpiCard::writeStart(uint32_t sector) { +bool SharedSpiCard::writeStart(uint32_t sector) { // use address if not SDHC card if (type() != SD_CARD_TYPE_SDHC) { sector <<= 9; @@ -830,49 +680,91 @@ bool SdSpiCard::writeStart(uint32_t sector) { error(SD_CARD_ERROR_CMD25); goto fail; } + m_state = WRITE_STATE; return true; - fail: +fail: spiStop(); return false; } //------------------------------------------------------------------------------ -bool SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount) { - // send pre-erase count - if (cardAcmd(ACMD23, eraseCount)) { - error(SD_CARD_ERROR_ACMD23); +bool SharedSpiCard::writeStop() { + if (!waitReady(SD_WRITE_TIMEOUT)) { goto fail; } - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - return true; - - fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStop() { - DBG_BEGIN_TIME(DBG_WRITE_STOP); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - goto fail; - } - DBG_END_TIME(DBG_WRITE_STOP); spiSend(STOP_TRAN_TOKEN); spiStop(); + m_state = IDLE_STATE; return true; - fail: +fail: error(SD_CARD_ERROR_STOP_TRAN); spiStop(); return false; } +//============================================================================== +bool DedicatedSpiCard::begin(SdSpiConfig spiConfig) { + if (!SharedSpiCard::begin(spiConfig)) { + return false; + } + m_dedicatedSpi = spiOptionDedicated(spiConfig.options); + return true; +} +//------------------------------------------------------------------------------ +bool DedicatedSpiCard::readSector(uint32_t sector, uint8_t* dst) { + return readSectors(sector, dst, 1); +} +//------------------------------------------------------------------------------ +bool DedicatedSpiCard::readSectors(uint32_t sector, uint8_t* dst, size_t ns) { + if (sdState() != READ_STATE || sector != m_curSector) { + if (!readStart(sector)) { + goto fail; + } + m_curSector = sector; + } + for (size_t i = 0; i < ns; i++, dst += 512) { + if (!readData(dst)) { + goto fail; + } + } + m_curSector += ns; + return m_dedicatedSpi ? true : readStop(); +fail: + return false; +} +//------------------------------------------------------------------------------ +bool DedicatedSpiCard::setDedicatedSpi(bool value) { + if (!syncDevice()) { + return false; + } + m_dedicatedSpi = value; + return true; +} +//------------------------------------------------------------------------------ +bool DedicatedSpiCard::writeSector(uint32_t sector, const uint8_t* src) { + if (m_dedicatedSpi) { + return writeSectors(sector, src, 1); + } + return SharedSpiCard::writeSector(sector, src); +} +//------------------------------------------------------------------------------ +bool DedicatedSpiCard::writeSectors(uint32_t sector, const uint8_t* src, + size_t ns) { + if (sdState() != WRITE_STATE || m_curSector != sector) { + if (!writeStart(sector)) { + goto fail; + } + m_curSector = sector; + } + for (size_t i = 0; i < ns; i++, src += 512) { + if (!writeData(src)) { + goto fail; + } + } + m_curSector += ns; + return m_dedicatedSpi ? true : writeStop(); -}; // namespace sdfat +fail: + return false; +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.h index befd2b65..4b1477c3 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdSpiCard.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,61 +24,79 @@ */ /** * \file - * \brief SdSpiCard class for V2 SD/SDHC cards + * \brief Classes for SPI access to SD/SDHC cards. */ #ifndef SdSpiCard_h #define SdSpiCard_h #include + +#include "../SpiDriver/SdSpiDriver.h" #include "../common/SysCall.h" #include "SdCardInfo.h" #include "SdCardInterface.h" -#include "../SpiDriver/SdSpiDriver.h" - -#ifdef HOST_MOCK -extern uint64_t _sdCardSizeB; -extern uint8_t *_sdCard; -#endif - - -namespace sdfat { - - +/** Verify correct SPI active if non-zero. */ +#define CHECK_SPI_ACTIVE 0 +#if CHECK_SPI_ACTIVE +/** Check SPI active. */ +#define SPI_ASSERT_ACTIVE \ + { \ + if (!m_spiActive) { \ + Serial.print(F("SPI_ASSERT_ACTIVE")); \ + Serial.println(__LINE__); \ + while (true) \ + ; \ + } \ + } +#define SPI_ASSERT_NOT_ACTIVE \ + { \ + if (m_spiActive) { \ + Serial.print(F("SPI_ASSERT_NOT_ACTIVE")); \ + Serial.println(__LINE__); \ + while (true) \ + ; \ + } \ + } +#else // CHECK_SPI_ACTIVE +/** Check for SPI active. */ +#define SPI_ASSERT_ACTIVE +/** Check for SPI not active. */ +#define SPI_ASSERT_NOT_ACTIVE +#endif // CHECK_SPI_ACTIVE //============================================================================== /** - * \class SdSpiCard - * \brief Raw access to SD and SDHC flash memory cards via SPI protocol. + * \class SharedSpiCard + * \brief Raw access to SD and SDHC flash memory cards via shared SPI port. */ #if HAS_SDIO_CLASS -class SdSpiCard : public SdCardInterface { +class SharedSpiCard : public SdCardInterface { #elif USE_BLOCK_DEVICE_INTERFACE -class SdSpiCard : public BlockDeviceInterface { -#else // HAS_SDIO_CLASS -class SdSpiCard { +class SharedSpiCard : public FsBlockDeviceInterface { +#else // HAS_SDIO_CLASS +class SharedSpiCard { #endif // HAS_SDIO_CLASS -#ifndef HOST_MOCK public: - /** Construct an instance of SdSpiCard. */ - SdSpiCard() : m_errorCode(SD_CARD_ERROR_INIT_NOT_CALLED), m_type(0) {} + /** SD is in idle state */ + static const uint8_t IDLE_STATE = 0; + /** SD is in multi-sector read state. */ + static const uint8_t READ_STATE = 1; + /** SD is in multi-sector write state. */ + static const uint8_t WRITE_STATE = 2; + /** Construct an instance of SharedSpiCard. */ + SharedSpiCard() { initSharedSpiCard(); } /** Initialize the SD card. * \param[in] spiConfig SPI card configuration. * \return true for success or false for failure. */ bool begin(SdSpiConfig spiConfig); - /** Clear debug stats. */ - void dbgClearStats(); - /** Print debug stats. */ - void dbgPrintStats(); - /** - * Determine the size of an SD flash memory card. + /** CMD6 Switch mode: Check Function Set Function. + * \param[in] arg CMD6 argument. + * \param[out] status return status data. * - * \return The number of 512 byte data sectors in the card - * or zero if an error occurs. + * \return true for success or false for failure. */ - uint32_t sectorCount(); -#ifndef DOXYGEN_SHOULD_SKIP_THIS - // Use sectorCount(). cardSize() will be removed in the future. - uint32_t cardSize() __attribute__ ((deprecated)) {return sectorCount();} -#endif // DOXYGEN_SHOULD_SKIP_THIS + bool cardCMD6(uint32_t arg, uint8_t* status); + /** End use of card */ + void end(); /** Erase a range of sectors. * * \param[in] firstSector The address of the first sector in the range. @@ -103,56 +121,28 @@ class SdSpiCard { * \param[in] code value for error code. */ void error(uint8_t code) { + // (void)code; m_errorCode = code; } /** - * \return code for the last error. See SdCardInfo.h for a list of error codes. + * \return code for the last error. See SdCardInfo.h for a list of error + * codes. */ - uint8_t errorCode() const { - return m_errorCode; - } + uint8_t errorCode() const { return m_errorCode; } /** \return error data for last error. */ - uint32_t errorData() const { - return m_status; - } + uint32_t errorData() const { return m_status; } + /** \return false for shared class. */ + bool hasDedicatedSpi() { return false; } /** * Check for busy. MISO low indicates the card is busy. * * \return true if busy else false. */ bool isBusy(); - - /** - * Read a 512 byte sector from an SD card. - * - * \param[in] sector Logical sector to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return true for success or false for failure. - */ - bool readSector(uint32_t sector, uint8_t* dst) { -#if ENABLE_DEDICATED_SPI - return readSectors(sector, dst, 1); -#else // ENABLE_DEDICATED_SPI - return readSingle(sector, dst); -#endif // ENABLE_DEDICATED_SPI - } - /** - * Read a 512 byte sector from an SD card. - * - * \param[in] sector Logical sector to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return true for success or false for failure. - */ - bool readSingle(uint32_t sector, uint8_t* dst); - /** - * Read multiple 512 byte sectors from an SD card. - * - * \param[in] sector Logical sector to be read. - * \param[in] ns Number of sectors to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return true for success or false for failure. - */ - bool readSectors(uint32_t sector, uint8_t* dst, size_t ns); + /** \return false, can't be in dedicated state. */ + bool isDedicatedSpi() { return false; } + /** \return true if card is on SPI bus. */ + bool isSpi() { return true; } /** * Read a card's CID register. The CID contains card identification * information such as Manufacturer ID, Product name, Product serial @@ -162,9 +152,7 @@ class SdSpiCard { * * \return true for success or false for failure. */ - bool readCID(cid_t* cid) { - return readRegister(CMD10, cid); - } + bool readCID(cid_t* cid) { return readRegister(CMD10, cid); } /** * Read a card's CSD register. The CSD contains Card-Specific Data that * provides information regarding access to the card's contents. @@ -173,9 +161,7 @@ class SdSpiCard { * * \return true for success or false for failure. */ - bool readCSD(csd_t* csd) { - return readRegister(CMD9, csd); - } + bool readCSD(csd_t* csd) { return readRegister(CMD9, csd); } /** Read one data sector in a multiple sector read sequence * * \param[out] dst Pointer to the location for the data to be read. @@ -189,6 +175,30 @@ class SdSpiCard { * \return true for success or false for failure. */ bool readOCR(uint32_t* ocr); + /** Read SCR register. + * + * \param[out] scr Value of SCR register. + * \return true for success or false for failure. + */ + bool readSCR(scr_t* scr); + /** + * Read a 512 byte sector from an SD card. + * + * \param[in] sector Logical sector to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return true for success or false for failure. + */ + bool readSector(uint32_t sector, uint8_t* dst); + /** + * Read multiple 512 byte sectors from an SD card. + * + * \param[in] sector Logical sector to be read. + * \param[in] ns Number of sectors to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return true for success or false for failure. + */ + bool readSectors(uint32_t sector, uint8_t* dst, size_t ns); + /** Start a read multiple sector sequence. * * \param[in] sector Address of first sector in sequence. @@ -199,46 +209,56 @@ class SdSpiCard { * \return true for success or false for failure. */ bool readStart(uint32_t sector); - /** Return the 64 byte card status + /** Return the 64 byte SD Status register. * \param[out] status location for 64 status bytes. * \return true for success or false for failure. */ - bool readStatus(uint8_t* status); + bool readSDS(sds_t* status); /** End a read multiple sectors sequence. * * \return true for success or false for failure. */ bool readStop(); + /** \return SD multi-sector read/write state */ + uint8_t sdState() { return m_state; } + /** + * Determine the size of an SD flash memory card. + * + * \return The number of 512 byte data sectors in the card + * or zero if an error occurs. + */ + uint32_t sectorCount(); +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Use sectorCount(). cardSize() will be removed in the future. + uint32_t __attribute__((error("use sectorCount()"))) cardSize(); +#endif // DOXYGEN_SHOULD_SKIP_THIS + /** Set SPI sharing state + * \param[in] value desired state. + * \return false for shared card + */ + bool setDedicatedSpi(bool value) { + (void)value; + return false; + } + /** end a mult-sector transfer. + * + * \return true for success or false for failure. + */ + bool stopTransfer(); /** \return success if sync successful. Not for user apps. */ bool syncDevice(); /** Return the card type: SD V1, SD V2 or SDHC/SDXC * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC. */ - uint8_t type() const { - return m_type; - } + uint8_t type() const { return m_type; } /** - * Writes a 512 byte sector to an SD card. + * Write a 512 byte sector to an SD card. * * \param[in] sector Logical sector to be written. * \param[in] src Pointer to the location of the data to be written. * \return true for success or false for failure. */ - bool writeSector(uint32_t sector, const uint8_t* src) { -#if ENABLE_DEDICATED_SPI - return writeSectors(sector, src, 1); -#else // ENABLE_DEDICATED_SPI - return writeSingle(sector, src); -#endif // ENABLE_DEDICATED_SPI - } - /** - * Writes a 512 byte sector to an SD card. - * - * \param[in] sector Logical sector to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return true for success or false for failure. - */ - bool writeSingle(uint32_t sector, const uint8_t* src); + bool writeSector(uint32_t sector, const uint8_t* src); /** * Write multiple 512 byte sectors to an SD card. * @@ -264,26 +284,11 @@ class SdSpiCard { */ bool writeStart(uint32_t sector); - /** Start a write multiple sector sequence with pre-erase. - * - * \param[in] sector Address of first sector in sequence. - * \param[in] eraseCount The number of sectors to be pre-erased. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple sector writes. - * - * \return true for success or false for failure. - */ - bool writeStart(uint32_t sector, uint32_t eraseCount); /** End a write multiple sectors sequence. * * \return true for success or false for failure. */ bool writeStop(); - /** Set CS low and activate the card. */ - void spiStart(); - /** Set CS high and deactivate the card. */ - void spiStop(); private: // private functions @@ -292,150 +297,147 @@ class SdSpiCard { return cardCommand(cmd, arg); } uint8_t cardCommand(uint8_t cmd, uint32_t arg); - bool isTimedOut(SdMillis_t startMS, SdMillis_t timeoutMS); bool readData(uint8_t* dst, size_t count); bool readRegister(uint8_t cmd, void* buf); - void spiSelect() { - sdCsWrite(m_csPin, false); - } - void type(uint8_t value) { - m_type = value; - } - void spiUnselect() { - sdCsWrite(m_csPin, true); - } - bool waitNotBusy(SdMillis_t timeoutMS); + void spiSelect() { sdCsWrite(m_csPin, false); } + void spiStart(); + void spiStop(); + void spiUnselect() { sdCsWrite(m_csPin, true); } + bool waitReady(uint16_t ms); bool writeData(uint8_t token, const uint8_t* src); - #if SPI_DRIVER_SELECT < 2 - void spiActivate() { - m_spiDriver.activate(); - } - void spiBegin(SdSpiConfig spiConfig) { - m_spiDriver.begin(spiConfig); - } - void spiDeactivate() { - m_spiDriver.deactivate(); - } + void spiActivate() { m_spiDriver.activate(); } + void spiBegin(SdSpiConfig spiConfig) { m_spiDriver.begin(spiConfig); } + void spiDeactivate() { m_spiDriver.deactivate(); } + void spiEnd() { m_spiDriver.end(); } uint8_t spiReceive() { + SPI_ASSERT_ACTIVE; return m_spiDriver.receive(); } uint8_t spiReceive(uint8_t* buf, size_t n) { - return m_spiDriver.receive(buf, n); + SPI_ASSERT_ACTIVE; + return m_spiDriver.receive(buf, n); } void spiSend(uint8_t data) { + SPI_ASSERT_ACTIVE; m_spiDriver.send(data); } void spiSend(const uint8_t* buf, size_t n) { + SPI_ASSERT_ACTIVE; m_spiDriver.send(buf, n); } - void spiSetSckSpeed(uint32_t maxSck) { - m_spiDriver.setSckSpeed(maxSck); - } + void spiSetSckSpeed(uint32_t maxSck) { m_spiDriver.setSckSpeed(maxSck); } SdSpiDriver m_spiDriver; #else // SPI_DRIVER_SELECT < 2 - void spiActivate() { - m_spiDriverPtr->activate(); - } - void spiBegin(SdSpiConfig spiConfig) { - m_spiDriverPtr->begin(spiConfig); - } - void spiDeactivate() { - m_spiDriverPtr->deactivate(); - } + void spiActivate() { m_spiDriverPtr->activate(); } + void spiBegin(SdSpiConfig spiConfig) { m_spiDriverPtr->begin(spiConfig); } + void spiDeactivate() { m_spiDriverPtr->deactivate(); } + void spiEnd() { m_spiDriverPtr->end(); } uint8_t spiReceive() { + SPI_ASSERT_ACTIVE; return m_spiDriverPtr->receive(); } uint8_t spiReceive(uint8_t* buf, size_t n) { - return m_spiDriverPtr->receive(buf, n); + SPI_ASSERT_ACTIVE; + return m_spiDriverPtr->receive(buf, n); } void spiSend(uint8_t data) { + SPI_ASSERT_ACTIVE; m_spiDriverPtr->send(data); } void spiSend(const uint8_t* buf, size_t n) { + SPI_ASSERT_ACTIVE; m_spiDriverPtr->send(buf, n); } - void spiSetSckSpeed(uint32_t maxSck) { - m_spiDriverPtr->setSckSpeed(maxSck); - } + void spiSetSckSpeed(uint32_t maxSck) { m_spiDriverPtr->setSckSpeed(maxSck); } SdSpiDriver* m_spiDriverPtr; + #endif // SPI_DRIVER_SELECT < 2 -#if ENABLE_DEDICATED_SPI - static const uint8_t IDLE_STATE = 0; - static const uint8_t READ_STATE = 1; - static const uint8_t WRITE_STATE = 2; - uint32_t m_curSector; - uint8_t m_curState; - bool m_sharedSpi; -#endif // ENABLE_DEDICATED_SPI + void initSharedSpiCard() { + m_beginCalled = false; + m_csPin = 0; + m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; + m_spiActive = false; + m_state = IDLE_STATE; + m_status = 0; + m_type = 0; + } + bool m_beginCalled; SdCsPin_t m_csPin; uint8_t m_errorCode; - bool m_spiActive; + bool m_spiActive; + uint8_t m_state; uint8_t m_status; uint8_t m_type; -#else // HOST_MOCK - public: - SdSpiCard() : m_errorCode(SD_CARD_ERROR_INIT_NOT_CALLED), m_type(0) { - } - ~SdSpiCard() { } - bool begin(SdSpiConfig spiConfig) { - m_errorCode = 0; - m_status = 0; - (void)spiConfig; - return true; - } - uint32_t cardSize() { return _sdCardSizeB / 512LL; } - bool erase(uint32_t firstBlock, uint32_t lastBlock) { - memset(_sdCard + firstBlock * 512, 0, (lastBlock - firstBlock) * 512); - return true; - } - bool eraseSingleBlockEnable() { return true; } - void error(uint8_t code) { m_errorCode = code; } - int errorCode() const { return m_errorCode; } - int errorData() const { return m_status; } - bool isBusy() { return false; } - bool readSector(uint32_t sector, uint8_t* dst) { - return readSectors(sector, dst, 1); - } - bool readSectors(uint32_t sector, uint8_t* dst, size_t ns) { - if ((int)(sector + ns) > (int) (_sdCardSizeB / 512LL)) return false; - memcpy(dst, _sdCard + sector * 512, 512 * ns); - return true; - } - - bool readCID(cid_t* cid) { return true; } - bool readCSD(csd_t* csd) { return true; } - bool readOCR(uint32_t* ocr) { return true; } - bool readStatus(uint8_t* status) { return true; } - bool readStop() { return true; } - bool syncBlocks() { return true; } - int type() const { return m_type; } - bool writeSector(uint32_t sector, const uint8_t* src) { - return writeSectors(sector, src, 1); - } - bool writeSectors(uint32_t sector, const uint8_t* src, size_t ns) { - if ((int)(sector + ns) > (int) (_sdCardSizeB / 512LL)) return false; - memcpy(_sdCard + sector * 512, src, 512 * ns); - return true; - } - - uint32_t sectorCount() { return _sdCardSizeB / 512LL; } - bool syncDevice() { return true; } - - bool writeStop() { return true; } - void spiStart() { } - void spiStop() { } - -private: - int m_errorCode; - int m_status; - int m_type; -#endif - }; +//============================================================================== +/** + * \class DedicatedSpiCard + * \brief Raw access to SD and SDHC flash memory cards via dedicate SPI port. + */ +class DedicatedSpiCard : public SharedSpiCard { + public: + /** Construct an instance of DedicatedSpiCard. */ + DedicatedSpiCard() = default; + /** Initialize the SD card. + * \param[in] spiConfig SPI card configuration. + * \return true for success or false for failure. + */ + bool begin(SdSpiConfig spiConfig); + /** \return true, can be in dedicaded state. */ + bool hasDedicatedSpi() { return true; } + /** \return true if in dedicated SPI state. */ + bool isDedicatedSpi() { return m_dedicatedSpi; } + /** + * Read a 512 byte sector from an SD card. + * + * \param[in] sector Logical sector to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return true for success or false for failure. + */ + bool readSector(uint32_t sector, uint8_t* dst); + /** + * Read multiple 512 byte sectors from an SD card. + * + * \param[in] sector Logical sector to be read. + * \param[in] ns Number of sectors to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return true for success or false for failure. + */ + bool readSectors(uint32_t sector, uint8_t* dst, size_t ns); + /** Set SPI sharing state + * \param[in] value desired state. + * \return true for success else false; + */ + bool setDedicatedSpi(bool value); + /** + * Write a 512 byte sector to an SD card. + * + * \param[in] sector Logical sector to be written. + * \param[in] src Pointer to the location of the data to be written. + * \return true for success or false for failure. + */ + bool writeSector(uint32_t sector, const uint8_t* src); + /** + * Write multiple 512 byte sectors to an SD card. + * + * \param[in] sector Logical sector to be written. + * \param[in] ns Number of sectors to be written. + * \param[in] src Pointer to the location of the data to be written. + * \return true for success or false for failure. + */ + bool writeSectors(uint32_t sector, const uint8_t* src, size_t ns); - -}; // namespace sdfat - - + private: + uint32_t m_curSector = 0; + bool m_dedicatedSpi = false; +}; +//============================================================================== +#if ENABLE_DEDICATED_SPI +/** typedef for dedicated SPI. */ +typedef DedicatedSpiCard SdSpiCard; +#else +/** typedef for shared SPI. */ +typedef SharedSpiCard SdSpiCard; +#endif #endif // SdSpiCard_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioCard.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioCard.h index 97466d48..eb032e4a 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioCard.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioCard.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,16 +22,17 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +/** + * \file + * \brief Classes for SDIO cards. + */ #ifndef SdioCard_h #define SdioCard_h #include "../common/SysCall.h" #include "SdCardInterface.h" - - -namespace sdfat { - - +/** Use programmed I/O with FIFO. */ #define FIFO_SDIO 0 +/** Use programmed I/O with DMA. */ #define DMA_SDIO 1 /** * \class SdioConfig @@ -39,18 +40,19 @@ namespace sdfat { */ class SdioConfig { public: - SdioConfig() : m_options(FIFO_SDIO) {} + SdioConfig() {} /** * SdioConfig constructor. * \param[in] opt SDIO options. */ explicit SdioConfig(uint8_t opt) : m_options(opt) {} /** \return SDIO card options. */ - uint8_t options() {return m_options;} + uint8_t options() { return m_options; } /** \return true if DMA_SDIO. */ - bool useDma() {return m_options & DMA_SDIO;} + bool useDma() { return m_options & DMA_SDIO; } + private: - uint8_t m_options; + uint8_t m_options = FIFO_SDIO; }; //------------------------------------------------------------------------------ /** @@ -64,20 +66,20 @@ class SdioCard : public SdCardInterface { * \return true for success or false for failure. */ bool begin(SdioConfig sdioConfig); - /** Disable an SDIO card. - * \return false - not implemented. - */ - bool end() {return false;} - /** - * Determine the size of an SD flash memory card. + /** CMD6 Switch mode: Check Function Set Function. + * \param[in] arg CMD6 argument. + * \param[out] status return status data. * - * \return The number of 512 byte data sectors in the card - * or zero if an error occurs. + * \return true for success or false for failure. */ - uint32_t sectorCount(); + bool cardCMD6(uint32_t arg, uint8_t* status); + /** Disable an SDIO card. + * not implemented. + */ + void end() {} + #ifndef DOXYGEN_SHOULD_SKIP_THIS - // Use sectorCount(). cardSize() will be removed in the future. - uint32_t cardSize() __attribute__ ((deprecated)) {return sectorCount();} + uint32_t __attribute__((error("use sectorCount()"))) cardSize(); #endif // DOXYGEN_SHOULD_SKIP_THIS /** Erase a range of sectors. * @@ -93,7 +95,8 @@ class SdioCard : public SdCardInterface { */ bool erase(uint32_t firstSector, uint32_t lastSector); /** - * \return code for the last error. See SdCardInfo.h for a list of error codes. + * \return code for the last error. See SdCardInfo.h for a list of error + * codes. */ uint8_t errorCode() const; /** \return error data for last error. */ @@ -157,26 +160,27 @@ class SdioCard : public SdCardInterface { * \return true for success or false for failure. */ bool readOCR(uint32_t* ocr); + /** Read SCR register. + * + * \param[out] scr Value of SCR register. + * \return true for success or false for failure. + */ + bool readSCR(scr_t* scr); + /** Return the 64 byte SD Status register. + * \param[out] sds location for 64 status bytes. + * \return true for success or false for failure. + */ + bool readSDS(sds_t* sds); /** Start a read multiple sectors sequence. * * \param[in] sector Address of first sector in sequence. * * \note This function is used with readData() and readStop() for optimized - * multiple sector reads. SPI chipSelect must be low for the entire sequence. + * multiple sector reads. * * \return true for success or false for failure. */ bool readStart(uint32_t sector); - /** Start a read multiple sectors sequence. - * - * \param[in] sector Address of first sector in sequence. - * \param[in] count Maximum sector count. - * \note This function is used with readData() and readStop() for optimized - * multiple sector reads. SPI chipSelect must be low for the entire sequence. - * - * \return true for success or false for failure. - */ - bool readStart(uint32_t sector, uint32_t count); /** End a read multiple sectors sequence. * * \return true for success or false for failure. @@ -184,6 +188,21 @@ class SdioCard : public SdCardInterface { bool readStop(); /** \return SDIO card status. */ uint32_t status(); + /** + * Determine the size of an SD flash memory card. + * + * \return The number of 512 byte data sectors in the card + * or zero if an error occurs. + */ + uint32_t sectorCount(); + /** + * Send CMD12 to stop read or write. + * + * \param[in] blocking If true, wait for command complete. + * + * \return true for success or false for failure. + */ + bool stopTransmission(bool blocking); /** \return success if sync successful. Not for user apps. */ bool syncDevice(); /** Return the card type: SD V1, SD V2 or SDHC @@ -222,16 +241,6 @@ class SdioCard : public SdCardInterface { * \return true for success or false for failure. */ bool writeStart(uint32_t sector); - /** Start a write multiple sectors sequence. - * - * \param[in] sector Address of first sector in sequence. - * \param[in] count Maximum sector count. - * \note This function is used with writeData() and writeStop() - * for optimized multiple sector writes. - * - * \return true for success or false for failure. - */ - bool writeStart(uint32_t sector, uint32_t count); /** End a write multiple sectors sequence. * @@ -245,10 +254,6 @@ class SdioCard : public SdCardInterface { static const uint8_t WRITE_STATE = 2; uint32_t m_curSector; SdioConfig m_sdioConfig; - uint8_t m_curState; + uint8_t m_curState = IDLE_STATE; }; - - -}; // namespace sdfat - #endif // SdioCard_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.cpp index eeb3a0d9..c4b81330 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,19 +24,12 @@ */ #if defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__IMXRT1062__) #include "SdioTeensy.h" + #include "SdCardInfo.h" #include "SdioCard.h" - - -namespace sdfat { - - //============================================================================== // limit of K66 due to errata KINETIS_K_0N65N. -const uint32_t MAX_SDHC_COUNT = 0XFFFF; - -// Max RU is 1024 sectors. -const uint32_t RU_MASK = 0X03FF; +const uint32_t MAX_BLKCNT = 0XFFFF; //============================================================================== #define SDHC_PROCTL_DTW_4BIT 0x01 const uint32_t FIFO_WML = 16; @@ -44,39 +37,34 @@ const uint32_t CMD8_RETRIES = 3; const uint32_t BUSY_TIMEOUT_MICROS = 1000000; //============================================================================== const uint32_t SDHC_IRQSTATEN_MASK = - SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | - SDHC_IRQSTATEN_DEBESEN | SDHC_IRQSTATEN_DCESEN | - SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | - SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | - SDHC_IRQSTATEN_CTOESEN | SDHC_IRQSTATEN_DINTSEN | - SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; + SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | SDHC_IRQSTATEN_DEBESEN | + SDHC_IRQSTATEN_DCESEN | SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | + SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | SDHC_IRQSTATEN_CTOESEN | + SDHC_IRQSTATEN_DINTSEN | SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; const uint32_t SDHC_IRQSTAT_CMD_ERROR = - SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | - SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; + SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; -const uint32_t SDHC_IRQSTAT_DATA_ERROR = - SDHC_IRQSTAT_AC12E | SDHC_IRQSTAT_DEBE | - SDHC_IRQSTAT_DCE | SDHC_IRQSTAT_DTOE; +const uint32_t SDHC_IRQSTAT_DATA_ERROR = SDHC_IRQSTAT_AC12E | + SDHC_IRQSTAT_DEBE | SDHC_IRQSTAT_DCE | + SDHC_IRQSTAT_DTOE; const uint32_t SDHC_IRQSTAT_ERROR = - SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | - SDHC_IRQSTAT_DATA_ERROR; + SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | SDHC_IRQSTAT_DATA_ERROR; const uint32_t SDHC_IRQSIGEN_MASK = - SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | - SDHC_IRQSIGEN_DEBEIEN | SDHC_IRQSIGEN_DCEIEN | - SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | - SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | - SDHC_IRQSIGEN_CTOEIEN | SDHC_IRQSIGEN_TCIEN; + SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | SDHC_IRQSIGEN_DEBEIEN | + SDHC_IRQSIGEN_DCEIEN | SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | + SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | SDHC_IRQSIGEN_CTOEIEN | + SDHC_IRQSIGEN_TCIEN; //============================================================================== const uint32_t CMD_RESP_NONE = SDHC_XFERTYP_RSPTYP(0); -const uint32_t CMD_RESP_R1 = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(2); +const uint32_t CMD_RESP_R1 = + SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(2); -const uint32_t CMD_RESP_R1b = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(3); +const uint32_t CMD_RESP_R1b = + SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(3); const uint32_t CMD_RESP_R2 = SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(1); @@ -94,26 +82,23 @@ const uint32_t DATA_READ_DMA = DATA_READ | SDHC_XFERTYP_DMAEN; const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; -const uint32_t DATA_READ_MULTI_PGM = DATA_READ | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN; +const uint32_t DATA_READ_MULTI_PGM = + DATA_READ | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_BCEN; const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_DMAEN; const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; -const uint32_t DATA_WRITE_MULTI_PGM = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN; +const uint32_t DATA_WRITE_MULTI_PGM = + SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_MSBSEL | SDHC_XFERTYP_BCEN; #elif defined(__IMXRT1062__) // Use low bits for SDHC_MIX_CTRL since bits 15-0 of SDHC_XFERTYP are reserved. -const uint32_t SDHC_MIX_CTRL_MASK = SDHC_MIX_CTRL_DMAEN | SDHC_MIX_CTRL_BCEN | - SDHC_MIX_CTRL_AC12EN | - SDHC_MIX_CTRL_DDR_EN | - SDHC_MIX_CTRL_DTDSEL | - SDHC_MIX_CTRL_MSBSEL | - SDHC_MIX_CTRL_NIBBLE_POS | - SDHC_MIX_CTRL_AC23EN; +const uint32_t SDHC_MIX_CTRL_MASK = + SDHC_MIX_CTRL_DMAEN | SDHC_MIX_CTRL_BCEN | SDHC_MIX_CTRL_AC12EN | + SDHC_MIX_CTRL_DDR_EN | SDHC_MIX_CTRL_DTDSEL | SDHC_MIX_CTRL_MSBSEL | + SDHC_MIX_CTRL_NIBBLE_POS | SDHC_MIX_CTRL_AC23EN; const uint32_t DATA_READ = SDHC_MIX_CTRL_DTDSEL | SDHC_XFERTYP_DPSEL; @@ -124,7 +109,6 @@ const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_MIX_CTRL_MSBSEL | const uint32_t DATA_READ_MULTI_PGM = DATA_READ | SDHC_MIX_CTRL_MSBSEL; - const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_MIX_CTRL_DMAEN; const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_MIX_CTRL_MSBSEL | @@ -136,16 +120,22 @@ const uint32_t DATA_WRITE_MULTI_PGM = SDHC_XFERTYP_DPSEL | SDHC_MIX_CTRL_MSBSEL; const uint32_t ACMD6_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD6) | CMD_RESP_R1; +const uint32_t ACMD13_XFERTYP = + SDHC_XFERTYP_CMDINX(ACMD13) | CMD_RESP_R1 | DATA_READ_DMA; + const uint32_t ACMD41_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD41) | CMD_RESP_R3; +const uint32_t ACMD51_XFERTYP = + SDHC_XFERTYP_CMDINX(ACMD51) | CMD_RESP_R1 | DATA_READ_DMA; + const uint32_t CMD0_XFERTYP = SDHC_XFERTYP_CMDINX(CMD0) | CMD_RESP_NONE; const uint32_t CMD2_XFERTYP = SDHC_XFERTYP_CMDINX(CMD2) | CMD_RESP_R2; const uint32_t CMD3_XFERTYP = SDHC_XFERTYP_CMDINX(CMD3) | CMD_RESP_R6; -const uint32_t CMD6_XFERTYP = SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | - DATA_READ_DMA; +const uint32_t CMD6_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | DATA_READ_DMA; const uint32_t CMD7_XFERTYP = SDHC_XFERTYP_CMDINX(CMD7) | CMD_RESP_R1b; @@ -157,28 +147,28 @@ const uint32_t CMD10_XFERTYP = SDHC_XFERTYP_CMDINX(CMD10) | CMD_RESP_R2; const uint32_t CMD11_XFERTYP = SDHC_XFERTYP_CMDINX(CMD11) | CMD_RESP_R1; -const uint32_t CMD12_XFERTYP = SDHC_XFERTYP_CMDINX(CMD12) | CMD_RESP_R1b | - SDHC_XFERTYP_CMDTYP(3); +const uint32_t CMD12_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD12) | CMD_RESP_R1b | SDHC_XFERTYP_CMDTYP(3); const uint32_t CMD13_XFERTYP = SDHC_XFERTYP_CMDINX(CMD13) | CMD_RESP_R1; -const uint32_t CMD17_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | - DATA_READ_DMA; +const uint32_t CMD17_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | DATA_READ_DMA; -const uint32_t CMD18_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_DMA; +const uint32_t CMD18_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | DATA_READ_MULTI_DMA; -const uint32_t CMD18_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_PGM; +const uint32_t CMD18_PGM_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | DATA_READ_MULTI_PGM; -const uint32_t CMD24_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | - DATA_WRITE_DMA; +const uint32_t CMD24_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | DATA_WRITE_DMA; -const uint32_t CMD25_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_DMA; +const uint32_t CMD25_DMA_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | DATA_WRITE_MULTI_DMA; -const uint32_t CMD25_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_PGM; +const uint32_t CMD25_PGM_XFERTYP = + SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | DATA_WRITE_MULTI_PGM; const uint32_t CMD32_XFERTYP = SDHC_XFERTYP_CMDINX(CMD32) | CMD_RESP_R1; @@ -206,6 +196,7 @@ static bool (*m_busyFcn)() = 0; static bool m_initDone = false; static bool m_version2; static bool m_highCapacity; +static bool m_transferActive = false; static uint8_t m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; static uint32_t m_errorLine = 0; static uint32_t m_rca; @@ -215,26 +206,100 @@ static uint32_t m_sdClkKhz = 0; static uint32_t m_ocr; static cid_t m_cid; static csd_t m_csd; +static scr_t m_scr; +static sds_t m_sds; //============================================================================== -#define DBG_TRACE Serial.print("TRACE."); Serial.println(__LINE__); delay(200); +#define DBG_TRACE \ + Serial.print("TRACE."); \ + Serial.println(__LINE__); \ + delay(200); #define USE_DEBUG_MODE 0 #if USE_DEBUG_MODE -#define DBG_IRQSTAT() if (SDHC_IRQSTAT) {Serial.print(__LINE__);\ - Serial.print(" IRQSTAT "); Serial.println(SDHC_IRQSTAT, HEX);} - +#define DBG_IRQSTAT() \ + if (SDHC_IRQSTAT) { \ + Serial.print(__LINE__); \ + Serial.print(" IRQSTAT "); \ + Serial.println(SDHC_IRQSTAT, HEX); \ + } static void printRegs(uint32_t line) { - Serial.print(line); - Serial.print(" SDHC_BLKATTR "); - Serial.print(SDHC_BLKATTR, HEX); - Serial.print(" XFERTYP "); - Serial.print(SDHC_XFERTYP, HEX); - Serial.print(" PRSSTAT "); - Serial.print(SDHC_PRSSTAT, HEX); - Serial.print(" PROCTL "); - Serial.print(SDHC_PROCTL, HEX); - Serial.print(" IRQSTAT "); - Serial.print(SDHC_IRQSTAT, HEX); - Serial.print(" m_irqstat "); + uint32_t blkattr = SDHC_BLKATTR; + uint32_t xfertyp = SDHC_XFERTYP; + uint32_t prsstat = SDHC_PRSSTAT; + uint32_t proctl = SDHC_PROCTL; + uint32_t irqstat = SDHC_IRQSTAT; + Serial.print("\nLINE: "); + Serial.println(line); + Serial.print("BLKATTR "); + Serial.println(blkattr, HEX); + Serial.print("XFERTYP "); + Serial.print(xfertyp, HEX); + Serial.print(" CMD"); + Serial.print(xfertyp >> 24); + Serial.print(" TYP"); + Serial.print((xfertyp >> 2) & 3); + if (xfertyp & SDHC_XFERTYP_DPSEL) { + Serial.print(" DPSEL"); + } + Serial.println(); + Serial.print("PRSSTAT "); + Serial.print(prsstat, HEX); + if (prsstat & SDHC_PRSSTAT_BREN) { + Serial.print(" BREN"); + } + if (prsstat & SDHC_PRSSTAT_BWEN) { + Serial.print(" BWEN"); + } + if (prsstat & SDHC_PRSSTAT_RTA) { + Serial.print(" RTA"); + } + if (prsstat & SDHC_PRSSTAT_WTA) { + Serial.print(" WTA"); + } + if (prsstat & SDHC_PRSSTAT_SDOFF) { + Serial.print(" SDOFF"); + } + if (prsstat & SDHC_PRSSTAT_PEROFF) { + Serial.print(" PEROFF"); + } + if (prsstat & SDHC_PRSSTAT_HCKOFF) { + Serial.print(" HCKOFF"); + } + if (prsstat & SDHC_PRSSTAT_IPGOFF) { + Serial.print(" IPGOFF"); + } + if (prsstat & SDHC_PRSSTAT_SDSTB) { + Serial.print(" SDSTB"); + } + if (prsstat & SDHC_PRSSTAT_DLA) { + Serial.print(" DLA"); + } + if (prsstat & SDHC_PRSSTAT_CDIHB) { + Serial.print(" CDIHB"); + } + if (prsstat & SDHC_PRSSTAT_CIHB) { + Serial.print(" CIHB"); + } + Serial.println(); + Serial.print("PROCTL "); + Serial.print(proctl, HEX); + if (proctl & SDHC_PROCTL_SABGREQ) Serial.print(" SABGREQ"); + Serial.print(" EMODE"); + Serial.print((proctl >> 4) & 3); + Serial.print(" DWT"); + Serial.print((proctl >> 1) & 3); + Serial.println(); + Serial.print("IRQSTAT "); + Serial.print(irqstat, HEX); + if (irqstat & SDHC_IRQSTAT_BGE) { + Serial.print(" BGE"); + } + if (irqstat & SDHC_IRQSTAT_TC) { + Serial.print(" TC"); + } + if (irqstat & SDHC_IRQSTAT_CC) { + Serial.print(" CC"); + } + Serial.print("\nm_irqstat "); Serial.println(m_irqstat, HEX); } #else // USE_DEBUG_MODE @@ -268,12 +333,12 @@ static void sdIrs() { //------------------------------------------------------------------------------ static void enableGPIO(bool enable) { const uint32_t PORT_CLK = PORT_PCR_MUX(4) | PORT_PCR_DSE; - const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PE | PORT_PCR_PS; + const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PE | PORT_PCR_PS; const uint32_t PORT_PUP = PORT_PCR_MUX(1) | PORT_PCR_PE | PORT_PCR_PS; PORTE_PCR0 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D1 PORTE_PCR1 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D0 - PORTE_PCR2 = enable ? PORT_CLK : PORT_PUP; // SDHC_CLK + PORTE_PCR2 = enable ? PORT_CLK : PORT_PUP; // SDHC_CLK PORTE_PCR3 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_CMD PORTE_PCR4 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D3 PORTE_PCR5 = enable ? PORT_CMD_DATA : PORT_PUP; // SDHC_D2 @@ -287,7 +352,7 @@ static void initClock() { // Enable SDHC clock. SIM_SCGC3 |= SIM_SCGC3_SDHC; } -static uint32_t baseClock() { return F_CPU;} +static uint32_t baseClock() { return F_CPU; } #elif defined(__IMXRT1062__) //------------------------------------------------------------------------------ @@ -304,14 +369,14 @@ static void gpioMux(uint8_t mode) { static void enableGPIO(bool enable) { const uint32_t CLOCK_MASK = IOMUXC_SW_PAD_CTL_PAD_PKE | #if defined(ARDUINO_TEENSY41) - IOMUXC_SW_PAD_CTL_PAD_DSE(1) | -#else // defined(ARDUINO_TEENSY41) + IOMUXC_SW_PAD_CTL_PAD_DSE(7) | +#else // defined(ARDUINO_TEENSY41) IOMUXC_SW_PAD_CTL_PAD_DSE(4) | ///// WHG #endif // defined(ARDUINO_TEENSY41) IOMUXC_SW_PAD_CTL_PAD_SPEED(2); - const uint32_t DATA_MASK = CLOCK_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE | - IOMUXC_SW_PAD_CTL_PAD_PUS(1); + const uint32_t DATA_MASK = + CLOCK_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE | IOMUXC_SW_PAD_CTL_PAD_PUS(1); if (enable) { gpioMux(0); IOMUXC_SW_PAD_CTL_PAD_GPIO_SD_B0_04 = DATA_MASK; // DAT2 @@ -335,20 +400,20 @@ static void initClock() { /* Enable USDHC clock. */ CCM_CCGR6 |= CCM_CCGR6_USDHC1(CCM_CCGR_ON); CCM_CSCDR1 &= ~(CCM_CSCDR1_USDHC1_CLK_PODF_MASK); - CCM_CSCMR1 |= CCM_CSCMR1_USDHC1_CLK_SEL; // PLL2PFD0 -// CCM_CSCDR1 |= CCM_CSCDR1_USDHC1_CLK_PODF((7)); / &0x7 WHG + CCM_CSCMR1 |= CCM_CSCMR1_USDHC1_CLK_SEL; // PLL2PFD0 + // CCM_CSCDR1 |= CCM_CSCDR1_USDHC1_CLK_PODF((7)); / &0x7 WHG CCM_CSCDR1 |= CCM_CSCDR1_USDHC1_CLK_PODF((1)); } //------------------------------------------------------------------------------ static uint32_t baseClock() { uint32_t divider = ((CCM_CSCDR1 >> 11) & 0x7) + 1; - return (528000000U * 3)/((CCM_ANALOG_PFD_528 & 0x3F)/6)/divider; + return (528000000U * 3) / ((CCM_ANALOG_PFD_528 & 0x3F) / 6) / divider; } #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) //============================================================================== // Static functions. static bool cardAcmd(uint32_t rca, uint32_t xfertyp, uint32_t arg) { - return cardCommand(CMD55_XFERTYP, rca) && cardCommand (xfertyp, arg); + return cardCommand(CMD55_XFERTYP, rca) && cardCommand(xfertyp, arg); } //------------------------------------------------------------------------------ static bool cardCommand(uint32_t xfertyp, uint32_t arg) { @@ -372,21 +437,38 @@ static bool cardCommand(uint32_t xfertyp, uint32_t arg) { m_irqstat = SDHC_IRQSTAT; SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_CC) && - !(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); + return (m_irqstat & SDHC_IRQSTAT_CC) && !(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); } //------------------------------------------------------------------------------ -static bool cardCMD6(uint32_t arg, uint8_t* status) { - // CMD6 returns 64 bytes. +static bool cardACMD13(sds_t* scr) { + // ACMD13 returns 64 bytes. if (waitTimeout(isBusyCMD13)) { return sdError(SD_CARD_ERROR_CMD13); } enableDmaIrs(); - SDHC_DSADDR = (uint32_t)status; + SDHC_DSADDR = (uint32_t)scr; SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - if (!cardCommand(CMD6_XFERTYP, arg)) { - return sdError(SD_CARD_ERROR_CMD6); + if (!cardAcmd(m_rca, ACMD13_XFERTYP, 0)) { + return sdError(SD_CARD_ERROR_ACMD13); + } + if (!waitDmaStatus()) { + return sdError(SD_CARD_ERROR_DMA); + } + return true; +} +//------------------------------------------------------------------------------ +static bool cardACMD51(scr_t* scr) { + // ACMD51 returns 8 bytes. + if (waitTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + enableDmaIrs(); + SDHC_DSADDR = (uint32_t)scr; + SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(8); + SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; + if (!cardAcmd(m_rca, ACMD51_XFERTYP, 0)) { + return sdError(SD_CARD_ERROR_ACMD51); } if (!waitDmaStatus()) { return sdError(SD_CARD_ERROR_DMA); @@ -405,9 +487,9 @@ static void initSDHC() { // Disable GPIO clock. enableGPIO(false); -#if defined (__IMXRT1062__) +#if defined(__IMXRT1062__) SDHC_MIX_CTRL |= 0x80000000; -#endif +#endif // (__IMXRT1062__) // Reset SDHC. Use default Water Mark Level of 16. SDHC_SYSCTL |= SDHC_SYSCTL_RSTA | SDHC_SYSCTL_SDCLKFS(0x80); @@ -424,7 +506,7 @@ static void initSDHC() { SDHC_IRQSTATEN = SDHC_IRQSTATEN_MASK; attachInterruptVector(IRQ_SDHC, sdIrs); - NVIC_SET_PRIORITY(IRQ_SDHC, 6*16); + NVIC_SET_PRIORITY(IRQ_SDHC, 6 * 16); NVIC_ENABLE_IRQ(IRQ_SDHC); // Send 80 clocks to card. @@ -438,39 +520,29 @@ static uint32_t statusCMD13() { } //------------------------------------------------------------------------------ static bool isBusyCMD13() { - if (!cardCommand(CMD13_XFERTYP, m_rca)) { - // Caller will timeout. - return true; - } - return !(SDHC_CMDRSP0 & CARD_STATUS_READY_FOR_DATA); + return !(statusCMD13() & CARD_STATUS_READY_FOR_DATA); } //------------------------------------------------------------------------------ static bool isBusyCommandComplete() { return !(SDHC_IRQSTAT & (SDHC_IRQSTAT_CC | SDHC_IRQSTAT_CMD_ERROR)); } //------------------------------------------------------------------------------ -static bool isBusyCommandInhibit() { - return SDHC_PRSSTAT & SDHC_PRSSTAT_CIHB; -} +static bool isBusyCommandInhibit() { return SDHC_PRSSTAT & SDHC_PRSSTAT_CIHB; } //------------------------------------------------------------------------------ -static bool isBusyDMA() { - return m_dmaBusy; -} +static bool isBusyDat() { return SDHC_PRSSTAT & (1 << 24) ? false : true; } //------------------------------------------------------------------------------ -static bool isBusyFifoRead() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BREN); -} +static bool isBusyDMA() { return m_dmaBusy; } //------------------------------------------------------------------------------ -static bool isBusyFifoWrite() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN); -} +static bool isBusyFifoRead() { return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BREN); } +//------------------------------------------------------------------------------ +static bool isBusyFifoWrite() { return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN); } //------------------------------------------------------------------------------ static bool isBusyTransferComplete() { return !(SDHC_IRQSTAT & (SDHC_IRQSTAT_TC | SDHC_IRQSTAT_ERROR)); } //------------------------------------------------------------------------------ -static bool rdWrSectors(uint32_t xfertyp, - uint32_t sector, uint8_t* buf, size_t n) { +static bool rdWrSectors(uint32_t xfertyp, uint32_t sector, uint8_t* buf, + size_t n) { if ((3 & (uint32_t)buf) || n == 0) { return sdError(SD_CARD_ERROR_DMA); } @@ -478,10 +550,10 @@ static bool rdWrSectors(uint32_t xfertyp, return sdError(SD_CARD_ERROR_CMD13); } enableDmaIrs(); - SDHC_DSADDR = (uint32_t)buf; + SDHC_DSADDR = (uint32_t)buf; SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(n) | SDHC_BLKATTR_BLKSIZE(512); SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - if (!cardCommand(xfertyp, m_highCapacity ? sector : 512*sector)) { + if (!cardCommand(xfertyp, m_highCapacity ? sector : 512 * sector)) { return false; } return waitDmaStatus(); @@ -495,7 +567,7 @@ static bool readReg16(uint32_t xfertyp, void* data) { } uint32_t sr[] = {SDHC_CMDRSP0, SDHC_CMDRSP1, SDHC_CMDRSP2, SDHC_CMDRSP3}; for (int i = 0; i < 15; i++) { - d[14 - i] = sr[i/4] >> 8*(i%4); + d[14 - i] = sr[i / 4] >> 8 * (i % 4); } d[15] = 0; return true; @@ -506,16 +578,17 @@ static void setSdclk(uint32_t kHzMax) { const uint32_t SDCLKFS_LIMIT = 0X100; uint32_t dvs = 1; uint32_t sdclkfs = 1; - uint32_t maxSdclk = 1000*kHzMax; + uint32_t maxSdclk = 1000 * kHzMax; uint32_t base = baseClock(); - while ((base/(sdclkfs*DVS_LIMIT) > maxSdclk) && (sdclkfs < SDCLKFS_LIMIT)) { + while ((base / (sdclkfs * DVS_LIMIT) > maxSdclk) && + (sdclkfs < SDCLKFS_LIMIT)) { sdclkfs <<= 1; } - while ((base/(sdclkfs*dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { + while ((base / (sdclkfs * dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { dvs++; } - m_sdClkKhz = base/(1000*sdclkfs*dvs); + m_sdClkKhz = base / (1000 * sdclkfs * dvs); sdclkfs >>= 1; dvs--; #if defined(__MK64FX512__) || defined(__MK66FX1M0__) @@ -524,11 +597,12 @@ static void setSdclk(uint32_t kHzMax) { #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) // Change dividers. - uint32_t sysctl = SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK - | SDHC_SYSCTL_DVS_MASK | SDHC_SYSCTL_SDCLKFS_MASK); + uint32_t sysctl = + SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK | SDHC_SYSCTL_DVS_MASK | + SDHC_SYSCTL_SDCLKFS_MASK); - SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) - | SDHC_SYSCTL_SDCLKFS(sdclkfs); + SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) | + SDHC_SYSCTL_SDCLKFS(sdclkfs); // Wait until the SDHC clock is stable. while (!(SDHC_PRSSTAT & SDHC_PRSSTAT_SDSTB)) { @@ -541,20 +615,25 @@ static void setSdclk(uint32_t kHzMax) { } //------------------------------------------------------------------------------ static bool transferStop() { + // This fix allows CDIHB to be cleared in Tennsy 3.x without a reset. + SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; if (!cardCommand(CMD12_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD12); } - if (yieldTimeout(isBusyCMD13)) { + if (yieldTimeout(isBusyDat)) { return sdError(SD_CARD_ERROR_CMD13); } - // Save registers before reset DAT lines. - uint32_t irqsststen = SDHC_IRQSTATEN; - uint32_t proctl = SDHC_PROCTL & ~SDHC_PROCTL_SABGREQ; - // Do reset to clear CDIHB. Should be a better way! - SDHC_SYSCTL |= SDHC_SYSCTL_RSTD; - // Restore registers. - SDHC_IRQSTATEN = irqsststen; - SDHC_PROCTL = proctl; + if (SDHC_PRSSTAT & SDHC_PRSSTAT_CDIHB) { + // This should not happen after above fix. + // Save registers before reset DAT lines. + uint32_t irqsststen = SDHC_IRQSTATEN; + uint32_t proctl = SDHC_PROCTL & ~SDHC_PROCTL_SABGREQ; + // Do reset to clear CDIHB. Should be a better way! + SDHC_SYSCTL |= SDHC_SYSCTL_RSTD; + // Restore registers. + SDHC_IRQSTATEN = irqsststen; + SDHC_PROCTL = proctl; + } return true; } //------------------------------------------------------------------------------ @@ -567,7 +646,7 @@ static bool yieldTimeout(bool (*fcn)()) { m_busyFcn = 0; return true; } - SysCall::yield(); + yield(); } m_busyFcn = 0; return false; // Caller will set errorCode. @@ -590,6 +669,20 @@ static bool waitTimeout(bool (*fcn)()) { } return false; // Caller will set errorCode. } +//------------------------------------------------------------------------------ +static bool waitTransferComplete() { + if (!m_transferActive) { + return true; + } + bool timeOut = waitTimeout(isBusyTransferComplete); + m_transferActive = false; + m_irqstat = SDHC_IRQSTAT; + SDHC_IRQSTAT = m_irqstat; + if (timeOut || (m_irqstat & SDHC_IRQSTAT_ERROR)) { + return sdError(SD_CARD_ERROR_TRANSFER_COMPLETE); + } + return true; +} //============================================================================== // Start of SdioCard member functions. //============================================================================== @@ -617,12 +710,16 @@ bool SdioCard::begin(SdioConfig sdioConfig) { m_version2 = true; break; } + SDHC_SYSCTL |= SDHC_SYSCTL_RSTA; + while (SDHC_SYSCTL & SDHC_SYSCTL_RSTA) { + } } + // Must support 3.2-3.4 Volts arg = m_version2 ? 0X40300000 : 0x00300000; int m = micros(); do { if (!cardAcmd(0, ACMD41_XFERTYP, arg) || - ((micros() - m) > BUSY_TIMEOUT_MICROS)) { + ((micros() - m) > BUSY_TIMEOUT_MICROS)) { return sdError(SD_CARD_ERROR_ACMD41); } } while ((SDHC_CMDRSP0 & 0x80000000) == 0); @@ -658,14 +755,32 @@ bool SdioCard::begin(SdioConfig sdioConfig) { SDHC_WML = SDHC_WML_RDWML(FIFO_WML) | SDHC_WML_WRWML(FIFO_WML); + if (!cardACMD51(&m_scr)) { + return false; + } + if (!cardACMD13(&m_sds)) { + return false; + } // Determine if High Speed mode is supported and set frequency. // Check status[16] for error 0XF or status[16] for new mode 0X1. uint8_t status[64]; - if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && - cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - kHzSdClk = 50000; - } else { - kHzSdClk = 25000; + kHzSdClk = 25000; + if (m_scr.sdSpec() > 0) { + // card is 1.10 or greater - must support CMD6 + if (!cardCMD6(0X00FFFFFF, status)) { + return false; + } + if (2 & status[13]) { + // Card supports High Speed mode - switch mode. + if (!cardCMD6(0X80FFFFF1, status)) { + return false; + } + if ((status[16] & 0XF) == 1) { + kHzSdClk = 50000; + } else { + return sdError(SD_CARD_ERROR_CMD6); + } + } } // Disable GPIO. enableGPIO(false); @@ -679,11 +794,32 @@ bool SdioCard::begin(SdioConfig sdioConfig) { return true; } //------------------------------------------------------------------------------ +bool SdioCard::cardCMD6(uint32_t arg, uint8_t* status) { + // CMD6 returns 64 bytes. + if (waitTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + enableDmaIrs(); + SDHC_DSADDR = (uint32_t)status; + SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); + SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; + if (!cardCommand(CMD6_XFERTYP, arg)) { + return sdError(SD_CARD_ERROR_CMD6); + } + if (!waitDmaStatus()) { + return sdError(SD_CARD_ERROR_DMA); + } + return true; +} +//------------------------------------------------------------------------------ bool SdioCard::erase(uint32_t firstSector, uint32_t lastSector) { + if (m_curState != IDLE_STATE && !syncDevice()) { + return false; + } // check for single sector erase - if (!m_csd.v1.erase_blk_en) { + if (!m_csd.eraseSingleBlock()) { // erase size mask - uint8_t m = (m_csd.v1.sector_size_high << 1) | m_csd.v1.sector_size_low; + uint8_t m = m_csd.eraseSize() - 1; if ((firstSector & m) != 0 || ((lastSector + 1) & m) != 0) { // error card can't erase specified area return sdError(SD_CARD_ERROR_ERASE_SINGLE_SECTOR); @@ -697,7 +833,7 @@ bool SdioCard::erase(uint32_t firstSector, uint32_t lastSector) { return sdError(SD_CARD_ERROR_CMD32); } if (!cardCommand(CMD33_XFERTYP, lastSector)) { - return sdError(SD_CARD_ERROR_CMD33); + return sdError(SD_CARD_ERROR_CMD33); } if (!cardCommand(CMD38_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD38); @@ -708,33 +844,45 @@ bool SdioCard::erase(uint32_t firstSector, uint32_t lastSector) { return true; } //------------------------------------------------------------------------------ -uint8_t SdioCard::errorCode() const { - return m_errorCode; -} +uint8_t SdioCard::errorCode() const { return m_errorCode; } //------------------------------------------------------------------------------ -uint32_t SdioCard::errorData() const { - return m_irqstat; -} +uint32_t SdioCard::errorData() const { return m_irqstat; } //------------------------------------------------------------------------------ -uint32_t SdioCard::errorLine() const { - return m_errorLine; -} +uint32_t SdioCard::errorLine() const { return m_errorLine; } //------------------------------------------------------------------------------ bool SdioCard::isBusy() { - return m_busyFcn ? m_busyFcn() : m_initDone && isBusyCMD13(); + if (m_sdioConfig.useDma()) { + return m_busyFcn ? m_busyFcn() : m_initDone && isBusyCMD13(); + } else { + if (m_transferActive) { + if (isBusyTransferComplete()) { + return true; + } +#if defined(__MK64FX512__) || defined(__MK66FX1M0__) + if ((SDHC_BLKATTR & 0XFFFF0000) != 0) { + return false; + } + m_transferActive = false; + stopTransmission(false); + return true; +#else // defined(__MK64FX512__) || defined(__MK66FX1M0__) + return false; +#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) + } + // Use DAT0 low as busy. + return SDHC_PRSSTAT & (1 << 24) ? false : true; + } } //------------------------------------------------------------------------------ -uint32_t SdioCard::kHzSdClk() { - return m_sdClkKhz; -} +uint32_t SdioCard::kHzSdClk() { return m_sdClkKhz; } //------------------------------------------------------------------------------ bool SdioCard::readCID(cid_t* cid) { - memcpy(cid, &m_cid, 16); + memcpy(cid, &m_cid, sizeof(cid_t)); return true; } //------------------------------------------------------------------------------ bool SdioCard::readCSD(csd_t* csd) { - memcpy(csd, &m_csd, 16); + memcpy(csd, &m_csd, sizeof(csd_t)); return true; } //------------------------------------------------------------------------------ @@ -752,7 +900,7 @@ bool SdioCard::readData(uint8_t* dst) { if (waitTimeout(isBusyFifoRead)) { return sdError(SD_CARD_ERROR_READ_FIFO); } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { + for (uint32_t iw = 0; iw < 512 / (4 * FIFO_WML); iw++) { while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BREN)) { } for (uint32_t i = 0; i < FIFO_WML; i++) { @@ -773,6 +921,16 @@ bool SdioCard::readOCR(uint32_t* ocr) { return true; } //------------------------------------------------------------------------------ +bool SdioCard::readSCR(scr_t* scr) { + memcpy(scr, &m_scr, sizeof(scr_t)); + return true; +} +//------------------------------------------------------------------------------ +bool SdioCard::readSDS(sds_t* sds) { + memcpy(sds, &m_sds, sizeof(sds_t)); + return true; +} +//------------------------------------------------------------------------------ bool SdioCard::readSector(uint32_t sector, uint8_t* dst) { if (m_sdioConfig.useDma()) { uint8_t aligned[512]; @@ -786,6 +944,9 @@ bool SdioCard::readSector(uint32_t sector, uint8_t* dst) { memcpy(dst, aligned, 512); } } else { + if (!waitTransferComplete()) { + return false; + } if (m_curState != READ_STATE || sector != m_curSector) { if (!syncDevice()) { return false; @@ -826,7 +987,7 @@ bool SdioCard::readSectors(uint32_t sector, uint8_t* dst, size_t n) { } } else { for (size_t i = 0; i < n; i++) { - if (!readSector(sector + i, dst + i*512UL)) { + if (!readSector(sector + i, dst + i * 512UL)) { return false; } } @@ -844,51 +1005,60 @@ bool SdioCard::readStart(uint32_t sector) { #if defined(__IMXRT1062__) // Infinite transfer. SDHC_BLKATTR = SDHC_BLKATTR_BLKSIZE(512); -#else // defined(__IMXRT1062__) +#else // defined(__IMXRT1062__) // Errata - can't do infinite transfer. - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(0XFFFF) | SDHC_BLKATTR_BLKSIZE(512); + SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(MAX_BLKCNT) | SDHC_BLKATTR_BLKSIZE(512); #endif // defined(__IMXRT1062__) - if (!cardCommand(CMD18_PGM_XFERTYP, m_highCapacity ? sector : 512*sector)) { + if (!cardCommand(CMD18_PGM_XFERTYP, m_highCapacity ? sector : 512 * sector)) { return sdError(SD_CARD_ERROR_CMD18); } return true; } //------------------------------------------------------------------------------ -bool SdioCard::readStop() { - return transferStop(); -} +bool SdioCard::readStop() { return transferStop(); } //------------------------------------------------------------------------------ -uint32_t SdioCard::sectorCount() { - return sdCardCapacity(&m_csd); -} +uint32_t SdioCard::sectorCount() { return m_csd.capacity(); } //------------------------------------------------------------------------------ -uint32_t SdioCard::status() { - return statusCMD13(); -} +uint32_t SdioCard::status() { return statusCMD13(); } //------------------------------------------------------------------------------ -bool SdioCard::syncDevice() { - if (m_curState == READ_STATE) { - m_curState = IDLE_STATE; - if (!readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - m_curState = IDLE_STATE; - if (!writeStop()) { - return false; +bool SdioCard::stopTransmission(bool blocking) { + m_curState = IDLE_STATE; + // This fix allows CDIHB to be cleared in Tennsy 3.x without a reset. + SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; + if (!cardCommand(CMD12_XFERTYP, 0)) { + return sdError(SD_CARD_ERROR_CMD12); + } + if (blocking) { + if (yieldTimeout(isBusyDat)) { + return sdError(SD_CARD_ERROR_CMD13); } } return true; } //------------------------------------------------------------------------------ +bool SdioCard::syncDevice() { + if (!waitTransferComplete()) { + return false; + } + if (m_curState != IDLE_STATE) { + return stopTransmission(true); + } + return true; +} +//------------------------------------------------------------------------------ uint8_t SdioCard::type() const { - return m_version2 ? m_highCapacity ? - SD_CARD_TYPE_SDHC : SD_CARD_TYPE_SD2 : SD_CARD_TYPE_SD1; + return !m_initDone ? 0 + : !m_version2 ? SD_CARD_TYPE_SD1 + : !m_highCapacity ? SD_CARD_TYPE_SD2 + : SD_CARD_TYPE_SDHC; } //------------------------------------------------------------------------------ bool SdioCard::writeData(const uint8_t* src) { DBG_IRQSTAT(); + if (!waitTransferComplete()) { + return false; + } const uint32_t* p32 = reinterpret_cast(src); if (!(SDHC_PRSSTAT & SDHC_PRSSTAT_WTA)) { SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; @@ -898,7 +1068,7 @@ bool SdioCard::writeData(const uint8_t* src) { if (waitTimeout(isBusyFifoWrite)) { return sdError(SD_CARD_ERROR_WRITE_FIFO); } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { + for (uint32_t iw = 0; iw < 512 / (4 * FIFO_WML); iw++) { while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN)) { } for (uint32_t i = 0; i < FIFO_WML; i++) { @@ -906,12 +1076,8 @@ bool SdioCard::writeData(const uint8_t* src) { } p32 += FIFO_WML; } - if (waitTimeout(isBusyTransferComplete)) { - return sdError(SD_CARD_ERROR_WRITE_TIMEOUT); - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); + m_transferActive = true; + return true; } //------------------------------------------------------------------------------ bool SdioCard::writeSector(uint32_t sector, const uint8_t* src) { @@ -924,15 +1090,26 @@ bool SdioCard::writeSector(uint32_t sector, const uint8_t* src) { } else { ptr = const_cast(src); } - if (!rdWrSectors(CMD24_DMA_XFERTYP, sector, ptr, 1)) { + if (!rdWrSectors(CMD24_DMA_XFERTYP, sector, ptr, 1)) { return sdError(SD_CARD_ERROR_CMD24); } } else { + if (!waitTransferComplete()) { + return false; + } +#if defined(__MK64FX512__) || defined(__MK66FX1M0__) + // End transfer with CMD12 if required. + if ((SDHC_BLKATTR & 0XFFFF0000) == 0) { + if (!syncDevice()) { + return false; + } + } +#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) if (m_curState != WRITE_STATE || m_curSector != sector) { if (!syncDevice()) { return false; } - if (!writeStart(sector )) { + if (!writeStart(sector)) { return false; } m_curSector = sector; @@ -942,14 +1119,6 @@ bool SdioCard::writeSector(uint32_t sector, const uint8_t* src) { return false; } m_curSector++; -#if defined(__MK64FX512__) || defined(__MK66FX1M0__) - // End transfer with CMD12 if required. - if ((SDHC_BLKATTR & 0XFFFF0000) == 0) { - if (!syncDevice()) { - return false; - } - } -#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) } return true; } @@ -970,7 +1139,7 @@ bool SdioCard::writeSectors(uint32_t sector, const uint8_t* src, size_t n) { } } else { for (size_t i = 0; i < n; i++) { - if (!writeSector(sector + i, src + i*512UL)) { + if (!writeSector(sector + i, src + i * 512UL)) { return false; } } @@ -987,22 +1156,15 @@ bool SdioCard::writeStart(uint32_t sector) { #if defined(__IMXRT1062__) // Infinite transfer. SDHC_BLKATTR = SDHC_BLKATTR_BLKSIZE(512); -#else // defined(__IMXRT1062__) +#else // defined(__IMXRT1062__) // Errata - can't do infinite transfer. - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(0XFFFF) | SDHC_BLKATTR_BLKSIZE(512); + SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(MAX_BLKCNT) | SDHC_BLKATTR_BLKSIZE(512); #endif // defined(__IMXRT1062__) - if (!cardCommand(CMD25_PGM_XFERTYP, m_highCapacity ? sector : 512*sector)) { + if (!cardCommand(CMD25_PGM_XFERTYP, m_highCapacity ? sector : 512 * sector)) { return sdError(SD_CARD_ERROR_CMD25); } return true; } //------------------------------------------------------------------------------ -bool SdioCard::writeStop() { - return transferStop(); -} - - -}; // namespace sdfat - - +bool SdioCard::writeStop() { return transferStop(); } #endif // defined(__MK64FX512__) defined(__MK66FX1M0__) defined(__IMXRT1062__) diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.h index 69573dc1..5d97e569 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdCard/SdioTeensy.h @@ -1,277 +1,530 @@ +/** + * \file + * \brief Definitions for Teensy HDHC. + */ + #ifndef SdioTeensy_h #define SdioTeensy_h // From Paul's SD.h driver. #if defined(__IMXRT1062__) -#define MAKE_REG_MASK(m,s) (((uint32_t)(((uint32_t)(m) << s)))) -#define MAKE_REG_GET(x,m,s) (((uint32_t)(((uint32_t)(x)>>s) & m))) -#define MAKE_REG_SET(x,m,s) (((uint32_t)(((uint32_t)(x) & m) << s))) +#define MAKE_REG_MASK(m, s) (((uint32_t)(((uint32_t)(m) << s)))) +#define MAKE_REG_GET(x, m, s) (((uint32_t)(((uint32_t)(x) >> s) & m))) +#define MAKE_REG_SET(x, m, s) (((uint32_t)(((uint32_t)(x)&m) << s))) -#define SDHC_BLKATTR_BLKSIZE_MASK MAKE_REG_MASK(0x1FFF,0) //uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size Mask -#define SDHC_BLKATTR_BLKSIZE(n) MAKE_REG_SET(n,0x1FFF,0) //uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size -#define SDHC_BLKATTR_BLKCNT_MASK MAKE_REG_MASK(0x1FFF,16) //((uint32_t)0x1FFF<<16) -#define SDHC_BLKATTR_BLKCNT(n) MAKE_REG_SET(n,0x1FFF,16) //(uint32_t)(((n) & 0x1FFF)<<16) // Blocks Count For Current Transfer +#define SDHC_BLKATTR_BLKSIZE_MASK \ + MAKE_REG_MASK( \ + 0x1FFF, 0) // uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size Mask +#define SDHC_BLKATTR_BLKSIZE(n) \ + MAKE_REG_SET(n, 0x1FFF, \ + 0) // uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size +#define SDHC_BLKATTR_BLKCNT_MASK \ + MAKE_REG_MASK(0x1FFF, 16) //((uint32_t)0x1FFF<<16) +#define SDHC_BLKATTR_BLKCNT(n) \ + MAKE_REG_SET(n, 0x1FFF, 16) //(uint32_t)(((n) & 0x1FFF)<<16) // Blocks Count + // For Current Transfer -#define SDHC_XFERTYP_CMDINX(n) MAKE_REG_SET(n,0x3F,24) //(uint32_t)(((n) & 0x3F)<<24)// Command Index -#define SDHC_XFERTYP_CMDTYP(n) MAKE_REG_SET(n,0x3,22) //(uint32_t)(((n) & 0x3)<<22) // Command Type -#define SDHC_XFERTYP_DPSEL MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data Present Select -#define SDHC_XFERTYP_CICEN MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Command Index Check Enable -#define SDHC_XFERTYP_CCCEN MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command CRC Check Enable -#define SDHC_XFERTYP_RSPTYP(n) MAKE_REG_SET(n,0x3,16) //(uint32_t)(((n) & 0x3)<<16) // Response Type Select -#define SDHC_XFERTYP_MSBSEL MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Multi/Single Block Select -#define SDHC_XFERTYP_DTDSEL MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Data Transfer Direction Select -#define SDHC_XFERTYP_AC12EN MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Auto CMD12 Enable -#define SDHC_XFERTYP_BCEN MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Block Count Enable -#define SDHC_XFERTYP_DMAEN MAKE_REG_MASK(0x3,0) //((uint32_t)0x00000001) // DMA Enable +#define SDHC_XFERTYP_CMDINX(n) \ + MAKE_REG_SET(n, 0x3F, 24) //(uint32_t)(((n) & 0x3F)<<24)// Command Index +#define SDHC_XFERTYP_CMDTYP(n) \ + MAKE_REG_SET(n, 0x3, 22) //(uint32_t)(((n) & 0x3)<<22) // Command Type +#define SDHC_XFERTYP_DPSEL \ + MAKE_REG_MASK(0x1, 21) //((uint32_t)0x00200000) // Data Present Select +#define SDHC_XFERTYP_CICEN \ + MAKE_REG_MASK(0x1, \ + 20) //((uint32_t)0x00100000) // Command Index Check Enable +#define SDHC_XFERTYP_CCCEN \ + MAKE_REG_MASK(0x1, \ + 19) //((uint32_t)0x00080000) // Command CRC Check Enable +#define SDHC_XFERTYP_RSPTYP(n) \ + MAKE_REG_SET(n, 0x3, \ + 16) //(uint32_t)(((n) & 0x3)<<16) // Response Type Select +#define SDHC_XFERTYP_MSBSEL \ + MAKE_REG_MASK(0x1, 5) //((uint32_t)0x00000020) // Multi/Single Block Select +#define SDHC_XFERTYP_DTDSEL \ + MAKE_REG_MASK( \ + 0x1, 4) //((uint32_t)0x00000010) // Data Transfer Direction Select +#define SDHC_XFERTYP_AC12EN \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Auto CMD12 Enable +#define SDHC_XFERTYP_BCEN \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Block Count Enable +#define SDHC_XFERTYP_DMAEN \ + MAKE_REG_MASK(0x3, 0) //((uint32_t)0x00000001) // DMA Enable -#define SDHC_PRSSTAT_DLSL_MASK MAKE_REG_MASK(0xFF,24) //((uint32_t)0xFF000000) // DAT Line Signal Level -#define SDHC_PRSSTAT_CLSL MAKE_REG_MASK(0x1,23) //((uint32_t)0x00800000) // CMD Line Signal Level -#define SDHC_PRSSTAT_WPSPL MAKE_REG_MASK(0x1,19) // -#define SDHC_PRSSTAT_CDPL MAKE_REG_MASK(0x1,18) // -#define SDHC_PRSSTAT_CINS MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Card Inserted -#define SDHC_PRSSTAT_TSCD MAKE_REG_MASK(0x1,15) -#define SDHC_PRSSTAT_RTR MAKE_REG_MASK(0x1,12) -#define SDHC_PRSSTAT_BREN MAKE_REG_MASK(0x1,11) //((uint32_t)0x00000800) // Buffer Read Enable -#define SDHC_PRSSTAT_BWEN MAKE_REG_MASK(0x1,10) //((uint32_t)0x00000400) // Buffer Write Enable -#define SDHC_PRSSTAT_RTA MAKE_REG_MASK(0x1,9) //((uint32_t)0x00000200) // Read Transfer Active -#define SDHC_PRSSTAT_WTA MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Write Transfer Active -#define SDHC_PRSSTAT_SDOFF MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // SD Clock Gated Off Internally -#define SDHC_PRSSTAT_PEROFF MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // SDHC clock Gated Off Internally -#define SDHC_PRSSTAT_HCKOFF MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // System Clock Gated Off Internally -#define SDHC_PRSSTAT_IPGOFF MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Bus Clock Gated Off Internally -#define SDHC_PRSSTAT_SDSTB MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // SD Clock Stable -#define SDHC_PRSSTAT_DLA MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Data Line Active -#define SDHC_PRSSTAT_CDIHB MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Command Inhibit (DAT) -#define SDHC_PRSSTAT_CIHB MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Inhibit (CMD) +#define SDHC_PRSSTAT_DLSL_MASK \ + MAKE_REG_MASK(0xFF, 24) //((uint32_t)0xFF000000) // DAT Line Signal Level +#define SDHC_PRSSTAT_CLSL \ + MAKE_REG_MASK(0x1, 23) //((uint32_t)0x00800000) // CMD Line Signal Level +#define SDHC_PRSSTAT_WPSPL MAKE_REG_MASK(0x1, 19) // +#define SDHC_PRSSTAT_CDPL MAKE_REG_MASK(0x1, 18) // +#define SDHC_PRSSTAT_CINS \ + MAKE_REG_MASK(0x1, 16) //((uint32_t)0x00010000) // Card Inserted +#define SDHC_PRSSTAT_TSCD MAKE_REG_MASK(0x1, 15) +#define SDHC_PRSSTAT_RTR MAKE_REG_MASK(0x1, 12) +#define SDHC_PRSSTAT_BREN \ + MAKE_REG_MASK(0x1, 11) //((uint32_t)0x00000800) // Buffer Read Enable +#define SDHC_PRSSTAT_BWEN \ + MAKE_REG_MASK(0x1, 10) //((uint32_t)0x00000400) // Buffer Write Enable +#define SDHC_PRSSTAT_RTA \ + MAKE_REG_MASK(0x1, 9) //((uint32_t)0x00000200) // Read Transfer Active +#define SDHC_PRSSTAT_WTA \ + MAKE_REG_MASK(0x1, 8) //((uint32_t)0x00000100) // Write Transfer Active +#define SDHC_PRSSTAT_SDOFF \ + MAKE_REG_MASK( \ + 0x1, 7) //((uint32_t)0x00000080) // SD Clock Gated Off Internally +#define SDHC_PRSSTAT_PEROFF \ + MAKE_REG_MASK( \ + 0x1, 6) //((uint32_t)0x00000040) // SDHC clock Gated Off Internally +#define SDHC_PRSSTAT_HCKOFF \ + MAKE_REG_MASK( \ + 0x1, 5) //((uint32_t)0x00000020) // System Clock Gated Off Internally +#define SDHC_PRSSTAT_IPGOFF \ + MAKE_REG_MASK( \ + 0x1, 4) //((uint32_t)0x00000010) // Bus Clock Gated Off Internally +#define SDHC_PRSSTAT_SDSTB \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // SD Clock Stable +#define SDHC_PRSSTAT_DLA \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Data Line Active +#define SDHC_PRSSTAT_CDIHB \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Command Inhibit (DAT) +#define SDHC_PRSSTAT_CIHB \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Command Inhibit (CMD) -#define SDHC_PROTCT_NONEXACT_BLKRD MAKE_REG_MASK(0x1,30) // -#define SDHC_PROTCT_BURST_LENEN(n) MAKE_REG_SET(n,0x7,12) // -#define SDHC_PROCTL_WECRM MAKE_REG_MASK(0x1,26) //((uint32_t)0x04000000) // Wakeup Event Enable On SD Card Removal -#define SDHC_PROCTL_WECINS MAKE_REG_MASK(0x1,25) //((uint32_t)0x02000000) // Wakeup Event Enable On SD Card Insertion -#define SDHC_PROCTL_WECINT MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Wakeup Event Enable On Card Interrupt -#define SDHC_PROCTL_RD_DONE_NOBLK MAKE_REG_MASK(0x1,20) // -#define SDHC_PROCTL_IABG MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Interrupt At Block Gap -#define SDHC_PROCTL_RWCTL MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Read Wait Control -#define SDHC_PROCTL_CREQ MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Continue Request -#define SDHC_PROCTL_SABGREQ MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Stop At Block Gap Request -#define SDHC_PROCTL_DMAS(n) MAKE_REG_SET(n,0x3,8) //(uint32_t)(((n) & 0x3)<<8) // DMA Select -#define SDHC_PROCTL_CDSS MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Detect Signal Selection -#define SDHC_PROCTL_CDTL MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Detect Test Level -#define SDHC_PROCTL_EMODE(n) MAKE_REG_SET(n,0x3,4) //(uint32_t)(((n) & 0x3)<<4) // Endian Mode -#define SDHC_PROCTL_EMODE_MASK MAKE_REG_MASK(0x3,4) //(uint32_t)((0x3)<<4) // Endian Mode -#define SDHC_PROCTL_D3CD MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DAT3 As Card Detection Pin -#define SDHC_PROCTL_DTW(n) MAKE_REG_SET(n,0x3,1) //(uint32_t)(((n) & 0x3)<<1) // Data Transfer Width, 0=1bit, 1=4bit, 2=8bit -#define SDHC_PROCTL_DTW_MASK MAKE_REG_MASK(0x3,1) //((uint32_t)0x00000006) -#define SDHC_PROCTL_LCTL MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // LED Control +#define SDHC_PROTCT_NONEXACT_BLKRD MAKE_REG_MASK(0x1, 30) // +#define SDHC_PROTCT_BURST_LENEN(n) MAKE_REG_SET(n, 0x7, 12) // +#define SDHC_PROCTL_WECRM \ + MAKE_REG_MASK(0x1, 26) //((uint32_t)0x04000000) // Wakeup Event Enable On + // SD Card Removal +#define SDHC_PROCTL_WECINS \ + MAKE_REG_MASK(0x1, 25) //((uint32_t)0x02000000) // Wakeup Event Enable On + // SD Card Insertion +#define SDHC_PROCTL_WECINT \ + MAKE_REG_MASK(0x1, 24) //((uint32_t)0x01000000) // Wakeup Event Enable On + // Card Interrupt +#define SDHC_PROCTL_RD_DONE_NOBLK MAKE_REG_MASK(0x1, 20) // +#define SDHC_PROCTL_IABG \ + MAKE_REG_MASK(0x1, 19) //((uint32_t)0x00080000) // Interrupt At Block Gap +#define SDHC_PROCTL_RWCTL \ + MAKE_REG_MASK(0x1, 18) //((uint32_t)0x00040000) // Read Wait Control +#define SDHC_PROCTL_CREQ \ + MAKE_REG_MASK(0x1, 17) //((uint32_t)0x00020000) // Continue Request +#define SDHC_PROCTL_SABGREQ \ + MAKE_REG_MASK(0x1, \ + 16) //((uint32_t)0x00010000) // Stop At Block Gap Request +#define SDHC_PROCTL_DMAS(n) \ + MAKE_REG_SET(n, 0x3, 8) //(uint32_t)(((n) & 0x3)<<8) // DMA Select +#define SDHC_PROCTL_CDSS \ + MAKE_REG_MASK(0x1, \ + 7) //((uint32_t)0x00000080) // Card Detect Signal Selection +#define SDHC_PROCTL_CDTL \ + MAKE_REG_MASK(0x1, 6) //((uint32_t)0x00000040) // Card Detect Test Level +#define SDHC_PROCTL_EMODE(n) \ + MAKE_REG_SET(n, 0x3, 4) //(uint32_t)(((n) & 0x3)<<4) // Endian Mode +#define SDHC_PROCTL_EMODE_MASK \ + MAKE_REG_MASK(0x3, 4) //(uint32_t)((0x3)<<4) // Endian Mode +#define SDHC_PROCTL_D3CD \ + MAKE_REG_MASK(0x1, \ + 3) //((uint32_t)0x00000008) // DAT3 As Card Detection Pin +#define SDHC_PROCTL_DTW(n) \ + MAKE_REG_SET(n, 0x3, 1) //(uint32_t)(((n) & 0x3)<<1) // Data Transfer Width, + // 0=1bit, 1=4bit, 2=8bit +#define SDHC_PROCTL_DTW_MASK MAKE_REG_MASK(0x3, 1) //((uint32_t)0x00000006) +#define SDHC_PROCTL_LCTL \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // LED Control -#define SDHC_SYSCTL_RSTT MAKE_REG_MASK(0x1,28) // -#define SDHC_SYSCTL_INITA MAKE_REG_MASK(0x1,27) //((uint32_t)0x08000000) // Initialization Active -#define SDHC_SYSCTL_RSTD MAKE_REG_MASK(0x1,26) //((uint32_t)0x04000000) // Software Reset For DAT Line -#define SDHC_SYSCTL_RSTC MAKE_REG_MASK(0x1,25) //((uint32_t)0x02000000) // Software Reset For CMD Line -#define SDHC_SYSCTL_RSTA MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Software Reset For ALL -#define SDHC_SYSCTL_DTOCV(n) MAKE_REG_SET(n,0xF,16) //(uint32_t)(((n) & 0xF)<<16) // Data Timeout Counter Value -#define SDHC_SYSCTL_DTOCV_MASK MAKE_REG_MASK(0xF,16) //((uint32_t)0x000F0000) -#define SDHC_SYSCTL_SDCLKFS(n) MAKE_REG_SET(n,0xFF,8) //(uint32_t)(((n) & 0xFF)<<8) // SDCLK Frequency Select -#define SDHC_SYSCTL_SDCLKFS_MASK MAKE_REG_MASK(0xFF,8) //((uint32_t)0x0000FF00) -#define SDHC_SYSCTL_DVS(n) MAKE_REG_SET(n,0xF,4) //(uint32_t)(((n) & 0xF)<<4) // Divisor -#define SDHC_SYSCTL_DVS_MASK MAKE_REG_MASK(0xF,4) //((uint32_t)0x000000F0) +#define SDHC_SYSCTL_RSTT MAKE_REG_MASK(0x1, 28) // +#define SDHC_SYSCTL_INITA \ + MAKE_REG_MASK(0x1, 27) //((uint32_t)0x08000000) // Initialization Active +#define SDHC_SYSCTL_RSTD \ + MAKE_REG_MASK( \ + 0x1, 26) //((uint32_t)0x04000000) // Software Reset For DAT Line +#define SDHC_SYSCTL_RSTC \ + MAKE_REG_MASK( \ + 0x1, 25) //((uint32_t)0x02000000) // Software Reset For CMD Line +#define SDHC_SYSCTL_RSTA \ + MAKE_REG_MASK(0x1, 24) //((uint32_t)0x01000000) // Software Reset For ALL +#define SDHC_SYSCTL_DTOCV(n) \ + MAKE_REG_SET( \ + n, 0xF, \ + 16) //(uint32_t)(((n) & 0xF)<<16) // Data Timeout Counter Value +#define SDHC_SYSCTL_DTOCV_MASK MAKE_REG_MASK(0xF, 16) //((uint32_t)0x000F0000) +#define SDHC_SYSCTL_SDCLKFS(n) \ + MAKE_REG_SET(n, 0xFF, \ + 8) //(uint32_t)(((n) & 0xFF)<<8) // SDCLK Frequency Select +#define SDHC_SYSCTL_SDCLKFS_MASK \ + MAKE_REG_MASK(0xFF, 8) //((uint32_t)0x0000FF00) +#define SDHC_SYSCTL_DVS(n) \ + MAKE_REG_SET(n, 0xF, 4) //(uint32_t)(((n) & 0xF)<<4) // Divisor +#define SDHC_SYSCTL_DVS_MASK MAKE_REG_MASK(0xF, 4) //((uint32_t)0x000000F0) -#define SDHC_SYSCTL_SDCLKEN ((uint32_t)0x00000008) // SD Clock Enable -#define SDHC_SYSCTL_PEREN ((uint32_t)0x00000004) // Peripheral Clock Enable -#define SDHC_SYSCTL_HCKEN ((uint32_t)0x00000002) // System Clock Enable -#define SDHC_SYSCTL_IPGEN ((uint32_t)0x00000001) // IPG Clock Enable +#define SDHC_SYSCTL_SDCLKEN ((uint32_t)0x00000008) // SD Clock Enable +#define SDHC_SYSCTL_PEREN ((uint32_t)0x00000004) // Peripheral Clock Enable +#define SDHC_SYSCTL_HCKEN ((uint32_t)0x00000002) // System Clock Enable +#define SDHC_SYSCTL_IPGEN ((uint32_t)0x00000001) // IPG Clock Enable -#define SDHC_IRQSTAT_DMAE MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // DMA Error -#define SDHC_IRQSTAT_TNE MAKE_REG_MASK(0x1,26) // -#define SDHC_IRQSTAT_AC12E MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Auto CMD12 Error -#define SDHC_IRQSTAT_DEBE MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Data End Bit Error -#define SDHC_IRQSTAT_DCE MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data CRC Error -#define SDHC_IRQSTAT_DTOE MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Data Timeout Error -#define SDHC_IRQSTAT_CIE MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command Index Error -#define SDHC_IRQSTAT_CEBE MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Command End Bit Error -#define SDHC_IRQSTAT_CCE MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Command CRC Error -#define SDHC_IRQSTAT_CTOE MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Command Timeout Error -#define SDHC_IRQSTAT_TP MAKE_REG_MASK(0x1,14) // -#define SDHC_IRQSTAT_RTE MAKE_REG_MASK(0x1,12) // -#define SDHC_IRQSTAT_CINT MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Card Interrupt -#define SDHC_IRQSTAT_CRM MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Removal -#define SDHC_IRQSTAT_CINS MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Insertion -#define SDHC_IRQSTAT_BRR MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Buffer Read Ready -#define SDHC_IRQSTAT_BWR MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Buffer Write Ready -#define SDHC_IRQSTAT_DINT MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DMA Interrupt -#define SDHC_IRQSTAT_BGE MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Block Gap Event -#define SDHC_IRQSTAT_TC MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Transfer Complete -#define SDHC_IRQSTAT_CC MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Complete +#define SDHC_IRQSTAT_DMAE \ + MAKE_REG_MASK(0x1, 28) //((uint32_t)0x10000000) // DMA Error +#define SDHC_IRQSTAT_TNE MAKE_REG_MASK(0x1, 26) // +#define SDHC_IRQSTAT_AC12E \ + MAKE_REG_MASK(0x1, 24) //((uint32_t)0x01000000) // Auto CMD12 Error +#define SDHC_IRQSTAT_DEBE \ + MAKE_REG_MASK(0x1, 22) //((uint32_t)0x00400000) // Data End Bit Error +#define SDHC_IRQSTAT_DCE \ + MAKE_REG_MASK(0x1, 21) //((uint32_t)0x00200000) // Data CRC Error +#define SDHC_IRQSTAT_DTOE \ + MAKE_REG_MASK(0x1, 20) //((uint32_t)0x00100000) // Data Timeout Error +#define SDHC_IRQSTAT_CIE \ + MAKE_REG_MASK(0x1, 19) //((uint32_t)0x00080000) // Command Index Error +#define SDHC_IRQSTAT_CEBE \ + MAKE_REG_MASK(0x1, 18) //((uint32_t)0x00040000) // Command End Bit Error +#define SDHC_IRQSTAT_CCE \ + MAKE_REG_MASK(0x1, 17) //((uint32_t)0x00020000) // Command CRC Error +#define SDHC_IRQSTAT_CTOE \ + MAKE_REG_MASK(0x1, 16) //((uint32_t)0x00010000) // Command Timeout Error +#define SDHC_IRQSTAT_TP MAKE_REG_MASK(0x1, 14) // +#define SDHC_IRQSTAT_RTE MAKE_REG_MASK(0x1, 12) // +#define SDHC_IRQSTAT_CINT \ + MAKE_REG_MASK(0x1, 8) //((uint32_t)0x00000100) // Card Interrupt +#define SDHC_IRQSTAT_CRM \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // Card Removal +#define SDHC_IRQSTAT_CINS \ + MAKE_REG_MASK(0x1, 6) //((uint32_t)0x00000040) // Card Insertion +#define SDHC_IRQSTAT_BRR \ + MAKE_REG_MASK(0x1, 5) //((uint32_t)0x00000020) // Buffer Read Ready +#define SDHC_IRQSTAT_BWR \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Buffer Write Ready +#define SDHC_IRQSTAT_DINT \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // DMA Interrupt +#define SDHC_IRQSTAT_BGE \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Block Gap Event +#define SDHC_IRQSTAT_TC \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Transfer Complete +#define SDHC_IRQSTAT_CC \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Command Complete -#define SDHC_IRQSTATEN_DMAESEN MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // DMA Error Status Enable -#define SDHC_IRQSTATEN_TNESEN MAKE_REG_MASK(0x1,26) // -#define SDHC_IRQSTATEN_AC12ESEN MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Auto CMD12 Error Status Enable -#define SDHC_IRQSTATEN_DEBESEN MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Data End Bit Error Status Enable -#define SDHC_IRQSTATEN_DCESEN MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data CRC Error Status Enable -#define SDHC_IRQSTATEN_DTOESEN MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Data Timeout Error Status Enable -#define SDHC_IRQSTATEN_CIESEN MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command Index Error Status Enable -#define SDHC_IRQSTATEN_CEBESEN MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Command End Bit Error Status Enable -#define SDHC_IRQSTATEN_CCESEN MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Command CRC Error Status Enable -#define SDHC_IRQSTATEN_CTOESEN MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Command Timeout Error Status Enable -#define SDHC_IRQSTATEN_TPSEN MAKE_REG_MASK(0x1,14) // -#define SDHC_IRQSTATEN_RTESEN MAKE_REG_MASK(0x1,12) // -#define SDHC_IRQSTATEN_CINTSEN MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Card Interrupt Status Enable -#define SDHC_IRQSTATEN_CRMSEN MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Removal Status Enable -#define SDHC_IRQSTATEN_CINSEN MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Insertion Status Enable -#define SDHC_IRQSTATEN_BRRSEN MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Buffer Read Ready Status Enable -#define SDHC_IRQSTATEN_BWRSEN MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Buffer Write Ready Status Enable -#define SDHC_IRQSTATEN_DINTSEN MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DMA Interrupt Status Enable -#define SDHC_IRQSTATEN_BGESEN MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Block Gap Event Status Enable -#define SDHC_IRQSTATEN_TCSEN MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Transfer Complete Status Enable -#define SDHC_IRQSTATEN_CCSEN MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Complete Status Enable +#define SDHC_IRQSTATEN_DMAESEN \ + MAKE_REG_MASK(0x1, 28) //((uint32_t)0x10000000) // DMA Error Status Enable +#define SDHC_IRQSTATEN_TNESEN MAKE_REG_MASK(0x1, 26) // +#define SDHC_IRQSTATEN_AC12ESEN \ + MAKE_REG_MASK( \ + 0x1, 24) //((uint32_t)0x01000000) // Auto CMD12 Error Status Enable +#define SDHC_IRQSTATEN_DEBESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 22) //((uint32_t)0x00400000) // Data End Bit Error Status Enable +#define SDHC_IRQSTATEN_DCESEN \ + MAKE_REG_MASK( \ + 0x1, 21) //((uint32_t)0x00200000) // Data CRC Error Status Enable +#define SDHC_IRQSTATEN_DTOESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 20) //((uint32_t)0x00100000) // Data Timeout Error Status Enable +#define SDHC_IRQSTATEN_CIESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 19) //((uint32_t)0x00080000) // Command Index Error Status Enable +#define SDHC_IRQSTATEN_CEBESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 18) //((uint32_t)0x00040000) // Command End Bit Error Status Enable +#define SDHC_IRQSTATEN_CCESEN \ + MAKE_REG_MASK( \ + 0x1, 17) //((uint32_t)0x00020000) // Command CRC Error Status Enable +#define SDHC_IRQSTATEN_CTOESEN \ + MAKE_REG_MASK( \ + 0x1, \ + 16) //((uint32_t)0x00010000) // Command Timeout Error Status Enable +#define SDHC_IRQSTATEN_TPSEN MAKE_REG_MASK(0x1, 14) // +#define SDHC_IRQSTATEN_RTESEN MAKE_REG_MASK(0x1, 12) // +#define SDHC_IRQSTATEN_CINTSEN \ + MAKE_REG_MASK(0x1, \ + 8) //((uint32_t)0x00000100) // Card Interrupt Status Enable +#define SDHC_IRQSTATEN_CRMSEN \ + MAKE_REG_MASK(0x1, \ + 7) //((uint32_t)0x00000080) // Card Removal Status Enable +#define SDHC_IRQSTATEN_CINSEN \ + MAKE_REG_MASK(0x1, \ + 6) //((uint32_t)0x00000040) // Card Insertion Status Enable +#define SDHC_IRQSTATEN_BRRSEN \ + MAKE_REG_MASK( \ + 0x1, 5) //((uint32_t)0x00000020) // Buffer Read Ready Status Enable +#define SDHC_IRQSTATEN_BWRSEN \ + MAKE_REG_MASK( \ + 0x1, 4) //((uint32_t)0x00000010) // Buffer Write Ready Status Enable +#define SDHC_IRQSTATEN_DINTSEN \ + MAKE_REG_MASK(0x1, \ + 3) //((uint32_t)0x00000008) // DMA Interrupt Status Enable +#define SDHC_IRQSTATEN_BGESEN \ + MAKE_REG_MASK( \ + 0x1, 2) //((uint32_t)0x00000004) // Block Gap Event Status Enable +#define SDHC_IRQSTATEN_TCSEN \ + MAKE_REG_MASK( \ + 0x1, 1) //((uint32_t)0x00000002) // Transfer Complete Status Enable +#define SDHC_IRQSTATEN_CCSEN \ + MAKE_REG_MASK( \ + 0x1, 0) //((uint32_t)0x00000001) // Command Complete Status Enable -#define SDHC_IRQSIGEN_DMAEIEN MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // DMA Error Interrupt Enable -#define SDHC_IRQSIGEN_TNEIEN MAKE_REG_MASK(0x1,26) // -#define SDHC_IRQSIGEN_AC12EIEN MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Auto CMD12 Error Interrupt Enable -#define SDHC_IRQSIGEN_DEBEIEN MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Data End Bit Error Interrupt Enable -#define SDHC_IRQSIGEN_DCEIEN MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data CRC Error Interrupt Enable -#define SDHC_IRQSIGEN_DTOEIEN MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Data Timeout Error Interrupt Enable -#define SDHC_IRQSIGEN_CIEIEN MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command Index Error Interrupt Enable -#define SDHC_IRQSIGEN_CEBEIEN MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Command End Bit Error Interrupt Enable -#define SDHC_IRQSIGEN_CCEIEN MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Command CRC Error Interrupt Enable -#define SDHC_IRQSIGEN_CTOEIEN MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Command Timeout Error Interrupt Enable -#define SDHC_IRQSIGEN_TPIEN MAKE_REG_MASK(0x1,14) // -#define SDHC_IRQSIGEN_RTEIEN MAKE_REG_MASK(0x1,12) // -#define SDHC_IRQSIGEN_CINTIEN MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Card Interrupt Interrupt Enable -#define SDHC_IRQSIGEN_CRMIEN MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Removal Interrupt Enable -#define SDHC_IRQSIGEN_CINSIEN MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Insertion Interrupt Enable -#define SDHC_IRQSIGEN_BRRIEN MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Buffer Read Ready Interrupt Enable -#define SDHC_IRQSIGEN_BWRIEN MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Buffer Write Ready Interrupt Enable -#define SDHC_IRQSIGEN_DINTIEN MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DMA Interrupt Interrupt Enable -#define SDHC_IRQSIGEN_BGEIEN MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Block Gap Event Interrupt Enable -#define SDHC_IRQSIGEN_TCIEN MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Transfer Complete Interrupt Enable -#define SDHC_IRQSIGEN_CCIEN MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Complete Interrupt Enable +#define SDHC_IRQSIGEN_DMAEIEN \ + MAKE_REG_MASK(0x1, \ + 28) //((uint32_t)0x10000000) // DMA Error Interrupt Enable +#define SDHC_IRQSIGEN_TNEIEN MAKE_REG_MASK(0x1, 26) // +#define SDHC_IRQSIGEN_AC12EIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 24) //((uint32_t)0x01000000) // Auto CMD12 Error Interrupt Enable +#define SDHC_IRQSIGEN_DEBEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 22) //((uint32_t)0x00400000) // Data End Bit Error Interrupt Enable +#define SDHC_IRQSIGEN_DCEIEN \ + MAKE_REG_MASK( \ + 0x1, 21) //((uint32_t)0x00200000) // Data CRC Error Interrupt Enable +#define SDHC_IRQSIGEN_DTOEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 20) //((uint32_t)0x00100000) // Data Timeout Error Interrupt Enable +#define SDHC_IRQSIGEN_CIEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 19) //((uint32_t)0x00080000) // Command Index Error Interrupt Enable +#define SDHC_IRQSIGEN_CEBEIEN \ + MAKE_REG_MASK(0x1, 18) //((uint32_t)0x00040000) // Command End Bit Error + // Interrupt Enable +#define SDHC_IRQSIGEN_CCEIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 17) //((uint32_t)0x00020000) // Command CRC Error Interrupt Enable +#define SDHC_IRQSIGEN_CTOEIEN \ + MAKE_REG_MASK(0x1, 16) //((uint32_t)0x00010000) // Command Timeout Error + // Interrupt Enable +#define SDHC_IRQSIGEN_TPIEN MAKE_REG_MASK(0x1, 14) // +#define SDHC_IRQSIGEN_RTEIEN MAKE_REG_MASK(0x1, 12) // +#define SDHC_IRQSIGEN_CINTIEN \ + MAKE_REG_MASK( \ + 0x1, 8) //((uint32_t)0x00000100) // Card Interrupt Interrupt Enable +#define SDHC_IRQSIGEN_CRMIEN \ + MAKE_REG_MASK( \ + 0x1, 7) //((uint32_t)0x00000080) // Card Removal Interrupt Enable +#define SDHC_IRQSIGEN_CINSIEN \ + MAKE_REG_MASK( \ + 0x1, 6) //((uint32_t)0x00000040) // Card Insertion Interrupt Enable +#define SDHC_IRQSIGEN_BRRIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 5) //((uint32_t)0x00000020) // Buffer Read Ready Interrupt Enable +#define SDHC_IRQSIGEN_BWRIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 4) //((uint32_t)0x00000010) // Buffer Write Ready Interrupt Enable +#define SDHC_IRQSIGEN_DINTIEN \ + MAKE_REG_MASK( \ + 0x1, 3) //((uint32_t)0x00000008) // DMA Interrupt Interrupt Enable +#define SDHC_IRQSIGEN_BGEIEN \ + MAKE_REG_MASK( \ + 0x1, 2) //((uint32_t)0x00000004) // Block Gap Event Interrupt Enable +#define SDHC_IRQSIGEN_TCIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 1) //((uint32_t)0x00000002) // Transfer Complete Interrupt Enable +#define SDHC_IRQSIGEN_CCIEN \ + MAKE_REG_MASK( \ + 0x1, \ + 0) //((uint32_t)0x00000001) // Command Complete Interrupt Enable -#define SDHC_AC12ERR_SMPLCLK_SEL MAKE_REG_MASK(0x1,23) // -#define SDHC_AC12ERR_EXEC_TUNING MAKE_REG_MASK(0x1,22) // -#define SDHC_AC12ERR_CNIBAC12E MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Command Not Issued By Auto CMD12 Error -#define SDHC_AC12ERR_AC12IE MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Auto CMD12 Index Error -#define SDHC_AC12ERR_AC12CE MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // Auto CMD12 CRC Error -#define SDHC_AC12ERR_AC12EBE MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Auto CMD12 End Bit Error -#define SDHC_AC12ERR_AC12TOE MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Auto CMD12 Timeout Error -#define SDHC_AC12ERR_AC12NE MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Auto CMD12 Not Executed +#define SDHC_AC12ERR_SMPLCLK_SEL MAKE_REG_MASK(0x1, 23) // +#define SDHC_AC12ERR_EXEC_TUNING MAKE_REG_MASK(0x1, 22) // +#define SDHC_AC12ERR_CNIBAC12E \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // Command Not Issued By + // Auto CMD12 Error +#define SDHC_AC12ERR_AC12IE \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Auto CMD12 Index Error +#define SDHC_AC12ERR_AC12CE \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // Auto CMD12 CRC Error +#define SDHC_AC12ERR_AC12EBE \ + MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) // Auto CMD12 End Bit Error +#define SDHC_AC12ERR_AC12TOE \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Auto CMD12 Timeout Error +#define SDHC_AC12ERR_AC12NE \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Auto CMD12 Not Executed -#define SDHC_HTCAPBLT_VS18 MAKE_REG_MASK(0x1,26) // -#define SDHC_HTCAPBLT_VS30 MAKE_REG_MASK(0x1,25) // -#define SDHC_HTCAPBLT_VS33 MAKE_REG_MASK(0x1,24) // -#define SDHC_HTCAPBLT_SRS MAKE_REG_MASK(0x1,23) // -#define SDHC_HTCAPBLT_DMAS MAKE_REG_MASK(0x1,22) // -#define SDHC_HTCAPBLT_HSS MAKE_REG_MASK(0x1,21) // -#define SDHC_HTCAPBLT_ADMAS MAKE_REG_MASK(0x1,20) // -#define SDHC_HTCAPBLT_MBL_VAL MAKE_REG_GET((USDHC1_HOST_CTRL_CAP),0x7,16) // -#define SDHC_HTCAPBLT_RETUN_MODE MAKE_REG_GET((USDHC1_HOST_CTRL_CAP),0x3,14) // -#define SDHC_HTCAPBLT_TUNE_SDR50 MAKE_REG_MASK(0x1,13) // -#define SDHC_HTCAPBLT_TIME_RETUN(n) MAKE_REG_SET(n,0xF,8) // +#define SDHC_HTCAPBLT_VS18 MAKE_REG_MASK(0x1, 26) // +#define SDHC_HTCAPBLT_VS30 MAKE_REG_MASK(0x1, 25) // +#define SDHC_HTCAPBLT_VS33 MAKE_REG_MASK(0x1, 24) // +#define SDHC_HTCAPBLT_SRS MAKE_REG_MASK(0x1, 23) // +#define SDHC_HTCAPBLT_DMAS MAKE_REG_MASK(0x1, 22) // +#define SDHC_HTCAPBLT_HSS MAKE_REG_MASK(0x1, 21) // +#define SDHC_HTCAPBLT_ADMAS MAKE_REG_MASK(0x1, 20) // +#define SDHC_HTCAPBLT_MBL_VAL MAKE_REG_GET((USDHC1_HOST_CTRL_CAP), 0x7, 16) // +#define SDHC_HTCAPBLT_RETUN_MODE \ + MAKE_REG_GET((USDHC1_HOST_CTRL_CAP), 0x3, 14) // +#define SDHC_HTCAPBLT_TUNE_SDR50 MAKE_REG_MASK(0x1, 13) // +#define SDHC_HTCAPBLT_TIME_RETUN(n) MAKE_REG_SET(n, 0xF, 8) // -#define SDHC_WML_WR_BRSTLEN_MASK MAKE_REG_MASK(0x1F,24) // -#define SDHC_WML_RD_BRSTLEN_MASK MAKE_REG_MASK(0x1F,8) // -#define SDHC_WML_WR_WML_MASK MAKE_REG_MASK(0xFF,16) // -#define SDHC_WML_RD_WML_MASK MAKE_REG_MASK(0xFF,0) // -#define SDHC_WML_WR_BRSTLEN(n) MAKE_REG_SET(n,0x1F,24) //(uint32_t)(((n) & 0x7F)<<16) // Write Burst Len -#define SDHC_WML_RD_BRSTLEN(n) MAKE_REG_SET(n,0x1F,8) //(uint32_t)(((n) & 0x7F)<<0) // Read Burst Len -#define SDHC_WML_WR_WML(n) MAKE_REG_SET(n,0xFF,16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level -#define SDHC_WML_RD_WML(n) MAKE_REG_SET(n,0xFF,0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level -#define SDHC_WML_WRWML(n) MAKE_REG_SET(n,0xFF,16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level -#define SDHC_WML_RDWML(n) MAKE_REG_SET(n,0xFF,0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level +#define SDHC_WML_WR_BRSTLEN_MASK MAKE_REG_MASK(0x1F, 24) // +#define SDHC_WML_RD_BRSTLEN_MASK MAKE_REG_MASK(0x1F, 8) // +#define SDHC_WML_WR_WML_MASK MAKE_REG_MASK(0xFF, 16) // +#define SDHC_WML_RD_WML_MASK MAKE_REG_MASK(0xFF, 0) // +#define SDHC_WML_WR_BRSTLEN(n) \ + MAKE_REG_SET(n, 0x1F, 24) //(uint32_t)(((n) & 0x7F)<<16) // Write Burst Len +#define SDHC_WML_RD_BRSTLEN(n) \ + MAKE_REG_SET(n, 0x1F, 8) //(uint32_t)(((n) & 0x7F)<<0) // Read Burst Len +#define SDHC_WML_WR_WML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level +#define SDHC_WML_RD_WML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level +#define SDHC_WML_WRWML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level +#define SDHC_WML_RDWML(n) \ + MAKE_REG_SET(n, 0xFF, \ + 0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level // Teensy 4.0 only -#define SDHC_MIX_CTRL_DMAEN MAKE_REG_MASK(0x1,0) // -#define SDHC_MIX_CTRL_BCEN MAKE_REG_MASK(0x1,1) // -#define SDHC_MIX_CTRL_AC12EN MAKE_REG_MASK(0x1,2) // -#define SDHC_MIX_CTRL_DDR_EN MAKE_REG_MASK(0x1,3) // -#define SDHC_MIX_CTRL_DTDSEL MAKE_REG_MASK(0x1,4) // -#define SDHC_MIX_CTRL_MSBSEL MAKE_REG_MASK(0x1,5) // -#define SDHC_MIX_CTRL_NIBBLE_POS MAKE_REG_MASK(0x1,6) // -#define SDHC_MIX_CTRL_AC23EN MAKE_REG_MASK(0x1,7) // +#define SDHC_MIX_CTRL_DMAEN MAKE_REG_MASK(0x1, 0) // +#define SDHC_MIX_CTRL_BCEN MAKE_REG_MASK(0x1, 1) // +#define SDHC_MIX_CTRL_AC12EN MAKE_REG_MASK(0x1, 2) // +#define SDHC_MIX_CTRL_DDR_EN MAKE_REG_MASK(0x1, 3) // +#define SDHC_MIX_CTRL_DTDSEL MAKE_REG_MASK(0x1, 4) // +#define SDHC_MIX_CTRL_MSBSEL MAKE_REG_MASK(0x1, 5) // +#define SDHC_MIX_CTRL_NIBBLE_POS MAKE_REG_MASK(0x1, 6) // +#define SDHC_MIX_CTRL_AC23EN MAKE_REG_MASK(0x1, 7) // -#define SDHC_FEVT_CINT MAKE_REG_MASK(0x1,31) //((uint32_t)0x80000000) // Force Event Card Interrupt -#define SDHC_FEVT_DMAE MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // Force Event DMA Error -#define SDHC_FEVT_AC12E MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Force Event Auto CMD12 Error -#define SDHC_FEVT_DEBE MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Force Event Data End Bit Error -#define SDHC_FEVT_DCE MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Force Event Data CRC Error -#define SDHC_FEVT_DTOE MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Force Event Data Timeout Error -#define SDHC_FEVT_CIE MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Force Event Command Index Error -#define SDHC_FEVT_CEBE MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Force Event Command End Bit Error -#define SDHC_FEVT_CCE MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Force Event Command CRC Error -#define SDHC_FEVT_CTOE MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Force Event Command Timeout Error -#define SDHC_FEVT_CNIBAC12E MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Force Event Command Not Executed By Auto Command 12 Error -#define SDHC_FEVT_AC12IE MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Force Event Auto Command 12 Index Error -#define SDHC_FEVT_AC12EBE MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // Force Event Auto Command 12 End Bit Error -#define SDHC_FEVT_AC12CE MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Force Event Auto Command 12 CRC Error -#define SDHC_FEVT_AC12TOE MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Force Event Auto Command 12 Time Out Error -#define SDHC_FEVT_AC12NE MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Force Event Auto Command 12 Not Executed +#define SDHC_FEVT_CINT \ + MAKE_REG_MASK(0x1, \ + 31) //((uint32_t)0x80000000) // Force Event Card Interrupt +#define SDHC_FEVT_DMAE \ + MAKE_REG_MASK(0x1, 28) //((uint32_t)0x10000000) // Force Event DMA Error +#define SDHC_FEVT_AC12E \ + MAKE_REG_MASK( \ + 0x1, 24) //((uint32_t)0x01000000) // Force Event Auto CMD12 Error +#define SDHC_FEVT_DEBE \ + MAKE_REG_MASK( \ + 0x1, 22) //((uint32_t)0x00400000) // Force Event Data End Bit Error +#define SDHC_FEVT_DCE \ + MAKE_REG_MASK(0x1, \ + 21) //((uint32_t)0x00200000) // Force Event Data CRC Error +#define SDHC_FEVT_DTOE \ + MAKE_REG_MASK( \ + 0x1, 20) //((uint32_t)0x00100000) // Force Event Data Timeout Error +#define SDHC_FEVT_CIE \ + MAKE_REG_MASK( \ + 0x1, 19) //((uint32_t)0x00080000) // Force Event Command Index Error +#define SDHC_FEVT_CEBE \ + MAKE_REG_MASK( \ + 0x1, \ + 18) //((uint32_t)0x00040000) // Force Event Command End Bit Error +#define SDHC_FEVT_CCE \ + MAKE_REG_MASK( \ + 0x1, 17) //((uint32_t)0x00020000) // Force Event Command CRC Error +#define SDHC_FEVT_CTOE \ + MAKE_REG_MASK( \ + 0x1, \ + 16) //((uint32_t)0x00010000) // Force Event Command Timeout Error +#define SDHC_FEVT_CNIBAC12E \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // Force Event Command Not + // Executed By Auto Command 12 Error +#define SDHC_FEVT_AC12IE \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Force Event Auto Command + // 12 Index Error +#define SDHC_FEVT_AC12EBE \ + MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) // Force Event Auto Command + // 12 End Bit Error +#define SDHC_FEVT_AC12CE \ + MAKE_REG_MASK( \ + 0x1, \ + 2) //((uint32_t)0x00000004) // Force Event Auto Command 12 CRC Error +#define SDHC_FEVT_AC12TOE \ + MAKE_REG_MASK(0x1, 1) //((uint32_t)0x00000002) // Force Event Auto Command + // 12 Time Out Error +#define SDHC_FEVT_AC12NE \ + MAKE_REG_MASK(0x1, 0) //((uint32_t)0x00000001) // Force Event Auto Command + // 12 Not Executed -#define SDHC_ADMAES_ADMADCE MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) -#define SDHC_ADMAES_ADMALME MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) -#define SDHC_ADMAES_ADMAES_MASK MAKE_REG_MASK(0x3,0) //((uint32_t)0x00000003) +#define SDHC_ADMAES_ADMADCE MAKE_REG_MASK(0x1, 3) //((uint32_t)0x00000008) +#define SDHC_ADMAES_ADMALME MAKE_REG_MASK(0x1, 2) //((uint32_t)0x00000004) +#define SDHC_ADMAES_ADMAES_MASK MAKE_REG_MASK(0x3, 0) //((uint32_t)0x00000003) -#define SDHC_MMCBOOT_BOOTBLKCNT(n) MAKE_REG_MASK(0xFF,16) //(uint32_t)(((n) & 0xFFF)<<16) // stop at block gap value of automatic mode -#define SDHC_MMCBOOT_AUTOSABGEN MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // enable auto stop at block gap function -#define SDHC_MMCBOOT_BOOTEN MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Boot Mode Enable -#define SDHC_MMCBOOT_BOOTMODE MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Boot Mode Select -#define SDHC_MMCBOOT_BOOTACK MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Boot Ack Mode Select -#define SDHC_MMCBOOT_DTOCVACK(n) MAKE_REG_MASK(0xF,0) //(uint32_t)(((n) & 0xF)<<0) // Boot ACK Time Out Counter Value -//#define SDHC_HOSTVER (*(volatile uint32_t*)0x400B10FC) // Host Controller Version +#define SDHC_MMCBOOT_BOOTBLKCNT(n) \ + MAKE_REG_MASK(0xFF, 16) //(uint32_t)(((n) & 0xFFF)<<16) // stop at block gap + // value of automatic mode +#define SDHC_MMCBOOT_AUTOSABGEN \ + MAKE_REG_MASK(0x1, 7) //((uint32_t)0x00000080) // enable auto stop at + // block gap function +#define SDHC_MMCBOOT_BOOTEN \ + MAKE_REG_MASK(0x1, 6) //((uint32_t)0x00000040) // Boot Mode Enable +#define SDHC_MMCBOOT_BOOTMODE \ + MAKE_REG_MASK(0x1, 5) //((uint32_t)0x00000020) // Boot Mode Select +#define SDHC_MMCBOOT_BOOTACK \ + MAKE_REG_MASK(0x1, 4) //((uint32_t)0x00000010) // Boot Ack Mode Select +#define SDHC_MMCBOOT_DTOCVACK(n) \ + MAKE_REG_MASK( \ + 0xF, \ + 0) //(uint32_t)(((n) & 0xF)<<0) // Boot ACK Time Out Counter Value +// #define SDHC_HOSTVER (*(volatile uint32_t*)0x400B10FC) // Host Controller +// Version #define CCM_ANALOG_PFD_528_PFD0_FRAC_MASK 0x3f -#define CCM_ANALOG_PFD_528_PFD0_FRAC(n) ((n) & CCM_ANALOG_PFD_528_PFD0_FRAC_MASK) -#define CCM_ANALOG_PFD_528_PFD1_FRAC_MASK (0x3f<<8) -#define CCM_ANALOG_PFD_528_PFD1_FRAC(n) (((n)<<8) & CCM_ANALOG_PFD_528_PFD1_FRAC_MASK) -#define CCM_ANALOG_PFD_528_PFD2_FRAC_MASK (0x3f<<16) -#define CCM_ANALOG_PFD_528_PFD2_FRAC(n) (((n)<<16) & CCM_ANALOG_PFD_528_PFD2_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD0_FRAC(n) ((n)&CCM_ANALOG_PFD_528_PFD0_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD1_FRAC_MASK (0x3f << 8) +#define CCM_ANALOG_PFD_528_PFD1_FRAC(n) \ + (((n) << 8) & CCM_ANALOG_PFD_528_PFD1_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD2_FRAC_MASK (0x3f << 16) +#define CCM_ANALOG_PFD_528_PFD2_FRAC(n) \ + (((n) << 16) & CCM_ANALOG_PFD_528_PFD2_FRAC_MASK) #define CCM_ANALOG_PFD_528_PFD3_FRAC_MASK ((0x3f<<24) -#define CCM_ANALOG_PFD_528_PFD3_FRAC(n) (((n)<<24) & CCM_ANALOG_PFD_528_PFD3_FRAC_MASK) +#define CCM_ANALOG_PFD_528_PFD3_FRAC(n) \ + (((n) << 24) & CCM_ANALOG_PFD_528_PFD3_FRAC_MASK) -#define SDHC_DSADDR (USDHC1_DS_ADDR ) // DMA System Address register -#define SDHC_BLKATTR (USDHC1_BLK_ATT) // Block Attributes register -#define SDHC_CMDARG (USDHC1_CMD_ARG) // Command Argument register -#define SDHC_XFERTYP (USDHC1_CMD_XFR_TYP) // Transfer Type register -#define SDHC_CMDRSP0 (USDHC1_CMD_RSP0) // Command Response 0 -#define SDHC_CMDRSP1 (USDHC1_CMD_RSP1) // Command Response 1 -#define SDHC_CMDRSP2 (USDHC1_CMD_RSP2) // Command Response 2 -#define SDHC_CMDRSP3 (USDHC1_CMD_RSP3) // Command Response 3 -#define SDHC_DATPORT (USDHC1_DATA_BUFF_ACC_PORT) // Buffer Data Port register -#define SDHC_PRSSTAT (USDHC1_PRES_STATE) // Present State register -#define SDHC_PROCTL (USDHC1_PROT_CTRL) // Protocol Control register -#define SDHC_SYSCTL (USDHC1_SYS_CTRL) // System Control register -#define SDHC_IRQSTAT (USDHC1_INT_STATUS) // Interrupt Status register -#define SDHC_IRQSTATEN (USDHC1_INT_STATUS_EN) // Interrupt Status Enable register -#define SDHC_IRQSIGEN (USDHC1_INT_SIGNAL_EN) // Interrupt Signal Enable register -#define SDHC_AC12ERR (USDHC1_AUTOCMD12_ERR_STATUS) // Auto CMD12 Error Status Register -#define SDHC_HTCAPBLT (USDHC1_HOST_CTRL_CAP) // Host Controller Capabilities -#define SDHC_WML (USDHC1_WTMK_LVL) // Watermark Level Register -#define SDHC_MIX_CTRL (USDHC1_MIX_CTRL) // Mixer Control -#define SDHC_FEVT (USDHC1_FORCE_EVENT) // Force Event register -#define SDHC_ADMAES (USDHC1_ADMA_ERR_STATUS) // ADMA Error Status register -#define SDHC_ADSADDR (USDHC1_ADMA_SYS_ADDR) // ADMA System Addressregister -#define SDHC_VENDOR (USDHC1_VEND_SPEC) // Vendor Specific register -#define SDHC_MMCBOOT (USDHC1_MMC_BOOT) // MMC Boot register -#define SDHC_VENDOR2 (USDHC2_VEND_SPEC2) // Vendor Specific2 register +#define SDHC_DSADDR (USDHC1_DS_ADDR) // DMA System Address register +#define SDHC_BLKATTR (USDHC1_BLK_ATT) // Block Attributes register +#define SDHC_CMDARG (USDHC1_CMD_ARG) // Command Argument register +#define SDHC_XFERTYP (USDHC1_CMD_XFR_TYP) // Transfer Type register +#define SDHC_CMDRSP0 (USDHC1_CMD_RSP0) // Command Response 0 +#define SDHC_CMDRSP1 (USDHC1_CMD_RSP1) // Command Response 1 +#define SDHC_CMDRSP2 (USDHC1_CMD_RSP2) // Command Response 2 +#define SDHC_CMDRSP3 (USDHC1_CMD_RSP3) // Command Response 3 +#define SDHC_DATPORT (USDHC1_DATA_BUFF_ACC_PORT) // Buffer Data Port register +#define SDHC_PRSSTAT (USDHC1_PRES_STATE) // Present State register +#define SDHC_PROCTL (USDHC1_PROT_CTRL) // Protocol Control register +#define SDHC_SYSCTL (USDHC1_SYS_CTRL) // System Control register +#define SDHC_IRQSTAT (USDHC1_INT_STATUS) // Interrupt Status register +#define SDHC_IRQSTATEN \ + (USDHC1_INT_STATUS_EN) // Interrupt Status Enable register +#define SDHC_IRQSIGEN \ + (USDHC1_INT_SIGNAL_EN) // Interrupt Signal Enable register +#define SDHC_AC12ERR \ + (USDHC1_AUTOCMD12_ERR_STATUS) // Auto CMD12 Error Status Register +#define SDHC_HTCAPBLT (USDHC1_HOST_CTRL_CAP) // Host Controller Capabilities +#define SDHC_WML (USDHC1_WTMK_LVL) // Watermark Level Register +#define SDHC_MIX_CTRL (USDHC1_MIX_CTRL) // Mixer Control +#define SDHC_FEVT (USDHC1_FORCE_EVENT) // Force Event register +#define SDHC_ADMAES (USDHC1_ADMA_ERR_STATUS) // ADMA Error Status register +#define SDHC_ADSADDR (USDHC1_ADMA_SYS_ADDR) // ADMA System Addressregister +#define SDHC_VENDOR (USDHC1_VEND_SPEC) // Vendor Specific register +#define SDHC_MMCBOOT (USDHC1_MMC_BOOT) // MMC Boot register +#define SDHC_VENDOR2 (USDHC2_VEND_SPEC2) // Vendor Specific2 register // -#define IRQ_SDHC IRQ_SDHC1 +#define IRQ_SDHC IRQ_SDHC1 #define SDHC_MAX_DVS (0xF + 1U) #define SDHC_MAX_CLKFS (0xFF + 1U) #define SDHC_PREV_DVS(x) ((x) -= 1U) #define SDHC_PREV_CLKFS(x, y) ((x) >>= (y)) -#define CCM_CSCDR1_USDHC1_CLK_PODF_MASK (0x7<<11) -#define CCM_CSCDR1_USDHC1_CLK_PODF(n) (((n)&0x7)<<11) +#define CCM_CSCDR1_USDHC1_CLK_PODF_MASK (0x7 << 11) +#define CCM_CSCDR1_USDHC1_CLK_PODF(n) (((n)&0x7) << 11) -#define IOMUXC_SW_PAD_CTL_PAD_SRE ((0x1<)<0) -#define IOMUXC_SW_PAD_CTL_PAD_PKE ((0x1)<<12) -#define IOMUXC_SW_PAD_CTL_PAD_PUE ((0x1)<<13) -#define IOMUXC_SW_PAD_CTL_PAD_HYS ((0x1)<<16) -#define IOMUXC_SW_PAD_CTL_PAD_SPEED(n) (((n)&0x3)<<6) -#define IOMUXC_SW_PAD_CTL_PAD_PUS(n) (((n)&0x3)<<14) -#define IOMUXC_SW_PAD_CTL_PAD_PUS_MASK ((0x3)<<14) -#define IOMUXC_SW_PAD_CTL_PAD_DSE(n) (((n)&0x7)<<3) -#define IOMUXC_SW_PAD_CTL_PAD_DSE_MASK ((0x7)<<3) +#define IOMUXC_SW_PAD_CTL_PAD_SRE ((0x1 <) < 0) +#define IOMUXC_SW_PAD_CTL_PAD_PKE ((0x1) << 12) +#define IOMUXC_SW_PAD_CTL_PAD_PUE ((0x1) << 13) +#define IOMUXC_SW_PAD_CTL_PAD_HYS ((0x1) << 16) +#define IOMUXC_SW_PAD_CTL_PAD_SPEED(n) (((n)&0x3) << 6) +#define IOMUXC_SW_PAD_CTL_PAD_PUS(n) (((n)&0x3) << 14) +#define IOMUXC_SW_PAD_CTL_PAD_PUS_MASK ((0x3) << 14) +#define IOMUXC_SW_PAD_CTL_PAD_DSE(n) (((n)&0x7) << 3) +#define IOMUXC_SW_PAD_CTL_PAD_DSE_MASK ((0x7) << 3) #endif // defined(__IMXRT1062__) #endif // SdioTeensy_h \ No newline at end of file diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdFat.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdFat.h index 49e543a8..d804a613 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdFat.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdFat.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,32 +24,30 @@ */ #ifndef SdFat_h #define SdFat_h +#define DISABLE_FS_H_WARNING 1 /** * \file * \brief main SdFs include file. */ -#include "common/SysCall.h" -#include "SdCard/SdCard.h" #include "ExFatLib/ExFatLib.h" #include "FatLib/FatLib.h" #include "FsLib/FsLib.h" +#include "SdCard/SdCard.h" +#include "common/SysCall.h" #if INCLUDE_SDIOS #include "sdios.h" #endif // INCLUDE_SDIOS - - -namespace sdfat { - - //------------------------------------------------------------------------------ -/** SdFat version */ -#define SD_FAT_VERSION_STR "2.0.2" +/** SdFat version for cpp use. */ +#define SD_FAT_VERSION 20203 +/** SdFat version as string. */ +#define SD_FAT_VERSION_STR "2.2.3" //============================================================================== /** * \class SdBase * \brief base SD file system template class. */ -template +template class SdBase : public Vol { public: //---------------------------------------------------------------------------- @@ -83,7 +81,7 @@ class SdBase : public Vol { * \return true for success or false for failure. */ bool begin(SdSpiConfig spiConfig) { - return cardBegin(spiConfig) && Vol::begin(m_card); + return cardBegin(spiConfig) && volumeBegin(); } //--------------------------------------------------------------------------- /** Initialize SD card and file system for SDIO mode. @@ -92,11 +90,11 @@ class SdBase : public Vol { * \return true for success or false for failure. */ bool begin(SdioConfig sdioConfig) { - return cardBegin(sdioConfig) && Vol::begin(m_card); + return cardBegin(sdioConfig) && volumeBegin(); } //---------------------------------------------------------------------------- /** \return Pointer to SD card object. */ - SdCard* card() {return m_card;} + SdCard* card() { return m_card; } //---------------------------------------------------------------------------- /** Initialize SD card in SPI mode. * @@ -118,6 +116,14 @@ class SdBase : public Vol { return m_card && !m_card->errorCode(); } //---------------------------------------------------------------------------- + /** End use of card. */ + void end() { + Vol::end(); + if (m_card) { + m_card->end(); + } + } + //---------------------------------------------------------------------------- /** %Print error info and halt. * * \param[in] pr Print destination. @@ -131,7 +137,8 @@ class SdBase : public Vol { } else if (!Vol::fatType()) { pr->println(F("Check SD format.")); } - SysCall::halt(); + while (true) { + } } //---------------------------------------------------------------------------- /** %Print error info and halt. @@ -156,13 +163,52 @@ class SdBase : public Vol { errorHalt(pr); } //---------------------------------------------------------------------------- + /** Format SD card + * + * \param[in] pr Print destination. + * \return true for success else false. + */ + bool format(print_t* pr = nullptr) { + Fmt fmt; + uint8_t* mem = Vol::end(); + if (!mem) { + return false; + } + bool switchSpi = hasDedicatedSpi() && !isDedicatedSpi(); + if (switchSpi && !setDedicatedSpi(true)) { + return false; + } + bool rtn = fmt.format(card(), mem, pr); + if (switchSpi && !setDedicatedSpi(false)) { + return false; + } + return rtn; + } + //---------------------------------------------------------------------------- + /** \return the free cluster count. */ + uint32_t freeClusterCount() { + bool switchSpi = hasDedicatedSpi() && !isDedicatedSpi(); + if (switchSpi && !setDedicatedSpi(true)) { + return 0; + } + uint32_t rtn = Vol::freeClusterCount(); + if (switchSpi && !setDedicatedSpi(false)) { + return 0; + } + return rtn; + } + //---------------------------------------------------------------------------- + /** \return true if can be in dedicated SPI state */ + bool hasDedicatedSpi() { return m_card ? m_card->hasDedicatedSpi() : false; } + //---------------------------------------------------------------------------- /** %Print error info and halt. * * \param[in] pr Print destination. */ void initErrorHalt(print_t* pr) { initErrorPrint(pr); - SysCall::halt(); + while (true) { + } } //---------------------------------------------------------------------------- /** %Print error info and halt. @@ -180,7 +226,7 @@ class SdBase : public Vol { * \param[in] pr Print destination. * \param[in] msg Message to print. */ - void initErrorHalt(Print* pr, const __FlashStringHelper* msg) { + void initErrorHalt(print_t* pr, const __FlashStringHelper* msg) { pr->println(msg); initErrorHalt(pr); } @@ -189,7 +235,7 @@ class SdBase : public Vol { * * \param[in] pr Print destination. */ - void initErrorPrint(Print* pr) { + void initErrorPrint(print_t* pr) { pr->println(F("begin() failed")); if (sdErrorCode()) { pr->println(F("Do not reformat the SD.")); @@ -200,6 +246,9 @@ class SdBase : public Vol { errorPrint(pr); } //---------------------------------------------------------------------------- + /** \return true if in dedicated SPI state. */ + bool isDedicatedSpi() { return m_card ? m_card->isDedicatedSpi() : false; } + //---------------------------------------------------------------------------- /** %Print volume FAT/exFAT type. * * \param[in] pr Print destination. @@ -244,7 +293,7 @@ class SdBase : public Vol { * \param[in] pr Print destination. * \param[in] msg Message to print. */ - void errorPrint(Print* pr, const __FlashStringHelper* msg) { + void errorPrint(print_t* pr, const __FlashStringHelper* msg) { pr->print(F("error: ")); pr->println(msg); errorPrint(pr); @@ -265,7 +314,7 @@ class SdBase : public Vol { pr->print(sdErrorCode(), HEX); pr->print(F(",0x")); pr->println(sdErrorData(), HEX); - } else if (!Vol::cwv()) { + } else if (!Vol::fatType()) { pr->println(F("Check SD format.")); } } @@ -279,60 +328,67 @@ class SdBase : public Vol { } //---------------------------------------------------------------------------- /** \return SD card error data. */ - uint8_t sdErrorData() {return m_card ? m_card->errorData() : 0;} + uint8_t sdErrorData() { return m_card ? m_card->errorData() : 0; } + //---------------------------------------------------------------------------- + /** Set SPI sharing state + * \param[in] value desired state. + * \return true for success else false; + */ + bool setDedicatedSpi(bool value) { + if (m_card) { + return m_card->setDedicatedSpi(value); + } + return false; + } //---------------------------------------------------------------------------- /** \return pointer to base volume */ - Vol* vol() {return reinterpret_cast(this);} + Vol* vol() { return reinterpret_cast(this); } //---------------------------------------------------------------------------- /** Initialize file system after call to cardBegin. * * \return true for success or false for failure. */ bool volumeBegin() { - return Vol::begin(m_card); + return Vol::begin(m_card) || Vol::begin(m_card, true, 0); } #if ENABLE_ARDUINO_SERIAL /** Print error details after begin() fails. */ - void initErrorPrint() { - initErrorPrint(&Serial); - } + void initErrorPrint() { initErrorPrint(&Serial); } //---------------------------------------------------------------------------- /** %Print msg to Serial and halt. * * \param[in] msg Message to print. */ - void errorHalt(const __FlashStringHelper* msg) { - errorHalt(&Serial, msg); - } + void errorHalt(const __FlashStringHelper* msg) { errorHalt(&Serial, msg); } //---------------------------------------------------------------------------- /** %Print error info to Serial and halt. */ - void errorHalt() {errorHalt(&Serial);} + void errorHalt() { errorHalt(&Serial); } //---------------------------------------------------------------------------- /** %Print error info and halt. * * \param[in] msg Message to print. */ - void errorHalt(const char* msg) {errorHalt(&Serial, msg);} + void errorHalt(const char* msg) { errorHalt(&Serial, msg); } //---------------------------------------------------------------------------- /** %Print error info and halt. */ - void initErrorHalt() {initErrorHalt(&Serial);} + void initErrorHalt() { initErrorHalt(&Serial); } //---------------------------------------------------------------------------- /** %Print msg, any SD error code. * * \param[in] msg Message to print. */ - void errorPrint(const char* msg) {errorPrint(&Serial, msg);} - /** %Print msg, any SD error code. + void errorPrint(const char* msg) { errorPrint(&Serial, msg); } + /** %Print msg, any SD error code. * * \param[in] msg Message to print. */ - void errorPrint(const __FlashStringHelper* msg) {errorPrint(&Serial, msg);} + void errorPrint(const __FlashStringHelper* msg) { errorPrint(&Serial, msg); } //---------------------------------------------------------------------------- /** %Print error info and halt. * * \param[in] msg Message to print. */ - void initErrorHalt(const char* msg) {initErrorHalt(&Serial, msg);} + void initErrorHalt(const char* msg) { initErrorHalt(&Serial, msg); } //---------------------------------------------------------------------------- /** %Print error info and halt. * @@ -344,7 +400,7 @@ class SdBase : public Vol { #endif // ENABLE_ARDUINO_SERIAL //---------------------------------------------------------------------------- private: - SdCard* m_card; + SdCard* m_card = nullptr; SdCardFactory m_cardFactory; }; //------------------------------------------------------------------------------ @@ -352,75 +408,60 @@ class SdBase : public Vol { * \class SdFat32 * \brief SD file system class for FAT volumes. */ -class SdFat32 : public SdBase { +class SdFat32 : public SdBase { public: - /** Format a SD card FAT32/FAT16. - * - * \param[in] pr Optional Print information. - * \return true for success or false for failure. - */ - bool format(print_t* pr = nullptr) { - FatFormatter fmt; - uint8_t* cache = reinterpret_cast(cacheClear()); - if (!cache) { - return false; - } - return fmt.format(card(), cache, pr); - } }; //------------------------------------------------------------------------------ /** * \class SdExFat * \brief SD file system class for exFAT volumes. */ -class SdExFat : public SdBase { +class SdExFat : public SdBase { public: - /** Format a SD card exFAT. - * - * \param[in] pr Optional Print information. - * \return true for success or false for failure. - */ - bool format(print_t* pr = nullptr) { - ExFatFormatter fmt; - uint8_t* cache = reinterpret_cast(cacheClear()); - if (!cache) { - return false; - } - return fmt.format(card(), cache, pr); - } }; //------------------------------------------------------------------------------ /** * \class SdFs * \brief SD file system class for FAT16, FAT32, and exFAT volumes. */ -class SdFs : public SdBase { +class SdFs : public SdBase { + public: }; //------------------------------------------------------------------------------ -#if SDFAT_FILE_TYPE == 1 +#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) /** Select type for SdFat. */ typedef SdFat32 SdFat; -/** Select type for File. */ -#if USE_TYPE_FILE -typedef File32 File; -#endif /** Select type for SdBaseFile. */ typedef FatFile SdBaseFile; #elif SDFAT_FILE_TYPE == 2 typedef SdExFat SdFat; -#if USE_TYPE_FILE -typedef ExFile File; -#endif typedef ExFatFile SdBaseFile; #elif SDFAT_FILE_TYPE == 3 typedef SdFs SdFat; -#if USE_TYPE_FILE -typedef FsFile File; -#endif typedef FsBaseFile SdBaseFile; #else // SDFAT_FILE_TYPE #error Invalid SDFAT_FILE_TYPE #endif // SDFAT_FILE_TYPE +// +// Only define File if FS.h is not included. +// Line with test for __has_include must not have operators or parentheses. +#if defined __has_include +#if __has_include() +#define HAS_INCLUDE_FS_H +#endif // __has_include() +#endif // defined __has_include +#ifndef HAS_INCLUDE_FS_H +#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) +/** Select type for File. */ +typedef File32 File; +#elif SDFAT_FILE_TYPE == 2 +typedef ExFile File; +#elif SDFAT_FILE_TYPE == 3 +typedef FsFile File; +#endif // SDFAT_FILE_TYPE +#elif !defined(DISABLE_FS_H_WARNING) +#warning File not defined because __has_include(FS.h) +#endif // HAS_INCLUDE_FS_H /** * \class SdFile * \brief FAT16/FAT32 file with Print. @@ -432,9 +473,7 @@ class SdFile : public PrintFile { * \param[in] path path for file. * \param[in] oflag open flags. */ - SdFile(const char* path, oflag_t oflag) { - open(path, oflag); - } + SdFile(const char* path, oflag_t oflag) { open(path, oflag); } /** Set the date/time callback function * * \param[in] dateTime The user's call back function. The callback @@ -461,18 +500,11 @@ class SdFile : public PrintFile { * sync() maintains the last access date and last modify date/time. * */ - static void dateTimeCallback( - void (*dateTime)(uint16_t* date, uint16_t* time)) { + static void dateTimeCallback(void (*dateTime)(uint16_t* date, + uint16_t* time)) { FsDateTime::setCallback(dateTime); } /** Cancel the date/time callback function. */ - static void dateTimeCallbackCancel() { - FsDateTime::clearCallback(); - } + static void dateTimeCallbackCancel() { FsDateTime::clearCallback(); } }; - - -}; // namespace sdfat - - #endif // SdFat_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SdFatConfig.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SdFatConfig.h index 83f3b2cf..4e6e547f 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SdFatConfig.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SdFatConfig.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -32,6 +32,62 @@ #ifdef __AVR__ #include #endif // __AVR__ +// +// To try UTF-8 encoded filenames. +// #define USE_UTF8_LONG_NAMES 1 +// +// For minimum flash size use these settings: +// #define USE_FAT_FILE_FLAG_CONTIGUOUS 0 +// #define ENABLE_DEDICATED_SPI 0 +// #define USE_LONG_FILE_NAMES 0 +// #define SDFAT_FILE_TYPE 1 +// #define CHECK_FLASH_PROGRAMMING 0 // May cause SD to sleep at high current. +// +// Options can be set in a makefile or an IDE like platformIO +// if they are in a #ifndef/#endif block below. +//------------------------------------------------------------------------------ +/* + * Options for file class constructors, assignment operators and destructors. + * + * By default file copy constructors and copy assignment operators are + * private to prevent multiple copies of a instance for a file. + * + * File move constructors and move assignment operators are public to permit + * return of a file instance for compilers that aren't able to use copy elision. + * + */ +/** File copy constructors and copy assignment operators are deleted */ +#define FILE_COPY_CONSTRUCTOR_DELETED 0 +/** File copy constructors and copy assignment operators are private */ +#define FILE_COPY_CONSTRUCTOR_PRIVATE 1 +/** File copy constructors and copy assignment operators are public */ +#define FILE_COPY_CONSTRUCTOR_PUBLIC 2 + +#ifndef FILE_COPY_CONSTRUCTOR_SELECT +/** Specify kind of file copy constructors and copy assignment operators */ +#define FILE_COPY_CONSTRUCTOR_SELECT FILE_COPY_CONSTRUCTOR_PUBLIC +#endif // FILE_COPY_CONSTRUCTOR_SELECT +/** File move constructors and move assignment operators are deleted. */ +#define FILE_MOVE_CONSTRUCTOR_DELETED 0 +/** File move constructors and move assignment operators are public. */ +#define FILE_MOVE_CONSTRUCTOR_PUBLIC 1 + +#ifndef FILE_MOVE_CONSTRUCTOR_SELECT +/** Specify kind of file move constructors and move assignment operators */ +#define FILE_MOVE_CONSTRUCTOR_SELECT FILE_MOVE_CONSTRUCTOR_PUBLIC +#endif // FILE_MOVE_CONSTRUCTOR_SELECT + +#if FILE_MOVE_CONSTRUCTOR_SELECT != FILE_MOVE_CONSTRUCTOR_PUBLIC && \ + FILE_COPY_CONSTRUCTOR_SELECT != FILE_COPY_CONSTRUCTOR_PUBLIC +#error "No public move or copy assign operators" +#endif // FILE_MOVE_CONSTRUCTOR_SELECT && FILE_MOVE_CONSTRUCTOR_SELECT +/** + * Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor. */ +#ifndef DESTRUCTOR_CLOSES_FILE +#define DESTRUCTOR_CLOSES_FILE 0 +#endif // DESTRUCTOR_CLOSES_FILE +//------------------------------------------------------------------------------ + /** For Debug - must be one */ #define ENABLE_ARDUINO_FEATURES 1 /** For Debug - must be one */ @@ -39,9 +95,6 @@ /** For Debug - must be one */ #define ENABLE_ARDUINO_STRING 1 //------------------------------------------------------------------------------ -/** Set USE_BLOCK_DEVICE_INTERFACE nonzero to use generic block device */ -#define USE_BLOCK_DEVICE_INTERFACE 0 -//------------------------------------------------------------------------------ #if ENABLE_ARDUINO_FEATURES #include "Arduino.h" #ifdef PLATFORM_ID @@ -49,23 +102,6 @@ #include "application.h" #endif // PLATFORM_ID #endif // ENABLE_ARDUINO_FEATURES - -#define USE_TYPE_FILE 1 -namespace sdfat { - - -//------------------------------------------------------------------------------ -/** - * Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. - * sdios.h provides C++ style IO Streams. - */ -#define INCLUDE_SDIOS 0 -//------------------------------------------------------------------------------ -/** - * Set USE_FAT_FILE_FLAG_CONTIGUOUS nonzero to optimize access to - * contiguous files. - */ -#define USE_FAT_FILE_FLAG_CONTIGUOUS 1 //------------------------------------------------------------------------------ /** * File types for SdFat, File, SdFile, SdBaseFile, fstream, @@ -75,25 +111,33 @@ namespace sdfat { * * 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. */ +#ifndef SDFAT_FILE_TYPE #if defined(__AVR__) && FLASHEND < 0X8000 // 32K AVR boards. #define SDFAT_FILE_TYPE 1 -#elif defined(__arm__) -// ARM boards usually have plenty of memory -#define SDFAT_FILE_TYPE 3 #else // defined(__AVR__) && FLASHEND < 0X8000 // All other boards. -#define SDFAT_FILE_TYPE 1 +#define SDFAT_FILE_TYPE 3 #endif // defined(__AVR__) && FLASHEND < 0X8000 +#endif // SDFAT_FILE_TYPE //------------------------------------------------------------------------------ /** - * Set ENABLE_DEDICATED_SPI to enable dedicated use of the SPI bus. + * Set USE_FAT_FILE_FLAG_CONTIGUOUS nonzero to optimize access to + * contiguous files. A small amount of flash is flash is used. + */ +#ifndef USE_FAT_FILE_FLAG_CONTIGUOUS +#define USE_FAT_FILE_FLAG_CONTIGUOUS 1 +#endif // USE_FAT_FILE_FLAG_CONTIGUOUS +//------------------------------------------------------------------------------ +/** + * Set ENABLE_DEDICATED_SPI non-zero to enable dedicated use of the SPI bus. * Selecting dedicated SPI in SdSpiConfig() will produce better * performance by using very large multi-block transfers to and * from the SD card. * - * Enabling dedicated SPI will cost some extra flash and RAM. + * Enabling dedicated SPI will cost extra flash and RAM. */ +#ifndef ENABLE_DEDICATED_SPI #if defined(__AVR__) && FLASHEND < 0X8000 // 32K AVR boards. #define ENABLE_DEDICATED_SPI 1 @@ -101,7 +145,9 @@ namespace sdfat { // All other boards. #define ENABLE_DEDICATED_SPI 1 #endif // defined(__AVR__) && FLASHEND < 0X8000 -//----------------------------------------------------------------------------- +#endif // ENABLE_DEDICATED_SPI +//------------------------------------------------------------------------------ +// Driver options /** * If the symbol SPI_DRIVER_SELECT is: * @@ -114,7 +160,63 @@ namespace sdfat { * * 3 - An external SPI driver derived from SdSpiBaseClass is always used. */ +#ifndef SPI_DRIVER_SELECT #define SPI_DRIVER_SELECT 0 +#endif // SPI_DRIVER_SELECT +/** + * If USE_SPI_ARRAY_TRANSFER is one and the standard SPI library is + * use, the array transfer function, transfer(buf, count), will be used. + * This option will allocate a 512 byte temporary buffer for send. + * This may be faster for some boards. Do not use this with AVR boards. + * + * Warning: the next options are often fastest but only available for some + * non-Arduino board packages. + * + * If USE_SPI_ARRAY_TRANSFER is two use transfer(nullptr, buf, count) for + * receive and transfer(buf, nullptr, count) for send. + * + * If USE_SPI_ARRAY_TRANSFER is three use transfer(nullptr, buf, count) for + * receive and transfer(buf, rxTmp, count) for send. Try this with Adafruit + * SAMD51. + * + * If USE_SPI_ARRAY_TRANSFER is four use transfer(txTmp, buf, count) for + * receive and transfer(buf, rxTmp, count) for send. Try this with STM32. + */ +#ifndef USE_SPI_ARRAY_TRANSFER +#define USE_SPI_ARRAY_TRANSFER 0 +#endif // USE_SPI_ARRAY_TRANSFER +//------------------------------------------------------------------------------ +/** + * SD maximum initialization clock rate. + */ +#ifndef SD_MAX_INIT_RATE_KHZ +#define SD_MAX_INIT_RATE_KHZ 400 +#endif // SD_MAX_INIT_RATE_KHZ +/** + * Set USE_BLOCK_DEVICE_INTERFACE nonzero to use a generic block device. + * This allow use of an external FsBlockDevice driver that is derived from + * the FsBlockDeviceInterface like this: + * + * class UsbMscDriver : public FsBlockDeviceInterface { + * ... code for USB mass storage class driver. + * }; + * + * UsbMscDriver usbMsc; + * FsVolume key; + * ... + * + * // Init USB MSC driver. + * if (!usbMsc.begin()) { + * ... handle driver init failure. + * } + * // Init FAT/exFAT volume. + * if (!key.begin(&usbMsc)) { + * ... handle FAT/exFAT failure. + * } + */ +#ifndef USE_BLOCK_DEVICE_INTERFACE +#define USE_BLOCK_DEVICE_INTERFACE 0 +#endif // USE_BLOCK_DEVICE_INTERFACE //------------------------------------------------------------------------------ /** * SD_CHIP_SELECT_MODE defines how the functions @@ -129,15 +231,12 @@ namespace sdfat { * * 2 - No internal definition and must be defined in the application. */ +#ifndef SD_CHIP_SELECT_MODE #define SD_CHIP_SELECT_MODE 0 +#endif // SD_CHIP_SELECT_MODE /** Type for card chip select pin. */ typedef uint8_t SdCsPin_t; //------------------------------------------------------------------------------ -/** - * SD maximum initialization clock rate. - */ -#define SD_MAX_INIT_RATE_KHZ 400 -//------------------------------------------------------------------------------ /** * Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN) in FAT16/FAT32. * exFAT always uses long file names. @@ -158,7 +257,37 @@ typedef uint8_t SdCsPin_t; * * (asterisk) * */ +#ifndef USE_LONG_FILE_NAMES #define USE_LONG_FILE_NAMES 1 +#endif // USE_LONG_FILE_NAMES +/** + * Set USE_UTF8_LONG_NAMES nonzero to use UTF-8 file names. Use of UTF-8 names + * will require significantly more flash memory and a small amount of extra + * RAM. + * + * UTF-8 filenames allow encoding of 1,112,064 code points in Unicode using + * one to four one-byte (8-bit) code units. + * + * As of Version 13.0, the Unicode Standard defines 143,859 characters. + * + * getName() will return UTF-8 strings and printName() will write UTF-8 strings. + */ +#ifndef USE_UTF8_LONG_NAMES +#define USE_UTF8_LONG_NAMES 0 +#endif // USE_UTF8_LONG_NAMES + +#if USE_UTF8_LONG_NAMES && !USE_LONG_FILE_NAMES +#error "USE_UTF8_LONG_NAMES requires USE_LONG_FILE_NAMES to be non-zero." +#endif // USE_UTF8_LONG_NAMES && !USE_LONG_FILE_NAMES +//------------------------------------------------------------------------------ +/** + * Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters + * updated. This will increase the speed of the freeClusterCount() call + * after the first call. Extra flash will be required. + */ +#ifndef MAINTAIN_FREE_CLUSTER_COUNT +#define MAINTAIN_FREE_CLUSTER_COUNT 0 +#endif // MAINTAIN_FREE_CLUSTER_COUNT //------------------------------------------------------------------------------ /** * Set the default file time stamp when a RTC callback is not used. @@ -186,14 +315,9 @@ typedef uint8_t SdCsPin_t; * Some cards will not sleep in low power mode unless CHECK_FLASH_PROGRAMMING * is non-zero. */ +#ifndef CHECK_FLASH_PROGRAMMING #define CHECK_FLASH_PROGRAMMING 1 -//------------------------------------------------------------------------------ -/** - * Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters - * updated. This will increase the speed of the freeClusterCount() call - * after the first call. Extra flash will be required. - */ -#define MAINTAIN_FREE_CLUSTER_COUNT 0 +#endif // CHECK_FLASH_PROGRAMMING //------------------------------------------------------------------------------ /** * To enable SD card CRC checking for SPI, set USE_SD_CRC nonzero. @@ -204,12 +328,15 @@ typedef uint8_t SdCsPin_t; * Set USE_SD_CRC to 2 to used a larger table driven CRC-CCITT function. This * function is faster for AVR but may be slower for ARM and other processors. */ +#ifndef USE_SD_CRC #define USE_SD_CRC 0 +#endif // USE_SD_CRC //------------------------------------------------------------------------------ /** If the symbol USE_FCNTL_H is nonzero, open flags for access modes O_RDONLY, * O_WRONLY, O_RDWR and the open modifiers O_APPEND, O_CREAT, O_EXCL, O_SYNC * will be defined by including the system file fcntl.h. */ +#ifndef USE_FCNTL_H #if defined(__AVR__) // AVR fcntl.h does not define open flags. #define USE_FCNTL_H 0 @@ -224,32 +351,23 @@ typedef uint8_t SdCsPin_t; #else // defined(__AVR__) #define USE_FCNTL_H 0 #endif // defined(__AVR__) +#endif // USE_FCNTL_H //------------------------------------------------------------------------------ /** - * Handle Watchdog Timer for WiFi modules. - * - * Yield will be called before accessing the SPI bus if it has been more - * than WDT_YIELD_TIME_MILLIS milliseconds since the last yield call by SdFat. + * Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. + * sdios.h provides C++ style IO Streams. */ -#if defined(PLATFORM_ID) || defined(ESP8266) -// If Particle device or ESP8266 call yield. -#define WDT_YIELD_TIME_MILLIS 100 -#else // defined(PLATFORM_ID) || defined(ESP8266) -#define WDT_YIELD_TIME_MILLIS 0 -#endif // defined(PLATFORM_ID) || defined(ESP8266) +#ifndef INCLUDE_SDIOS +#define INCLUDE_SDIOS 0 +#endif // INCLUDE_SDIOS //------------------------------------------------------------------------------ /** * Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. * FAT12 has not been well tested and requires additional flash. */ +#ifndef FAT12_SUPPORT #define FAT12_SUPPORT 0 -//------------------------------------------------------------------------------ -/** - * Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor. - * - * Causes use of lots of heap in ARM. - */ -#define DESTRUCTOR_CLOSES_FILE 0 +#endif // FAT12_SUPPORT //------------------------------------------------------------------------------ /** * Call flush for endl if ENDL_CALLS_FLUSH is nonzero @@ -268,14 +386,16 @@ typedef uint8_t SdCsPin_t; * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force * all data to be written to the SD. */ +#ifndef ENDL_CALLS_FLUSH #define ENDL_CALLS_FLUSH 0 +#endif // ENDL_CALLS_FLUSH //------------------------------------------------------------------------------ /** * Set USE_SIMPLE_LITTLE_ENDIAN nonzero for little endian processors * with no memory alignment restrictions. */ -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && !defined(__SAMD21G18A__)\ - && !defined(__MKL26Z64__) && !defined(ESP8266) +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && \ + (defined(__AVR__) || defined(__ARM_FEATURE_UNALIGNED)) #define USE_SIMPLE_LITTLE_ENDIAN 1 #else // __BYTE_ORDER_ #define USE_SIMPLE_LITTLE_ENDIAN 0 @@ -322,11 +442,11 @@ typedef uint8_t SdCsPin_t; #endif // BUILTIN_SDCARD // SPI for built-in card. #ifndef SDCARD_SPI -#define SDCARD_SPI SPI1 +#define SDCARD_SPI SPI1 #define SDCARD_MISO_PIN 59 #define SDCARD_MOSI_PIN 61 -#define SDCARD_SCK_PIN 60 -#define SDCARD_SS_PIN 62 +#define SDCARD_SCK_PIN 60 +#define SDCARD_SS_PIN 62 #endif // SDCARD_SPI #define HAS_SDIO_CLASS 1 #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) @@ -337,13 +457,13 @@ typedef uint8_t SdCsPin_t; /** * Determine the default SPI configuration. */ -#if defined(ARDUINO_ARCH_APOLLO3)\ - || defined(__AVR__)\ - || defined(ESP8266) || defined(ESP32)\ - || defined(PLATFORM_ID)\ - || defined(ARDUINO_SAM_DUE)\ - || defined(__STM32F1__) || defined(__STM32F4__)\ - || (defined(CORE_TEENSY) && defined(__arm__)) +#if defined(ARDUINO_ARCH_APOLLO3) || \ + (defined(__AVR__) && defined(SPDR) && defined(SPSR) && defined(SPIF)) || \ + (defined(__AVR__) && defined(SPI0) && defined(SPI_RXCIF_bm)) || \ + defined(ESP8266) || defined(ESP32) || defined(PLATFORM_ID) || \ + defined(ARDUINO_SAM_DUE) || defined(STM32_CORE_VERSION) || \ + defined(__STM32F1__) || defined(__STM32F4__) || \ + (defined(CORE_TEENSY) && defined(__arm__)) #define SD_HAS_CUSTOM_SPI 1 #else // SD_HAS_CUSTOM_SPI // Use standard SPI library. @@ -355,16 +475,4 @@ typedef uint8_t SdCsPin_t; #define HAS_SDIO_CLASS 0 #endif // HAS_SDIO_CLASS - -#ifdef HOST_MOCK -#undef INCLUDE_SDIOS -#define INCLUDE_SDIOS 0 -#undef SS -#define SS 0 -#endif - - -}; // namespace sdfat - - #endif // SdFatConfig_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArduinoDriver.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArduinoDriver.h index 9fa3c31e..a571f9fb 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArduinoDriver.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArduinoDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -32,17 +32,14 @@ #if SPI_DRIVER_SELECT == 0 && SD_HAS_CUSTOM_SPI #define SD_USE_CUSTOM_SPI #endif // SPI_DRIVER_SELECT == 0 && SD_HAS_CUSTOM_SPI - - -namespace sdfat { - - /** * \class SdSpiArduinoDriver * \brief Optimized SPI class for access to SD and SDHC flash memory cards. */ class SdSpiArduinoDriver { public: + /** Constructor. */ + SdSpiArduinoDriver() = default; /** Activate SPI hardware. */ void activate(); /** Initialize the SPI bus. @@ -60,12 +57,12 @@ class SdSpiArduinoDriver { */ uint8_t receive(); /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] count Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ + * + * \param[out] buf Buffer to receive the data. + * \param[in] count Number of bytes to receive. + * + * \return Zero for no error or nonzero error code. + */ uint8_t receive(uint8_t* buf, size_t count); /** Send a byte. * @@ -87,16 +84,11 @@ class SdSpiArduinoDriver { } private: - SPIClass *m_spi; + SPIClass* m_spi = nullptr; SPISettings m_spiSettings; }; /** Typedef for use of SdSpiArduinoDriver */ typedef SdSpiArduinoDriver SdSpiDriver; - - -}; // namespace sdfat - - //------------------------------------------------------------------------------ #ifndef SD_USE_CUSTOM_SPI #include "SdSpiLibDriver.h" diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArtemis.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArtemis.cpp index 9a2683ef..8f6efdd1 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArtemis.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiArtemis.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,16 +23,9 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiDriver.h" - - -namespace sdfat { - - #if defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_ARCH_APOLLO3) //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -43,40 +36,34 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { - m_spi->transferIn(buf, count); + memset(buf, 0XFF, count); + m_spi->transfer(buf, count); return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { // If not a multiple of four. Command with CRC used six byte send. - while (count%4) { + while (count % 4) { send(*buf++); count--; } // Convert byte array to 4 byte array. - uint32_t myArray[count/4]; // NOLINT - for (int x = 0; x < count/4; x++) { + uint32_t myArray[count / 4]; // NOLINT + for (int x = 0; x < count / 4; x++) { myArray[x] = ((uint32_t)buf[(x * 4) + 3] << (8 * 3)) | ((uint32_t)buf[(x * 4) + 2] << (8 * 2)) | ((uint32_t)buf[(x * 4) + 1] << (8 * 1)) | ((uint32_t)buf[(x * 4) + 0] << (8 * 0)); } - m_spi->transfer(reinterpret_cast(myArray), count); + m_spi->transfer(reinterpret_cast(myArray), count); } #endif // defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_ARCH_APOLLO3) - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiAvr.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiAvr.h index c0633775..731bf8f7 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiAvr.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiAvr.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,73 +24,101 @@ */ #ifndef SdSpiAvr_h #define SdSpiAvr_h - - -namespace sdfat { - - // Use of in-line for AVR to save flash. -#define nop asm volatile ("nop\n\t") +#define nop asm volatile("nop\n\t") +//------------------------------------------------------------------------------ +inline void SdSpiArduinoDriver::activate() { + SPI.beginTransaction(m_spiSettings); +} //------------------------------------------------------------------------------ inline void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { (void)spiConfig; SPI.begin(); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} +inline void SdSpiArduinoDriver::deactivate() { SPI.endTransaction(); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::deactivate() { - SPI.endTransaction(); -} +inline void SdSpiArduinoDriver::end() { SPI.end(); } //------------------------------------------------------------------------------ -inline uint8_t SdSpiArduinoDriver::receive() { - return SPI.transfer(0XFF); -} +inline uint8_t SdSpiArduinoDriver::receive() { return SPI.transfer(0XFF); } //------------------------------------------------------------------------------ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { if (count == 0) { return 0; } - uint8_t* pr = buf; +#ifdef SPSR SPDR = 0XFF; - while (--count > 0) { - while (!(SPSR & _BV(SPIF))) {} + while (--count) { + // nops optimize loop for 16MHz CPU 8 MHz SPI + nop; + nop; + while (!(SPSR & _BV(SPIF))) { + } uint8_t in = SPDR; SPDR = 0XFF; - *pr++ = in; - // nops to optimize loop for 16MHz CPU 8 MHz SPI - nop; - nop; + *buf++ = in; } - while (!(SPSR & _BV(SPIF))) {} - *pr = SPDR; + while (!(SPSR & _BV(SPIF))) { + } + *buf = SPDR; +#elif defined(SPI_RXCIF_bm) + SPI0.DATA = 0XFF; + while (--count) { + // nops optimize loop for ATmega4809 16MHz CPU 8 MHz SPI + nop; + nop; + nop; + nop; + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } + uint8_t in = SPI0.DATA; + SPI0.DATA = 0XFF; + *buf++ = in; + } + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } + *buf = SPI0.DATA; +#else // SPSR +#error Unsupported AVR CPU - edit SdFatConfig.h to use standard SPI library. +#endif // SPSR return 0; } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::send(uint8_t data) { - SPI.transfer(data); -} +inline void SdSpiArduinoDriver::send(uint8_t data) { SPI.transfer(data); } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +inline void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { if (count == 0) { return; } +#ifdef SPSR SPDR = *buf++; - while (--count > 0) { + while (--count) { uint8_t b = *buf++; - while (!(SPSR & (1 << SPIF))) {} + // nops optimize loop for 16MHz CPU 8 MHz SPI + nop; + nop; + while (!(SPSR & (1 << SPIF))) { + } SPDR = b; - // nops to optimize loop for 16MHz CPU 8 MHz SPI - nop; - nop; } - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } +#elif defined(SPI_RXCIF_bm) + SPI0.DATA = *buf++; + while (--count) { + uint8_t b = *buf++; + // nops optimize loop for ATmega4809 16MHz CPU 8 MHz SPI + nop; + nop; + nop; + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } + SPI0.DATA = b; + } + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) { + } +#else // SPSR +#error Unsupported AVR CPU - edit SdFatConfig.h to use standard SPI library. +#endif // SPSR } - - -}; // namespace sdfat - - #endif // SdSpiAvr_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBareUnoDriver.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBareUnoDriver.h index 99ba6bed..5c3eda34 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBareUnoDriver.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBareUnoDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,8 +30,9 @@ */ #include + #include "../common/SysCall.h" -#define nop asm volatile ("nop\n\t") +#define nop asm volatile("nop\n\t") #ifndef HIGH #define HIGH 1 #endif // HIGH @@ -79,10 +80,10 @@ inline void unoPinMode(uint8_t pin, uint8_t mode) { sei(); } -#define UNO_SS 10 +#define UNO_SS 10 #define UNO_MOSI 11 #define UNO_MISO 12 -#define UNO_SCK 13 +#define UNO_SCK 13 //------------------------------------------------------------------------------ /** * \class SdSpiDriverBareUno @@ -92,10 +93,6 @@ class SdSpiDriverBareUno { public: /** Activate SPI hardware. */ void activate() {} - /** deactivate SPI driver. */ - void end() {} - /** Deactivate SPI hardware. */ - void deactivate() {} /** Initialize the SPI bus. * * \param[in] spiConfig SD card configuration. @@ -112,20 +109,22 @@ class SdSpiDriverBareUno { unoPinMode(UNO_SCK, OUTPUT); unoPinMode(UNO_MOSI, OUTPUT); } + /** Deactivate SPI hardware. */ + void deactivate() {} + /** deactivate SPI driver. */ + void end() {} /** Receive a byte. * * \return The byte. */ - uint8_t receive() { - return transfer(0XFF); - } + uint8_t receive() { return transfer(0XFF); } /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] count Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ + * + * \param[out] buf Buffer to receive the data. + * \param[in] count Number of bytes to receive. + * + * \return Zero for no error or nonzero error code. + */ uint8_t receive(uint8_t* buf, size_t count) { if (count == 0) { return 0; @@ -133,7 +132,8 @@ class SdSpiDriverBareUno { uint8_t* pr = buf; SPDR = 0XFF; while (--count > 0) { - while (!(SPSR & _BV(SPIF))) {} + while (!(SPSR & _BV(SPIF))) { + } uint8_t in = SPDR; SPDR = 0XFF; *pr++ = in; @@ -141,7 +141,8 @@ class SdSpiDriverBareUno { nop; nop; } - while (!(SPSR & _BV(SPIF))) {} + while (!(SPSR & _BV(SPIF))) { + } *pr = SPDR; return 0; } @@ -149,9 +150,7 @@ class SdSpiDriverBareUno { * * \param[in] data Byte to send */ - void send(uint8_t data) { - transfer(data); - } + void send(uint8_t data) { transfer(data); } /** Send multiple bytes. * * \param[in] buf Buffer for data to be sent. @@ -164,18 +163,18 @@ class SdSpiDriverBareUno { SPDR = *buf++; while (--count > 0) { uint8_t b = *buf++; - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } SPDR = b; // nops to optimize loop for 16MHz CPU 8 MHz SPI nop; nop; } - while (!(SPSR & (1 << SPIF))) {} + while (!(SPSR & (1 << SPIF))) { + } } /** Set CS low. */ - void select() { - unoDigitalWrite(m_csPin, LOW); - } + void select() { unoDigitalWrite(m_csPin, LOW); } /** Save high speed SPISettings after SD initialization. * * \param[in] spiConfig SPI options. @@ -186,13 +185,12 @@ class SdSpiDriverBareUno { } static uint8_t transfer(uint8_t data) { SPDR = data; - while (!(SPSR & _BV(SPIF))) {} // wait + while (!(SPSR & _BV(SPIF))) { + } // wait return SPDR; } /** Set CS high. */ - void unselect() { - unoDigitalWrite(m_csPin, HIGH); - } + void unselect() { unoDigitalWrite(m_csPin, HIGH); } private: SdCsPin_t m_csPin; diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBaseClass.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBaseClass.h index 346cdb6d..505e2f60 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBaseClass.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiBaseClass.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,11 +28,6 @@ */ #ifndef SdSpiBaseClass_h #define SdSpiBaseClass_h - - -namespace sdfat { - - /** * \class SdSpiBaseClass * \brief Base class for external SPI drivers @@ -48,18 +43,20 @@ class SdSpiBaseClass { virtual void begin(SdSpiConfig config) = 0; /** Deactivate SPI hardware. */ virtual void deactivate() {} + /** deactivate SPI driver. */ + virtual void end() {} /** Receive a byte. * * \return The byte. */ virtual uint8_t receive() = 0; /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] count Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ + * + * \param[out] buf Buffer to receive the data. + * \param[in] count Number of bytes to receive. + * + * \return Zero for no error or nonzero error code. + */ virtual uint8_t receive(uint8_t* buf, size_t count) = 0; /** Send a byte. * @@ -76,11 +73,6 @@ class SdSpiBaseClass { * * \param[in] maxSck Maximum SCK frequency. */ - virtual void setSckSpeed(uint32_t maxSck) {(void)maxSck;} + virtual void setSckSpeed(uint32_t maxSck) { (void)maxSck; } }; - - -}; // namespace sdfat - - #endif // SdSpiBaseClass_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiChipSelect.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiChipSelect.cpp index 9cd10a4d..f7927f2c 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiChipSelect.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiChipSelect.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,34 +23,18 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiDriver.h" - - -namespace sdfat { - - #if ENABLE_ARDUINO_FEATURES #if SD_CHIP_SELECT_MODE == 0 //------------------------------------------------------------------------------ -void sdCsInit(SdCsPin_t pin) { - pinMode(pin, OUTPUT); -} +void sdCsInit(SdCsPin_t pin) { pinMode(pin, OUTPUT); } //------------------------------------------------------------------------------ -void sdCsWrite(SdCsPin_t pin, bool level) { - digitalWrite(pin, level); -} +void sdCsWrite(SdCsPin_t pin, bool level) { digitalWrite(pin, level); } #elif SD_CHIP_SELECT_MODE == 1 //------------------------------------------------------------------------------ -__attribute__((weak)) -void sdCsInit(SdCsPin_t pin) { - pinMode(pin, OUTPUT); -} +__attribute__((weak)) void sdCsInit(SdCsPin_t pin) { pinMode(pin, OUTPUT); } //------------------------------------------------------------------------------ -__attribute__((weak)) -void sdCsWrite(SdCsPin_t pin, bool level) { +__attribute__((weak)) void sdCsWrite(SdCsPin_t pin, bool level) { digitalWrite(pin, level); } #endif // SD_CHIP_SELECT_MODE == 0 #endif // ENABLE_ARDUINO_FEATURES - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h index 6fbe6406..c43055b7 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,11 +29,6 @@ #ifndef SdSpiDriver_h #define SdSpiDriver_h #include "../common/SysCall.h" - - -namespace sdfat { - - /** * Initialize SD chip select pin. * @@ -47,16 +42,34 @@ void sdCsInit(SdCsPin_t pin); * \param[in] level SD card chip select level. */ void sdCsWrite(SdCsPin_t pin, bool level); - - -}; // namespace sdfat - - +//------------------------------------------------------------------------------ +/** SPI bus is share with other devices. */ +const uint8_t SHARED_SPI = 0; +#if ENABLE_DEDICATED_SPI +/** The SD is the only device on the SPI bus. */ +const uint8_t DEDICATED_SPI = 1; +/** + * \param[in] opt option field of SdSpiConfig. + * \return true for dedicated SPI. + */ +inline bool spiOptionDedicated(uint8_t opt) { return opt & DEDICATED_SPI; } +#else // ENABLE_DEDICATED_SPI +/** + * \param[in] opt option field of SdSpiConfig. + * \return true for dedicated SPI. + */ +inline bool spiOptionDedicated(uint8_t opt) { + (void)opt; + return false; +} +#endif // ENABLE_DEDICATED_SPI +/** The user will call begin. Useful for custom SPI configurations. */ +const uint8_t USER_SPI_BEGIN = 2; //------------------------------------------------------------------------------ /** SPISettings for SCK frequency in Hz. */ #define SD_SCK_HZ(maxSpeed) (maxSpeed) /** SPISettings for SCK frequency in MHz. */ -#define SD_SCK_MHZ(maxMhz) (1000000UL*(maxMhz)) +#define SD_SCK_MHZ(maxMhz) (1000000UL * (maxMhz)) // SPI divisor constants - obsolete. /** Set SCK to max rate. */ #define SPI_FULL_SPEED SD_SCK_MHZ(50) @@ -73,86 +86,37 @@ void sdCsWrite(SdCsPin_t pin, bool level); /** Set SCK rate to 500 kHz for AVR. */ #define SPI_SIXTEENTH_SPEED SD_SCK_HZ(500000) //------------------------------------------------------------------------------ -/** The SD is the only device on the SPI bus. */ -#define DEDICATED_SPI 0X80 -/** SPI bus is share with other devices. */ -#define SHARED_SPI 0 #if SPI_DRIVER_SELECT < 2 #include "SPI.h" - - -namespace sdfat { - - /** Port type for Arduino SPI hardware driver. */ typedef SPIClass SpiPort_t; - - -}; // namespace sdfat - - #elif SPI_DRIVER_SELECT == 2 - - -namespace sdfat { - - class SdSpiSoftDriver; /** Port type for software SPI driver. */ typedef SdSpiSoftDriver SpiPort_t; - - -}; // namespace sdfat - - #elif SPI_DRIVER_SELECT == 3 - - -namespace sdfat { - - class SdSpiBaseClass; /** Port type for extrernal SPI driver. */ -typedef SdSpiBaseClass SpiPort_t; - - -}; // namespace sdfat - - -#else // SPI_DRIVER_SELECT - - -namespace sdfat { - - -typedef void* SpiPort_t; - - -}; // namespace sdfat - - +typedef SdSpiBaseClass SpiPort_t; +#else // SPI_DRIVER_SELECT +typedef void* SpiPort_t; #endif // SPI_DRIVER_SELECT //------------------------------------------------------------------------------ - - -namespace sdfat { - - /** * \class SdSpiConfig * \brief SPI card configuration. */ class SdSpiConfig { public: - /** SdSpiConfig constructor. + /** SdSpiConfig constructor. * * \param[in] cs Chip select pin. * \param[in] opt Options. * \param[in] maxSpeed Maximum SCK frequency. * \param[in] port The SPI port to use. */ - SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t* port) : - csPin(cs), options(opt), maxSck(maxSpeed), spiPort(port) {} + SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t* port) + : csPin(cs), options(opt), maxSck(maxSpeed), spiPort(port) {} /** SdSpiConfig constructor. * @@ -160,53 +124,36 @@ class SdSpiConfig { * \param[in] opt Options. * \param[in] maxSpeed Maximum SCK frequency. */ - SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed) : - csPin(cs), options(opt), maxSck(maxSpeed), spiPort(nullptr) {} + SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed) + : csPin(cs), options(opt), maxSck(maxSpeed) {} /** SdSpiConfig constructor. * * \param[in] cs Chip select pin. * \param[in] opt Options. */ - SdSpiConfig(SdCsPin_t cs, uint8_t opt) : - csPin(cs), options(opt), maxSck(SD_SCK_MHZ(50)), spiPort(nullptr) {} + SdSpiConfig(SdCsPin_t cs, uint8_t opt) : csPin(cs), options(opt) {} /** SdSpiConfig constructor. * * \param[in] cs Chip select pin. */ - explicit SdSpiConfig(SdCsPin_t cs) : csPin(cs), options(SHARED_SPI), - maxSck(SD_SCK_MHZ(50)), spiPort(nullptr) {} + explicit SdSpiConfig(SdCsPin_t cs) : csPin(cs) {} /** Chip select pin. */ const SdCsPin_t csPin; /** Options */ - const uint8_t options; + const uint8_t options = SHARED_SPI; /** Max SCK frequency */ - const uint32_t maxSck; + const uint32_t maxSck = SD_SCK_MHZ(50); /** SPI port */ - SpiPort_t* spiPort; + SpiPort_t* spiPort = nullptr; }; - - -}; // namespace sdfat - - #if SPI_DRIVER_SELECT < 2 #include "SdSpiArduinoDriver.h" #elif SPI_DRIVER_SELECT == 2 #include "SdSpiSoftDriver.h" #elif SPI_DRIVER_SELECT == 3 #include "SdSpiBaseClass.h" - - -namespace sdfat { - - typedef SdSpiBaseClass SdSpiDriver; - - -}; // namespace sdfat - - #else // SPI_DRIVER_SELECT #error Invalid SPI_DRIVER_SELECT #endif // SPI_DRIVER_SELECT diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDue.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDue.cpp index 274b4ed2..73fc4c64 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDue.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiDue.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,11 +23,6 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiDriver.h" - - -namespace sdfat { - - #if defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_SAM_DUE) /* Use SAM3X DMAC if nonzero */ #define USE_SAM3X_DMAC 1 @@ -38,22 +33,18 @@ namespace sdfat { /* chip select register number */ #define SPI_CHIP_SEL 3 /* DMAC receive channel */ -#define SPI_DMAC_RX_CH 1 +#define SPI_DMAC_RX_CH 1 /* DMAC transmit channel */ -#define SPI_DMAC_TX_CH 0 +#define SPI_DMAC_TX_CH 0 /* DMAC Channel HW Interface Number for SPI TX. */ -#define SPI_TX_IDX 1 +#define SPI_TX_IDX 1 /* DMAC Channel HW Interface Number for SPI RX. */ -#define SPI_RX_IDX 2 +#define SPI_RX_IDX 2 //------------------------------------------------------------------------------ /* Disable DMA Controller. */ -static void dmac_disable() { - DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); -} +static void dmac_disable() { DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); } /* Enable DMA Controller. */ -static void dmac_enable() { - DMAC->DMAC_EN = DMAC_EN_ENABLE; -} +static void dmac_enable() { DMAC->DMAC_EN = DMAC_EN_ENABLE; } /* Disable DMA Channel. */ static void dmac_channel_disable(uint32_t ul_num) { DMAC->DMAC_CHDR = DMAC_CHDR_DIS0 << ul_num; @@ -67,38 +58,20 @@ static bool dmac_channel_transfer_done(uint32_t ul_num) { return (DMAC->DMAC_CHSR & (DMAC_CHSR_ENA0 << ul_num)) ? false : true; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { - (void)spiConfig; - SPI.begin(); -#if USE_SAM3X_DMAC - pmc_enable_periph_clk(ID_DMAC); - dmac_disable(); - DMAC->DMAC_GCFG = DMAC_GCFG_ARB_CFG_FIXED; - dmac_enable(); -#if USE_SAM3X_BUS_MATRIX_FIX - MATRIX->MATRIX_WPMR = 0x4d415400; - MATRIX->MATRIX_MCFG[1] = 1; - MATRIX->MATRIX_MCFG[2] = 1; - MATRIX->MATRIX_SCFG[0] = 0x01000010; - MATRIX->MATRIX_SCFG[1] = 0x01000010; - MATRIX->MATRIX_SCFG[7] = 0x01000010; -#endif // USE_SAM3X_BUS_MATRIX_FIX -#endif // USE_SAM3X_DMAC -} -//------------------------------------------------------------------------------ // start RX DMA static void spiDmaRX(uint8_t* dst, uint16_t count) { dmac_channel_disable(SPI_DMAC_RX_CH); DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_SADDR = (uint32_t)&SPI0->SPI_RDR; DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DADDR = (uint32_t)dst; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLA = + count | DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLB = + DMAC_CTRLB_SRC_DSCR | DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | DMAC_CTRLB_SRC_INCR_FIXED | DMAC_CTRLB_DST_INCR_INCREMENTING; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CFG = DMAC_CFG_SRC_PER(SPI_RX_IDX) | - DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ASAP_CFG; + DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CFG = + DMAC_CFG_SRC_PER(SPI_RX_IDX) | DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | + DMAC_CFG_FIFOCFG_ASAP_CFG; dmac_channel_enable(SPI_DMAC_RX_CH); } //------------------------------------------------------------------------------ @@ -113,16 +86,17 @@ static void spiDmaTX(const uint8_t* src, uint16_t count) { dmac_channel_disable(SPI_DMAC_TX_CH); DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLA = + count | DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLB = + DMAC_CTRLB_SRC_DSCR | DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | src_incr | DMAC_CTRLB_DST_INCR_FIXED; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(SPI_TX_IDX) | - DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; + DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CFG = + DMAC_CFG_DST_PER(SPI_TX_IDX) | DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | + DMAC_CFG_FIFOCFG_ALAP_CFG; dmac_channel_enable(SPI_DMAC_TX_CH); } @@ -146,35 +120,55 @@ void SdSpiArduinoDriver::activate() { pSpi->SPI_CR |= SPI_CR_SPIEN; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - SPI.endTransaction(); +void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { + (void)spiConfig; + SPI.begin(); +#if USE_SAM3X_DMAC + pmc_enable_periph_clk(ID_DMAC); + dmac_disable(); + DMAC->DMAC_GCFG = DMAC_GCFG_ARB_CFG_FIXED; + dmac_enable(); +#if USE_SAM3X_BUS_MATRIX_FIX + MATRIX->MATRIX_WPMR = 0x4d415400; + MATRIX->MATRIX_MCFG[1] = 1; + MATRIX->MATRIX_MCFG[2] = 1; + MATRIX->MATRIX_SCFG[0] = 0x01000010; + MATRIX->MATRIX_SCFG[1] = 0x01000010; + MATRIX->MATRIX_SCFG[7] = 0x01000010; +#endif // USE_SAM3X_BUS_MATRIX_FIX +#endif // USE_SAM3X_DMAC } //------------------------------------------------------------------------------ +void SdSpiArduinoDriver::deactivate() { SPI.endTransaction(); } +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::end() { SPI.end(); } +//------------------------------------------------------------------------------ static inline uint8_t spiTransfer(uint8_t b) { Spi* pSpi = SPI0; pSpi->SPI_TDR = b; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) { + } b = pSpi->SPI_RDR; return b; } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return spiTransfer(0XFF); -} +uint8_t SdSpiArduinoDriver::receive() { return spiTransfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { Spi* pSpi = SPI0; int rtn = 0; #if USE_SAM3X_DMAC // clear overrun error - while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) {pSpi->SPI_RDR;} + while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) { + pSpi->SPI_RDR; + } spiDmaRX(buf, count); spiDmaTX(0, count); uint32_t m = millis(); while (!dmac_channel_transfer_done(SPI_DMAC_RX_CH)) { - if ((millis() - m) > SAM3X_DMA_TIMEOUT) { + if ((millis() - m) > SAM3X_DMA_TIMEOUT) { dmac_channel_disable(SPI_DMAC_RX_CH); dmac_channel_disable(SPI_DMAC_TX_CH); rtn = 2; @@ -184,37 +178,39 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { if (pSpi->SPI_SR & SPI_SR_OVRES) { rtn |= 1; } -#else // USE_SAM3X_DMAC +#else // USE_SAM3X_DMAC for (size_t i = 0; i < count; i++) { pSpi->SPI_TDR = 0XFF; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) { + } buf[i] = pSpi->SPI_RDR; } #endif // USE_SAM3X_DMAC return rtn; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - spiTransfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { spiTransfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { Spi* pSpi = SPI0; #if USE_SAM3X_DMAC spiDmaTX(buf, count); - while (!dmac_channel_transfer_done(SPI_DMAC_TX_CH)) {} -#else // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} + while (!dmac_channel_transfer_done(SPI_DMAC_TX_CH)) { + } +#else // #if USE_SAM3X_DMAC + while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) { + } for (size_t i = 0; i < count; i++) { pSpi->SPI_TDR = buf[i]; - while ((pSpi->SPI_SR & SPI_SR_TDRE) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_TDRE) == 0) { + } } #endif // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} + while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) { + } // leave RDR empty - while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) {pSpi->SPI_RDR;} + while (pSpi->SPI_SR & (SPI_SR_OVRES | SPI_SR_RDRF)) { + pSpi->SPI_RDR; + } } #endif // defined(SD_USE_CUSTOM_SPI) && defined(ARDUINO_SAM_DUE) - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiESP.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiESP.cpp index 6ba868d2..27a51803 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiESP.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiESP.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,68 +24,63 @@ */ #include "SdSpiDriver.h" - - -namespace sdfat { - - #if defined(SD_USE_CUSTOM_SPI) && (defined(ESP8266) || defined(ESP32)) #define ESP_UNALIGN_OK 1 //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - ::SPI.beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { - (void)spiConfig; - ::SPI.begin(); + if (spiConfig.spiPort) { + m_spi = spiConfig.spiPort; +#if defined(SDCARD_SPI) && defined(SDCARD_SS_PIN) + } else if (spiConfig.csPin == SDCARD_SS_PIN) { + m_spi = &SDCARD_SPI; +#endif // defined(SDCARD_SPI) && defined(SDCARD_SS_PIN) + } else { + m_spi = &SPI; + } + m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - ::SPI.endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return ::SPI.transfer(0XFF); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { #if ESP_UNALIGN_OK - ::SPI.transferBytes(nullptr, buf, count); -#else // ESP_UNALIGN_OK + m_spi->transferBytes(nullptr, buf, count); +#else // ESP_UNALIGN_OK // Adjust to 32-bit alignment. while ((reinterpret_cast(buf) & 0X3) && count) { - *buf++ = ::SPI.transfer(0xff); + *buf++ = m_spi->transfer(0xff); count--; } // Do multiple of four byte transfers. - size_t n4 = 4*(count/4); + size_t n4 = 4 * (count / 4); if (n4) { - ::SPI.transferBytes(nullptr, buf, n4); + m_spi->transferBytes(nullptr, buf, n4); } // Transfer up to three remaining bytes. for (buf += n4, count -= n4; count; count--) { - *buf++ = ::SPI.transfer(0xff); + *buf++ = m_spi->transfer(0xff); } #endif // ESP_UNALIGN_OK return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - ::SPI.transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { #if !ESP_UNALIGN_OK // Adjust to 32-bit alignment. while ((reinterpret_cast(buf) & 0X3) && count) { - ::SPI.transfer(*buf++); + SPI.transfer(*buf++); count--; } #endif // #if ESP_UNALIGN_OK - ::SPI.transferBytes(const_cast(buf), nullptr, count); + + m_spi->transferBytes(const_cast(buf), nullptr, count); } -#endif // defined(SD_USE_CUSTOM_SPI) && defined(ESP8266) - - -}; // namespace sdfat +#endif // defined(SD_USE_CUSTOM_SPI) && (defined(ESP8266) || defined(ESP32)) diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiLibDriver.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiLibDriver.h index ca38a94e..44a7a2d5 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiLibDriver.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiLibDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,11 +28,6 @@ */ #ifndef SdSpiLibDriver_h #define SdSpiLibDriver_h - - -namespace sdfat { - - //------------------------------------------------------------------------------ inline void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); @@ -48,36 +43,72 @@ inline void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { } else { m_spi = &SPI; } - m_spi->begin(); + if (!(spiConfig.options & USER_SPI_BEGIN)) { + m_spi->begin(); + } } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +inline void SdSpiArduinoDriver::end() { m_spi->end(); } //------------------------------------------------------------------------------ -inline uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer( 0XFF); -} +inline void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } +//------------------------------------------------------------------------------ +inline uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ inline uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { +#if USE_SPI_ARRAY_TRANSFER == 0 for (size_t i = 0; i < count; i++) { buf[i] = m_spi->transfer(0XFF); } +#elif USE_SPI_ARRAY_TRANSFER == 1 + memset(buf, 0XFF, count); + m_spi->transfer(buf, count); +#elif USE_SPI_ARRAY_TRANSFER < 4 + m_spi->transfer(nullptr, buf, count); +#elif USE_SPI_ARRAY_TRANSFER == 4 + uint8_t txTmp[512]; + memset(txTmp, 0XFF, sizeof(txTmp)); + while (count) { + size_t n = count <= sizeof(txTmp) ? count : sizeof(txTmp); + m_spi->transfer(txTmp, buf, n); + buf += n; + count -= n; + } +#else // USE_SPI_ARRAY_TRANSFER == 0 +#error invalid USE_SPI_ARRAY_TRANSFER +#endif // USE_SPI_ARRAY_TRANSFER == 0 return 0; } //------------------------------------------------------------------------------ -inline void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +inline void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ inline void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { +#if USE_SPI_ARRAY_TRANSFER == 0 for (size_t i = 0; i < count; i++) { m_spi->transfer(buf[i]); } +#elif USE_SPI_ARRAY_TRANSFER == 1 + uint8_t tmp[512]; + while (count > 0) { + size_t n = count <= sizeof(tmp) ? count : sizeof(tmp); + memcpy(tmp, buf, n); + m_spi->transfer(tmp, n); + count -= n; + buf += n; + } +#elif USE_SPI_ARRAY_TRANSFER == 2 + // Some systems do not allow const uint8_t*. + m_spi->transfer(const_cast(buf), nullptr, count); +#elif USE_SPI_ARRAY_TRANSFER < 5 + uint8_t rxTmp[512]; + while (count > 0) { + size_t n = count <= sizeof(rxTmp) ? count : sizeof(rxTmp); + // Some systems do not allow const uint8_t*. + m_spi->transfer(const_cast(buf), rxTmp, n); + buf += n; + count -= n; + } +#else // if USE_SPI_ARRAY_TRANSFER == 0 +#error invalid USE_SPI_ARRAY_TRANSFER +#endif // USE_SPI_ARRAY_TRANSFER == 0 } - - -}; // namespace sdfat - - #endif // SdSpiLibDriver_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp index bbaa8e33..ecf6f52e 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,11 +23,6 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiDriver.h" - - -namespace sdfat { - - #if defined(SD_USE_CUSTOM_SPI) && defined(PLATFORM_ID) static volatile bool SPI_DMA_TransferCompleted = false; //----------------------------------------------------------------------------- @@ -35,9 +30,7 @@ static void SD_SPI_DMA_TransferComplete_Callback() { SPI_DMA_TransferCompleted = true; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -48,34 +41,29 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { SPI_DMA_TransferCompleted = false; m_spi->transfer(nullptr, buf, count, SD_SPI_DMA_TransferComplete_Callback); - while (!SPI_DMA_TransferCompleted) {} + while (!SPI_DMA_TransferCompleted) { + } return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { SPI_DMA_TransferCompleted = false; m_spi->transfer(const_cast(buf), nullptr, count, - SD_SPI_DMA_TransferComplete_Callback); + SD_SPI_DMA_TransferComplete_Callback); - while (!SPI_DMA_TransferCompleted) {} + while (!SPI_DMA_TransferCompleted) { + } } #endif // defined(SD_USE_CUSTOM_SPI) && defined(PLATFORM_ID) - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp index 26dbe87d..544c2dfb 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,14 +22,9 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ +// Driver for: https://github.com/rogerclarkmelbourne/Arduino_STM32 #include "SdSpiDriver.h" - - -namespace sdfat { - - -#if defined(SD_USE_CUSTOM_SPI)\ - && (defined(__STM32F1__) || defined(__STM32F4__)) +#if defined(SD_USE_CUSTOM_SPI) && (defined(__STM32F1__) || defined(__STM32F4__)) #if defined(__STM32F1__) #define USE_STM32_DMA 1 #elif defined(__STM32F4__) @@ -38,9 +33,7 @@ namespace sdfat { #error Unknown STM32 type #endif // defined(__STM32F1__) //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -51,35 +44,28 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { #if USE_STM32_DMA return m_spi->dmaTransfer(nullptr, buf, count); -#else // USE_STM32_DMA +#else // USE_STM32_DMA m_spi->read(buf, count); return 0; #endif // USE_STM32_DMA } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { #if USE_STM32_DMA m_spi->dmaTransfer(const_cast(buf), nullptr, count); -#else // USE_STM32_DMA +#else // USE_STM32_DMA m_spi->write(const_cast(buf), count); #endif // USE_STM32_DMA } #endif // defined(SD_USE_CUSTOM_SPI) && defined(__STM32F1__) - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32Core.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32Core.cpp new file mode 100644 index 00000000..8b7da947 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSTM32Core.cpp @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +// Driver for: https://github.com/stm32duino/Arduino_Core_STM32 +#include "SdSpiDriver.h" +#if defined(SD_USE_CUSTOM_SPI) && defined(STM32_CORE_VERSION) +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { + if (spiConfig.spiPort) { + m_spi = spiConfig.spiPort; + } else { + m_spi = &SPI; + } + m_spi->begin(); +} +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::end() { m_spi->end(); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { + // Must send 0XFF - SD looks at send data for command. + memset(buf, 0XFF, count); + m_spi->transfer(buf, count); + return 0; +} +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } +//------------------------------------------------------------------------------ +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { + // Avoid stack overflow if bad count. This should cause a write error. + if (count > 512) { + return; + } + // Not easy to avoid receive so use tmp RX buffer. + uint8_t rxBuf[512]; + // Discard const - STM32 not const correct. + m_spi->transfer(const_cast(buf), rxBuf, count); +} +#endif // defined(SD_USE_CUSTOM_SPI) && defined(STM32_CORE_VERSION) diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSoftDriver.h b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSoftDriver.h index 275ace59..c681ca4a 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSoftDriver.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiSoftDriver.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,11 +29,6 @@ #ifndef SdSpiSoftDriver_h #define SdSpiSoftDriver_h #include "../DigitalIO/SoftSPI.h" - - -namespace sdfat { - - /** * \class SdSpiSoftDriver * \brief Base class for external soft SPI. @@ -54,6 +49,8 @@ class SdSpiSoftDriver { } /** Deactivate SPI hardware. */ void deactivate() {} + /** deactivate SPI driver. */ + void end() {} /** Receive a byte. * * \return The byte. @@ -91,39 +88,33 @@ class SdSpiSoftDriver { * * \param[in] maxSck Maximum SCK frequency. */ - void setSckSpeed(uint32_t maxSck) { - (void)maxSck; - } + void setSckSpeed(uint32_t maxSck) { (void)maxSck; } }; //------------------------------------------------------------------------------ /** * \class SoftSpiDriver * \brief Class for external soft SPI. */ -template +template class SoftSpiDriver : public SdSpiSoftDriver { public: /** Initialize the SPI bus. */ - void begin() {m_spi.begin();} + void begin() { m_spi.begin(); } /** Receive a byte. * * \return The byte. */ - uint8_t receive() {return m_spi.receive();} + uint8_t receive() { return m_spi.receive(); } /** Send a byte. * * \param[in] data Byte to send */ - void send(uint8_t data) {m_spi.send(data);} + void send(uint8_t data) { m_spi.send(data); } + private: SoftSPI m_spi; }; /** Typedef for use of SdSoftSpiDriver */ typedef SdSpiSoftDriver SdSpiDriver; - - -}; // namespace sdfat - - #endif // SdSpiSoftDriver_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp index adf5f299..6c8e045b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,17 +23,10 @@ * DEALINGS IN THE SOFTWARE. */ #include "SdSpiDriver.h" - - -namespace sdfat { - - -#if defined(SD_USE_CUSTOM_SPI) && defined(__arm__) && defined(CORE_TEENSY) +#if defined(SD_USE_CUSTOM_SPI) && defined(__arm__) && defined(CORE_TEENSY) #define USE_BLOCK_TRANSFER 1 //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} +void SdSpiArduinoDriver::activate() { m_spi->beginTransaction(m_spiSettings); } //------------------------------------------------------------------------------ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { if (spiConfig.spiPort) { @@ -51,19 +44,17 @@ void SdSpiArduinoDriver::begin(SdSpiConfig spiConfig) { m_spi->begin(); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::deactivate() { - m_spi->endTransaction(); -} +void SdSpiArduinoDriver::deactivate() { m_spi->endTransaction(); } //------------------------------------------------------------------------------ -uint8_t SdSpiArduinoDriver::receive() { - return m_spi->transfer(0XFF); -} +void SdSpiArduinoDriver::end() { m_spi->end(); } +//------------------------------------------------------------------------------ +uint8_t SdSpiArduinoDriver::receive() { return m_spi->transfer(0XFF); } //------------------------------------------------------------------------------ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { #if USE_BLOCK_TRANSFER memset(buf, 0XFF, count); m_spi->transfer(buf, count); -#else // USE_BLOCK_TRANSFER +#else // USE_BLOCK_TRANSFER for (size_t i = 0; i < count; i++) { buf[i] = m_spi->transfer(0XFF); } @@ -71,11 +62,9 @@ uint8_t SdSpiArduinoDriver::receive(uint8_t* buf, size_t count) { return 0; } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(uint8_t data) { - m_spi->transfer(data); -} +void SdSpiArduinoDriver::send(uint8_t data) { m_spi->transfer(data); } //------------------------------------------------------------------------------ -void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { +void SdSpiArduinoDriver::send(const uint8_t* buf, size_t count) { #if USE_BLOCK_TRANSFER uint32_t tmp[128]; if (0 < count && count <= 512) { @@ -89,6 +78,3 @@ void SdSpiArduinoDriver::send(const uint8_t* buf , size_t count) { } } #endif // defined(SD_USE_CUSTOM_SPI) && defined(__arm__) &&defined(CORE_TEENSY) - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/ArduinoFiles.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/ArduinoFiles.h index e0234177..e5a06d64 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/ArduinoFiles.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/ArduinoFiles.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,12 +24,7 @@ */ #ifndef ArduinoFiles_h #define ArduinoFiles_h -#include "../SdFatConfig.h" - - -namespace sdfat { - - +#include "SysCall.h" //------------------------------------------------------------------------------ /** Arduino SD.h style flag for open for read. */ #ifndef FILE_READ @@ -44,7 +39,7 @@ namespace sdfat { * \class PrintFile * \brief PrintFile class. */ -template +template class PrintFile : public print_t, public BaseFile { public: using BaseFile::clearWriteError; @@ -55,16 +50,14 @@ class PrintFile : public print_t, public BaseFile { * \param[in] b byte to write. * \return one for success. */ - size_t write(uint8_t b) { - return BaseFile::write(&b, 1); - } + size_t write(uint8_t b) { return BaseFile::write(&b, 1); } }; //------------------------------------------------------------------------------ /** * \class StreamFile * \brief StreamFile class. */ -template +template class StreamFile : public stream_t, public BaseFile { public: using BaseFile::clearWriteError; @@ -77,46 +70,29 @@ class StreamFile : public stream_t, public BaseFile { /** \return number of bytes available from the current position to EOF * or INT_MAX if more than INT_MAX bytes are available. */ - int available() { - return BaseFile::available(); - } + int available() { return BaseFile::available(); } /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() { - BaseFile::sync(); - } + void flush() { BaseFile::sync(); } /** This function reports if the current file is a directory or not. - * \return true if the file is a directory. - */ - bool isDirectory() { - return BaseFile::isDir(); - } - /** No longer implemented due to Long File Names. - * - * Use getName(char* name, size_t size). - * \return a pointer to replacement suggestion. + * \return true if the file is a directory. */ - const char* name() const { - return "use getName()"; - } + bool isDirectory() { return BaseFile::isDir(); } +#ifndef DOXYGEN_SHOULD_SKIP_THIS + char* __attribute__((error("use getName(name, size)"))) name(); +#endif // DOXYGEN_SHOULD_SKIP_THIS /** Return the next available byte without consuming it. * * \return The byte if no error and not at eof else -1; */ - int peek() { - return BaseFile::peek(); - } + int peek() { return BaseFile::peek(); } /** \return the current file position. */ - PosType position() { - return BaseFile::curPosition(); - } + PosType position() { return BaseFile::curPosition(); } /** Read the next byte from a file. * * \return For success return the next byte in the file as an int. * If an error occurs or end of file is reached return -1. */ - int read() { - return BaseFile::read(); - } + int read() { return BaseFile::read(); } /** Rewind a file if it is a directory */ void rewindDirectory() { if (BaseFile::isDir()) { @@ -130,21 +106,15 @@ class StreamFile : public stream_t, public BaseFile { * \param[in] pos the new file position. * \return true for success or false for failure. */ - bool seek(PosType pos) { - return BaseFile::seekSet(pos); - } + bool seek(PosType pos) { return BaseFile::seekSet(pos); } /** \return the file's size. */ - PosType size() { - return BaseFile::fileSize(); - } + PosType size() { return BaseFile::fileSize(); } /** Write a byte to a file. Required by the Arduino Print class. * \param[in] b the byte to be written. * Use getWriteError to check for errors. * \return 1 for success and 0 for failure. */ - size_t write(uint8_t b) { - return BaseFile::write(b); - } + size_t write(uint8_t b) { return BaseFile::write(b); } /** Write data to an open file. * * \note Data is moved to the cache but may not be written to the @@ -161,9 +131,4 @@ class StreamFile : public stream_t, public BaseFile { return BaseFile::write(buffer, size); } }; - - -}; // namespace sdfat - - #endif // ArduinoFiles_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/CompileDateTime.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/CompileDateTime.h index 7de3a7f7..7cc041eb 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/CompileDateTime.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/CompileDateTime.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,61 +24,46 @@ */ #ifndef CompileDateTime_h #define CompileDateTime_h - - -namespace sdfat { - - +#include // Note - these functions will compile to a few bytes // since they are evaluated at compile time. /** \return year field of the __DATE__ macro. */ constexpr uint16_t compileYear() { - return 1000*(__DATE__[7] - '0') - + 100*(__DATE__[8] - '0') - + 10*(__DATE__[9] - '0') - + (__DATE__[10] - '0'); -} -/** \return true if str equals the month field of the __DATE__ macro. */ -constexpr bool compileMonthIs(const char* str) { - return __DATE__[0] == str[0] - && __DATE__[1] == str[1] - && __DATE__[2] == str[2]; + return 1000 * (__DATE__[7] - '0') + 100 * (__DATE__[8] - '0') + + 10 * (__DATE__[9] - '0') + (__DATE__[10] - '0'); } /** \return month field of the __DATE__ macro. */ constexpr uint8_t compileMonth() { - return compileMonthIs("Jan") ? 1 : - compileMonthIs("Feb") ? 2 : - compileMonthIs("Mar") ? 3 : - compileMonthIs("Apr") ? 4 : - compileMonthIs("May") ? 5 : - compileMonthIs("Jun") ? 6 : - compileMonthIs("Jul") ? 7 : - compileMonthIs("Aug") ? 8 : - compileMonthIs("Sep") ? 9 : - compileMonthIs("Oct") ? 10 : - compileMonthIs("Nov") ? 11 : - compileMonthIs("Dec") ? 12 : 0; + return __DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n' ? 1 + : __DATE__[0] == 'F' && __DATE__[1] == 'e' && __DATE__[2] == 'b' ? 2 + : __DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r' ? 3 + : __DATE__[0] == 'A' && __DATE__[1] == 'p' && __DATE__[2] == 'r' ? 4 + : __DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y' ? 5 + : __DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n' ? 6 + : __DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l' ? 7 + : __DATE__[0] == 'A' && __DATE__[1] == 'u' && __DATE__[2] == 'g' ? 8 + : __DATE__[0] == 'S' && __DATE__[1] == 'e' && __DATE__[2] == 'p' ? 9 + : __DATE__[0] == 'O' && __DATE__[1] == 'c' && __DATE__[2] == 't' ? 10 + : __DATE__[0] == 'N' && __DATE__[1] == 'o' && __DATE__[2] == 'v' ? 11 + : __DATE__[0] == 'D' && __DATE__[1] == 'e' && __DATE__[2] == 'c' ? 12 + : 0; } /** \return day field of the __DATE__ macro. */ constexpr uint8_t compileDay() { - return 10*(__DATE__[4] == ' ' ? 0 : __DATE__[4] - '0') + (__DATE__[5] - '0'); + return 10 * ((__DATE__[4] == ' ' ? '0' : __DATE__[4]) - '0') + + (__DATE__[5] - '0'); } /** \return hour field of the __TIME__ macro. */ constexpr uint8_t compileHour() { - return 10*(__TIME__[0] - '0') + __TIME__[1] - '0'; + return 10 * (__TIME__[0] - '0') + __TIME__[1] - '0'; } /** \return minute field of the __TIME__ macro. */ constexpr uint8_t compileMinute() { - return 10*(__TIME__[3] - '0') + __TIME__[4] - '0'; + return 10 * (__TIME__[3] - '0') + __TIME__[4] - '0'; } /** \return second field of the __TIME__ macro. */ constexpr uint8_t compileSecond() { - return 10*(__TIME__[6] - '0') + __TIME__[7] - '0'; + return 10 * (__TIME__[6] - '0') + __TIME__[7] - '0'; } - - -}; //namespace sdfat - - #endif // CompileDateTime_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/DebugMacros.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/DebugMacros.h index 804074a8..653cc86e 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/DebugMacros.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/DebugMacros.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,7 +24,9 @@ */ #ifndef DebugMacros_h #define DebugMacros_h -#include "../SdFatConfig.h" +#include "SysCall.h" + +// 0 - disable, 1 - fail, halt 2 - fail, halt, warn #define USE_DBG_MACROS 0 #if USE_DBG_MACROS @@ -33,30 +35,47 @@ #error DBG_FILE not defined #endif // DBG_FILE - -namespace sdfat { - - -static void dbgPrint(uint16_t line) { +__attribute__((unused)) static void dbgFail(uint16_t line) { Serial.print(F("DBG_FAIL: ")); Serial.print(F(DBG_FILE)); Serial.write('.'); Serial.println(line); } +__attribute__((unused)) static void dbgHalt(uint16_t line) { + Serial.print(F("DBG_HALT: ")); + Serial.print(F(DBG_FILE)); + Serial.write('.'); + Serial.println(line); + while (true) { + } +} +#define DBG_FAIL_MACRO dbgFail(__LINE__) +#define DBG_HALT_MACRO dbgHalt(__LINE__) +#define DBG_HALT_IF(b) \ + if (b) { \ + dbgHalt(__LINE__); \ + } - -}; // namespace sdfat - - -#define DBG_PRINT_IF(b) if (b) {Serial.print(F(__FILE__));\ - Serial.println(__LINE__);} -#define DBG_HALT_IF(b) if (b) { Serial.print(F("DBG_HALT "));\ - Serial.print(F(__FILE__)); Serial.println(__LINE__);\ - while (true) {}} -#define DBG_FAIL_MACRO dbgPrint(__LINE__); #else // USE_DBG_MACROS #define DBG_FAIL_MACRO -#define DBG_PRINT_IF(b) +#define DBG_HALT_MACRO #define DBG_HALT_IF(b) #endif // USE_DBG_MACROS + +#if USE_DBG_MACROS > 1 +__attribute__((unused)) static void dbgWarn(uint16_t line) { + Serial.print(F("DBG_WARN: ")); + Serial.print(F(DBG_FILE)); + Serial.write('.'); + Serial.println(line); +} +#define DBG_WARN_MACRO dbgWarn(__LINE__) +#define DBG_WARN_IF(b) \ + if (b) { \ + dbgWarn(__LINE__); \ + } +#else // USE_DBG_MACROS > 1 +#define DBG_WARN_MACRO +#define DBG_WARN_IF(b) +#endif // USE_DBG_MACROS > 1 #endif // DebugMacros_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.cpp index 6e02fff9..906d8ee0 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -40,80 +40,84 @@ // (we add 1 because we will be using the floor of the result later) // divmod10_asm16 and divmod10_asm32 are public domain code by Stimmer. // http://forum.arduino.cc/index.php?topic=167414.msg1293679#msg1293679 -#define divmod10_asm16(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " lsr %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") +#define divmod10_asm16(in32, mod8, tmp8) \ + asm volatile( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " lsr %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + : "+r"(in32), "=d"(mod8), "=d"(tmp8) \ + : \ + : "r0") -#define divmod10_asm32(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " mul %C0,%2 \n\t" \ - " clr %C0 \n\t" \ - " add %B0,r0 \n\t" \ - " adc %C0,r1 \n\t" \ - " mul %D0,%2 \n\t" \ - " clr %D0 \n\t" \ - " add %C0,r0 \n\t" \ - " adc %D0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,%C0 \n\t" \ - " adc %C0,%D0 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,%C0 \n\t" \ - " adc %B0,%D0 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%D0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " lsr %D0 \n\t" \ - " ror %C0 \n\t" \ - " ror %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") +#define divmod10_asm32(in32, mod8, tmp8) \ + asm volatile( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " mul %C0,%2 \n\t" \ + " clr %C0 \n\t" \ + " add %B0,r0 \n\t" \ + " adc %C0,r1 \n\t" \ + " mul %D0,%2 \n\t" \ + " clr %D0 \n\t" \ + " add %C0,r0 \n\t" \ + " adc %D0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,%C0 \n\t" \ + " adc %C0,%D0 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,%C0 \n\t" \ + " adc %B0,%D0 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%D0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " lsr %D0 \n\t" \ + " ror %C0 \n\t" \ + " ror %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + : "+r"(in32), "=d"(mod8), "=d"(tmp8) \ + : \ + : "r0") //------------------------------------------------------------------------------ /* // C++ code is based on this version of divmod10 by robtillaart. @@ -134,13 +138,12 @@ void divmod10(uint32_t in, uint32_t &div, uint32_t &mod) q = q >> 3; // determine error - uint32_t r = in - ((q << 3) + (q << 1)); // r = in - q*10; + uint32_t r = in - ((q << 3) + (q << 1)); // r = in - q*10; div = q + (r > 9); if (r > 9) mod = r - 10; else mod = r; } -// Hackers delight function is here: -// http://www.hackersdelight.org/hdcodetxt/divuc.c.txt +// See: https://github.com/hcs0/Hackers-Delight // Code below uses 8/10 = 0.1100 1100 1100 1100 1100 1100 1100 1100. // 15 ops including the multiply, or 17 elementary ops. unsigned divu10(unsigned n) { @@ -156,11 +159,6 @@ unsigned divu10(unsigned n) { // return q + (r > 9); } */ - - -namespace sdfat { - - //------------------------------------------------------------------------------ // Format 16-bit unsigned char* fmtBase10(char* str, uint16_t n) { @@ -168,7 +166,7 @@ char* fmtBase10(char* str, uint16_t n) { #ifdef USE_STIMMER uint8_t tmp8, r; divmod10_asm16(n, r, tmp8); -#else // USE_STIMMER +#else // USE_STIMMER uint16_t t = n; n = (n >> 1) + (n >> 2); n = n + (n >> 4); @@ -193,7 +191,7 @@ char* fmtBase10(char* str, uint32_t n) { #ifdef USE_STIMMER uint8_t tmp8, r; divmod10_asm32(n, r, tmp8); -#else // USE_STIMMER +#else // USE_STIMMER uint32_t t = n; n = (n >> 1) + (n >> 2); n = n + (n >> 4); @@ -237,7 +235,7 @@ char* fmtUnsigned(char* str, uint32_t num, uint8_t base, bool caps) { if (base == 10) return fmtBase10(str, (uint32_t)num); #endif // USE_FMT_BASE10 do { - int c = num%base; + int c = num % base; *--str = c + (c < 10 ? '0' : caps ? 'A' - 10 : 'a' - 10); } while (num /= base); return str; @@ -245,11 +243,11 @@ char* fmtUnsigned(char* str, uint32_t num, uint8_t base, bool caps) { //----------------------------------------------------------------------------- static const double powTen[] = {1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9}; -static const double rnd[] = - {5e-1, 5e-2, 5e-3, 5e-4, 5e-5, 5e-6, 5e-7, 5e-8, 5e-9, 5e-10}; -static const size_t MAX_PREC = sizeof(powTen)/sizeof(powTen[0]); +static const double rnd[] = {5e-1, 5e-2, 5e-3, 5e-4, 5e-5, + 5e-6, 5e-7, 5e-8, 5e-9, 5e-10}; +static const size_t MAX_PREC = sizeof(powTen) / sizeof(powTen[0]); -char *fmtDouble(char *str, double num, uint8_t prec, bool altFmt) { +char* fmtDouble(char* str, double num, uint8_t prec, bool altFmt) { bool neg = num < 0; if (neg) { num = -num; @@ -281,7 +279,7 @@ char *fmtDouble(char *str, double num, uint8_t prec, bool altFmt) { uint32_t ul = num; if (prec) { char* s = str - prec; - uint32_t f = (num - ul)*powTen[prec - 1]; + uint32_t f = (num - ul) * powTen[prec - 1]; str = fmtBase10(str, f); while (str > s) { *--str = '0'; @@ -304,8 +302,8 @@ char *fmtDouble(char *str, double num, uint8_t prec, bool altFmt) { * \param[in] expChar Use exp format if non zero. * \return Pointer to first character of result. */ -char* fmtDouble(char* str, double value, - uint8_t prec, bool altFmt, char expChar) { +char* fmtDouble(char* str, double value, uint8_t prec, bool altFmt, + char expChar) { if (expChar != 'e' && expChar != 'E') { expChar = 0; } @@ -353,11 +351,11 @@ char* fmtDouble(char* str, double value, exp++; } } else if (value < 1.0L) { - while (value < 1e-16L) { + while (value < 1e-16L) { value *= 1e16L; exp -= 16; } - while (value < 1e-4L) { + while (value < 1e-4L) { value *= 1e4L; exp -= 4; } @@ -390,13 +388,13 @@ char* fmtDouble(char* str, double value, uint32_t whole = value; if (prec) { char* tmp = str - prec; - uint32_t fraction = (value - whole)*powTen[prec - 1]; + uint32_t fraction = (value - whole) * powTen[prec - 1]; str = fmtBase10(str, fraction); while (str > tmp) { *--str = '0'; } } - if (prec || altFmt)*--str = '.'; + if (prec || altFmt) *--str = '.'; str = fmtBase10(str, whole); if (neg) { *--str = '-'; @@ -410,14 +408,14 @@ char* fmtDouble(char* str, double value, #ifdef __AVR__ static const float m[] PROGMEM = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; static const float p[] PROGMEM = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; -#else // __AVR__ +#else // __AVR__ static const float m[] = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; static const float p[] = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; #endif // __AVR__ #endif // DOXYGEN_SHOULD_SKIP_THIS // scale float v by power of ten. return v*10^n float scale10(float v, int8_t n) { - const float *s; + const float* s; if (n < 0) { n = -n; s = m; @@ -430,7 +428,7 @@ float scale10(float v, int8_t n) { if (n & 1) { v *= pgm_read_float(&s[i]); } -#else // __AVR__ +#else // __AVR__ if (n & 1) { v *= s[i]; } @@ -455,7 +453,8 @@ float scanFloat(const char* str, const char** ptr) { *ptr = str; } - while (isSpace((c = *str++))) {} + while (isSpace((c = *str++))) { + } neg = c == '-'; if (c == '-' || c == '+') { c = *str++; @@ -469,7 +468,7 @@ float scanFloat(const char* str, const char** ptr) { if (isDigit(c)) { digit = true; if (nd < 9) { - fract = 10*fract + c - '0'; + fract = 10 * fract + c - '0'; nd++; if (dot) { fracExp--; @@ -504,7 +503,7 @@ float scanFloat(const char* str, const char** ptr) { if (exp > EXP_LIMIT) { goto fail; } - exp = 10*exp + c - '0'; + exp = 10 * exp + c - '0'; successPtr = str; c = *str++; } @@ -516,9 +515,6 @@ float scanFloat(const char* str, const char** ptr) { v = scale10(static_cast(fract), fracExp); return neg ? -v : v; - fail: +fail: return 0; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.h index f02d4244..7f435232 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FmtNumber.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,28 +25,15 @@ #ifndef FmtNumber_h #define FmtNumber_h #include -#include #include - - -namespace sdfat { - - -inline bool isDigit(char c) { - return '0' <= (c) && (c) <= '9'; -} -inline bool isSpace(char c) { - return (c) == ' ' || (0X9 <= (c) && (c) <= 0XD); -} +#include +inline bool isDigit(char c) { return '0' <= (c) && (c) <= '9'; } +inline bool isSpace(char c) { return (c) == ' ' || (0X9 <= (c) && (c) <= 0XD); } char* fmtBase10(char* str, uint16_t n); char* fmtBase10(char* str, uint32_t n); -char* fmtDouble(char *str, double d, uint8_t prec, bool altFmt); +char* fmtDouble(char* str, double d, uint8_t prec, bool altFmt); char* fmtDouble(char* str, double d, uint8_t prec, bool altFmt, char expChar); char* fmtHex(char* str, uint32_t n); char* fmtSigned(char* str, int32_t n, uint8_t base, bool caps); char* fmtUnsigned(char* str, uint32_t n, uint8_t base, bool caps); - -}; // namespace sdfat - - #endif // FmtNumber_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsApiConstants.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsApiConstants.h index 6c5fa079..3fcc20ca 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsApiConstants.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsApiConstants.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,15 +24,9 @@ */ #ifndef FsApiConstants_h #define FsApiConstants_h -#include "../SdFatConfig.h" - +#include "SysCall.h" #if USE_FCNTL_H #include - - -namespace sdfat { - - /* values for GNU Arm Embedded Toolchain. * O_RDONLY: 0x0 * O_WRONLY: 0x1 @@ -48,79 +42,23 @@ namespace sdfat { /** Use O_NONBLOCK for open at EOF */ #define O_AT_END O_NONBLOCK ///< Open at EOF. typedef int oflag_t; +#else // USE_FCNTL_H +#define O_RDONLY 0X00 ///< Open for reading only. +#define O_WRONLY 0X01 ///< Open for writing only. +#define O_RDWR 0X02 ///< Open for reading and writing. +#define O_AT_END 0X04 ///< Open at EOF. +#define O_APPEND 0X08 ///< Set append mode. +#define O_CREAT 0x10 ///< Create file if it does not exist. +#define O_TRUNC 0x20 ///< Truncate file to zero length. +#define O_EXCL 0x40 ///< Fail if the file exists. +#define O_SYNC 0x80 ///< Synchronized write I/O operations. - -}; // namespace sdfat - - -#else // USE_FCNTL_H - -#include - -namespace sdfat { - -#ifdef O_RDONLY -#undef O_RDONLY -#endif // O_RDONLY -#ifdef O_RDWR -#undef O_RDWR -#endif // O_RDWR -#ifdef O_WRONLY -#undef O_WRONLY -#endif // O_WRONLY -//------------------------------------------------------------------------------ -// use the gnu style oflag in open() -/** open() oflag for reading */ -const uint8_t O_READ = 0X01; -/** open() oflag - same as O_IN */ -const uint8_t O_RDONLY = O_READ; -/** open() oflag for write */ -const uint8_t O_WRITE = 0X02; -/** open() oflag - same as O_WRITE */ -const uint8_t O_WRONLY = O_WRITE; -/** open() oflag for reading and writing */ -const uint8_t O_RDWR = (O_READ | O_WRITE); -/** open() oflag mask for access modes */ -const uint8_t O_ACCMODE = (O_READ | O_WRITE); -/** The file offset shall be set to the end of the file prior to each write. */ -const uint8_t O_APPEND = 0X04; -/** synchronous writes - call sync() after each write */ -const uint8_t O_SYNC = 0X08; -/** truncate the file to zero length */ -const uint8_t O_TRUNC = 0X10; -/** set the initial position at the end of the file */ -const uint8_t O_AT_END = 0X20; -/** create the file if nonexistent */ -const uint8_t O_CREAT = 0X40; -/** If O_CREAT and O_EXCL are set, open() shall fail if the file exists */ -const uint8_t O_EXCL = 0X80; -#if 0 -#define O_RDONLY 0X00 ///< Open for reading only. -#define O_WRONLY 0X01 ///< Open for writing only. -#define O_RDWR 0X02 ///< Open for reading and writing. -#define O_AT_END 0X04 ///< Open at EOF. -#define O_APPEND 0X08 ///< Set append mode. -#define O_CREAT 0x10 ///< Create file if it does not exist. -#define O_TRUNC 0x20 ///< Truncate file to zero length. -#define O_EXCL 0x40 ///< Fail if the file exists. -#define O_SYNC 0x80 ///< Synchronized write I/O operations. - -#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) ///< Mask for access mode. -#endif +#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) ///< Mask for access mode. typedef uint8_t oflag_t; +#endif // USE_FCNTL_H - -}; // namespace sdfat - - -#endif // USE_FCNTL_H - - -namespace sdfat { - - -#define O_READ O_RDONLY -#define O_WRITE O_WRONLY +#define O_READ O_RDONLY +#define O_WRITE O_WRONLY inline bool isWriteMode(oflag_t oflag) { oflag &= O_ACCMODE; @@ -144,9 +82,4 @@ const uint8_t T_ACCESS = 1; const uint8_t T_CREATE = 2; /** Set the file's write date and time */ const uint8_t T_WRITE = 4; - - -}; // namespace sdfat - - #endif // FsApiConstants_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/BlockDevice.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsBlockDevice.h similarity index 84% rename from extra-libraries/ESP8266/ESP8266SdFat/src/common/BlockDevice.h rename to extra-libraries/ESP8266/ESP8266SdFat/src/common/FsBlockDevice.h index 2d9e1fc3..e89c5b02 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/BlockDevice.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsBlockDevice.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,22 +22,12 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#ifndef BlockDevice_h -#define BlockDevice_h +#ifndef FsBlockDevice_h +#define FsBlockDevice_h #include "SdCard/SdCard.h" - - -namespace sdfat { - - #if HAS_SDIO_CLASS || USE_BLOCK_DEVICE_INTERFACE -typedef BlockDeviceInterface BlockDevice; +typedef FsBlockDeviceInterface FsBlockDevice; #else -typedef SdCard BlockDevice; +typedef SdCard FsBlockDevice; #endif - - -}; // namespace sdfat - - -#endif // BlockDevice_h +#endif // FsBlockDevice_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/BlockDeviceInterface.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsBlockDeviceInterface.h similarity index 84% rename from extra-libraries/ESP8266/ESP8266SdFat/src/common/BlockDeviceInterface.h rename to extra-libraries/ESP8266/ESP8266SdFat/src/common/FsBlockDeviceInterface.h index f272e2b3..93913181 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/BlockDeviceInterface.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsBlockDeviceInterface.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,25 +24,28 @@ */ /** * \file - * \brief BlockDeviceInterface include file. + * \brief FsBlockDeviceInterface include file. */ -#ifndef BlockDeviceInterface_h -#define BlockDeviceInterface_h -#include +#ifndef FsBlockDeviceInterface_h +#define FsBlockDeviceInterface_h #include -#include "../SdFatConfig.h" - - -namespace sdfat { - - +#include /** - * \class BlockDeviceInterface - * \brief BlockDeviceInterface class. + * \class FsBlockDeviceInterface + * \brief FsBlockDeviceInterface class. */ -class BlockDeviceInterface { +class FsBlockDeviceInterface { public: - virtual ~BlockDeviceInterface() {} + virtual ~FsBlockDeviceInterface() {} + + /** end use of device */ + virtual void end() {} + /** + * Check for FsBlockDevice busy. + * + * \return true if busy else false. + */ + virtual bool isBusy() = 0; /** * Read a sector. * @@ -51,7 +54,7 @@ class BlockDeviceInterface { * \return true for success or false for failure. */ virtual bool readSector(uint32_t sector, uint8_t* dst) = 0; -#if USE_MULTI_SECTOR_IO + /** * Read multiple sectors. * @@ -61,7 +64,7 @@ class BlockDeviceInterface { * \return true for success or false for failure. */ virtual bool readSectors(uint32_t sector, uint8_t* dst, size_t ns) = 0; -#endif // USE_MULTI_SECTOR_IO + /** \return device size in sectors. */ virtual uint32_t sectorCount() = 0; @@ -78,7 +81,7 @@ class BlockDeviceInterface { * \return true for success or false for failure. */ virtual bool writeSector(uint32_t sector, const uint8_t* src) = 0; -#if USE_MULTI_SECTOR_IO + /** * Write multiple sectors. * @@ -88,11 +91,5 @@ class BlockDeviceInterface { * \return true for success or false for failure. */ virtual bool writeSectors(uint32_t sector, const uint8_t* src, size_t ns) = 0; -#endif // USE_MULTI_SECTOR_IO }; - - -}; // namespace sdfat - - -#endif // BlockDeviceInterface_h +#endif // FsBlockDeviceInterface_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.cpp new file mode 100644 index 00000000..031c42ee --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.cpp @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#define DBG_FILE "FsCache.cpp" +#include "FsCache.h" + +#include "DebugMacros.h" +//------------------------------------------------------------------------------ +uint8_t* FsCache::prepare(uint32_t sector, uint8_t option) { + if (!m_blockDev) { + DBG_FAIL_MACRO; + goto fail; + } + if (m_sector != sector) { + if (!sync()) { + DBG_FAIL_MACRO; + goto fail; + } + if (!(option & CACHE_OPTION_NO_READ)) { + if (!m_blockDev->readSector(sector, m_buffer)) { + DBG_FAIL_MACRO; + goto fail; + } + } + m_status = 0; + m_sector = sector; + } + m_status |= option & CACHE_STATUS_MASK; + return m_buffer; + +fail: + return nullptr; +} +//------------------------------------------------------------------------------ +bool FsCache::sync() { + if (m_status & CACHE_STATUS_DIRTY) { + if (!m_blockDev->writeSector(m_sector, m_buffer)) { + DBG_FAIL_MACRO; + goto fail; + } + // mirror second FAT + if (m_status & CACHE_STATUS_MIRROR_FAT) { + if (!m_blockDev->writeSector(m_sector + m_mirrorOffset, m_buffer)) { + DBG_FAIL_MACRO; + goto fail; + } + } + m_status &= ~CACHE_STATUS_DIRTY; + } + return true; + +fail: + return false; +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.h new file mode 100644 index 00000000..54778012 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsCache.h @@ -0,0 +1,176 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#ifndef FsCache_h +#define FsCache_h +/** + * \file + * \brief Common cache code for exFAT and FAT. + */ +#include "FsBlockDevice.h" +#include "SysCall.h" +/** + * \class FsCache + * \brief Sector cache. + */ +class FsCache { + public: + /** Cached sector is dirty */ + static const uint8_t CACHE_STATUS_DIRTY = 1; + /** Cashed sector is FAT entry and must be mirrored in second FAT. */ + static const uint8_t CACHE_STATUS_MIRROR_FAT = 2; + /** Cache sector status bits */ + static const uint8_t CACHE_STATUS_MASK = + CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT; + /** Sync existing sector but do not read new sector. */ + static const uint8_t CACHE_OPTION_NO_READ = 4; + /** Cache sector for read. */ + static const uint8_t CACHE_FOR_READ = 0; + /** Cache sector for write. */ + static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY; + /** Reserve cache sector for write - do not read from sector device. */ + static const uint8_t CACHE_RESERVE_FOR_WRITE = + CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; + //---------------------------------------------------------------------------- + /** Cobstructor. */ + FsCache() { init(nullptr); } + /** \return Cache buffer address. */ + uint8_t* cacheBuffer() { return m_buffer; } + /** + * Cache safe read of a sector. + * + * \param[in] sector Logical sector to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return true for success or false for failure. + */ + bool cacheSafeRead(uint32_t sector, uint8_t* dst) { + if (isCached(sector)) { + memcpy(dst, m_buffer, 512); + return true; + } + return m_blockDev->readSector(sector, dst); + } + /** + * Cache safe read of multiple sectors. + * + * \param[in] sector Logical sector to be read. + * \param[in] count Number of sectors to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return true for success or false for failure. + */ + bool cacheSafeRead(uint32_t sector, uint8_t* dst, size_t count) { + if (isCached(sector, count) && !sync()) { + return false; + } + return m_blockDev->readSectors(sector, dst, count); + } + /** + * Cache safe write of a sectors. + * + * \param[in] sector Logical sector to be written. + * \param[in] src Pointer to the location of the data to be written. + * \return true for success or false for failure. + */ + bool cacheSafeWrite(uint32_t sector, const uint8_t* src) { + if (isCached(sector)) { + invalidate(); + } + return m_blockDev->writeSector(sector, src); + } + /** + * Cache safe write of multiple sectors. + * + * \param[in] sector Logical sector to be written. + * \param[in] src Pointer to the location of the data to be written. + * \param[in] count Number of sectors to be written. + * \return true for success or false for failure. + */ + bool cacheSafeWrite(uint32_t sector, const uint8_t* src, size_t count) { + if (isCached(sector, count)) { + invalidate(); + } + return m_blockDev->writeSectors(sector, src, count); + } + /** \return Clear the cache and returns a pointer to the cache. */ + uint8_t* clear() { + if (isDirty() && !sync()) { + return nullptr; + } + invalidate(); + return m_buffer; + } + /** Set current sector dirty. */ + void dirty() { m_status |= CACHE_STATUS_DIRTY; } + /** Initialize the cache. + * \param[in] blockDev Block device for this cache. + */ + void init(FsBlockDevice* blockDev) { + m_blockDev = blockDev; + invalidate(); + } + /** Invalidate current cache sector. */ + void invalidate() { + m_status = 0; + m_sector = 0XFFFFFFFF; + } + /** Check if a sector is in the cache. + * \param[in] sector Sector to checked. + * \return true if the sector is cached. + */ + bool isCached(uint32_t sector) const { return sector == m_sector; } + /** Check if the cache contains a sector from a range. + * \param[in] sector Start sector of the range. + * \param[in] count Number of sectors in the range. + * \return true if a sector in the range is cached. + */ + bool isCached(uint32_t sector, size_t count) { + return sector <= m_sector && m_sector < (sector + count); + } + /** \return dirty status */ + bool isDirty() { return m_status & CACHE_STATUS_DIRTY; } + /** Prepare cache to access sector. + * \param[in] sector Sector to read. + * \param[in] option mode for cached sector. + * \return Address of cached sector. + */ + uint8_t* prepare(uint32_t sector, uint8_t option); + /** \return Logical sector number for cached sector. */ + uint32_t sector() { return m_sector; } + /** Set the offset to the second FAT for mirroring. + * \param[in] offset Sector offset to second FAT. + */ + void setMirrorOffset(uint32_t offset) { m_mirrorOffset = offset; } + /** Write current sector if dirty. + * \return true for success or false for failure. + */ + bool sync(); + + private: + uint8_t m_status; + FsBlockDevice* m_blockDev; + uint32_t m_sector; + uint32_t m_mirrorOffset; + uint8_t m_buffer[512]; +}; +#endif // FsCache_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.cpp index 512314b3..be3736b6 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,13 +22,10 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include "SysCall.h" #include "FsDateTime.h" + #include "FmtNumber.h" - - -namespace sdfat { - +#include "SysCall.h" static void dateTimeMs10(uint16_t* date, uint16_t* time, uint8_t* ms10) { *ms10 = 0; @@ -37,19 +34,17 @@ static void dateTimeMs10(uint16_t* date, uint16_t* time, uint8_t* ms10) { //------------------------------------------------------------------------------ /** Date time callback. */ namespace FsDateTime { - void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10) = nullptr; - void (*callback2)(uint16_t* date, uint16_t* time) = nullptr; - void clearCallback() { - callback = nullptr; - } - void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)) { - callback = dateTimeMs10; - callback2 = dateTime; - } - void setCallback( - void (*dateTime)(uint16_t* date, uint16_t* time, uint8_t* ms10)) { - callback = dateTime; - } +void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10) = nullptr; +void (*callback2)(uint16_t* date, uint16_t* time) = nullptr; +void clearCallback() { callback = nullptr; } +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)) { + callback = dateTimeMs10; + callback2 = dateTime; +} +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time, + uint8_t* ms10)) { + callback = dateTime; +} } // namespace FsDateTime //------------------------------------------------------------------------------ static char* fsFmtField(char* str, uint16_t n, char sep) { @@ -78,15 +73,14 @@ char* fsFmtTime(char* str, uint16_t time) { } //------------------------------------------------------------------------------ char* fsFmtTime(char* str, uint16_t time, uint8_t sec100) { - str = fsFmtField(str, sec100%100, 0); - str = fsFmtField(str, 2*(time & 31) + sec100/100, '.'); + str = fsFmtField(str, 2 * (time & 31) + (sec100 < 100 ? 0 : 1), 0); *--str = ':'; return fsFmtTime(str, time); } //------------------------------------------------------------------------------ char* fsFmtTimeZone(char* str, int8_t tz) { - char sign; if (tz & 0X80) { + char sign; if (tz & 0X40) { sign = '-'; tz = -tz; @@ -95,8 +89,8 @@ char* fsFmtTimeZone(char* str, int8_t tz) { tz &= 0X7F; } if (tz) { - str = fsFmtField(str, 15*(tz%4), 0); - str = fsFmtField(str, tz/4, ':'); + str = fsFmtField(str, 15 * (tz % 4), 0); + str = fsFmtField(str, tz / 4, ':'); *--str = sign; } *--str = 'C'; @@ -108,12 +102,12 @@ char* fsFmtTimeZone(char* str, int8_t tz) { //------------------------------------------------------------------------------ size_t fsPrintDate(print_t* pr, uint16_t date) { // Allow YYYY-MM-DD - char buf[sizeof("YYYY-MM-DD") -1]; + char buf[sizeof("YYYY-MM-DD") - 1]; char* str = buf + sizeof(buf); if (date) { str = fsFmtDate(str, date); } else { - do { + do { *--str = ' '; } while (str > buf); } @@ -122,7 +116,7 @@ size_t fsPrintDate(print_t* pr, uint16_t date) { //------------------------------------------------------------------------------ size_t fsPrintDateTime(print_t* pr, uint16_t date, uint16_t time) { // Allow YYYY-MM-DD hh:mm - char buf[sizeof("YYYY-MM-DD hh:mm") -1]; + char buf[sizeof("YYYY-MM-DD hh:mm") - 1]; char* str = buf + sizeof(buf); if (date) { str = fsFmtTime(str, time); @@ -140,10 +134,10 @@ size_t fsPrintDateTime(print_t* pr, uint32_t dateTime) { return fsPrintDateTime(pr, dateTime >> 16, dateTime & 0XFFFF); } //------------------------------------------------------------------------------ -size_t fsPrintDateTime(print_t* pr, - uint32_t dateTime, uint8_t s100, int8_t tz) { - // Allow YYYY-MM-DD hh:mm:ss.ss UTC+hh:mm - char buf[sizeof("YYYY-MM-DD hh:mm:ss.ss UTC+hh:mm") -1]; +size_t fsPrintDateTime(print_t* pr, uint32_t dateTime, uint8_t s100, + int8_t tz) { + // Allow YYYY-MM-DD hh:mm:ss UTC+hh:mm + char buf[sizeof("YYYY-MM-DD hh:mm:ss UTC+hh:mm") - 1]; char* str = buf + sizeof(buf); if (tz) { str = fsFmtTimeZone(str, tz); @@ -157,15 +151,15 @@ size_t fsPrintDateTime(print_t* pr, //------------------------------------------------------------------------------ size_t fsPrintTime(print_t* pr, uint16_t time) { // Allow hh:mm - char buf[sizeof("hh:mm") -1]; + char buf[sizeof("hh:mm") - 1]; char* str = buf + sizeof(buf); str = fsFmtTime(str, time); return pr->write(reinterpret_cast(str), buf + sizeof(buf) - str); } //------------------------------------------------------------------------------ size_t fsPrintTime(print_t* pr, uint16_t time, uint8_t sec100) { - // Allow hh:mm:ss.ss - char buf[sizeof("hh:mm:ss.ss") -1]; + // Allow hh:mm:ss + char buf[sizeof("hh:mm:ss") - 1]; char* str = buf + sizeof(buf); str = fsFmtTime(str, time, sec100); return pr->write(reinterpret_cast(str), buf + sizeof(buf) - str); @@ -173,11 +167,8 @@ size_t fsPrintTime(print_t* pr, uint16_t time, uint8_t sec100) { //------------------------------------------------------------------------------ size_t fsPrintTimeZone(print_t* pr, int8_t tz) { // Allow UTC+hh:mm - char buf[sizeof("UTC+hh:mm") -1]; + char buf[sizeof("UTC+hh:mm") - 1]; char* str = buf + sizeof(buf); str = fsFmtTimeZone(str, tz); return pr->write(reinterpret_cast(str), buf + sizeof(buf) - str); } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.h index f489c71b..3080c14b 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsDateTime.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,13 +25,10 @@ #ifndef FsDateTime_h #define FsDateTime_h #include + #include "CompileDateTime.h" #include "SysCall.h" - -namespace sdfat { - - /** Backward compatible definition. */ #define FAT_DATE(y, m, d) FS_DATE(y, m, d) @@ -40,74 +37,74 @@ namespace sdfat { /** Date time callback */ namespace FsDateTime { - /** Date time callback. */ - extern void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10); - /** Date time callback. */ - extern void (*callback2)(uint16_t* date, uint16_t* time); - /** Cancel callback. */ - void clearCallback(); - /** Set the date/time callback function. - * - * \param[in] dateTime The user's call back function. The callback. - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here. - * - * // Return date using FS_DATE macro to format fields. - * *date = FS_DATE(year, month, day); - * - * // Return time using FS_TIME macro to format fields. - * *time = FS_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - */ - void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)); - /** Set the date/time callback function. - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here. - * - * // Return date using FS_DATE macro to format fields - * *date = FS_DATE(year, month, day); - * - * // Return time using FS_TIME macro to format fields - * *time = FS_TIME(hour, minute, second); - * - * // Return tenths of milliseconds since last even second. - * // The granularity of the seconds part of FS_TIME is 2 seconds so - * // this field is a count of tenths of a second and its valid value - * // range is 0-199 inclusive. - * // For a simple RTC return 100*(seconds & 1). - * *ms10 = - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - */ - void setCallback( - void (*dateTime)(uint16_t* date, uint16_t* time, uint8_t* ms10)); +/** Date time callback. */ +extern void (*callback)(uint16_t* date, uint16_t* time, uint8_t* ms10); +/** Date time callback. */ +extern void (*callback2)(uint16_t* date, uint16_t* time); +/** Cancel callback. */ +void clearCallback(); +/** Set the date/time callback function. + * + * \param[in] dateTime The user's call back function. The callback. + * function is of the form: + * + * \code + * void dateTime(uint16_t* date, uint16_t* time) { + * uint16_t year; + * uint8_t month, day, hour, minute, second; + * + * // User gets date and time from GPS or real-time clock here. + * + * // Return date using FS_DATE macro to format fields. + * *date = FS_DATE(year, month, day); + * + * // Return time using FS_TIME macro to format fields. + * *time = FS_TIME(hour, minute, second); + * } + * \endcode + * + * Sets the function that is called when a file is created or when + * a file's directory entry is modified by sync(). All timestamps, + * access, creation, and modify, are set when a file is created. + * sync() maintains the last access date and last modify date/time. + * + */ +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time)); +/** Set the date/time callback function. + * + * \param[in] dateTime The user's call back function. The callback + * function is of the form: + * + * \code + * void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { + * uint16_t year; + * uint8_t month, day, hour, minute, second; + * + * // User gets date and time from GPS or real-time clock here. + * + * // Return date using FS_DATE macro to format fields + * *date = FS_DATE(year, month, day); + * + * // Return time using FS_TIME macro to format fields + * *time = FS_TIME(hour, minute, second); + * + * // Return the time since the last even second in units of 10 ms. + * // The granularity of the seconds part of FS_TIME is 2 seconds so + * // this field is a count of hundredth of a second and its valid + * // range is 0-199 inclusive. + * // For a simple RTC return 100*(seconds & 1). + * *ms10 = + * } + * \endcode + * + * Sets the function that is called when a file is created or when + * a file's directory entry is modified by sync(). All timestamps, + * access, creation, and modify, are set when a file is created. + * sync() maintains the last access date and last modify date/time. + * + */ +void setCallback(void (*dateTime)(uint16_t* date, uint16_t* time, + uint8_t* ms10)); } // namespace FsDateTime /** date field for directory entry @@ -119,8 +116,8 @@ namespace FsDateTime { */ static inline uint16_t FS_DATE(uint16_t year, uint8_t month, uint8_t day) { year -= 1980; - return year > 127 || month > 12 || day > 31 ? 0 : - year << 9 | month << 5 | day; + return year > 127 || month > 12 || day > 31 ? 0 + : year << 9 | month << 5 | day; } /** year part of FAT directory date field * \param[in] fatDate Date in packed dir format. @@ -143,9 +140,7 @@ static inline uint8_t FS_MONTH(uint16_t fatDate) { * * \return Extracted day [1,31] */ -static inline uint8_t FS_DAY(uint16_t fatDate) { - return fatDate & 0X1F; -} +static inline uint8_t FS_DAY(uint16_t fatDate) { return fatDate & 0X1F; } /** time field for directory entry * \param[in] hour [0,23] * \param[in] minute [0,59] @@ -154,17 +149,16 @@ static inline uint8_t FS_DAY(uint16_t fatDate) { * \return Packed time for directory entry. */ static inline uint16_t FS_TIME(uint8_t hour, uint8_t minute, uint8_t second) { - return hour > 23 || minute > 59 || second > 59 ? 0 : - hour << 11 | minute << 5 | second >> 1; + return hour > 23 || minute > 59 || second > 59 + ? 0 + : hour << 11 | minute << 5 | second >> 1; } /** hour part of FAT directory time field * \param[in] fatTime Time in packed dir format. * * \return Extracted hour [0,23] */ -static inline uint8_t FS_HOUR(uint16_t fatTime) { - return fatTime >> 11; -} +static inline uint8_t FS_HOUR(uint16_t fatTime) { return fatTime >> 11; } /** minute part of FAT directory time field * \param[in] fatTime Time in packed dir format. * @@ -181,7 +175,7 @@ static inline uint8_t FS_MINUTE(uint16_t fatTime) { * \return Extracted second [0,58] */ static inline uint8_t FS_SECOND(uint16_t fatTime) { - return 2*(fatTime & 0X1F); + return 2 * (fatTime & 0X1F); } char* fsFmtDate(char* str, uint16_t date); char* fsFmtTime(char* str, uint16_t time); @@ -194,9 +188,4 @@ size_t fsPrintDateTime(print_t* pr, uint32_t dateTime, uint8_t s100, int8_t tz); size_t fsPrintTime(print_t* pr, uint16_t time); size_t fsPrintTime(print_t* pr, uint16_t time, uint8_t sec100); size_t fsPrintTimeZone(print_t* pr, int8_t tz); - - -}; // namespace sdfat - - #endif // FsDateTime_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.cpp new file mode 100644 index 00000000..d75d642b --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.cpp @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "FsName.h" + +#include "FsUtf.h" +#if USE_UTF8_LONG_NAMES +uint16_t FsName::get16() { + uint16_t rtn; + if (ls) { + rtn = ls; + ls = 0; + } else if (next >= end) { + rtn = 0; + } else { + uint32_t cp; + const char* ptr = FsUtf::mbToCp(next, end, &cp); + if (!ptr) { + goto fail; + } + next = ptr; + if (cp <= 0XFFFF) { + rtn = cp; + } else { + ls = FsUtf::lowSurrogate(cp); + rtn = FsUtf::highSurrogate(cp); + } + } + return rtn; + +fail: + return 0XFFFF; +} +#endif // USE_UTF8_LONG_NAMES diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.h new file mode 100644 index 00000000..93753aae --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsName.h @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#ifndef FsName_h +#define FsName_h +#include + +#include "SysCall.h" +/** + * \file + * \brief FsName class. + */ +/** + * \class FsName + * \brief Handle UTF-8 file names. + */ +class FsName { + public: + /** Beginning of LFN. */ + const char* begin; + /** Next LFN character of end. */ + const char* next; + /** Position one beyond last LFN character. */ + const char* end; +#if !USE_UTF8_LONG_NAMES + /** \return true if at end. */ + bool atEnd() { return next == end; } + /** Reset to start of LFN. */ + void reset() { next = begin; } + /** \return next char of LFN. */ + char getch() { return atEnd() ? 0 : *next++; } + /** \return next UTF-16 unit of LFN. */ + uint16_t get16() { return atEnd() ? 0 : *next++; } +#else // !USE_UTF8_LONG_NAMES + uint16_t ls = 0; + bool atEnd() { return !ls && next == end; } + void reset() { + next = begin; + ls = 0; // lowSurrogate + } + uint16_t get16(); +#endif // !USE_UTF8_LONG_NAMES +}; +#endif // FsName_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.cpp index fa335d5a..294dbe25 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,11 +23,6 @@ * DEALINGS IN THE SOFTWARE. */ #include "FsStructs.h" - - -namespace sdfat { - - // bgnLba = relSector; // endLba = relSector + partSize - 1; void lbaToMbrChs(uint8_t* chs, uint32_t capacityMB, uint32_t lba) { @@ -67,6 +62,3 @@ void lbaToMbrChs(uint8_t* chs, uint32_t capacityMB, uint32_t lba) { chs[1] = ((c >> 2) & 0XC0) | s; chs[2] = c; } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.h index 0a0f0b66..4ea662dd 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsStructs.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -24,15 +24,17 @@ */ #ifndef FsStructs_h #define FsStructs_h +#include #include - - -namespace sdfat { - - -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ +// See: +// https://learn.microsoft.com/en-us/windows/win32/fileio/file-systems +// https://learn.microsoft.com/en-us/windows/win32/fileio/exfat-specification +// https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc +// https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/FileIO/exfat-specification.md +//------------------------------------------------------------------------------ void lbaToMbrChs(uint8_t* chs, uint32_t capacityMB, uint32_t lba); -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ #if !defined(USE_SIMPLE_LITTLE_ENDIAN) || USE_SIMPLE_LITTLE_ENDIAN // assumes CPU is little-endian and handles alignment issues. inline uint16_t getLe16(const uint8_t* src) { @@ -47,47 +49,39 @@ inline uint64_t getLe64(const uint8_t* src) { inline void setLe16(uint8_t* dst, uint16_t src) { *reinterpret_cast(dst) = src; } - inline void setLe32(uint8_t* dst, uint32_t src) { *reinterpret_cast(dst) = src; } inline void setLe64(uint8_t* dst, uint64_t src) { *reinterpret_cast(dst) = src; } -#else // USE_SIMPLE_LITTLE_ENDIAN +#else // USE_SIMPLE_LITTLE_ENDIAN inline uint16_t getLe16(const uint8_t* src) { - return (uint16_t)src[0] << 0 | - (uint16_t)src[1] << 8; + return (uint16_t)src[0] << 0 | (uint16_t)src[1] << 8; } inline uint32_t getLe32(const uint8_t* src) { - return (uint32_t)src[0] << 0 | - (uint32_t)src[1] << 8 | - (uint32_t)src[2] << 16 | - (uint32_t)src[3] << 24; + return (uint32_t)src[0] << 0 | (uint32_t)src[1] << 8 | + (uint32_t)src[2] << 16 | (uint32_t)src[3] << 24; } inline uint64_t getLe64(const uint8_t* src) { - return (uint64_t)src[0] << 0 | - (uint64_t)src[1] << 8 | - (uint64_t)src[2] << 16 | - (uint64_t)src[3] << 24 | - (uint64_t)src[4] << 32 | - (uint64_t)src[5] << 40 | - (uint64_t)src[6] << 48 | - (uint64_t)src[7] << 56; + return (uint64_t)src[0] << 0 | (uint64_t)src[1] << 8 | + (uint64_t)src[2] << 16 | (uint64_t)src[3] << 24 | + (uint64_t)src[4] << 32 | (uint64_t)src[5] << 40 | + (uint64_t)src[6] << 48 | (uint64_t)src[7] << 56; } inline void setLe16(uint8_t* dst, uint16_t src) { - dst[0] = src >> 0; - dst[1] = src >> 8; + dst[0] = src >> 0; + dst[1] = src >> 8; } inline void setLe32(uint8_t* dst, uint32_t src) { - dst[0] = src >> 0; - dst[1] = src >> 8; + dst[0] = src >> 0; + dst[1] = src >> 8; dst[2] = src >> 16; dst[3] = src >> 24; } inline void setLe64(uint8_t* dst, uint64_t src) { - dst[0] = src >> 0; - dst[1] = src >> 8; + dst[0] = src >> 0; + dst[1] = src >> 8; dst[2] = src >> 16; dst[3] = src >> 24; dst[4] = src >> 32; @@ -96,7 +90,29 @@ inline void setLe64(uint8_t* dst, uint64_t src) { dst[7] = src >> 56; } #endif // USE_SIMPLE_LITTLE_ENDIAN -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ +// Size of FAT and exFAT directory structures. +const size_t FS_DIR_SIZE = 32; +//------------------------------------------------------------------------------ +// Reserved characters for exFAT names and FAT LFN. +inline bool lfnReservedChar(uint8_t c) { + return c < 0X20 || c == '"' || c == '*' || c == '/' || c == ':' || c == '<' || + c == '>' || c == '?' || c == '\\' || c == '|'; +} +//------------------------------------------------------------------------------ +// Reserved characters for FAT short 8.3 names. +inline bool sfnReservedChar(uint8_t c) { + if (c == '"' || c == '|' || c == '[' || c == '\\' || c == ']') { + return true; + } + // *+,./ or :;<=>? + if ((0X2A <= c && c <= 0X2F && c != 0X2D) || (0X3A <= c && c <= 0X3F)) { + return true; + } + // Reserved if not in range (0X20, 0X7F). + return !(0X20 < c && c < 0X7F); +} +//------------------------------------------------------------------------------ const uint16_t MBR_SIGNATURE = 0xAA55; const uint16_t PBR_SIGNATURE = 0xAA55; @@ -108,96 +124,96 @@ typedef struct mbrPartition { uint8_t relativeSectors[4]; uint8_t totalSectors[4]; } MbrPart_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct masterBootRecordSector { - uint8_t bootCode[446]; + uint8_t bootCode[446]; MbrPart_t part[4]; - uint8_t signature[2]; + uint8_t signature[2]; } MbrSector_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct partitionBootSector { - uint8_t jmpInstruction[3]; - char oemName[8]; - uint8_t bpb[109]; - uint8_t bootCode[390]; - uint8_t signature[2]; + uint8_t jmpInstruction[3]; + char oemName[8]; + uint8_t bpb[109]; + uint8_t bootCode[390]; + uint8_t signature[2]; } pbs_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct { uint8_t type; uint8_t data[31]; } DirGeneric_t; -//============================================================================= +//============================================================================== typedef struct { uint64_t position; uint32_t cluster; } fspos_t; -//============================================================================= +//============================================================================== const uint8_t EXTENDED_BOOT_SIGNATURE = 0X29; typedef struct biosParameterBlockFat16 { - uint8_t bytesPerSector[2]; - uint8_t sectorsPerCluster; - uint8_t reservedSectorCount[2]; - uint8_t fatCount; - uint8_t rootDirEntryCount[2]; - uint8_t totalSectors16[2]; - uint8_t mediaType; - uint8_t sectorsPerFat16[2]; - uint8_t sectorsPerTrtack[2]; - uint8_t headCount[2]; - uint8_t hidddenSectors[4]; - uint8_t totalSectors32[4]; + uint8_t bytesPerSector[2]; + uint8_t sectorsPerCluster; + uint8_t reservedSectorCount[2]; + uint8_t fatCount; + uint8_t rootDirEntryCount[2]; + uint8_t totalSectors16[2]; + uint8_t mediaType; + uint8_t sectorsPerFat16[2]; + uint8_t sectorsPerTrtack[2]; + uint8_t headCount[2]; + uint8_t hidddenSectors[4]; + uint8_t totalSectors32[4]; - uint8_t physicalDriveNumber; - uint8_t extReserved; - uint8_t extSignature; - uint8_t volumeSerialNumber[4]; - uint8_t volumeLabel[11]; - uint8_t volumeType[8]; + uint8_t physicalDriveNumber; + uint8_t extReserved; + uint8_t extSignature; + uint8_t volumeSerialNumber[4]; + uint8_t volumeLabel[11]; + uint8_t volumeType[8]; } BpbFat16_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct biosParameterBlockFat32 { - uint8_t bytesPerSector[2]; - uint8_t sectorsPerCluster; - uint8_t reservedSectorCount[2]; - uint8_t fatCount; - uint8_t rootDirEntryCount[2]; - uint8_t totalSectors16[2]; - uint8_t mediaType; - uint8_t sectorsPerFat16[2]; - uint8_t sectorsPerTrtack[2]; - uint8_t headCount[2]; - uint8_t hidddenSectors[4]; - uint8_t totalSectors32[4]; + uint8_t bytesPerSector[2]; + uint8_t sectorsPerCluster; + uint8_t reservedSectorCount[2]; + uint8_t fatCount; + uint8_t rootDirEntryCount[2]; + uint8_t totalSectors16[2]; + uint8_t mediaType; + uint8_t sectorsPerFat16[2]; + uint8_t sectorsPerTrtack[2]; + uint8_t headCount[2]; + uint8_t hidddenSectors[4]; + uint8_t totalSectors32[4]; - uint8_t sectorsPerFat32[4]; - uint8_t fat32Flags[2]; - uint8_t fat32Version[2]; - uint8_t fat32RootCluster[4]; - uint8_t fat32FSInfoSector[2]; - uint8_t fat32BackBootSector[2]; - uint8_t fat32Reserved[12]; + uint8_t sectorsPerFat32[4]; + uint8_t fat32Flags[2]; + uint8_t fat32Version[2]; + uint8_t fat32RootCluster[4]; + uint8_t fat32FSInfoSector[2]; + uint8_t fat32BackBootSector[2]; + uint8_t fat32Reserved[12]; - uint8_t physicalDriveNumber; - uint8_t extReserved; - uint8_t extSignature; - uint8_t volumeSerialNumber[4]; - uint8_t volumeLabel[11]; - uint8_t volumeType[8]; + uint8_t physicalDriveNumber; + uint8_t extReserved; + uint8_t extSignature; + uint8_t volumeSerialNumber[4]; + uint8_t volumeLabel[11]; + uint8_t volumeType[8]; } BpbFat32_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct partitionBootSectorFat { - uint8_t jmpInstruction[3]; - char oemName[8]; + uint8_t jmpInstruction[3]; + char oemName[8]; union { uint8_t bpb[109]; BpbFat16_t bpb16; BpbFat32_t bpb32; } bpb; - uint8_t bootCode[390]; - uint8_t signature[2]; + uint8_t bootCode[390]; + uint8_t signature[2]; } PbsFat_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint32_t FSINFO_LEAD_SIGNATURE = 0X41615252; const uint32_t FSINFO_STRUCT_SIGNATURE = 0x61417272; const uint32_t FSINFO_TRAIL_SIGNATURE = 0xAA550000; @@ -210,17 +226,25 @@ typedef struct FsInfoSector { uint8_t reserved2[12]; uint8_t trailSignature[4]; } FsInfo_t; -//----------------------------------------------------------------------------- -/** name[0] value for entry that is free after being "deleted" */ -const uint8_t FAT_NAME_DELETED = 0XE5; +//============================================================================== +/** Attributes common to FAT and exFAT */ +const uint8_t FS_ATTRIB_READ_ONLY = 0x01; +const uint8_t FS_ATTRIB_HIDDEN = 0x02; +const uint8_t FS_ATTRIB_SYSTEM = 0x04; +const uint8_t FS_ATTRIB_DIRECTORY = 0x10; +const uint8_t FS_ATTRIB_ARCHIVE = 0x20; +// Attributes that users can change. +const uint8_t FS_ATTRIB_USER_SETTABLE = FS_ATTRIB_READ_ONLY | FS_ATTRIB_HIDDEN | + FS_ATTRIB_SYSTEM | FS_ATTRIB_ARCHIVE; +// Attributes to copy when a file is opened. +const uint8_t FS_ATTRIB_COPY = FS_ATTRIB_USER_SETTABLE | FS_ATTRIB_DIRECTORY; +//============================================================================== /** name[0] value for entry that is free and no allocated entries follow */ const uint8_t FAT_NAME_FREE = 0X00; -const uint8_t FAT_ATTRIB_READ_ONLY = 0x01; -const uint8_t FAT_ATTRIB_HIDDEN = 0x02; -const uint8_t FAT_ATTRIB_SYSTEM = 0x04; -const uint8_t FAT_ATTRIB_LABEL = 0x08; -const uint8_t FAT_ATTRIB_DIRECTORY = 0x10; -const uint8_t FAT_ATTRIB_ARCHIVE = 0x20; +/** name[0] value for entry that is free after being "deleted" */ +const uint8_t FAT_NAME_DELETED = 0XE5; +// Directory attribute of volume label. +const uint8_t FAT_ATTRIB_LABEL = 0x08; const uint8_t FAT_ATTRIB_LONG_NAME = 0X0F; /** Filename base-name is all lower case */ const uint8_t FAT_CASE_LC_BASE = 0X08; @@ -228,56 +252,58 @@ const uint8_t FAT_CASE_LC_BASE = 0X08; const uint8_t FAT_CASE_LC_EXT = 0X10; typedef struct { - uint8_t name[11]; - uint8_t attributes; - uint8_t caseFlags; - uint8_t createTimeMs; - uint8_t createTime[2]; - uint8_t createDate[2]; - uint8_t accessDate[2]; - uint8_t firstClusterHigh[2]; - uint8_t modifyTime[2]; - uint8_t modifyDate[2]; - uint8_t firstClusterLow[2]; - uint8_t fileSize[4]; + uint8_t name[11]; + uint8_t attributes; + uint8_t caseFlags; + uint8_t createTimeMs; + uint8_t createTime[2]; + uint8_t createDate[2]; + uint8_t accessDate[2]; + uint8_t firstClusterHigh[2]; + uint8_t modifyTime[2]; + uint8_t modifyDate[2]; + uint8_t firstClusterLow[2]; + uint8_t fileSize[4]; } DirFat_t; -static inline bool isFileDir(const DirFat_t* dir) { - return (dir->attributes & (FAT_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) == 0; +static inline bool isFatFile(const DirFat_t* dir) { + return (dir->attributes & (FS_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) == 0; } -static inline bool isFileOrSubdir(const DirFat_t* dir) { +static inline bool isFatFileOrSubdir(const DirFat_t* dir) { return (dir->attributes & FAT_ATTRIB_LABEL) == 0; } -static inline uint8_t isLongName(const DirFat_t* dir) { +static inline uint8_t isFatLongName(const DirFat_t* dir) { return dir->attributes == FAT_ATTRIB_LONG_NAME; } -static inline bool isSubdir(const DirFat_t* dir) { - return (dir->attributes & (FAT_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) - == FAT_ATTRIB_DIRECTORY; +static inline bool isFatSubdir(const DirFat_t* dir) { + return (dir->attributes & (FS_ATTRIB_DIRECTORY | FAT_ATTRIB_LABEL)) == + FS_ATTRIB_DIRECTORY; } -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ /** * Order mask that indicates the entry is the last long dir entry in a * set of long dir entries. All valid sets of long dir entries must * begin with an entry having this mask. */ const uint8_t FAT_ORDER_LAST_LONG_ENTRY = 0X40; +/** Max long file name length */ +const uint8_t FAT_MAX_LFN_LENGTH = 255; typedef struct { - uint8_t order; - uint8_t unicode1[10]; - uint8_t attributes; - uint8_t mustBeZero1; - uint8_t checksum; - uint8_t unicode2[12]; - uint8_t mustBeZero2[2]; - uint8_t unicode3[4]; + uint8_t order; + uint8_t unicode1[10]; + uint8_t attributes; + uint8_t mustBeZero1; + uint8_t checksum; + uint8_t unicode2[12]; + uint8_t mustBeZero2[2]; + uint8_t unicode3[4]; } DirLfn_t; -//============================================================================= +//============================================================================== inline uint32_t exFatChecksum(uint32_t sum, uint8_t data) { return (sum << 31) + (sum >> 1) + data; } -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct biosParameterBlockExFat { uint8_t mustBeZero[53]; uint8_t partitionOffset[8]; @@ -297,98 +323,93 @@ typedef struct biosParameterBlockExFat { uint8_t percentInUse; uint8_t reserved[7]; } BpbExFat_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ typedef struct ExFatBootSector { - uint8_t jmpInstruction[3]; - char oemName[8]; - BpbExFat_t bpb; - uint8_t bootCode[390]; - uint8_t signature[2]; + uint8_t jmpInstruction[3]; + char oemName[8]; + BpbExFat_t bpb; + uint8_t bootCode[390]; + uint8_t signature[2]; } ExFatPbs_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint32_t EXFAT_EOC = 0XFFFFFFFF; const uint8_t EXFAT_TYPE_BITMAP = 0X81; typedef struct { - uint8_t type; - uint8_t flags; - uint8_t reserved[18]; - uint8_t firstCluster[4]; - uint8_t size[8]; + uint8_t type; + uint8_t flags; + uint8_t reserved[18]; + uint8_t firstCluster[4]; + uint8_t size[8]; } DirBitmap_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint8_t EXFAT_TYPE_UPCASE = 0X82; typedef struct { - uint8_t type; - uint8_t reserved1[3]; - uint8_t checksum[4]; - uint8_t reserved2[12]; - uint8_t firstCluster[4]; - uint8_t size[8]; + uint8_t type; + uint8_t reserved1[3]; + uint8_t checksum[4]; + uint8_t reserved2[12]; + uint8_t firstCluster[4]; + uint8_t size[8]; } DirUpcase_t; -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------ const uint8_t EXFAT_TYPE_LABEL = 0X83; typedef struct { - uint8_t type; - uint8_t labelLength; - uint8_t unicode[22]; - uint8_t reserved[8]; + uint8_t type; + uint8_t labelLength; + uint8_t unicode[22]; + uint8_t reserved[8]; } DirLabel_t; -//----------------------------------------------------------------------------- -const uint8_t EXFAT_TYPE_FILE = 0X85; -const uint8_t EXFAT_ATTRIB_READ_ONLY = 0x01; -const uint8_t EXFAT_ATTRIB_HIDDEN = 0x02; -const uint8_t EXFAT_ATTRIB_SYSTEM = 0x04; -const uint8_t EXFAT_ATTRIB_RESERVED = 0x08; -const uint8_t EXFAT_ATTRIB_DIRECTORY = 0x10; -const uint8_t EXFAT_ATTRIB_ARCHIVE = 0x20; +//------------------------------------------------------------------------------ +// Last entry in directory. +const uint8_t EXFAT_TYPE_END_DIR = 0X00; +// Entry is used if bit is set. +const uint8_t EXFAT_TYPE_USED = 0X80; +const uint8_t EXFAT_TYPE_FILE = 0X85; +// File attribute reserved since used for FAT volume label. +const uint8_t EXFAT_ATTRIB_RESERVED = 0x08; typedef struct { - uint8_t type; - uint8_t setCount; - uint8_t setChecksum[2]; - uint8_t attributes[2]; - uint8_t reserved1[2]; - uint8_t createTime[2]; - uint8_t createDate[2]; - uint8_t modifyTime[2]; - uint8_t modifyDate[2]; - uint8_t accessTime[2]; - uint8_t accessDate[2]; - uint8_t createTimeMs; - uint8_t modifyTimeMs; - uint8_t createTimezone; - uint8_t modifyTimezone; - uint8_t accessTimezone; - uint8_t reserved2[7]; + uint8_t type; + uint8_t setCount; + uint8_t setChecksum[2]; + uint8_t attributes[2]; + uint8_t reserved1[2]; + uint8_t createTime[2]; + uint8_t createDate[2]; + uint8_t modifyTime[2]; + uint8_t modifyDate[2]; + uint8_t accessTime[2]; + uint8_t accessDate[2]; + uint8_t createTimeMs; + uint8_t modifyTimeMs; + uint8_t createTimezone; + uint8_t modifyTimezone; + uint8_t accessTimezone; + uint8_t reserved2[7]; } DirFile_t; -const uint8_t EXFAT_TYPE_STREAM = 0XC0; -const uint8_t EXFAT_FLAG_ALWAYS1 = 0x01; +const uint8_t EXFAT_TYPE_STREAM = 0XC0; +const uint8_t EXFAT_FLAG_ALWAYS1 = 0x01; const uint8_t EXFAT_FLAG_CONTIGUOUS = 0x02; typedef struct { - uint8_t type; - uint8_t flags; - uint8_t reserved1; - uint8_t nameLength; - uint8_t nameHash[2]; - uint8_t reserved2[2]; - uint8_t validLength[8]; - uint8_t reserved3[4]; - uint8_t firstCluster[4]; - uint8_t dataLength[8]; + uint8_t type; + uint8_t flags; + uint8_t reserved1; + uint8_t nameLength; + uint8_t nameHash[2]; + uint8_t reserved2[2]; + uint8_t validLength[8]; + uint8_t reserved3[4]; + uint8_t firstCluster[4]; + uint8_t dataLength[8]; } DirStream_t; const uint8_t EXFAT_TYPE_NAME = 0XC1; const uint8_t EXFAT_MAX_NAME_LENGTH = 255; typedef struct { - uint8_t type; - uint8_t mustBeZero; - uint8_t unicode[30]; + uint8_t type; + uint8_t mustBeZero; + uint8_t unicode[30]; } DirName_t; - - -}; // namespace sdfat - - #endif // FsStructs_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.cpp new file mode 100644 index 00000000..7b7ef143 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.cpp @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "FsUtf.h" +namespace FsUtf { +//---------------------------------------------------------------------------- +char* cpToMb(uint32_t cp, char* str, const char* end) { + size_t n = end - str; + if (cp < 0X80) { + if (n < 1) goto fail; + *(str++) = static_cast(cp); + } else if (cp < 0X800) { + if (n < 2) goto fail; + *(str++) = static_cast((cp >> 6) | 0XC0); + *(str++) = static_cast((cp & 0X3F) | 0X80); + } else if (cp < 0X10000) { + if (n < 3) goto fail; + *(str++) = static_cast((cp >> 12) | 0XE0); + *(str++) = static_cast(((cp >> 6) & 0X3F) | 0X80); + *(str++) = static_cast((cp & 0X3F) | 0X80); + } else { + if (n < 4) goto fail; + *(str++) = static_cast((cp >> 18) | 0XF0); + *(str++) = static_cast(((cp >> 12) & 0X3F) | 0X80); + *(str++) = static_cast(((cp >> 6) & 0X3F) | 0X80); + *(str++) = static_cast((cp & 0X3F) | 0X80); + } + return str; + +fail: + return nullptr; +} +//---------------------------------------------------------------------------- +// to do? improve error check +const char* mbToCp(const char* str, const char* end, uint32_t* rtn) { + size_t n; + uint32_t cp; + if (str >= end) { + return nullptr; + } + uint8_t ch = str[0]; + if ((ch & 0X80) == 0) { + *rtn = ch; + return str + 1; + } + if ((ch & 0XE0) == 0XC0) { + cp = ch & 0X1F; + n = 2; + } else if ((ch & 0XF0) == 0XE0) { + cp = ch & 0X0F; + n = 3; + } else if ((ch & 0XF8) == 0XF0) { + cp = ch & 0X07; + n = 4; + } else { + return nullptr; + } + if ((str + n) > end) { + return nullptr; + } + for (size_t i = 1; i < n; i++) { + ch = str[i]; + if ((ch & 0XC0) != 0X80) { + return nullptr; + } + cp <<= 6; + cp |= ch & 0X3F; + } + // Don't allow over long as ASCII. + if (cp < 0X80 || !isValidCp(cp)) { + return nullptr; + } + *rtn = cp; + return str + n; +} +//---------------------------------------------------------------------------- +const char* mbToU16(const char* str, const char* end, uint16_t* hs, + uint16_t* ls) { + uint32_t cp; + const char* ptr = mbToCp(str, end, &cp); + if (!ptr) { + return nullptr; + } + if (cp <= 0XFFFF) { + *hs = cp; + *ls = 0; + } else { + *hs = highSurrogate(cp); + *ls = lowSurrogate(cp); + } + return ptr; +} +} // namespace FsUtf diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.h new file mode 100644 index 00000000..8d4e9701 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/FsUtf.h @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#ifndef FsUtf_h +#define FsUtf_h +/** + * \file + * \brief Unicode Transformation Format functions. + */ +#include +#include +namespace FsUtf { +/** High surrogate for a code point. + * \param{in} cp code point. + * \return high surrogate. + */ +inline uint16_t highSurrogate(uint32_t cp) { + return (cp >> 10) + (0XD800 - (0X10000 >> 10)); +} +/** Low surrogate for a code point. + * \param{in} cp code point. + * \return low surrogate. + */ +inline uint16_t lowSurrogate(uint32_t cp) { return (cp & 0X3FF) + 0XDC00; } +/** Check for a valid code point. + * \param[in] cp code point. + * \return true if valid else false. + */ +inline bool isValidCp(uint32_t cp) { + return cp <= 0x10FFFF && (cp < 0XD800 || cp > 0XDFFF); +} +/** Check for UTF-16 surrogate. + * \param[in] c UTF-16 unit. + * \return true if c is a surrogate else false. + */ +inline bool isSurrogate(uint16_t c) { return 0XD800 <= c && c <= 0XDFFF; } +/** Check for UTF-16 high surrogate. + * \param[in] c UTF-16 unit.. + * \return true if c is a high surrogate else false. + */ +inline bool isHighSurrogate(uint16_t c) { return 0XD800 <= c && c <= 0XDBFF; } +/** Check for UTF-16 low surrogate. + * \param[in] c UTF-16 unit.. + * \return true if c is a low surrogate else false. + */ +inline bool isLowSurrogate(uint16_t c) { return 0XDC00 <= c && c <= 0XDFFF; } +/** Convert UFT-16 surrogate pair to code point. + * \param[in] hs high surrogate. + * \param[in] ls low surrogate. + * \return code point. + */ +inline uint32_t u16ToCp(uint16_t hs, uint16_t ls) { + return 0X10000 + (((hs & 0X3FF) << 10) | (ls & 0X3FF)); +} +/** Encodes a 32 bit code point as a UTF-8 sequence. + * \param[in] cp code point to encode. + * \param[out] str location for UTF-8 sequence. + * \param[in] end location following last character of str. + * \return location one beyond last encoded character. + */ +char* cpToMb(uint32_t cp, char* str, const char* end); +/** Get next code point from a UTF-8 sequence. + * \param[in] str location for UTF-8 sequence. + * \param[in] end location following last character of str. + * May be nullptr if str is zero terminated. + * \param[out] rtn location for the code point. + * \return location of next UTF-8 character in str of nullptr for error. + */ +const char* mbToCp(const char* str, const char* end, uint32_t* rtn); +/** Get next code point from a UTF-8 sequence as UTF-16. + * \param[in] str location for UTF-8 sequence. + * \param[in] end location following last character of str. + * \param[out] hs location for the code point or high surrogate. + * \param[out] ls location for zero or high surrogate. + * \return location of next UTF-8 character in str of nullptr for error. + */ +const char* mbToU16(const char* str, const char* end, uint16_t* hs, + uint16_t* ls); +} // namespace FsUtf +#endif // FsUtf_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.h deleted file mode 100644 index 65342534..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/PrintBasic.h +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Copyright (c) 2011-2020 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef PrintBasic_h -#define PrintBasic_h -/** - * \file - * \brief Stream/Print like replacement for non-Arduino systems. - */ -#include -#include -#include - - -namespace sdfat { - - -class __FlashStringHelper; - - -}; // namespace sdfat - - -#ifdef F -//#warning F() macro defined for non Arduino System -#elif defined(__AVR__) -#include -#define F(str) (reinterpret_cast(PSTR(str))) -#else // F -#define F(str) (str) -#endif // F - -#ifdef BIN -#undef BIN -#endif // BIN -#define BIN 2 -#define OCT 8 -#define DEC 10 -#define HEX 16 - - -namespace sdfat { - - -class PrintBasic { - public: - PrintBasic() : m_error(0) {} - - void clearWriteError() { - setWriteError(0); - } - int getWriteError() { - return m_error; - } - size_t print(char c) { - return write(c); - } - size_t print(const char* str) { - return write(str); - } - size_t print(const __FlashStringHelper *str) { -#ifdef __AVR__ - PGM_P p = reinterpret_cast(str); - size_t n = 0; - for (uint8_t c; (c = pgm_read_byte(p + n)) && write(c); n++) {} - return n; -#else // __AVR__ - return print(reinterpret_cast(str)); -#endif // __AVR__ - } - size_t println(const __FlashStringHelper *str) { -#ifdef __AVR__ - return print(str) + println(); -#else // __AVR__ - return println(reinterpret_cast(str)); -#endif // __AVR__ - } - size_t print(double n, uint8_t prec = 2) { - return printDouble(n, prec); - } - size_t print(signed char n, uint8_t base = 10) { - return print((long)n, base); - } - size_t print(unsigned char n, uint8_t base = 10) { - return print((unsigned long)n, base); - } - size_t print(int n, uint8_t base = 10) { - return print((long)n, base); - } - size_t print(unsigned int n, uint8_t base = 10) { - return print((unsigned long)n, base); - } - size_t print(long n, uint8_t base = 10); - size_t print(unsigned long n, uint8_t base = 10) { - return printNum(n, base); - } - size_t println() { - return write("\r\n"); - } - size_t println(char c) { - return write(c) + println(); - } - size_t println(const char* str) { - return print(str) + println(); - } - size_t println(double n, uint8_t prec = 2) { - return print(n, prec) + println(); - } - size_t println(signed char n, uint8_t base = 10) { - return print(n, base) + println(); - } - size_t println(unsigned char n, uint8_t base = 10) { - return print(n, base) + println(); - } - size_t println(int n, uint8_t base = 10) { - return print(n, base) + println(); - } - size_t println(unsigned int n, uint8_t base = 10) { - return print(n, base) + println(); - } - size_t println(long n, uint8_t base = 10) { - return print(n, base) + println(); - } - size_t println(unsigned long n, uint8_t base = 10) { - return print(n, base) + println(); - } - size_t write(const char *str) { - return write(str, strlen(str)); - } - virtual size_t write(uint8_t b) = 0; - - virtual size_t write(const uint8_t* buffer, size_t size) { - size_t i; - for (i = 0; i < size; i++) { - if (!write(buffer[i])) break; - } - return i; - } - size_t write(const char *buffer, size_t size) { - return write((const uint8_t*)buffer, size); - } - - protected: - void setWriteError(int err = 1) { - m_error = err; - } - - private: - size_t printDouble(double n, uint8_t prec); - size_t printNum(unsigned long n, uint8_t base); - int m_error; -}; -//------------------------------------------------------------------------------ -class StreamBasic : public PrintBasic { - public: - virtual int available() = 0; - virtual int peek() = 0; - virtual int read() = 0; -}; - - -}; // namespace sdfat - - -#endif // PrintBasic_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/SysCall.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/SysCall.h index a2026fa0..709dfae1 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/common/SysCall.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/SysCall.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,40 +28,16 @@ */ #ifndef SysCall_h #define SysCall_h -#include #include +#include + #include "../SdFatConfig.h" - - -namespace sdfat { - - #if __cplusplus < 201103 #warning nullptr defined /** Define nullptr if not C++11 */ #define nullptr NULL #endif // __cplusplus < 201103 //------------------------------------------------------------------------------ -/** Type for millis. */ -typedef uint16_t SdMillis_t; -//------------------------------------------------------------------------------ -/** - * \class SysCall - * \brief SysCall - Class to wrap system calls. - */ -class SysCall { - public: - /** \return the time in milliseconds. */ - static SdMillis_t curTimeMS(); - /** Halt execution of this thread. */ - static void halt() { - while (1) { - yield(); - } - } - /** Yield to other threads. */ - static void yield(); -}; #if ENABLE_ARDUINO_FEATURES #if defined(ARDUINO) /** Use Arduino Print. */ @@ -77,44 +53,11 @@ typedef Stream stream_t; #define F(str) (str) #endif // F //------------------------------------------------------------------------------ -/** \return the time in milliseconds. */ -inline SdMillis_t SysCall::curTimeMS() { - return millis(); -} -//------------------------------------------------------------------------------ -#if defined(PLATFORM_ID) // Only defined if a Particle device -inline void SysCall::yield() { - // Recommended to only call Particle.process() if system threading is disabled - if (system_thread_get_state(NULL) == spark::feature::DISABLED) { - Particle.process(); - } -} -#elif defined(ARDUINO) -inline void SysCall::yield() { - // Use the external Arduino yield() function. -#if defined(ESP8266) - // SdFat uses `SysCall::yield()` from within OS callbacks, a no-no. - // Use delay(0) instead, which is safe under all circumstances - ::delay(0); -#else - ::yield(); -#endif -} -#else // defined(PLATFORM_ID) -inline void SysCall::yield() {} -#endif // defined(PLATFORM_ID) -//------------------------------------------------------------------------------ #else // ENABLE_ARDUINO_FEATURES #include "PrintBasic.h" /** If not Arduino */ typedef PrintBasic print_t; /** If not Arduino */ typedef PrintBasic stream_t; -inline void SysCall::yield() {} #endif // ENABLE_ARDUINO_FEATURES - - -}; // namespace sdfat - - #endif // SysCall_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.cpp new file mode 100644 index 00000000..fb1e2175 --- /dev/null +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.cpp @@ -0,0 +1,133 @@ +/** + * Copyright (c) 2011-2022 Bill Greiman + * This file is part of the SdFat library for SD memory cards. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "upcase.h" + +#include +#ifdef __AVR__ +#include +#define TABLE_MEM PROGMEM +#define readTable8(sym) pgm_read_byte(&sym) +#define readTable16(sym) pgm_read_word(&sym) +#else // __AVR__ +#define TABLE_MEM +#define readTable8(sym) (sym) +#define readTable16(sym) (sym) +#endif // __AVR__ + +struct map16 { + uint16_t base; + int8_t off; + uint8_t count; +}; +typedef struct map16 map16_t; + +struct pair16 { + uint16_t key; + uint16_t val; +}; +typedef struct pair16 pair16_t; +//------------------------------------------------------------------------------ +static const map16_t mapTable[] TABLE_MEM = { + {0X0061, -32, 26}, {0X00E0, -32, 23}, {0X00F8, -32, 7}, {0X0100, 1, 48}, + {0X0132, 1, 6}, {0X0139, 1, 16}, {0X014A, 1, 46}, {0X0179, 1, 6}, + {0X0182, 1, 4}, {0X01A0, 1, 6}, {0X01B3, 1, 4}, {0X01CD, 1, 16}, + {0X01DE, 1, 18}, {0X01F8, 1, 40}, {0X0222, 1, 18}, {0X0246, 1, 10}, + {0X03AD, -37, 3}, {0X03B1, -32, 17}, {0X03C3, -32, 9}, {0X03D8, 1, 24}, + {0X0430, -32, 32}, {0X0450, -80, 16}, {0X0460, 1, 34}, {0X048A, 1, 54}, + {0X04C1, 1, 14}, {0X04D0, 1, 68}, {0X0561, -48, 38}, {0X1E00, 1, 150}, + {0X1EA0, 1, 90}, {0X1F00, 8, 8}, {0X1F10, 8, 6}, {0X1F20, 8, 8}, + {0X1F30, 8, 8}, {0X1F40, 8, 6}, {0X1F60, 8, 8}, {0X1F70, 74, 2}, + {0X1F72, 86, 4}, {0X1F76, 100, 2}, {0X1F7A, 112, 2}, {0X1F7C, 126, 2}, + {0X1F80, 8, 8}, {0X1F90, 8, 8}, {0X1FA0, 8, 8}, {0X1FB0, 8, 2}, + {0X1FD0, 8, 2}, {0X1FE0, 8, 2}, {0X2170, -16, 16}, {0X24D0, -26, 26}, + {0X2C30, -48, 47}, {0X2C67, 1, 6}, {0X2C80, 1, 100}, {0X2D00, 0, 38}, + {0XFF41, -32, 26}, +}; +const size_t MAP_DIM = sizeof(mapTable) / sizeof(map16_t); +//------------------------------------------------------------------------------ +static const pair16_t lookupTable[] TABLE_MEM = { + {0X00FF, 0X0178}, {0X0180, 0X0243}, {0X0188, 0X0187}, {0X018C, 0X018B}, + {0X0192, 0X0191}, {0X0195, 0X01F6}, {0X0199, 0X0198}, {0X019A, 0X023D}, + {0X019E, 0X0220}, {0X01A8, 0X01A7}, {0X01AD, 0X01AC}, {0X01B0, 0X01AF}, + {0X01B9, 0X01B8}, {0X01BD, 0X01BC}, {0X01BF, 0X01F7}, {0X01C6, 0X01C4}, + {0X01C9, 0X01C7}, {0X01CC, 0X01CA}, {0X01DD, 0X018E}, {0X01F3, 0X01F1}, + {0X01F5, 0X01F4}, {0X023A, 0X2C65}, {0X023C, 0X023B}, {0X023E, 0X2C66}, + {0X0242, 0X0241}, {0X0253, 0X0181}, {0X0254, 0X0186}, {0X0256, 0X0189}, + {0X0257, 0X018A}, {0X0259, 0X018F}, {0X025B, 0X0190}, {0X0260, 0X0193}, + {0X0263, 0X0194}, {0X0268, 0X0197}, {0X0269, 0X0196}, {0X026B, 0X2C62}, + {0X026F, 0X019C}, {0X0272, 0X019D}, {0X0275, 0X019F}, {0X027D, 0X2C64}, + {0X0280, 0X01A6}, {0X0283, 0X01A9}, {0X0288, 0X01AE}, {0X0289, 0X0244}, + {0X028A, 0X01B1}, {0X028B, 0X01B2}, {0X028C, 0X0245}, {0X0292, 0X01B7}, + {0X037B, 0X03FD}, {0X037C, 0X03FE}, {0X037D, 0X03FF}, {0X03AC, 0X0386}, + {0X03C2, 0X03A3}, {0X03CC, 0X038C}, {0X03CD, 0X038E}, {0X03CE, 0X038F}, + {0X03F2, 0X03F9}, {0X03F8, 0X03F7}, {0X03FB, 0X03FA}, {0X04CF, 0X04C0}, + {0X1D7D, 0X2C63}, {0X1F51, 0X1F59}, {0X1F53, 0X1F5B}, {0X1F55, 0X1F5D}, + {0X1F57, 0X1F5F}, {0X1F78, 0X1FF8}, {0X1F79, 0X1FF9}, {0X1FB3, 0X1FBC}, + {0X1FCC, 0X1FC3}, {0X1FE5, 0X1FEC}, {0X1FFC, 0X1FF3}, {0X214E, 0X2132}, + {0X2184, 0X2183}, {0X2C61, 0X2C60}, {0X2C76, 0X2C75}, +}; +const size_t LOOKUP_DIM = sizeof(lookupTable) / sizeof(pair16_t); +//------------------------------------------------------------------------------ +static size_t searchPair16(const pair16_t* table, size_t size, uint16_t key) { + size_t left = 0; + size_t right = size; + while (right - left > 1) { + size_t mid = left + (right - left) / 2; + if (readTable16(table[mid].key) <= key) { + left = mid; + } else { + right = mid; + } + } + return left; +} +//------------------------------------------------------------------------------ +uint16_t toUpcase(uint16_t chr) { + uint16_t i, first; + // Optimize for simple ASCII. + if (chr < 127) { + return chr - ('a' <= chr && chr <= 'z' ? 'a' - 'A' : 0); + } + i = searchPair16(reinterpret_cast(mapTable), MAP_DIM, chr); + first = readTable16(mapTable[i].base); + if (first <= chr && (chr - first) < readTable8(mapTable[i].count)) { + int8_t off = readTable8(mapTable[i].off); + if (off == 1) { + return chr - ((chr - first) & 1); + } + return chr + (off ? off : -0x1C60); + } + i = searchPair16(lookupTable, LOOKUP_DIM, chr); + if (readTable16(lookupTable[i].key) == chr) { + return readTable16(lookupTable[i].val); + } + return chr; +} +//------------------------------------------------------------------------------ +uint32_t upcaseChecksum(uint16_t uc, uint32_t sum) { + sum = (sum << 31) + (sum >> 1) + (uc & 0XFF); + sum = (sum << 31) + (sum >> 1) + (uc >> 8); + return sum; +} diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLibConfig.h b/extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.h similarity index 84% rename from extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLibConfig.h rename to extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.h index 08f7966f..1a8ece9a 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/FatLib/FatLibConfig.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/common/upcase.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,11 +22,9 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -/** - * \file - * \brief configuration definitions - */ -#ifndef FatLibConfig_h -#define FatLibConfig_h -#include "SdFatConfig.h" -#endif // FatLibConfig_h +#ifndef upcase_h +#define upcase_h +#include +uint16_t toUpcase(uint16_t chr); +uint32_t upcaseChecksum(uint16_t unicode, uint32_t checksum); +#endif // upcase_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ArduinoStream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ArduinoStream.h index fbb09ea6..8dfc3225 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ArduinoStream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ArduinoStream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -28,13 +28,7 @@ * \file * \brief ArduinoInStream and ArduinoOutStream classes */ -#include "SdFatConfig.h" #include "bufstream.h" - - -namespace sdfat { - - //============================================================================== /** * \class ArduinoInStream @@ -48,7 +42,7 @@ class ArduinoInStream : public ibufstream { * \param[in] buf buffer for input line * \param[in] size size of input buffer */ - ArduinoInStream(Stream &hws, char* buf, size_t size) { + ArduinoInStream(Stream& hws, char* buf, size_t size) { m_hw = &hws; m_line = buf; m_size = size; @@ -59,7 +53,7 @@ class ArduinoInStream : public ibufstream { uint32_t t; m_line[0] = '\0'; while (!m_hw->available()) { - SysCall::yield(); + yield(); } while (1) { @@ -76,7 +70,7 @@ class ArduinoInStream : public ibufstream { m_line[i++] = m_hw->read(); m_line[i] = '\0'; } -done: + done: init(m_line); } @@ -101,7 +95,7 @@ done: } private: - char *m_line; + char* m_line; size_t m_size; Stream* m_hw; }; @@ -116,7 +110,7 @@ class ArduinoOutStream : public ostream { * * \param[in] pr Print object for this ArduinoOutStream. */ - explicit ArduinoOutStream(Print& pr) : m_pr(&pr) {} + explicit ArduinoOutStream(print_t& pr) : m_pr(&pr) {} protected: /// @cond SHOW_PROTECTED @@ -130,9 +124,7 @@ class ArduinoOutStream : public ostream { } m_pr->write(c); } - void putstr(const char* str) { - m_pr->write(str); - } + void putstr(const char* str) { m_pr->write(str); } bool seekoff(off_type off, seekdir way) { (void)off; (void)way; @@ -142,20 +134,11 @@ class ArduinoOutStream : public ostream { (void)pos; return false; } - bool sync() { - return true; - } - pos_type tellpos() { - return 0; - } + bool sync() { return true; } + pos_type tellpos() { return 0; } /// @endcond private: ArduinoOutStream() {} - Print* m_pr; + print_t* m_pr; }; - - -}; // namespace sdfat - - #endif // ArduinoStream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.cpp index bc9a7e75..1433e3d7 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,12 +23,10 @@ * DEALINGS IN THE SOFTWARE. */ #include "StdioStream.h" +#ifdef __AVR__ +#include +#endif // __AVR__ #include "../common/FmtNumber.h" - - -namespace sdfat { - - //------------------------------------------------------------------------------ int StdioStream::fclose() { int rtn = 0; @@ -60,11 +58,11 @@ int StdioStream::fflush() { //------------------------------------------------------------------------------ char* StdioStream::fgets(char* str, size_t num, size_t* len) { char* s = str; - size_t n; if (num-- == 0) { return 0; } while (num) { + size_t n; if ((n = m_r) == 0) { if (!fillBuf()) { if (s == str) { @@ -103,43 +101,43 @@ bool StdioStream::fopen(const char* path, const char* mode) { oflag_t oflag; uint8_t m; switch (*mode++) { - case 'a': - m = O_WRONLY; - oflag = O_CREAT | O_APPEND; - m_status = S_SWR; - break; - - case 'r': - m = O_RDONLY; - oflag = 0; - m_status = S_SRD; - break; - - case 'w': - m = O_WRONLY; - oflag = O_CREAT | O_TRUNC; - m_status = S_SWR; - break; - - default: - goto fail; - } - while (*mode) { - switch (*mode++) { - case '+': - m_status = S_SRW; - m = O_RDWR; + case 'a': + m = O_WRONLY; + oflag = O_CREAT | O_APPEND; + m_status = S_SWR; break; - case 'b': + case 'r': + m = O_RDONLY; + oflag = 0; + m_status = S_SRD; break; - case 'x': - oflag |= O_EXCL; + case 'w': + m = O_WRONLY; + oflag = O_CREAT | O_TRUNC; + m_status = S_SWR; break; default: goto fail; + } + while (*mode) { + switch (*mode++) { + case '+': + m_status = S_SRW; + m = O_RDWR; + break; + + case 'b': + break; + + case 'x': + oflag |= O_EXCL; + break; + + default: + goto fail; } } oflag |= m; @@ -151,7 +149,7 @@ bool StdioStream::fopen(const char* path, const char* mode) { m_p = m_buf; return true; - fail: +fail: m_status = 0; return false; } @@ -163,7 +161,7 @@ int StdioStream::fputs(const char* str) { //------------------------------------------------------------------------------ size_t StdioStream::fread(void* ptr, size_t size, size_t count) { uint8_t* dst = reinterpret_cast(ptr); - size_t total = size*count; + size_t total = size * count; if (total == 0) { return 0; } @@ -174,7 +172,7 @@ size_t StdioStream::fread(void* ptr, size_t size, size_t count) { m_p += m_r; need -= m_r; if (!fillBuf()) { - return (total - need)/size; + return (total - need) / size; } } memcpy(dst, m_p, need); @@ -191,37 +189,40 @@ int StdioStream::fseek(int32_t offset, int origin) { } } switch (origin) { - case SEEK_CUR: - pos = ftell(); - if (pos < 0) { - goto fail; - } - pos += offset; - if (!StreamBaseFile::seekCur(pos)) { - goto fail; - } - break; + case SEEK_CUR: + pos = ftell(); + if (pos < 0) { + goto fail; + } + pos += offset; + if (!StreamBaseFile::seekCur(pos)) { + goto fail; + } + break; - case SEEK_SET: - if (!StreamBaseFile::seekSet(offset)) { - goto fail; - } - break; + case SEEK_SET: + if (offset < 0) { + goto fail; + } + if (!StreamBaseFile::seekSet((uint32_t)offset)) { + goto fail; + } + break; - case SEEK_END: - if (!StreamBaseFile::seekEnd(offset)) { - goto fail; - } - break; + case SEEK_END: + if (!StreamBaseFile::seekEnd(offset)) { + goto fail; + } + break; - default: - goto fail; + default: + goto fail; } m_r = 0; m_p = m_buf; return 0; - fail: +fail: return EOF; } //------------------------------------------------------------------------------ @@ -239,7 +240,7 @@ int32_t StdioStream::ftell() { } //------------------------------------------------------------------------------ size_t StdioStream::fwrite(const void* ptr, size_t size, size_t count) { - return write(ptr, count*size) < 0 ? EOF : count; + return write(ptr, count * size) < 0 ? EOF : count; } //------------------------------------------------------------------------------ int StdioStream::write(const void* buf, size_t count) { @@ -262,8 +263,9 @@ int StdioStream::write(const void* buf, size_t count) { } //------------------------------------------------------------------------------ #if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) -size_t StdioStream::print(const __FlashStringHelper *str) { - const char *p = (const char*)str; +size_t StdioStream::print(const __FlashStringHelper* str) { +#ifdef __AVR__ + PGM_P p = reinterpret_cast(str); uint8_t c; while ((c = pgm_read_byte(p))) { if (putc(c) < 0) { @@ -271,13 +273,16 @@ size_t StdioStream::print(const __FlashStringHelper *str) { } p++; } - return p - (const char*)str; + return p - reinterpret_cast(str); +#else // __AVR__ + return print(reinterpret_cast(str)); +#endif // __AVR__ } #endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) //------------------------------------------------------------------------------ int StdioStream::printDec(float value, uint8_t prec) { char buf[24]; - char *ptr = fmtDouble(buf + sizeof(buf), value, prec, false); + char* ptr = fmtDouble(buf + sizeof(buf), value, prec, false); return write(ptr, buf + sizeof(buf) - ptr); } //------------------------------------------------------------------------------ @@ -309,7 +314,7 @@ int StdioStream::printDec(int16_t n) { //------------------------------------------------------------------------------ int StdioStream::printDec(uint16_t n) { char buf[5]; - char *ptr = fmtBase10(buf + sizeof(buf), n); + char* ptr = fmtBase10(buf + sizeof(buf), n); uint8_t len = buf + sizeof(buf) - ptr; return write(ptr, len); } @@ -329,14 +334,14 @@ int StdioStream::printDec(int32_t n) { //------------------------------------------------------------------------------ int StdioStream::printDec(uint32_t n) { char buf[10]; - char *ptr = fmtBase10(buf + sizeof(buf), n); + char* ptr = fmtBase10(buf + sizeof(buf), n); uint8_t len = buf + sizeof(buf) - ptr; return write(ptr, len); } //------------------------------------------------------------------------------ int StdioStream::printHex(uint32_t n) { char buf[8]; - char *ptr = fmtHex(buf + sizeof(buf), n); + char* ptr = fmtHex(buf + sizeof(buf), n); uint8_t len = buf + sizeof(buf) - ptr; return write(ptr, len); } @@ -347,7 +352,7 @@ bool StdioStream::rewind() { return false; } } - StreamBaseFile::seekSet(0); + StreamBaseFile::seekSet(0UL); m_r = 0; return true; } @@ -382,8 +387,7 @@ int StdioStream::fillGet() { //------------------------------------------------------------------------------ // private bool StdioStream::fillBuf() { - if (!(m_status & - S_SRD)) { // check for S_ERR and S_EOF ??///////////////// + if (!(m_status & S_SRD)) { // check for S_ERR and S_EOF ??///////////////// if (!(m_status & S_SRW)) { m_status |= S_ERR; return false; @@ -410,8 +414,7 @@ bool StdioStream::fillBuf() { //------------------------------------------------------------------------------ // private bool StdioStream::flushBuf() { - if (!(m_status & - S_SWR)) { // check for S_ERR ??//////////////////////// + if (!(m_status & S_SWR)) { if (!(m_status & S_SRW)) { m_status |= S_ERR; return false; @@ -440,20 +443,3 @@ int StdioStream::flushPut(uint8_t c) { m_w--; return *m_p++ = c; } -//------------------------------------------------------------------------------ -char* StdioStream::fmtSpace(uint8_t len) { - if (m_w < len) { - if (!flushBuf() || m_w < len) { - return 0; - } - } - if (len > m_w) { - return 0; - } - m_p += len; - m_w -= len; - return reinterpret_cast(m_p); -} - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.h index 863e2aa6..276c7790 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StdioStream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,24 +29,15 @@ * \brief StdioStream class */ #include + #include "ios.h" - - -namespace sdfat { - - //------------------------------------------------------------------------------ /** Total size of stream buffer. The entire buffer is used for output. - * During input UNGETC_BUF_SIZE of this space is reserved for ungetc. - */ + * During input UNGETC_BUF_SIZE of this space is reserved for ungetc. + */ const uint8_t STREAM_BUF_SIZE = 64; /** Amount of buffer allocated for ungetc during input. */ const uint8_t UNGETC_BUF_SIZE = 2; - - -}; // namespace sdfat - - //------------------------------------------------------------------------------ // Get rid of any macros defined in . #include @@ -73,7 +64,7 @@ const uint8_t UNGETC_BUF_SIZE = 2; #undef getchar #undef gets #undef perror -//#undef printf // NOLINT +// #undef printf // NOLINT #undef putc #undef putchar #undef puts @@ -83,7 +74,7 @@ const uint8_t UNGETC_BUF_SIZE = 2; #undef scanf #undef setbuf #undef setvbuf -//#undef sprintf // NOLINT +// #undef sprintf // NOLINT #undef sscanf #undef tmpfile #undef tmpnam @@ -105,7 +96,7 @@ const uint8_t UNGETC_BUF_SIZE = 2; /** Seek relative to current position. */ #define SEEK_CUR 1 #endif // SEEK_CUR -#ifndef SEEK_END +#ifndef SEEK_END /** Seek relative to end-of-file. */ #define SEEK_END 2 #endif // SEEK_END @@ -113,11 +104,6 @@ const uint8_t UNGETC_BUF_SIZE = 2; /** Seek relative to start-of-file. */ #define SEEK_SET 0 #endif // SEEK_SET - - -namespace sdfat { - - //------------------------------------------------------------------------------ /** \class StdioStream * \brief StdioStream implements a minimal stdio stream. @@ -129,16 +115,10 @@ class StdioStream : private StreamBaseFile { /** Constructor * */ - StdioStream() { - m_w = m_r = 0; - m_p = m_buf; - m_status = 0; - } + StdioStream() : m_buf{0} {} //---------------------------------------------------------------------------- /** Clear the stream's end-of-file and error indicators. */ - void clearerr() { - m_status &= ~(S_ERR | S_EOF); - } + void clearerr() { m_status &= ~(S_ERR | S_EOF); } //---------------------------------------------------------------------------- /** Close a stream. * @@ -156,16 +136,12 @@ class StdioStream : private StreamBaseFile { /** Test the stream's end-of-file indicator. * \return non-zero if and only if the end-of-file indicator is set. */ - int feof() { - return (m_status & S_EOF) != 0; - } + int feof() { return (m_status & S_EOF) != 0; } //---------------------------------------------------------------------------- /** Test the stream's error indicator. * \return return non-zero if and only if the error indicator is set. */ - int ferror() { - return (m_status & S_ERR) != 0; - } + int ferror() { return (m_status & S_ERR) != 0; } //---------------------------------------------------------------------------- /** Flush the stream. * @@ -186,9 +162,7 @@ class StdioStream : private StreamBaseFile { * set and the fgetc function returns EOF. Otherwise, the fgetc function * returns the next character from the input stream. */ - int fgetc() { - return m_r-- == 0 ? fillGet() : *m_p++; - } + int fgetc() { return m_r-- == 0 ? fillGet() : *m_p++; } //---------------------------------------------------------------------------- /** Get a string from a stream. * @@ -284,9 +258,7 @@ class StdioStream : private StreamBaseFile { * has written. Otherwise, it returns EOF and sets the error indicator for * the stream. */ - int fputc(int c) { - return m_w-- == 0 ? flushPut(c) : *m_p++ = c; - } + int fputc(int c) { return m_w-- == 0 ? flushPut(c) : *m_p++ = c; } //---------------------------------------------------------------------------- /** Write a string to a stream. * @@ -355,7 +327,7 @@ class StdioStream : private StreamBaseFile { * less than count, an error has occurred. If size or count is zero, * fwrite returns zero. */ - size_t fwrite(const void * ptr, size_t size, size_t count); + size_t fwrite(const void* ptr, size_t size, size_t count); //---------------------------------------------------------------------------- /** Get a byte from the stream. * @@ -367,8 +339,7 @@ class StdioStream : private StreamBaseFile { * set and the fgetc function returns EOF. Otherwise, the fgetc function * returns the next character from the input stream. */ - inline __attribute__((always_inline)) - int getc() { + inline __attribute__((always_inline)) int getc() { return m_r-- == 0 ? fillGet() : *m_p++; } //---------------------------------------------------------------------------- @@ -383,8 +354,7 @@ class StdioStream : private StreamBaseFile { * has written. Otherwise, it returns EOF and sets the error indicator for * the stream. */ - inline __attribute__((always_inline)) - int putc(int c) { + inline __attribute__((always_inline)) int putc(int c) { return m_w-- == 0 ? flushPut(c) : *m_p++ = c; } //---------------------------------------------------------------------------- @@ -392,8 +362,7 @@ class StdioStream : private StreamBaseFile { * * \return two, the number of bytes written, for success or -1 for failure. */ - inline __attribute__((always_inline)) - int putCRLF() { + inline __attribute__((always_inline)) int putCRLF() { if (m_w < 2) { if (!flushBuf()) { return -1; @@ -409,9 +378,7 @@ class StdioStream : private StreamBaseFile { * \param[in] c the character to write. * \return the number of bytes written. */ - size_t print(char c) { - return putc(c) < 0 ? 0 : 1; - } + size_t print(char c) { return putc(c) < 0 ? 0 : 1; } //---------------------------------------------------------------------------- /** Write a string. * @@ -431,7 +398,7 @@ class StdioStream : private StreamBaseFile { * * \return the number of bytes written. */ - size_t print(const __FlashStringHelper *str); + size_t print(const __FlashStringHelper* str); #endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) //---------------------------------------------------------------------------- /** Print a floating point number. @@ -459,7 +426,7 @@ class StdioStream : private StreamBaseFile { return n > 0 ? n : 0; } //---------------------------------------------------------------------------- - /** Print a number. + /** Print a number. * * \param[in] val the number to be printed. * @@ -475,9 +442,7 @@ class StdioStream : private StreamBaseFile { * * \return two, the number of bytes written, for success or zero for failure. */ - size_t println() { - return putCRLF() > 0 ? 2 : 0; - } + size_t println() { return putCRLF() > 0 ? 2 : 0; } //---------------------------------------------------------------------------- /** Print a floating point number followed by CR/LF. * @@ -538,9 +503,7 @@ class StdioStream : private StreamBaseFile { * \param[in] n number to be print. * \return The number of bytes written or -1 if an error occurs. */ - int printDec(unsigned char n) { - return printDec((uint16_t)n); - } + int printDec(unsigned char n) { return printDec((uint16_t)n); } //---------------------------------------------------------------------------- /** Print a int16_t * \param[in] n number to be printed. @@ -628,7 +591,7 @@ class StdioStream : private StreamBaseFile { */ int printHexln(uint32_t n) { int rtn = printHex(n); - return rtn < 0 || putCRLF() != 2 ? -1 : rtn + 2; + return rtn < 0 || putCRLF() != 2 ? -1 : rtn + 2; } //---------------------------------------------------------------------------- /** Set position of a stream to the beginning. @@ -662,7 +625,6 @@ class StdioStream : private StreamBaseFile { int fillGet(); bool flushBuf(); int flushPut(uint8_t c); - char* fmtSpace(uint8_t len); int write(const void* buf, size_t count); //---------------------------------------------------------------------------- // S_SRD and S_WR are never simultaneously asserted @@ -672,16 +634,11 @@ class StdioStream : private StreamBaseFile { static const uint8_t S_EOF = 0x10; // found EOF static const uint8_t S_ERR = 0x20; // found error //---------------------------------------------------------------------------- - uint8_t m_status; - uint8_t* m_p; - uint8_t m_r; - uint8_t m_w; - uint8_t m_buf[STREAM_BUF_SIZE]; + uint8_t m_buf[STREAM_BUF_SIZE]; + uint8_t m_status = 0; + uint8_t* m_p = m_buf; + uint8_t m_r = 0; + uint8_t m_w = 0; }; //------------------------------------------------------------------------------ - - -}; // namespace sdfat - - #endif // StdioStream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StreamBaseClass.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StreamBaseClass.cpp index 3f6c6750..ca2a3396 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StreamBaseClass.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/StreamBaseClass.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -23,11 +23,6 @@ * DEALINGS IN THE SOFTWARE. */ #include "fstream.h" - - -namespace sdfat { - - //------------------------------------------------------------------------------ int16_t StreamBaseClass::getch() { uint8_t c; @@ -57,35 +52,35 @@ void StreamBaseClass::open(const char* path, ios::openmode mode) { oflag_t oflag; clearWriteError(); switch (mode & (app | in | out | trunc)) { - case app | in: - case app | in | out: - oflag = O_RDWR | O_APPEND | O_CREAT; - break; + case app | in: + case app | in | out: + oflag = O_RDWR | O_APPEND | O_CREAT; + break; - case app: - case app | out: - oflag = O_WRONLY | O_APPEND | O_CREAT; - break; + case app: + case app | out: + oflag = O_WRONLY | O_APPEND | O_CREAT; + break; - case in: - oflag = O_RDONLY; - break; + case in: + oflag = O_RDONLY; + break; - case in | out: - oflag = O_RDWR | O_CREAT; - break; + case in | out: + oflag = O_RDWR | O_CREAT; + break; - case in | out | trunc: - oflag = O_RDWR | O_TRUNC | O_CREAT; - break; + case in | out | trunc: + oflag = O_RDWR | O_TRUNC | O_CREAT; + break; - case out: - case out | trunc: - oflag = O_WRONLY | O_TRUNC | O_CREAT; - break; + case out: + case out | trunc: + oflag = O_WRONLY | O_TRUNC | O_CREAT; + break; - default: - goto fail; + default: + goto fail; } if (mode & ios::ate) { oflag |= O_AT_END; @@ -97,7 +92,7 @@ void StreamBaseClass::open(const char* path, ios::openmode mode) { clear(); return; - fail: +fail: StreamBaseFile::close(); setstate(failbit); return; @@ -138,20 +133,20 @@ void StreamBaseClass::putstr(const char* str) { bool StreamBaseClass::seekoff(off_type off, seekdir way) { pos_type pos; switch (way) { - case beg: - pos = off; - break; + case beg: + pos = off; + break; - case cur: - pos = StreamBaseFile::curPosition() + off; - break; + case cur: + pos = StreamBaseFile::curPosition() + off; + break; - case end: - pos = StreamBaseFile::fileSize() + off; - break; + case end: + pos = StreamBaseFile::fileSize() + off; + break; - default: - return false; + default: + return false; } return seekpos(pos); } @@ -160,9 +155,4 @@ int StreamBaseClass::write(const void* buf, size_t n) { return StreamBaseFile::write(buf, n); } //------------------------------------------------------------------------------ -void StreamBaseClass::write(char c) { - StreamBaseFile::write(&c, 1); -} - - -}; // namespace sdfat +void StreamBaseClass::write(char c) { StreamBaseFile::write(&c, 1); } diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/bufstream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/bufstream.h index 5b5e426b..a7e75053 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/bufstream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/bufstream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,12 +29,8 @@ * \brief \ref ibufstream and \ref obufstream classes */ #include + #include "iostream.h" - - -namespace sdfat { - - //============================================================================== /** * \class ibufstream @@ -43,14 +39,12 @@ namespace sdfat { class ibufstream : public istream { public: /** Constructor */ - ibufstream() : m_buf(nullptr), m_len(0) {} + ibufstream() {} /** Constructor * \param[in] str pointer to string to be parsed * Warning: The string will not be copied so must stay in scope. */ - explicit ibufstream(const char* str) { - init(str); - } + explicit ibufstream(const char* str) { init(str); } /** Initialize an ibufstream * \param[in] str pointer to string to be parsed * Warning: The string will not be copied so must stay in scope. @@ -71,9 +65,7 @@ class ibufstream : public istream { setstate(eofbit); return -1; } - void getpos(pos_t* pos) { - pos->position = m_pos; - } + void getpos(pos_t* pos) { pos->position = m_pos; } bool seekoff(off_type off, seekdir way) { (void)off; (void)way; @@ -86,16 +78,12 @@ class ibufstream : public istream { } return false; } - void setpos(pos_t* pos) { - m_pos = pos->position; - } - pos_type tellpos() { - return m_pos; - } + void setpos(pos_t* pos) { m_pos = pos->position; } + pos_type tellpos() { return m_pos; } /// @endcond private: - const char* m_buf; - size_t m_len; + const char* m_buf = nullptr; + size_t m_len = 0; size_t m_pos; }; //============================================================================== @@ -106,44 +94,38 @@ class ibufstream : public istream { class obufstream : public ostream { public: /** constructor */ - obufstream() : m_in(0) {} + obufstream() {} /** Constructor * \param[in] buf buffer for formatted string * \param[in] size buffer size */ - obufstream(char *buf, size_t size) { - init(buf, size); - } + obufstream(char* buf, size_t size) { init(buf, size); } /** Initialize an obufstream * \param[in] buf buffer for formatted string * \param[in] size buffer size */ - void init(char *buf, size_t size) { + void init(char* buf, size_t size) { m_buf = buf; buf[0] = '\0'; m_size = size; m_in = 0; } /** \return a pointer to the buffer */ - char* buf() { - return m_buf; - } + char* buf() { return m_buf; } /** \return the length of the formatted string */ - size_t length() { - return m_in; - } + size_t length() { return m_in; } protected: /// @cond SHOW_PROTECTED void putch(char c) { - if (m_in >= (m_size - 1)) { + if ((m_in + 1) >= m_size) { setstate(badbit); return; } m_buf[m_in++] = c; m_buf[m_in] = '\0'; } - void putstr(const char *str) { + void putstr(const char* str) { while (*str) { putch(*str++); } @@ -161,22 +143,12 @@ class obufstream : public ostream { m_buf[m_in] = '\0'; return true; } - bool sync() { - return true; - } - - pos_type tellpos() { - return m_in; - } + bool sync() { return true; } + pos_type tellpos() { return m_in; } /// @endcond private: - char *m_buf; - size_t m_size; - size_t m_in; + char* m_buf = nullptr; + size_t m_size = 0; + size_t m_in = 0; }; - - -}; // namespace sdfat - - #endif // bufstream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/fstream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/fstream.h index f3959d24..e6e222e2 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/fstream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/fstream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,11 +29,6 @@ #ifndef fstream_h #define fstream_h #include "iostream.h" - - -namespace sdfat { - - //------------------------------------------------------------------------------ /** * \class StreamBaseClass @@ -41,38 +36,28 @@ namespace sdfat { */ class StreamBaseClass : protected StreamBaseFile, virtual public ios { protected: - void clearWriteError() { - StreamBaseFile::clearWriteError(); - } + void clearWriteError() { StreamBaseFile::clearWriteError(); } /* Internal do not use * \return mode */ int16_t getch(); - bool getWriteError() { - return StreamBaseFile::getWriteError(); - } + bool getWriteError() { return StreamBaseFile::getWriteError(); } void open(const char* path, ios::openmode mode); /** Internal do not use * \return mode */ - ios::openmode getmode() { - return m_mode; - } + ios::openmode getmode() { return m_mode; } void putch(char c); - void putstr(const char *str); + void putstr(const char* str); bool seekoff(off_type off, seekdir way); /** Internal do not use * \param[in] pos */ - bool seekpos(pos_type pos) { - return StreamBaseFile::seekSet(pos); - } + bool seekpos(pos_type pos) { return StreamBaseFile::seekSet(pos); } /** Internal do not use * \param[in] mode */ - void setmode(ios::openmode mode) { - m_mode = mode; - } + void setmode(ios::openmode mode) { m_mode = mode; } int write(const void* buf, size_t n); void write(char c); @@ -84,7 +69,7 @@ class StreamBaseClass : protected StreamBaseFile, virtual public ios { * \class fstream * \brief file input/output stream. */ -class fstream : public iostream, StreamBaseClass { +class fstream : public iostream, StreamBaseClass { public: using iostream::peek; fstream() {} @@ -108,9 +93,7 @@ class fstream : public iostream, StreamBaseClass { /** Close a file and force cached data and directory information * to be written to the storage device. */ - void close() { - StreamBaseClass::close(); - } + void close() { StreamBaseClass::close(); } /** Open a fstream * \param[in] path path to open * \param[in] mode open mode @@ -137,54 +120,36 @@ class fstream : public iostream, StreamBaseClass { StreamBaseClass::open(path, mode); } /** \return True if stream is open else false. */ - bool is_open() { - return StreamBaseFile::isOpen(); - } + bool is_open() { return StreamBaseFile::isOpen(); } protected: /// @cond SHOW_PROTECTED /** Internal - do not use * \return */ - int16_t getch() { - return StreamBaseClass::getch(); - } + int16_t getch() { return StreamBaseClass::getch(); } /** Internal - do not use - * \param[out] pos - */ - void getpos(pos_t* pos) { - StreamBaseFile::fgetpos(pos); - } + * \param[out] pos + */ + void getpos(pos_t* pos) { StreamBaseFile::fgetpos(pos); } /** Internal - do not use * \param[in] c */ - void putch(char c) { - StreamBaseClass::putch(c); - } + void putch(char c) { StreamBaseClass::putch(c); } /** Internal - do not use * \param[in] str */ - void putstr(const char *str) { - StreamBaseClass::putstr(str); - } + void putstr(const char* str) { StreamBaseClass::putstr(str); } /** Internal - do not use * \param[in] pos */ bool seekoff(off_type off, seekdir way) { return StreamBaseClass::seekoff(off, way); } - bool seekpos(pos_type pos) { - return StreamBaseClass::seekpos(pos); - } - void setpos(pos_t* pos) { - StreamBaseFile::fsetpos(pos); - } - bool sync() { - return StreamBaseClass::sync(); - } - pos_type tellpos() { - return StreamBaseFile::curPosition(); - } + bool seekpos(pos_type pos) { return StreamBaseClass::seekpos(pos); } + void setpos(pos_t* pos) { StreamBaseFile::fsetpos(pos); } + bool sync() { return StreamBaseClass::sync(); } + pos_type tellpos() { return StreamBaseFile::curPosition(); } /// @endcond }; //============================================================================== @@ -192,7 +157,7 @@ class fstream : public iostream, StreamBaseClass { * \class ifstream * \brief file input stream. */ -class ifstream : public istream, StreamBaseClass { +class ifstream : public istream, StreamBaseClass { public: using istream::peek; ifstream() {} @@ -200,22 +165,16 @@ class ifstream : public istream, StreamBaseClass { * \param[in] path file to open * \param[in] mode open mode */ - explicit ifstream(const char* path, openmode mode = in) { - open(path, mode); - } + explicit ifstream(const char* path, openmode mode = in) { open(path, mode); } #if DESTRUCTOR_CLOSES_FILE ~ifstream() {} #endif // DESTRUCTOR_CLOSES_FILE /** Close a file and force cached data and directory information * to be written to the storage device. */ - void close() { - StreamBaseClass::close(); - } + void close() { StreamBaseClass::close(); } /** \return True if stream is open else false. */ - bool is_open() { - return StreamBaseFile::isOpen(); - } + bool is_open() { return StreamBaseFile::isOpen(); } /** Open an ifstream * \param[in] path file to open * \param[in] mode open mode @@ -231,30 +190,20 @@ class ifstream : public istream, StreamBaseClass { /** Internal - do not use * \return */ - int16_t getch() { - return StreamBaseClass::getch(); - } + int16_t getch() override { return StreamBaseClass::getch(); } /** Internal - do not use * \param[out] pos */ - void getpos(pos_t* pos) { - StreamBaseFile::fgetpos(pos); - } + void getpos(pos_t* pos) override { StreamBaseFile::fgetpos(pos); } /** Internal - do not use * \param[in] pos */ - bool seekoff(off_type off, seekdir way) { + bool seekoff(off_type off, seekdir way) override { return StreamBaseClass::seekoff(off, way); } - bool seekpos(pos_type pos) { - return StreamBaseClass::seekpos(pos); - } - void setpos(pos_t* pos) { - StreamBaseFile::fsetpos(pos); - } - pos_type tellpos() { - return StreamBaseFile::curPosition(); - } + bool seekpos(pos_type pos) override { return StreamBaseClass::seekpos(pos); } + void setpos(pos_t* pos) override { StreamBaseFile::fsetpos(pos); } + pos_type tellpos() override { return StreamBaseFile::curPosition(); } /// @endcond }; //============================================================================== @@ -262,16 +211,14 @@ class ifstream : public istream, StreamBaseClass { * \class ofstream * \brief file output stream. */ -class ofstream : public ostream, StreamBaseClass { +class ofstream : public ostream, StreamBaseClass { public: ofstream() {} /** Constructor with open * \param[in] path file to open * \param[in] mode open mode */ - explicit ofstream(const char* path, openmode mode = out) { - open(path, mode); - } + explicit ofstream(const char* path, openmode mode = out) { open(path, mode); } #if DESTRUCTOR_CLOSES_FILE ~ofstream() {} #endif // DESTRUCTOR_CLOSES_FILE @@ -285,9 +232,7 @@ class ofstream : public ostream, StreamBaseClass { /** Close a file and force cached data and directory information * to be written to the storage device. */ - void close() { - StreamBaseClass::close(); - } + void close() { StreamBaseClass::close(); } /** Open an ofstream * \param[in] path file to open * \param[in] mode open mode @@ -298,9 +243,7 @@ class ofstream : public ostream, StreamBaseClass { StreamBaseClass::open(path, mode | out); } /** \return True if stream is open else false. */ - bool is_open() { - return StreamBaseFile::isOpen(); - } + bool is_open() { return StreamBaseFile::isOpen(); } protected: /// @cond SHOW_PROTECTED @@ -308,33 +251,18 @@ class ofstream : public ostream, StreamBaseClass { * Internal do not use * \param[in] c */ - void putch(char c) { - StreamBaseClass::putch(c); - } - void putstr(const char* str) { - StreamBaseClass::putstr(str); - } - bool seekoff(off_type off, seekdir way) { + void putch(char c) override { StreamBaseClass::putch(c); } + void putstr(const char* str) override { StreamBaseClass::putstr(str); } + bool seekoff(off_type off, seekdir way) override { return StreamBaseClass::seekoff(off, way); } - bool seekpos(pos_type pos) { - return StreamBaseClass::seekpos(pos); - } + bool seekpos(pos_type pos) override { return StreamBaseClass::seekpos(pos); } /** * Internal do not use * \param[in] b */ - bool sync() { - return StreamBaseClass::sync(); - } - pos_type tellpos() { - return StreamBaseFile::curPosition(); - } + bool sync() override { return StreamBaseClass::sync(); } + pos_type tellpos() override { return StreamBaseFile::curPosition(); } /// @endcond }; - - -}; // namespace sdfat - - #endif // fstream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ios.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ios.h index 16b93e4a..50eb58fe 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ios.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ios.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -25,11 +25,6 @@ #ifndef ios_h #define ios_h #include "../FsLib/FsLib.h" - - -namespace sdfat { - - /** * \file * \brief \ref ios_base and \ref ios classes @@ -38,7 +33,7 @@ namespace sdfat { /** For internal use in c++ streams */ typedef fspos_t pos_t; //============================================================================== -#if SDFAT_FILE_TYPE == 1 +#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) /** Set File type for iostreams. */ typedef FatFile StreamBaseFile; #elif SDFAT_FILE_TYPE == 2 @@ -75,7 +70,7 @@ class ios_base { typedef uint32_t pos_type; /** type for relative seek offset */ typedef int32_t off_type; -#else // SDFAT_FILE_TYPE +#else // SDFAT_FILE_TYPE /** * unsigned size that can represent maximum file size. * (violates spec - should be signed) @@ -98,36 +93,36 @@ class ios_base { /** type for format flags */ typedef unsigned int fmtflags; /** left adjust fields */ - static const fmtflags left = 0x0001; + static const fmtflags left = 0x0001; /** right adjust fields */ - static const fmtflags right = 0x0002; + static const fmtflags right = 0x0002; /** fill between sign/base prefix and number */ - static const fmtflags internal = 0x0004; + static const fmtflags internal = 0x0004; /** base 10 flag*/ - static const fmtflags dec = 0x0008; + static const fmtflags dec = 0x0008; /** base 16 flag */ - static const fmtflags hex = 0x0010; + static const fmtflags hex = 0x0010; /** base 8 flag */ - static const fmtflags oct = 0x0020; + static const fmtflags oct = 0x0020; // static const fmtflags fixed = 0x0040; // static const fmtflags scientific = 0x0080; /** use strings true/false for bool */ - static const fmtflags boolalpha = 0x0100; + static const fmtflags boolalpha = 0x0100; /** use prefix 0X for hex and 0 for oct */ - static const fmtflags showbase = 0x0200; + static const fmtflags showbase = 0x0200; /** always show '.' for floating numbers */ - static const fmtflags showpoint = 0x0400; + static const fmtflags showpoint = 0x0400; /** show + sign for nonnegative numbers */ - static const fmtflags showpos = 0x0800; + static const fmtflags showpos = 0x0800; /** skip initial white space */ - static const fmtflags skipws = 0x1000; + static const fmtflags skipws = 0x1000; // static const fmtflags unitbuf = 0x2000; /** use uppercase letters in number representations */ - static const fmtflags uppercase = 0x4000; + static const fmtflags uppercase = 0x4000; /** mask for adjustfield */ static const fmtflags adjustfield = left | right | internal; /** mask for basefield */ - static const fmtflags basefield = dec | hex | oct; + static const fmtflags basefield = dec | hex | oct; // static const fmtflags floatfield = scientific | fixed; //---------------------------------------------------------------------------- /** typedef for iostream open mode */ @@ -135,24 +130,25 @@ class ios_base { // Openmode flags. /** seek to end before each write */ - static const openmode app = 0X4; + static const openmode app = 0X4; /** open and seek to end immediately after opening */ - static const openmode ate = 0X8; + static const openmode ate = 0X8; /** perform input and output in binary mode (as opposed to text mode) */ static const openmode binary = 0X10; /** open for input */ - static const openmode in = 0X20; + static const openmode in = 0X20; /** open for output */ - static const openmode out = 0X40; + static const openmode out = 0X40; /** truncate an existing stream when opening */ - static const openmode trunc = 0X80; + static const openmode trunc = 0X80; //---------------------------------------------------------------------------- - ios_base() : m_fill(' '), m_fmtflags(dec | right | skipws) - , m_precision(2), m_width(0) {} + ios_base() + : m_fill(' '), + m_fmtflags(dec | right | skipws), + m_precision(2), + m_width(0) {} /** \return fill character */ - char fill() { - return m_fill; - } + char fill() { return m_fill; } /** Set fill character * \param[in] c new fill character * \return old fill character @@ -163,9 +159,7 @@ class ios_base { return r; } /** \return format flags */ - fmtflags flags() const { - return m_fmtflags; - } + fmtflags flags() const { return m_fmtflags; } /** set format flags * \param[in] fl new flag * \return old flags @@ -176,9 +170,7 @@ class ios_base { return tmp; } /** \return precision */ - int precision() const { - return m_precision; - } + int precision() const { return m_precision; } /** set precision * \param[in] n new precision * \return old precision @@ -211,13 +203,9 @@ class ios_base { /** clear format flags * \param[in] fl flags to be cleared */ - void unsetf(fmtflags fl) { - m_fmtflags &= ~fl; - } + void unsetf(fmtflags fl) { m_fmtflags &= ~fl; } /** \return width */ - unsigned width() { - return m_width; - } + unsigned width() { return m_width; } /** set width * \param[in] n new width * \return old width @@ -394,26 +382,20 @@ inline ios_base& uppercase(ios_base& str) { class ios : public ios_base { public: /** Create ios with no error flags set */ - ios() : m_iostate(0) {} + ios() {} /** \return null pointer if fail() is true. */ operator const void*() const { return !fail() ? reinterpret_cast(this) : nullptr; } /** \return true if fail() else false. */ - bool operator!() const { - return fail(); - } + bool operator!() const { return fail(); } /** \return false if fail() else true. */ - explicit operator bool() const {return !fail();} + explicit operator bool() const { return !fail(); } /** \return The iostate flags for this file. */ - iostate rdstate() const { - return m_iostate; - } + iostate rdstate() const { return m_iostate; } /** \return True if no iostate flags are set else false. */ - bool good() const { - return m_iostate == goodbit; - } + bool good() const { return m_iostate == goodbit; } /** \return true if end of file has been reached else false. * * Warning: An empty file returns false before the first read. @@ -421,38 +403,23 @@ class ios : public ios_base { * Moral: eof() is only useful in combination with fail(), to find out * whether EOF was the cause for failure */ - bool eof() const { - return m_iostate & eofbit; - } + bool eof() const { return m_iostate & eofbit; } /** \return true if any iostate bit other than eof are set else false. */ - bool fail() const { - return m_iostate & (failbit | badbit); - } + bool fail() const { return m_iostate & (failbit | badbit); } /** \return true if bad bit is set else false. */ - bool bad() const { - return m_iostate & badbit; - } + bool bad() const { return m_iostate & badbit; } /** Clear iostate bits. * * \param[in] state The flags you want to set after clearing all flags. **/ - void clear(iostate state = goodbit) { - m_iostate = state; - } + void clear(iostate state = goodbit) { m_iostate = state; } /** Set iostate bits. * * \param[in] state Bitts to set. **/ - void setstate(iostate state) { - m_iostate |= state; - } + void setstate(iostate state) { m_iostate |= state; } private: - iostate m_iostate; + iostate m_iostate = 0; }; - - -}; // namespace sdfat - - #endif // ios_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/iostream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/iostream.h index d182114a..697f478f 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/iostream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/iostream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,16 +30,11 @@ */ #include "istream.h" #include "ostream.h" - - -namespace sdfat { - - /** Skip white space * \param[in] is the Stream * \return The stream */ -inline istream& ws(istream& is) { +inline istream &ws(istream &is) { is.skipWhite(); return is; } @@ -47,7 +42,7 @@ inline istream& ws(istream& is) { * \param[in] os The Stream * \return The stream */ -inline ostream& endl(ostream& os) { +inline ostream &endl(ostream &os) { os.put('\n'); #if ENDL_CALLS_FLUSH os.flush(); @@ -58,7 +53,7 @@ inline ostream& endl(ostream& os) { * \param[in] os The stream * \return The stream */ -inline ostream& flush(ostream& os) { +inline ostream &flush(ostream &os) { os.flush(); return os; } @@ -80,7 +75,7 @@ struct setfill { * \param[in] arg set setfill object * \return the stream */ -inline ostream &operator<< (ostream &os, const setfill &arg) { +inline ostream &operator<<(ostream &os, const setfill &arg) { os.fill(arg.c); return os; } @@ -110,7 +105,7 @@ struct setprecision { * \param[in] arg set setprecision object * \return the stream */ -inline ostream &operator<< (ostream &os, const setprecision &arg) { +inline ostream &operator<<(ostream &os, const setprecision &arg) { os.precision(arg.p); return os; } @@ -140,7 +135,7 @@ struct setw { * \param[in] arg set setw object * \return the stream */ -inline ostream &operator<< (ostream &os, const setw &arg) { +inline ostream &operator<<(ostream &os, const setw &arg) { os.width(arg.w); return os; } @@ -158,11 +153,5 @@ inline istream &operator>>(istream &is, const setw &arg) { * \class iostream * \brief Input/Output stream */ -class iostream : public istream, public ostream { -}; - - -}; // namespace sdfat - - +class iostream : public istream, public ostream {}; #endif // iostream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.cpp index 6f37905e..48a2044d 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,14 +22,13 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include -#include #include "istream.h" - -namespace sdfat { - - +#ifdef __AVR__ +#include +#endif // __AVR__ +#include +#include //------------------------------------------------------------------------------ int istream::get() { int c; @@ -51,12 +50,11 @@ istream& istream::get(char& c) { return *this; } //------------------------------------------------------------------------------ -istream& istream::get(char *str, streamsize n, char delim) { - int c; +istream& istream::get(char* str, streamsize n, char delim) { pos_t pos; m_gcount = 0; - while ((m_gcount + 1) < n) { - c = getch(&pos); + while ((m_gcount + 1) < n) { + int c = getch(&pos); if (c < 0) { break; } @@ -75,7 +73,7 @@ istream& istream::get(char *str, streamsize n, char delim) { return *this; } //------------------------------------------------------------------------------ -void istream::getBool(bool *b) { +void istream::getBool(bool* b) { if ((flags() & boolalpha) == 0) { getNumber(b); return; @@ -83,7 +81,7 @@ void istream::getBool(bool *b) { #ifdef __AVR__ PGM_P truePtr = PSTR("true"); PGM_P falsePtr = PSTR("false"); -#else // __AVR__ +#else // __AVR__ const char* truePtr = "true"; const char* falsePtr = "false"; #endif // __AVR @@ -97,7 +95,7 @@ void istream::getBool(bool *b) { #ifdef __AVR__ falseOk = falseOk && c == pgm_read_byte(falsePtr + i); trueOk = trueOk && c == pgm_read_byte(truePtr + i); -#else // __AVR__ +#else // __AVR__ falseOk = falseOk && c == falsePtr[i]; trueOk = trueOk && c == truePtr[i]; #endif // __AVR__ @@ -154,8 +152,8 @@ bool istream::getDouble(double* value) { while (1) { if (isdigit(c)) { got_digit = true; - if (frac < uint32_max/10) { - frac = frac * 10 + (c - '0'); + if (frac < uint32_max / 10) { + frac = frac * 10 + (c - '0'); if (got_dot) { fracExp--; } @@ -202,13 +200,13 @@ bool istream::getDouble(double* value) { if (exp & 1) { if (expNeg) { // check for underflow - if (v < FLT_MIN * pow10 && frac != 0) { + if (v < DBL_MIN * pow10 && frac != 0) { goto fail; } v /= pow10; } else { // check for overflow - if (v > FLT_MAX / pow10) { + if (v > DBL_MAX / pow10) { goto fail; } v *= pow10; @@ -221,7 +219,7 @@ bool istream::getDouble(double* value) { *value = neg ? -v : v; return true; - fail: +fail: // error restore position to last good place setpos(&endPos); setstate(failbit); @@ -229,15 +227,14 @@ bool istream::getDouble(double* value) { } //------------------------------------------------------------------------------ -istream& istream::getline(char *str, streamsize n, char delim) { +istream& istream::getline(char* str, streamsize n, char delim) { pos_t pos; - int c; m_gcount = 0; if (n > 0) { str[0] = '\0'; } while (1) { - c = getch(&pos); + int c = getch(&pos); if (c < 0) { break; } @@ -245,7 +242,7 @@ istream& istream::getline(char *str, streamsize n, char delim) { m_gcount++; break; } - if ((m_gcount + 1) >= n) { + if ((m_gcount + 1) >= n) { setpos(&pos); setstate(failbit); break; @@ -315,14 +312,14 @@ bool istream::getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num) { } setpos(&endPos); if (any > 0 || (have_zero && any >= 0)) { - *num = neg ? -val : val; + *num = neg ? -val : val; return true; } setstate(failbit); return false; } //------------------------------------------------------------------------------ -void istream::getStr(char *str) { +void istream::getStr(char* str) { pos_t pos; uint16_t i = 0; uint16_t m = width() ? width() - 1 : 0XFFFE; @@ -350,10 +347,9 @@ void istream::getStr(char *str) { } //------------------------------------------------------------------------------ istream& istream::ignore(streamsize n, int delim) { - int c; m_gcount = 0; while (m_gcount < n) { - c = getch(); + int c = getch(); if (c < 0) { break; } @@ -398,6 +394,3 @@ void istream::skipWhite() { } while (isspace(c)); setpos(&pos); } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.h index 0868458f..1a959c82 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/istream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -30,24 +30,18 @@ */ #include "ios.h" - -namespace sdfat { - - /** * \class istream * \brief Input Stream */ class istream : public virtual ios { public: - istream() {} + istream() = default; /** call manipulator * \param[in] pf function to call * \return the stream */ - istream& operator>>(istream& (*pf)(istream& str)) { - return pf(*this); - } + istream& operator>>(istream& (*pf)(istream& str)) { return pf(*this); } /** call manipulator * \param[in] pf function to call * \return the stream @@ -69,7 +63,7 @@ class istream : public virtual ios { * \param[out] str location to store the string. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>>(char *str) { + istream& operator>>(char* str) { getStr(str); return *this; } @@ -87,7 +81,7 @@ class istream : public virtual ios { * \param[out] str location to store the string. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>>(signed char *str) { + istream& operator>>(signed char* str) { getStr(reinterpret_cast(str)); return *this; } @@ -105,7 +99,7 @@ class istream : public virtual ios { * \param[out] str location to store the string. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>>(unsigned char *str) { + istream& operator>>(unsigned char* str) { getStr(reinterpret_cast(str)); return *this; } @@ -132,7 +126,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(short& arg) { // NOLINT + istream& operator>>(short& arg) { // NOLINT getNumber(&arg); return *this; } @@ -141,7 +135,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(unsigned short& arg) { // NOLINT + istream& operator>>(unsigned short& arg) { // NOLINT getNumber(&arg); return *this; } @@ -150,7 +144,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(int& arg) { + istream& operator>>(int& arg) { getNumber(&arg); return *this; } @@ -159,7 +153,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(unsigned int& arg) { + istream& operator>>(unsigned int& arg) { getNumber(&arg); return *this; } @@ -168,7 +162,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(long& arg) { // NOLINT + istream& operator>>(long& arg) { // NOLINT getNumber(&arg); return *this; } @@ -177,16 +171,16 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>>(unsigned long& arg) { // NOLINT + istream& operator>>(unsigned long& arg) { // NOLINT getNumber(&arg); return *this; } /** - * Extract a value of type double. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>> (double& arg) { + * Extract a value of type double. + * \param[out] arg location to store the value. + * \return Is always *this. Failure is indicated by the state of *this. + */ + istream& operator>>(double& arg) { getDouble(&arg); return *this; } @@ -195,7 +189,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream &operator>> (float& arg) { + istream& operator>>(float& arg) { double v; getDouble(&v); arg = v; @@ -206,7 +200,7 @@ class istream : public virtual ios { * \param[out] arg location to store the value. * \return Is always *this. Failure is indicated by the state of *this. */ - istream& operator>> (void*& arg) { + istream& operator>>(void*& arg) { uint32_t val; getNumber(&val); arg = reinterpret_cast(val); @@ -216,9 +210,7 @@ class istream : public virtual ios { * \return The number of characters extracted by the last unformatted * input function. */ - streamsize gcount() const { - return m_gcount; - } + streamsize gcount() const { return m_gcount; } /** * Extract a character if one is available. * @@ -248,7 +240,7 @@ class istream : public virtual ios { * * \return always returns *this. A failure is indicated by the stream state. */ - istream& get(char *str, streamsize n, char delim = '\n'); + istream& get(char* str, streamsize n, char delim = '\n'); /** * Extract characters * @@ -265,7 +257,7 @@ class istream : public virtual ios { * * \return always returns *this. A failure is indicated by the stream state. */ - istream& getline(char *str, streamsize n, char delim = '\n'); + istream& getline(char* str, streamsize n, char delim = '\n'); /** * Extract characters and discard them. * @@ -289,14 +281,12 @@ class istream : public virtual ios { * */ int peek(); -// istream& read(char *str, streamsize count); -// streamsize readsome(char *str, streamsize count); + // istream& read(char *str, streamsize count); + // streamsize readsome(char *str, streamsize count); /** * \return the stream position */ - pos_type tellg() { - return tellpos(); - } + pos_type tellg() { return tellpos(); } /** * Set the stream position * \param[in] pos The absolute position in which to move the read pointer. @@ -327,9 +317,9 @@ class istream : public virtual ios { protected: /// @cond SHOW_PROTECTED /** - * Internal - do not use - * \return - */ + * Internal - do not use + * \return + */ virtual int16_t getch() = 0; /** * Internal - do not use @@ -356,15 +346,16 @@ class istream : public virtual ios { /// @endcond private: - void getBool(bool *b); + void getBool(bool* b); void getChar(char* ch); bool getDouble(double* value); - template void getNumber(T* value); + template + void getNumber(T* value); bool getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num); - void getStr(char *str); + void getStr(char* str); int16_t readSkip(); - size_t m_gcount; + size_t m_gcount = 0; }; //------------------------------------------------------------------------------ template @@ -385,9 +376,4 @@ void istream::getNumber(T* value) { } } } - - -}; // namespace sdfat - - #endif // istream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.cpp b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.cpp index ac642627..7f946bd5 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.cpp +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -22,13 +22,11 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#include #include "ostream.h" - - -namespace sdfat { - - +#ifdef __AVR__ +#include +#endif // __AVR__ +#include #ifndef PSTR #define PSTR(x) x #endif // PSTR @@ -132,22 +130,28 @@ void ostream::putDouble(double n) { //------------------------------------------------------------------------------ void ostream::putNum(int32_t n) { bool neg = n < 0 && flagsToBase() == 10; - putNum ((uint32_t)(neg ? -n : n), neg); + putNum((uint32_t)(neg ? -n : n), neg); } //------------------------------------------------------------------------------ void ostream::putNum(int64_t n) { bool neg = n < 0 && flagsToBase() == 10; - putNum ((uint64_t)(neg ? -n : n), neg); + putNum((uint64_t)(neg ? -n : n), neg); } //------------------------------------------------------------------------------ -void ostream::putPgm(const char* str) { +void ostream::putPgm(const char *str) { +#ifndef __AVR__ + putStr(str); +#else // __AVR__ + uint8_t c; int n; - for (n = 0; pgm_read_byte(&str[n]); n++) {} + for (n = 0; pgm_read_byte(&str[n]); n++) { + } fill_not_left(n); - for (uint8_t c; (c = pgm_read_byte(str)); str++) { + for (n = 0; (c = pgm_read_byte(&str[n])); n++) { putch(c); } do_fill(n); +#endif // __AVR__ } //------------------------------------------------------------------------------ void ostream::putStr(const char *str) { @@ -156,6 +160,3 @@ void ostream::putStr(const char *str) { putstr(str); do_fill(n); } - - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.h b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.h index 6bbaded2..7dc8eb0e 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/iostream/ostream.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,11 +29,6 @@ * \brief \ref ostream class */ #include "ios.h" - - -namespace sdfat { - - //============================================================================== /** * \class ostream @@ -47,14 +42,12 @@ class ostream : public virtual ios { * \param[in] pf function to call * \return the stream */ - ostream& operator<< (ostream& (*pf)(ostream& str)) { - return pf(*this); - } + ostream &operator<<(ostream &(*pf)(ostream &str)) { return pf(*this); } /** call manipulator * \param[in] pf function to call * \return the stream */ - ostream& operator<< (ios_base& (*pf)(ios_base& str)) { + ostream &operator<<(ios_base &(*pf)(ios_base &str)) { pf(*this); return *this; } @@ -62,7 +55,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (bool arg) { + ostream &operator<<(bool arg) { putBool(arg); return *this; } @@ -70,7 +63,7 @@ class ostream : public virtual ios { * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const char *arg) { + ostream &operator<<(const char *arg) { putStr(arg); return *this; } @@ -78,16 +71,16 @@ class ostream : public virtual ios { * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const signed char *arg) { - putStr((const char*)arg); + ostream &operator<<(const signed char *arg) { + putStr(reinterpret_cast(arg)); return *this; } /** Output string * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const unsigned char *arg) { - putStr((const char*)arg); + ostream &operator<<(const unsigned char *arg) { + putStr(reinterpret_cast(arg)); return *this; } #if ENABLE_ARDUINO_STRING @@ -95,7 +88,7 @@ class ostream : public virtual ios { * \param[in] arg string to output * \return the stream */ - ostream &operator<< (const String& arg) { + ostream &operator<<(const String &arg) { putStr(arg.c_str()); return *this; } @@ -104,7 +97,7 @@ class ostream : public virtual ios { * \param[in] arg character to output * \return the stream */ - ostream &operator<< (char arg) { + ostream &operator<<(char arg) { putChar(arg); return *this; } @@ -112,7 +105,7 @@ class ostream : public virtual ios { * \param[in] arg character to output * \return the stream */ - ostream &operator<< (signed char arg) { + ostream &operator<<(signed char arg) { putChar(static_cast(arg)); return *this; } @@ -120,7 +113,7 @@ class ostream : public virtual ios { * \param[in] arg character to output * \return the stream */ - ostream &operator<< (unsigned char arg) { + ostream &operator<<(unsigned char arg) { putChar(static_cast(arg)); return *this; } @@ -128,7 +121,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (double arg) { + ostream &operator<<(double arg) { putDouble(arg); return *this; } @@ -136,7 +129,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (float arg) { + ostream &operator<<(float arg) { putDouble(arg); return *this; } @@ -144,7 +137,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (short arg) { // NOLINT + ostream &operator<<(short arg) { // NOLINT putNum((int32_t)arg); return *this; } @@ -152,7 +145,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned short arg) { // NOLINT + ostream &operator<<(unsigned short arg) { // NOLINT putNum((uint32_t)arg); return *this; } @@ -160,7 +153,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (int arg) { + ostream &operator<<(int arg) { putNum((int32_t)arg); return *this; } @@ -168,7 +161,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned int arg) { + ostream &operator<<(unsigned int arg) { putNum((uint32_t)arg); return *this; } @@ -176,7 +169,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (long arg) { // NOLINT + ostream &operator<<(long arg) { // NOLINT putNum((int32_t)arg); return *this; } @@ -184,7 +177,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned long arg) { // NOLINT + ostream &operator<<(unsigned long arg) { // NOLINT putNum((uint32_t)arg); return *this; } @@ -192,7 +185,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (long long arg) { // NOLINT + ostream &operator<<(long long arg) { // NOLINT putNum((int64_t)arg); return *this; } @@ -200,7 +193,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream &operator<< (unsigned long long arg) { // NOLINT + ostream &operator<<(unsigned long long arg) { // NOLINT putNum((uint64_t)arg); return *this; } @@ -208,7 +201,7 @@ class ostream : public virtual ios { * \param[in] arg value to output * \return the stream */ - ostream& operator<< (const void* arg) { + ostream &operator<<(const void *arg) { putNum(reinterpret_cast(arg)); return *this; } @@ -216,8 +209,8 @@ class ostream : public virtual ios { * \param[in] arg pointing to flash string * \return the stream */ - ostream &operator<< (const __FlashStringHelper *arg) { - putPgm(reinterpret_cast(arg)); + ostream &operator<<(const __FlashStringHelper *arg) { + putPgm(reinterpret_cast(arg)); return *this; } /** @@ -229,17 +222,17 @@ class ostream : public virtual ios { * \param[in] ch The character * \return A reference to the ostream object. */ - ostream& put(char ch) { + ostream &put(char ch) { putch(ch); return *this; } -// ostream& write(char *str, streamsize count); + // ostream& write(char *str, streamsize count); /** * Flushes the buffer associated with this stream. The flush function * calls the sync function of the associated file. * \return A reference to the ostream object. */ - ostream& flush() { + ostream &flush() { if (!sync()) { setstate(badbit); } @@ -248,15 +241,13 @@ class ostream : public virtual ios { /** * \return the stream position */ - pos_type tellp() { - return tellpos(); - } + pos_type tellp() { return tellpos(); } /** * Set the stream position * \param[in] pos The absolute position in which to move the write pointer. * \return Is always *this. Failure is indicated by the state of *this. */ - ostream& seekp(pos_type pos) { + ostream &seekp(pos_type pos) { if (!seekpos(pos)) { setstate(failbit); } @@ -270,7 +261,7 @@ class ostream : public virtual ios { * \param[in] way One of ios::beg, ios::cur, or ios::end. * \return Is always *this. Failure is indicated by the state of *this. */ - ostream& seekp(off_type off, seekdir way) { + ostream &seekp(off_type off, seekdir way) { if (!seekoff(off, way)) { setstate(failbit); } @@ -297,14 +288,14 @@ class ostream : public virtual ios { void putDouble(double n); void putNum(int32_t n); void putNum(int64_t n); - void putNum(uint32_t n) {putNum(n, false);} - void putNum(uint64_t n) {putNum(n, false);} - void putPgm(const char* str); - void putStr(const char* str); + void putNum(uint32_t n) { putNum(n, false); } + void putNum(uint64_t n) { putNum(n, false); } + void putPgm(const char *str); + void putStr(const char *str); - template - char* fmtNum(T n, char *ptr, uint8_t base) { - char a = flags() & uppercase ? 'A' - 10 : 'a' - 10; + template + char *fmtNum(T n, char *ptr, uint8_t base) { + char a = (flags() & uppercase) ? 'A' - 10 : 'a' - 10; do { T m = n; n /= base; @@ -314,12 +305,12 @@ class ostream : public virtual ios { return ptr; } - template + template void putNum(T n, bool neg) { - char buf[(8*sizeof(T) + 2)/3 + 2]; - char* ptr = buf + sizeof(buf) - 1; - char* num; - char* str; + char buf[(8 * sizeof(T) + 2) / 3 + 2]; + char *ptr = buf + sizeof(buf) - 1; + char *num; + char *str; uint8_t base = flagsToBase(); *ptr = '\0'; str = num = fmtNum(n, ptr, base); @@ -350,9 +341,4 @@ class ostream : public virtual ios { do_fill(len); } }; - - -}; // namespace sdfat - - #endif // ostream_h diff --git a/extra-libraries/ESP8266/ESP8266SdFat/src/sdios.h b/extra-libraries/ESP8266/ESP8266SdFat/src/sdios.h index 28017046..d86a0b01 100644 --- a/extra-libraries/ESP8266/ESP8266SdFat/src/sdios.h +++ b/extra-libraries/ESP8266/ESP8266SdFat/src/sdios.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2020 Bill Greiman + * Copyright (c) 2011-2022 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -29,6 +29,6 @@ * \brief C++ IO Streams features. */ #include "iostream/ArduinoStream.h" -#include "iostream/fstream.h" #include "iostream/StdioStream.h" +#include "iostream/fstream.h" #endif // sdios_h diff --git a/libraries/ESP32SSDP-1.2.1/.github/FUNDING.yml b/libraries/ESP32SSDP-1.2.1/.github/FUNDING.yml deleted file mode 100644 index 5425dcfd..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/FUNDING.yml +++ /dev/null @@ -1,11 +0,0 @@ -# These are supported funding model platforms - -#github: luc-github -#open_collective: # Replace with a single Open Collective username -#ko_fi: # Replace with a single Ko-fi username -#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: ESP3D -#issuehunt: # Replace with a single IssueHunt username -#otechie: # Replace with a single Otechie username -#custom: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y8FFE7NA4LJWQ diff --git a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/bug_report.md b/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 2504bd12..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "[BUG]" -labels: bug -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Firmware:** -- ESP core version: [2.5.2] -- Library Version:[e.g 2.1b4] -- Wifi mode:[e.g. STA] - -**Board used (please complete the following information):** - - MCU: [e.g. ESP32] - - Name:[e.g. NodeMCU2s] - - Flash size: [e.g. 4M: 2M/2M] - -**Additional context** -Add any other context about the problem here. -Wiring, decoded stack, etc... diff --git a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/config.yml b/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 3ba13e0c..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1 +0,0 @@ -blank_issues_enabled: false diff --git a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/question-template.md b/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/question-template.md deleted file mode 100644 index be599fe4..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/question-template.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Question template -about: Ask your question, if not bug neither feature request. -title: "[Question]" -labels: question -assignees: '' - ---- - -What is your question ? diff --git a/libraries/ESP32SSDP-1.2.1/.github/ci/build-ssdp.sh b/libraries/ESP32SSDP-1.2.1/.github/ci/build-ssdp.sh deleted file mode 100644 index 1ef6e3b2..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ci/build-ssdp.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e -# Enable the globstar shell option -shopt -s globstar - -#arduino or PlatformIO -ide=$1 - -# Make sure we are inside the github workspace -cd $GITHUB_WORKSPACE -#export paths -export PATH="$HOME/arduino_ide:$PATH" -export ARDUINO_IDE_PATH="$HOME/arduino_ide" -if [[ "$ide" == "arduino" ]]; -then - echo "Arduino" - fqbn=esp32:esp32:esp32:PartitionScheme=min_spiffs,FlashFreq=80,PSRAM=disabled,CPUFreq=240,FlashMode=qio,FlashSize=4M,DebugLevel=none - arduino-builder -hardware "$ARDUINO_IDE_PATH/hardware" -tools "$ARDUINO_IDE_PATH/tools-builder" -tools "$ARDUINO_IDE_PATH/tools" -libraries "$ARDUINO_IDE_PATH/libraries" -fqbn=$fqbn -compile -logger=human -core-api-version=10810 ./examples/SSDP/SSDP.ino -else - echo "PlatformIO" - cp -r ./src/ESP32SSDP.cpp ./examples/SSDP/ - cp -r ./src/ESP32SSDP.h ./examples/SSDP/ - cp ./test/platformio.ini ./examples/ - cd examples - platformio run -e esp32dev -fi diff --git a/libraries/ESP32SSDP-1.2.1/.github/ci/final-check.sh b/libraries/ESP32SSDP-1.2.1/.github/ci/final-check.sh deleted file mode 100644 index 6299f85a..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ci/final-check.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e -# Enable the globstar shell option -shopt -s globstar -# Make sure we are inside the github workspace -cd $GITHUB_WORKSPACE -echo $STEPS_CONTEXT -step=$1 -status=$2 - -if [[ "$status" == "success" ]]; -then - echo "Success build" - exit 0 - else - echo "Build failed" - exit 1 -fi - - diff --git a/libraries/ESP32SSDP-1.2.1/.github/ci/install-arduino.sh b/libraries/ESP32SSDP-1.2.1/.github/ci/install-arduino.sh deleted file mode 100644 index a107f052..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ci/install-arduino.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e -# Enable the globstar shell option -shopt -s globstar - -wget http://downloads.arduino.cc/arduino-1.8.13-linux64.tar.xz - -tar xf arduino-1.8.13-linux64.tar.xz - -mv arduino-1.8.13 $HOME/arduino_ide - diff --git a/libraries/ESP32SSDP-1.2.1/.github/ci/install-esp32.sh b/libraries/ESP32SSDP-1.2.1/.github/ci/install-esp32.sh deleted file mode 100644 index 63c529d9..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ci/install-esp32.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e -# Enable the globstar shell option -shopt -s globstar - -#install pyserial -echo "Installing Python Serial ..." -pip install pyserial - -echo "Clone esp32 core" -cd $HOME/arduino_ide/hardware -mkdir esp32 -cd esp32 -git clone https://github.com/espressif/arduino-esp32.git esp32 -cd esp32 -git submodule update --init -cd tools -python get.py diff --git a/libraries/ESP32SSDP-1.2.1/.github/ci/install-platformio.sh b/libraries/ESP32SSDP-1.2.1/.github/ci/install-platformio.sh deleted file mode 100644 index a54fdc0e..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ci/install-platformio.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e -# Enable the globstar shell option -shopt -s globstar - -pip install -U platformio -platformio update - diff --git a/libraries/ESP32SSDP-1.2.1/.github/ci/prepare-libs.sh b/libraries/ESP32SSDP-1.2.1/.github/ci/prepare-libs.sh deleted file mode 100644 index e4464b7b..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/ci/prepare-libs.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e -# Enable the globstar shell option -shopt -s globstar -ls $HOME -# Make sure we are inside the github workspace -cd $GITHUB_WORKSPACE -mkdir -p $HOME/arduino_ide/libraries/SSDP -cp -R ./src $HOME/arduino_ide/libraries/SSDP -cp ./library.properties $HOME/arduino_ide/libraries/SSDP - diff --git a/libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci-dev.yml b/libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci-dev.yml deleted file mode 100644 index 5b36dbd3..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci-dev.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: build-ci-dev - -on: - pull_request: - branches: - - Dev - push: - branches: - - Dev - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.x - uses: actions/setup-python@v2 - with: - python-version: "3.x" - architecture: "x64" - - name: Install Arduino - run: bash ./.github/ci/install-arduino.sh - - name: Install platformIO - run: bash ./.github/ci/install-platformio.sh - - name: Install ESP32 - run: bash ./.github/ci/install-esp32.sh - - name: Setup libraries - run: bash ./.github/ci/prepare-libs.sh - - name: Build ESP32 arduino - id: esp32_1 - run: bash ./.github/ci/build-ssdp.sh arduino - continue-on-error: true - - name: Build platformIO - id: pio_1 - run: bash ./.github/ci/build-ssdp.sh pio - continue-on-error: true - - name: Final check - env: - STEPS_CONTEXT: ${{ toJson(steps) }} - if: steps.pio_1.outcome == 'failure' || steps.esp32_1.outcome == 'failure' - run: bash ./.github/ci/final-check.sh "GLOBAL" "failure" - - name: Final confirmation - env: - STEPS_CONTEXT: ${{ toJson(steps) }} - if: steps.pio_1.outcome == 'success' && steps.esp32_1.outcome == 'success' - run: bash ./.github/ci/final-check.sh "GLOBAL" "success" diff --git a/libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci.yml b/libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci.yml deleted file mode 100644 index f04a6f9c..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/workflows/build-ci.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: build-ci - -on: - pull_request: - branches: - - master - push: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.x - uses: actions/setup-python@v2 - with: - python-version: "3.x" - architecture: "x64" - - name: Install Arduino - run: bash ./.github/ci/install-arduino.sh - - name: Install platformIO - run: bash ./.github/ci/install-platformio.sh - - name: Install ESP32 - run: bash ./.github/ci/install-esp32.sh - - name: Setup libraries - run: bash ./.github/ci/prepare-libs.sh - - name: Build ESP32 arduino - id: esp32_1 - run: bash ./.github/ci/build-ssdp.sh arduino - continue-on-error: true - - name: Build platformIO - id: pio_1 - run: bash ./.github/ci/build-ssdp.sh pio - continue-on-error: true - - name: Final check - env: - STEPS_CONTEXT: ${{ toJson(steps) }} - if: steps.pio_1.outcome == 'failure' || steps.esp32_1.outcome == 'failure' - run: bash ./.github/ci/final-check.sh "GLOBAL" "failure" - - name: Final confirmation - env: - STEPS_CONTEXT: ${{ toJson(steps) }} - if: steps.pio_1.outcome == 'success' && steps.esp32_1.outcome == 'success' - run: bash ./.github/ci/final-check.sh "GLOBAL" "success" diff --git a/libraries/ESP32SSDP-1.2.1/.github/workflows/greetings.yml b/libraries/ESP32SSDP-1.2.1/.github/workflows/greetings.yml deleted file mode 100644 index 6a8dcbee..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/workflows/greetings.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Greetings - -on: [issues] - -jobs: - greeting: - runs-on: ubuntu-latest - steps: - - uses: actions/first-interaction@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: 'Thank your for submiting, please be sure you followed template or your issue may be dismissed.' - pr-message: 'Thank you for your contribution, be patient, review can take a time.' diff --git a/libraries/ESP32SSDP-1.2.1/.github/workflows/wiki.yml b/libraries/ESP32SSDP-1.2.1/.github/workflows/wiki.yml deleted file mode 100644 index 4171fe72..00000000 --- a/libraries/ESP32SSDP-1.2.1/.github/workflows/wiki.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Deploy Wiki - -on: - push: - paths: - # Trigger only when wiki directory changes - - 'wiki/**' - branches: - # And only on master branch - - wiki - -jobs: - deploy-wiki: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Push Wiki Changes - uses: Andrew-Chen-Wang/github-wiki-action@v2 - env: - # Make sure you have that / at the end. We use rsync - # WIKI_DIR's default is wiki/ - WIKI_DIR: wiki/ - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GH_MAIL: ${{ secrets.MY_EMAIL }} - GH_NAME: ${{ github.repository_owner }} - EXCLUDED_FILES: "a/ b.md" diff --git a/libraries/ESP32SSDP-1.2.1/examples/SSDP/SSDP.ino b/libraries/ESP32SSDP-1.2.1/examples/SSDP/SSDP.ino deleted file mode 100644 index fdb06860..00000000 --- a/libraries/ESP32SSDP-1.2.1/examples/SSDP/SSDP.ino +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include -#include - -const char* ssid = "********"; -const char* password = "********"; - -WebServer HTTP(80); - -void setup() -{ - Serial.begin(115200); - Serial.println(); - Serial.println("Starting WiFi..."); - - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if(WiFi.waitForConnectResult() == WL_CONNECTED) { - - Serial.printf("Starting HTTP...\n"); - HTTP.on("/index.html", HTTP_GET, []() { - HTTP.send(200, "text/plain", "Hello World!"); - }); - HTTP.on("/description.xml", HTTP_GET, []() { - SSDP.schema(HTTP.client()); - }); - HTTP.begin(); - - //set schema xml url, nees to match http handler - //"ssdp/schema.xml" if not set - SSDP.setSchemaURL("description.xml"); - //set port - //80 if not set - SSDP.setHTTPPort(80); - //set device name - //Null string if not set - SSDP.setName("Philips hue clone"); - //set Serial Number - //Null string if not set - SSDP.setSerialNumber("001788102201"); - //set device url - //Null string if not set - SSDP.setURL("index.html"); - //set model name - //Null string if not set - SSDP.setModelName("Philips hue bridge 2012"); - //set model description - //Null string if not set - SSDP.setModelDescription("This device can be controled by WiFi"); - //set model number - //Null string if not set - SSDP.setModelNumber("929000226503"); - //set model url - //Null string if not set - SSDP.setModelURL("http://www.meethue.com"); - //set model manufacturer name - //Null string if not set - SSDP.setManufacturer("Royal Philips Electronics"); - //set model manufacturer url - //Null string if not set - SSDP.setManufacturerURL("http://www.philips.com"); - //set device type - //"urn:schemas-upnp-org:device:Basic:1" if not set - SSDP.setDeviceType("rootdevice"); //to appear as root device, other examples: MediaRenderer, MediaServer ... - //set server name - //"Arduino/1.0" if not set - SSDP.setServerName("SSDPServer/1.0"); - //set UUID, you can use https://www.uuidgenerator.net/ - //use 38323636-4558-4dda-9188-cda0e6 + 4 last bytes of mac address if not set - //use SSDP.setUUID("daa26fa3-d2d4-4072-bc7a-a1b88ab4234a", false); for full UUID - SSDP.setUUID("daa26fa3-d2d4-4072-bc7a"); - //Set icons list, NB: optional, this is ignored under windows - SSDP.setIcons( "" - "image/png" - "48" - "48" - "24" - "icon48.png" - ""); - //Set service list, NB: optional for simple device - SSDP.setServices( "" - "urn:schemas-upnp-org:service:SwitchPower:1" - "urn:upnp-org:serviceId:SwitchPower:1" - "/SwitchPower1.xml" - "/SwitchPower/Control" - "/SwitchPower/Event" - ""); - - Serial.printf("Starting SSDP...\n"); - SSDP.begin(); - - Serial.printf("Ready!\n"); - } else { - Serial.printf("WiFi Failed\n"); - while(1) { - delay(100); - } - } -} - -void loop() -{ - HTTP.handleClient(); - delay(1); -} diff --git a/libraries/ESP32SSDP-1.2.1/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino b/libraries/ESP32SSDP-1.2.1/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino deleted file mode 100644 index 354413d1..00000000 --- a/libraries/ESP32SSDP-1.2.1/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino +++ /dev/null @@ -1,103 +0,0 @@ -#include "ESPAsyncWebServer.h" -#include "ESP32SSDP.h" - -const char* ssid = "********"; -const char* password = "********"; - -AsyncWebServer webserver(80); - -void setup() -{ - Serial.begin(115200); - Serial.println(); - Serial.println("Starting WiFi..."); - - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if(WiFi.waitForConnectResult() == WL_CONNECTED) { - - Serial.printf("Starting HTTP...\n"); - webserver.on("/index.html", HTTP_GET, [&](AsyncWebServerRequest *request) { - request->send(200, "text/plain", "Hello World!"); - }); - webserver.on("/description.xml", HTTP_GET, [&](AsyncWebServerRequest *request) { - request->send(200, "text/xml", SSDP.schema(false)); - }); - webserver.begin(); - - //set schema xml url, nees to match http handler - //"ssdp/schema.xml" if not set - SSDP.setSchemaURL("description.xml"); - //set port - //80 if not set - SSDP.setHTTPPort(80); - //set device name - //Null string if not set - SSDP.setName("Philips hue clone"); - //set Serial Number - //Null string if not set - SSDP.setSerialNumber("001788102201"); - //set device url - //Null string if not set - SSDP.setURL("index.html"); - //set model name - //Null string if not set - SSDP.setModelName("Philips hue bridge 2012"); - //set model description - //Null string if not set - SSDP.setModelDescription("This device can be controled by WiFi"); - //set model number - //Null string if not set - SSDP.setModelNumber("929000226503"); - //set model url - //Null string if not set - SSDP.setModelURL("http://www.meethue.com"); - //set model manufacturer name - //Null string if not set - SSDP.setManufacturer("Royal Philips Electronics"); - //set model manufacturer url - //Null string if not set - SSDP.setManufacturerURL("http://www.philips.com"); - //set device type - //"urn:schemas-upnp-org:device:Basic:1" if not set - SSDP.setDeviceType("rootdevice"); //to appear as root device, other examples: MediaRenderer, MediaServer ... - //set server name - //"Arduino/1.0" if not set - SSDP.setServerName("SSDPServer/1.0"); - //set UUID, you can use https://www.uuidgenerator.net/ - //use 38323636-4558-4dda-9188-cda0e6 + 4 last bytes of mac address if not set - //use SSDP.setUUID("daa26fa3-d2d4-4072-bc7a-a1b88ab4234a", false); for full UUID - SSDP.setUUID("daa26fa3-d2d4-4072-bc7a"); - //Set icons list, NB: optional, this is ignored under windows - SSDP.setIcons( "" - "image/png" - "48" - "48" - "24" - "icon48.png" - ""); - //Set service list, NB: optional for simple device - SSDP.setServices( "" - "urn:schemas-upnp-org:service:SwitchPower:1" - "urn:upnp-org:serviceId:SwitchPower:1" - "/SwitchPower1.xml" - "/SwitchPower/Control" - "/SwitchPower/Event" - ""); - - Serial.printf("Starting SSDP...\n"); - SSDP.begin(); - - Serial.printf("Ready!\n"); - } else { - Serial.printf("WiFi Failed\n"); - while(1) { - delay(100); - } - } -} - -void loop() -{ - delay(1); -} diff --git a/libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.cpp b/libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.cpp deleted file mode 100644 index 9a912f0c..00000000 --- a/libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.cpp +++ /dev/null @@ -1,734 +0,0 @@ -/* -ESP32 Simple Service Discovery -Copyright (c) 2015 Hristo Gochkov - -Original (Arduino) version by Filippo Sallemi, July 23, 2014. -Can be found at: https://github.com/nomadnt/uSSDP - -License (MIT license): - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -*/ -#ifdef ARDUINO_ARCH_ESP32 -#include -#include "ESP32SSDP.h" -#include -#include - -//#define DEBUG_SSDP Serial -//#define DEBUG_VERBOSE_SSDP -//#define DEBUG_WITH_MARLIN -#if defined (DEBUG_WITH_MARLIN) -class FlushableHardwareSerial : public HardwareSerial -{ -public: - FlushableHardwareSerial(int uart_nr) : HardwareSerial(uart_nr) {} -}; -extern FlushableHardwareSerial flushableSerial; -#define DEBUG_SSDP flushableSerial -#endif //endif DEBUG_WITH_MARLIN - - -#define SSDP_INTERVAL 1200 -#define SSDP_PORT 1900 -#define SSDP_METHOD_SIZE 10 -#define SSDP_URI_SIZE 2 -#define SSDP_BUFFER_SIZE 64 -#define SSDP_MULTICAST_TTL 2 -static const IPAddress SSDP_MULTICAST_ADDR(239, 255, 255, 250); -#define SSDP_UUID_ROOT "38323636-4558-4dda-9188-cda0e6" - - -static const char _ssdp_response_template[] PROGMEM = - "HTTP/1.1 200 OK\r\n" - "EXT:\r\n"; - -static const char _ssdp_notify_template[] PROGMEM = - "NOTIFY * HTTP/1.1\r\n" - "HOST: 239.255.255.250:1900\r\n" - "NTS: ssdp:alive\r\n"; - -static const char _ssdp_packet_template[] PROGMEM = - "%s" // _ssdp_response_template / _ssdp_notify_template - "CACHE-CONTROL: max-age=%u\r\n" // _interval - "SERVER: %s UPNP/1.1 %s/%s\r\n" // _servername, _modelName, _modelNumber - "USN: uuid:%s%s\r\n" // _uuid, _usn_suffix - "%s: %s\r\n" // "NT" or "ST", _deviceType - "LOCATION: http://%u.%u.%u.%u:%u/%s\r\n" // WiFi.localIP(), _port, _schemaURL - "\r\n"; - -/*This need to be removed as part as deprecated, headers should be handled outside of library*/ -static const char _ssdp_schema_header[] PROGMEM = - "HTTP/1.1 200 OK\r\n" - "Content-Type: text/xml\r\n" - "Connection: close\r\n" - "Access-Control-Allow-Origin: *\r\n" - "\r\n"; - -static const char _ssdp_schema_template[] PROGMEM = - "" - "" - "" - "1" - "0" - "" - "http://%u.%u.%u.%u:%u/" // WiFi.localIP(), _port - "" - "urn:schemas-upnp-org:device:%s:1" - "%s" - "%s" - "%s" - "%s" - "%s" - "%s" - "%s" - "%s" - "%s" - "uuid:%s" - "%s" - "%s" - "" - "\r\n" - "\r\n"; - -SSDPClass::SSDPClass() : - _replySlots{NULL}, - _respondToAddr{0,0,0,0} -{ - _port = 80; - _ttl = SSDP_MULTICAST_TTL; - _interval = SSDP_INTERVAL; - _respondToPort = 0; - _pending = false; - _stmatch = false; - _delay=0; - _process_time = 0; - _notify_time = 0; - _uuid[0] = '\0'; - _usn_suffix[0] = '\0'; - _respondType[0] = '\0'; - _modelNumber[0] = '\0'; - sprintf(_deviceType, "Basic"); - _friendlyName[0] = '\0'; - _presentationURL[0] = '\0'; - _serialNumber[0] = '\0'; - _modelName[0] = '\0'; - _modelURL[0] = '\0'; - _manufacturer[0] = '\0'; - _manufacturerURL[0] = '\0'; - _servername = "Arduino/1.0"; - sprintf(_schemaURL, "ssdp/schema.xml"); - _schema = nullptr; -} - -SSDPClass::~SSDPClass() -{ - end(); -} - -void SSDPClass::end() -{ - if (_schema) { - free(_schema); - _schema = nullptr; - } -#if defined( DEBUG_SSDP) && defined (DEBUG_VERBOSE_SSDP) - DEBUG_SSDP.printf_P(PSTR("SSDP end ... ")); -#endif -} - -IPAddress SSDPClass::localIP() -{ - tcpip_adapter_ip_info_t ip; - if (WiFi.getMode() == WIFI_STA) { - if (tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_STA, &ip)) { - return IPAddress(); - } - } else if (WiFi.getMode() == WIFI_OFF) { - if (tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_ETH, &ip)) { - return IPAddress(); - } - } - return IPAddress(ip.ip.addr); -} - -void SSDPClass::setUUID(const char *uuid, bool rootonly) -{ - //no sanity check is done - TBD - if (rootonly) { - uint32_t chipId = ((uint16_t) (ESP.getEfuseMac() >> 32)); - sprintf(_uuid, "%s%02x%02x%02x", - uuid, - (uint16_t) ((chipId >> 16) & 0xff), - (uint16_t) ((chipId >> 8) & 0xff), - (uint16_t) chipId & 0xff ); - } else { - strlcpy(_uuid, uuid,sizeof(_uuid)); - } -} - -bool SSDPClass::begin() -{ - _pending = false; - _stmatch = false; - end(); - if (strlen(_uuid) == 0) { - setUUID(SSDP_UUID_ROOT); - } -#if defined (DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) - DEBUG_SSDP.printf("SSDP UUID: %s\n", (char *)_uuid); -#endif - if(_udp.connected()) { -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("Already connected, abort begin"); -#endif - return false; - } - - _udp.onPacket([](void * arg, AsyncUDPPacket& packet) { - ((SSDPClass*)(arg))->_onPacket(packet); - }, this); - - if (!_udp.listenMulticast(IPAddress(SSDP_MULTICAST_ADDR),SSDP_PORT, _ttl)) { -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("Error begin"); -#endif - return false; - } - - return true; -} - -void SSDPClass::_send(ssdp_method_t method) -{ - char buffer[1460]; - IPAddress ip = localIP(); - - char * valueBuffer = (char *)malloc(strlen_P(_ssdp_notify_template)+1); - if (!valueBuffer) { -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("Error not enough memory for valueBuffer creation"); -#endif - return; - } - strcpy_P(valueBuffer, (method == NONE)?_ssdp_response_template:_ssdp_notify_template); - - int len = snprintf_P(buffer, sizeof(buffer)-1, - _ssdp_packet_template, - valueBuffer, - _interval, - _servername.c_str(), - _modelName, _modelNumber, - _uuid, _usn_suffix, - (method == NONE)?"ST":"NT", - _respondType, - ip[0], ip[1], ip[2], ip[3], _port, _schemaURL - ); - if(len <= 0) { - free(valueBuffer); -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("Error not enough memory for using valueBuffer"); -#endif - return; - } - IPAddress remoteAddr; - uint16_t remotePort; - if(method == NONE) { - remoteAddr = _respondToAddr; - remotePort = _respondToPort; -#ifdef DEBUG_SSDP - DEBUG_SSDP.print("Sending Response to "); -#endif - } else { - remoteAddr = IPAddress(SSDP_MULTICAST_ADDR); - remotePort = SSDP_PORT; -#ifdef DEBUG_SSDP - DEBUG_SSDP.print("Sending Notify to "); -#endif - } -#ifdef DEBUG_SSDP - DEBUG_SSDP.print(remoteAddr); - DEBUG_SSDP.print(":"); - DEBUG_SSDP.println(remotePort); -#endif - _udp.writeTo((const uint8_t *)buffer, len, remoteAddr, remotePort); -#if defined (DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) - DEBUG_SSDP.println("*************************TX*************************"); - DEBUG_SSDP.println(buffer); - DEBUG_SSDP.println("****************************************************"); -#endif - free(valueBuffer); -} - -const char * SSDPClass::getSchema() -{ - uint len = strlen(_ssdp_schema_template) - + 21 //(IP = 15) + 1 (:) + 5 (port) - + SSDP_DEVICE_TYPE_SIZE - + SSDP_FRIENDLY_NAME_SIZE - + SSDP_SCHEMA_URL_SIZE - + SSDP_SERIAL_NUMBER_SIZE - + SSDP_MODEL_NAME_SIZE - + _modelDescription.length() - + SSDP_MODEL_VERSION_SIZE - + SSDP_MODEL_URL_SIZE - + SSDP_MANUFACTURER_SIZE - + SSDP_MANUFACTURER_URL_SIZE - + SSDP_UUID_SIZE - + _services.length() - + _icons.length(); - if (_schema) { - free (_schema); - _schema = nullptr; - } - _schema = (char *)malloc(len+1); - if (_schema) { - IPAddress ip = localIP(); - sprintf(_schema, _ssdp_schema_template, - ip[0], ip[1], ip[2], ip[3], _port, - _deviceType, - _friendlyName, - _presentationURL, - _serialNumber, - _modelName, - _modelDescription.c_str(), - _modelNumber, - _modelURL, - _manufacturer, - _manufacturerURL, - _uuid, - _services.c_str(), - _icons.c_str() - ); - } else { -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("not enough memory for schema"); -#endif - } - return _schema; -} -/*This function is now deprecated and will be removed in future release*/ -/*Please use getSchema() instead */ -void SSDPClass::schema(WiFiClient client, bool sendHeaders) -{ - if(sendHeaders) { - client.print(_ssdp_schema_header); - } - client.print(getSchema()); -} - -/*This function is now deprecated and will be removed in future release*/ -/*Please use getSchema() instead */ -const char * SSDPClass::schema(bool includeheader) -{ - return getSchema(); -} - -void SSDPClass::_onPacket(AsyncUDPPacket& packet) -{ - if (packet.length()== 0) { - return; - } - int nbBytes =0; - char * packetBuffer = nullptr; - - if(!_pending ) { - ssdp_method_t method = NONE; - nbBytes= packet.length(); - - typedef enum {METHOD, URI, PROTO, KEY, VALUE, ABORT} states; - states state = METHOD; - typedef enum {STRIP, START, SKIP, MAN, ST, MX} headers; - headers header = STRIP; - - uint8_t cursor = 0; - uint8_t cr = 0; - - char buffer[SSDP_BUFFER_SIZE] = {0}; - packetBuffer = new char[nbBytes +1]; - if (packetBuffer == nullptr) { -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("not enough memory for the packet"); -#endif - return; - } - int process_pos = 0; - strncpy(packetBuffer,(const char*)packet.data(),nbBytes); - packetBuffer[nbBytes]='\0'; - _respondToAddr = packet.remoteIP(); - _respondToPort = packet.remotePort(); - -#if defined( DEBUG_SSDP) && defined (DEBUG_VERBOSE_SSDP) - if (nbBytes) { - DEBUG_SSDP.println("*************************RX*************************"); - DEBUG_SSDP.print(packet.remoteIP()); - DEBUG_SSDP.print(":"); - DEBUG_SSDP.println(packet.remotePort()); - DEBUG_SSDP.println(packetBuffer); - DEBUG_SSDP.println("****************************************************"); - } -#endif - while(process_pos < nbBytes) { - - char c = packetBuffer[process_pos]; - process_pos++; - (c == '\r' || c == '\n') ? cr++ : cr = 0; - switch(state) { - case METHOD: - if(c == ' ') { - if(strcmp(buffer, "M-SEARCH") == 0) { - method = SEARCH; - } - - if(method == NONE) { - state = ABORT; - } else { - state = URI; - } - cursor = 0; - - } else if(cursor < SSDP_METHOD_SIZE - 1) { - buffer[cursor++] = c; - buffer[cursor] = '\0'; - } - break; - case URI: - if(c == ' ') { - if(strcmp(buffer, "*")) { - state = ABORT; - } else { - state = PROTO; - } - cursor = 0; - } else if(cursor < SSDP_URI_SIZE - 1) { - buffer[cursor++] = c; - buffer[cursor] = '\0'; - } - break; - case PROTO: - if(cr == 2) { - state = KEY; - cursor = 0; - } - break; - case KEY: - // end of HTTP request parsing. If we find a match start reply delay. - if(cr == 4) { - if (_stmatch) { - _pending = true; - _process_time = millis(); - } - } else if(c == ':') { - cursor = 0; - state = VALUE; - } else if(c != '\r' && c != '\n' && c != ' ' && cursor < SSDP_BUFFER_SIZE - 1) { - buffer[cursor++] = c; - buffer[cursor] = '\0'; - } - break; - case VALUE: - if(cr == 2) { - switch(header) { - case START: -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("***********************"); -#endif - case STRIP: - case SKIP: - break; - case MAN: -#ifdef DEBUG_SSDP - DEBUG_SSDP.printf("MAN: %s\n", (char *)buffer); -#endif - break; - case ST: - // save the search term for the reply and clear usn suffix. - strlcpy(_respondType, buffer, sizeof(_respondType)); - _usn_suffix[0] = '\0'; -#ifdef DEBUG_SSDP - DEBUG_SSDP.printf("ST: '%s'\n",buffer); -#endif - // if looking for all or root reply with upnp:rootdevice - if(strcmp(buffer, "ssdp:all")==0 || strcmp(buffer, "upnp:rootdevice")==0) { - _stmatch = true; - // set USN suffix - strlcpy(_usn_suffix, "::upnp:rootdevice", sizeof(_usn_suffix)); -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("the search type matches all and root"); -#endif - state = KEY; - } else - // if the search type matches our type, we should respond instead of ABORT - if(strcasecmp(buffer, _deviceType) == 0) { - _stmatch = true; - // set USN suffix to the device type - strlcpy(_usn_suffix, "::", sizeof(_usn_suffix)); - strlcat(_usn_suffix, _deviceType, sizeof(_usn_suffix)); -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("the search type matches our type"); -#endif - state = KEY; - } else { - state = ABORT; -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("REJECT. The search type does not match our type"); - DEBUG_SSDP.println("***********************"); - -#endif - } - break; - case MX: - // delay in ms from 0 to MX*1000 where MX is in seconds with limits. - _delay = (short)random(0, atoi(buffer) * 1000L); - if (_delay > SSDP_MAX_DELAY) { - _delay = SSDP_MAX_DELAY; - } - break; - } - - if(state != ABORT) { - state = KEY; - header = STRIP; - cursor = 0; - } - } else if(c != '\r' && c != '\n') { - if(header == STRIP) { - if(c == ' ') { - break; - } else { - header = START; - } - } - if(header == START) { - if(strncmp(buffer, "MA", 2) == 0) { - header = MAN; - } else if(strcmp(buffer, "ST") == 0) { - header = ST; - } else if(strcmp(buffer, "MX") == 0) { - header = MX; - } else { - header = SKIP; - } - } - - if(cursor < SSDP_BUFFER_SIZE - 1) { - buffer[cursor++] = c; - buffer[cursor] = '\0'; - } - } - break; - case ABORT: - _pending = false; - _delay = 0; - break; - } - } - } - if(packetBuffer) { - delete packetBuffer; - } - // save reply in reply queue if one is pending - if(_pending) { - int i; - // Many UPNP hosts send out mulitple M-SEARCH packets at the same time to mitigate - // packet loss. Just reply to one for a given host:port. - for (i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { - if (_replySlots[i]) { - if (_replySlots[i]->_respondToPort == _respondToPort && - _replySlots[i]->_respondToAddr == _respondToAddr - ) { - // keep original delay - _delay = _replySlots[i]->_delay; - _process_time = _replySlots[i]->_process_time; -#ifdef DEBUG_SSDP - DEBUG_SSDP.printf("Remove duplicate SSDP reply in slot %i.\n", i); -#endif - delete _replySlots[i]; - _replySlots[i] = 0; - } - } - } - // save packet to available reply queue slot - for (i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { - if (!_replySlots[i]) { -#ifdef DEBUG_SSDP - DEBUG_SSDP.printf("Saving deferred SSDP reply to queue slot %i.\n", i); - DEBUG_SSDP.println("***********************"); - -#endif - _replySlots[i] = new ssdp_reply_slot_item_t; - if (_replySlots[i]) { - _replySlots[i]->_process_time = _process_time; - _replySlots[i]->_delay = _delay; - _replySlots[i]->_respondToAddr = _respondToAddr; - _replySlots[i]->_respondToPort = _respondToPort; - strlcpy(_replySlots[i]->_respondType, _respondType, sizeof(_replySlots[i]->_respondType)); - strlcpy(_replySlots[i]->_usn_suffix, _usn_suffix, sizeof(_replySlots[i]->_usn_suffix)); - } - break; - } - } -#ifdef DEBUG_SSDP - if (i == SSDP_MAX_REPLY_SLOTS) { - DEBUG_SSDP.println("SSDP reply queue is full dropping packet."); - } -#endif - _pending = false; - _delay = 0; - } - // send any packets that are pending and overdue. - unsigned long t = millis(); - bool sent = false; - for (int i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { - if (_replySlots[i]) { - // millis delay with overflow protection. - if (t - _replySlots[i]->_process_time > _replySlots[i]->_delay) { - // reply ready. restore and send. - _respondToAddr = _replySlots[i]->_respondToAddr; - _respondToPort = _replySlots[i]->_respondToPort; - strlcpy(_respondType, _replySlots[i]->_respondType, sizeof(_respondType)); - strlcpy(_usn_suffix, _replySlots[i]->_usn_suffix, sizeof(_usn_suffix)); -#ifdef DEBUG_SSDP - DEBUG_SSDP.printf("Slot(%d) ", i); - DEBUG_SSDP.println("Send None"); -#endif - _send(NONE); - sent = true; - delete _replySlots[i]; - _replySlots[i] = 0; -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("***********************"); -#endif - } - } - } -#if defined (DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) - uint8_t rcount = 0; - DEBUG_SSDP.print("SSDP reply queue status: ["); - for (int i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { - DEBUG_SSDP.print(_replySlots[i] ? "X" : "-" ); - } - DEBUG_SSDP.println("]"); -#endif - if(_notify_time == 0 || (millis() - _notify_time) > (_interval * 1000L)) { - _notify_time = millis(); - // send notify with our root device type - strlcpy(_respondType, "upnp:rootdevice", sizeof(_respondType)); - strlcpy(_usn_suffix, "::upnp:rootdevice", sizeof(_usn_suffix)); -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("Send Notify"); -#endif - _send(NOTIFY); - sent = true; -#ifdef DEBUG_SSDP - DEBUG_SSDP.println("***********************"); -#endif - } - if (!sent) { -#if defined (DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) - DEBUG_SSDP.println("Do not sent"); -#endif - } -} - -void SSDPClass::setSchemaURL(const char *url) -{ - strlcpy(_schemaURL, url, sizeof(_schemaURL)); -} - -void SSDPClass::setHTTPPort(uint16_t port) -{ - _port = port; -} - -void SSDPClass::setDeviceType(const char *deviceType) -{ - strlcpy(_deviceType, deviceType, sizeof(_deviceType)); -} - -void SSDPClass::setName(const char *name) -{ - strlcpy(_friendlyName, name, sizeof(_friendlyName)); -} - -void SSDPClass::setURL(const char *url) -{ - strlcpy(_presentationURL, url, sizeof(_presentationURL)); -} - -void SSDPClass::setSerialNumber(const char *serialNumber) -{ - strlcpy(_serialNumber, serialNumber, sizeof(_serialNumber)); -} - -void SSDPClass::setSerialNumber(const uint32_t serialNumber) -{ - snprintf(_serialNumber, sizeof(uint32_t)*2+1, "%08X", serialNumber); -} - -void SSDPClass::setModelName(const char *name) -{ - strlcpy(_modelName, name, sizeof(_modelName)); -} - -void SSDPClass::setModelDescription(const char *desc) -{ - _modelDescription = desc; -} -void SSDPClass::setServerName(const char *name) -{ - _servername = name; -} - -void SSDPClass::setModelNumber(const char *num) -{ - strlcpy(_modelNumber, num, sizeof(_modelNumber)); -} - -void SSDPClass::setModelURL(const char *url) -{ - strlcpy(_modelURL, url, sizeof(_modelURL)); -} - -void SSDPClass::setManufacturer(const char *name) -{ - strlcpy(_manufacturer, name, sizeof(_manufacturer)); -} - -void SSDPClass::setManufacturerURL(const char *url) -{ - strlcpy(_manufacturerURL, url, sizeof(_manufacturerURL)); -} - -void SSDPClass::setTTL(const uint8_t ttl) -{ - _ttl = ttl; -} - -void SSDPClass::setInterval(uint32_t interval) -{ - _interval = interval; -} - - -#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SSDP) -SSDPClass SSDP; -#endif - -#endif diff --git a/libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.h b/libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.h deleted file mode 100644 index 788229f0..00000000 --- a/libraries/ESP32SSDP-1.2.1/src/ESP32SSDP.h +++ /dev/null @@ -1,196 +0,0 @@ -/* -ESP32 Simple Service Discovery -Copyright (c) 2015 Hristo Gochkov - -Original (Arduino) version by Filippo Sallemi, July 23, 2014. -Can be found at: https://github.com/nomadnt/uSSDP - -License (MIT license): - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -*/ -#ifdef ARDUINO_ARCH_ESP32 -#ifndef ESP32SSDP_H -#define ESP32SSDP_H - -#include -#include -#include - -#define SSDP_UUID_SIZE 37 -#define SSDP_SCHEMA_URL_SIZE 64 -#define SSDP_DEVICE_TYPE_SIZE 64 -#define SSDP_FRIENDLY_NAME_SIZE 64 -#define SSDP_SERIAL_NUMBER_SIZE 32 -#define SSDP_PRESENTATION_URL_SIZE 128 -#define SSDP_MODEL_NAME_SIZE 64 -#define SSDP_MODEL_URL_SIZE 128 -#define SSDP_MODEL_VERSION_SIZE 32 -#define SSDP_MANUFACTURER_SIZE 64 -#define SSDP_MANUFACTURER_URL_SIZE 128 -#define SSDP_MAX_REPLY_SLOTS 5 -#define SSDP_MAX_DELAY 10000 - -typedef enum { - NONE, - SEARCH, - NOTIFY -} ssdp_method_t; - -typedef struct { - unsigned long _process_time; - short _delay; - IPAddress _respondToAddr; - uint16_t _respondToPort; - char _respondType[SSDP_DEVICE_TYPE_SIZE]; - char _usn_suffix[SSDP_DEVICE_TYPE_SIZE]; -} ssdp_reply_slot_item_t; - -class SSDPClass -{ -public: - SSDPClass(); - ~SSDPClass(); - - bool begin(); - void end(); - - void schema(WiFiClient client, bool sendHeaders = true) __attribute__((deprecated)); - const char * schema(bool includeheader = true) __attribute__((deprecated)); - const char * getSchema(); - - void setDeviceType(const String& deviceType) - { - setDeviceType(deviceType.c_str()); - } - void setDeviceType(const char *deviceType); - void setName(const String& name) - { - setName(name.c_str()); - } - void setName(const char *name); - void setURL(const String& url) - { - setURL(url.c_str()); - } - void setURL(const char *url); - void setSchemaURL(const String& url) - { - setSchemaURL(url.c_str()); - } - void setSchemaURL(const char *url); - void setSerialNumber(const String& serialNumber) - { - setSerialNumber(serialNumber.c_str()); - } - void setSerialNumber(const char *serialNumber); - void setSerialNumber(const uint32_t serialNumber); - void setModelName(const String& name) - { - setModelName(name.c_str()); - } - void setModelName(const char *name); - void setModelNumber(const String& num) - { - setModelNumber(num.c_str()); - } - void setModelNumber(const char *num); - void setModelURL(const String& url) - { - setModelURL(url.c_str()); - } - void setModelDescription(const String& desc) - { - setModelDescription(desc.c_str()); - } - void setModelDescription(const char *desc); - void setServerName(const String& name) - { - setServerName(name.c_str()); - } - void setServerName(const char *name); - void setModelURL(const char *url); - void setManufacturer(const String& name) - { - setManufacturer(name.c_str()); - } - void setManufacturer(const char *name); - void setManufacturerURL(const String& url) - { - setManufacturerURL(url.c_str()); - } - void setManufacturerURL(const char *url); - void setHTTPPort(uint16_t port); - void setTTL(uint8_t ttl); - void setInterval(uint32_t interval); - void setUUID(const char * uuid, bool rootonly = true); - void setServices(const char * services) - { - _services = services; - } - void setIcons(const char * icons) - { - _icons = icons; - } - -protected: - - void _onPacket(AsyncUDPPacket& packet); - void _send(ssdp_method_t method); - IPAddress localIP(); - uint16_t _port; - uint32_t _ttl; - uint32_t _interval; - AsyncUDP _udp; - ssdp_reply_slot_item_t *_replySlots[SSDP_MAX_REPLY_SLOTS]; - IPAddress _respondToAddr; - uint16_t _respondToPort; - - bool _pending; - bool _stmatch; - short _delay; - unsigned long _process_time; - unsigned long _notify_time; - - char _respondType[SSDP_DEVICE_TYPE_SIZE]; - char _schemaURL[SSDP_SCHEMA_URL_SIZE]; - char _uuid[SSDP_UUID_SIZE]; - char _usn_suffix[SSDP_DEVICE_TYPE_SIZE]; - char _deviceType[SSDP_DEVICE_TYPE_SIZE]; - char _friendlyName[SSDP_FRIENDLY_NAME_SIZE]; - char _serialNumber[SSDP_SERIAL_NUMBER_SIZE]; - char _presentationURL[SSDP_PRESENTATION_URL_SIZE]; - char _manufacturer[SSDP_MANUFACTURER_SIZE]; - char _manufacturerURL[SSDP_MANUFACTURER_URL_SIZE]; - char _modelName[SSDP_MODEL_NAME_SIZE]; - char _modelURL[SSDP_MODEL_URL_SIZE]; - char _modelNumber[SSDP_MODEL_VERSION_SIZE]; - String _modelDescription; - String _servername; - char * _schema; - String _services; - String _icons; -}; - -#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SSDP) -extern SSDPClass SSDP; -#endif - -#endif -#endif diff --git a/libraries/ESP32SSDP-1.2.1/.all-contributorsrc b/libraries/ESP32SSDP-2.0.2/.all-contributorsrc similarity index 100% rename from libraries/ESP32SSDP-1.2.1/.all-contributorsrc rename to libraries/ESP32SSDP-2.0.2/.all-contributorsrc diff --git a/libraries/ESP32SSDP-1.2.1/.astylerc b/libraries/ESP32SSDP-2.0.2/.astylerc similarity index 100% rename from libraries/ESP32SSDP-1.2.1/.astylerc rename to libraries/ESP32SSDP-2.0.2/.astylerc diff --git a/libraries/ESP32SSDP-1.2.1/.gitignore b/libraries/ESP32SSDP-2.0.2/.gitignore similarity index 100% rename from libraries/ESP32SSDP-1.2.1/.gitignore rename to libraries/ESP32SSDP-2.0.2/.gitignore diff --git a/libraries/ESP32SSDP-1.2.1/LICENSE b/libraries/ESP32SSDP-2.0.2/LICENSE similarity index 100% rename from libraries/ESP32SSDP-1.2.1/LICENSE rename to libraries/ESP32SSDP-2.0.2/LICENSE diff --git a/libraries/ESP32SSDP-1.2.1/README.md b/libraries/ESP32SSDP-2.0.2/README.md similarity index 65% rename from libraries/ESP32SSDP-1.2.1/README.md rename to libraries/ESP32SSDP-2.0.2/README.md index d1bc9ee1..54bfd99b 100644 --- a/libraries/ESP32SSDP-1.2.1/README.md +++ b/libraries/ESP32SSDP-2.0.2/README.md @@ -3,11 +3,12 @@ ESP32 Simple Service Discovery Copyright (c) 2015 Hristo Gochkov [![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-) Original (Arduino) version by Filippo Sallemi, July 23, 2014. Can be -found at: https://github.com/nomadnt/uSSDP +found at: https://github.com/nomadnt/uSSDP -[Latest stable release ![Release Version](https://img.shields.io/github/release/luc-github/ESP32SSDP.svg?style=plastic) ![Release Date](https://img.shields.io/github/release-date/luc-github/ESP32SSDP.svg?style=plastic)](https://github.com/luc-github/ESP32SSDP/releases/latest/) [![github-ci](https://github.com/luc-github/ESP32SSDP/workflows/build-ci/badge.svg)](https://github.com/luc-github/ESP32SSDP/actions/workflows/build-ci.yml) +Version 2.x for ESP32 V3.0.0 and later. + +[Latest stable release ![Release Version](https://img.shields.io/github/release/luc-github/ESP32SSDP.svg?style=plastic) ![Release Date](https://img.shields.io/github/release-date/luc-github/ESP32SSDP.svg?style=plastic)](https://github.com/luc-github/ESP32SSDP/releases/latest/) [![github-ci](https://github.com/luc-github/ESP32SSDP/workflows/build-ci-v2/badge.svg)](https://github.com/luc-github/ESP32SSDP/actions/workflows/build-ci-v2.yml) [![ESP32 Core Version](https://img.shields.io/badge/ESP32-v3.0.0-yellow?style=plastic&label=ESP32)](https://github.com/espressif/arduino-esp32/releases/tag/3.0.0) -[Latest development version ![Development Version](https://img.shields.io/badge/devt-yellow?style=plastic) ![GitHub last commit (branch)](https://img.shields.io/github/last-commit/luc-github/ESP32SSDP/Dev?style=plastic)](https://github.com/luc-github/ESP32SSDP/tree/devt) [![github-ci](https://github.com/luc-github/ESP32SSDP/workflows/build-ci-dev/badge.svg)](https://github.com/luc-github/ESP32SSDP/actions/workflows/build-ci-dev.yml) The IDF component version can be found here: https://github.com/luc-github/SSDP_IDF @@ -22,16 +23,21 @@ the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +> [!WARNING] +>### Disclaimer +> The software is provided 'as is,' without any warranty of any kind, expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software. +>It is essential that you carefully read and understand this disclaimer before using this software and its components. If you do not agree with any part of this disclaimer, please refrain from using the software. + +> [!NOTE] +>### Be Noted +> This version is an update for ESP32 V3.0.0 and later which is a breaking change, so this version of the library is not compatible with the previous versions of the ESP32 core. The previous version of the library is available in the branch [V1.x](https://github.com/luc-github/ESP32SSDP/tree/V1.x). +> The deprecated functions of 1.x version have been removed. + ## Contributors ✨ + + Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): @@ -52,4 +58,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! diff --git a/libraries/ESP32SSDP-1.2.1/examples/SSDP/Readme.md b/libraries/ESP32SSDP-2.0.2/examples/SSDP/Readme.md similarity index 100% rename from libraries/ESP32SSDP-1.2.1/examples/SSDP/Readme.md rename to libraries/ESP32SSDP-2.0.2/examples/SSDP/Readme.md diff --git a/libraries/ESP32SSDP-2.0.2/examples/SSDP/SSDP.ino b/libraries/ESP32SSDP-2.0.2/examples/SSDP/SSDP.ino new file mode 100644 index 00000000..aa4e9a5c --- /dev/null +++ b/libraries/ESP32SSDP-2.0.2/examples/SSDP/SSDP.ino @@ -0,0 +1,104 @@ +#include +#include +#include + +const char* ssid = "********"; +const char* password = "********"; + +WebServer HTTP(80); + +void setup() { + Serial.begin(115200); + Serial.println(); + Serial.println("Starting WiFi..."); + + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() == WL_CONNECTED) { + Serial.printf("Starting HTTP...\n"); + HTTP.on("/index.html", HTTP_GET, + []() { HTTP.send(200, "text/plain", "Hello World!"); }); + HTTP.on("/description.xml", HTTP_GET, []() { HTTP.send(200, "text/xml", SSDP.getSchema());}); + HTTP.begin(); + + // set schema xml url, nees to match http handler + //"ssdp/schema.xml" if not set + SSDP.setSchemaURL("description.xml"); + // set port + // 80 if not set + SSDP.setHTTPPort(80); + // set device name + // Null string if not set + SSDP.setName("Philips hue clone"); + // set Serial Number + // Null string if not set + SSDP.setSerialNumber("001788102201"); + // set device url + // Null string if not set + SSDP.setURL("index.html"); + // set model name + // Null string if not set + SSDP.setModelName("Philips hue bridge 2012"); + // set model description + // Null string if not set + SSDP.setModelDescription("This device can be controled by WiFi"); + // set model number + // Null string if not set + SSDP.setModelNumber("929000226503"); + // set model url + // Null string if not set + SSDP.setModelURL("http://www.meethue.com"); + // set model manufacturer name + // Null string if not set + SSDP.setManufacturer("Royal Philips Electronics"); + // set model manufacturer url + // Null string if not set + SSDP.setManufacturerURL("http://www.philips.com"); + // set device type + //"urn:schemas-upnp-org:device:Basic:1" if not set + SSDP.setDeviceType( + "rootdevice"); // to appear as root device, other examples: + // MediaRenderer, MediaServer ... + // set server name + //"Arduino/1.0" if not set + SSDP.setServerName("SSDPServer/1.0"); + // set UUID, you can use https://www.uuidgenerator.net/ + // use 38323636-4558-4dda-9188-cda0e6 + 4 last bytes of mac address if not + // set use SSDP.setUUID("daa26fa3-d2d4-4072-bc7a-a1b88ab4234a", false); for + // full UUID + SSDP.setUUID("daa26fa3-d2d4-4072-bc7a"); + // Set icons list, NB: optional, this is ignored under windows + SSDP.setIcons( + "" + "image/png" + "48" + "48" + "24" + "icon48.png" + ""); + // Set service list, NB: optional for simple device + SSDP.setServices( + "" + "urn:schemas-upnp-org:service:SwitchPower:1" + "urn:upnp-org:serviceId:SwitchPower:1" + "/SwitchPower1.xml" + "/SwitchPower/Control" + "/SwitchPower/Event" + ""); + + Serial.printf("Starting SSDP...\n"); + SSDP.begin(); + + Serial.printf("Ready!\n"); + } else { + Serial.printf("WiFi Failed\n"); + while (1) { + delay(100); + } + } +} + +void loop() { + HTTP.handleClient(); + delay(1); +} diff --git a/libraries/ESP32SSDP-1.2.1/examples/SSDPAsyncWebserver/Readme.md b/libraries/ESP32SSDP-2.0.2/examples/SSDPAsyncWebserver/Readme.md similarity index 100% rename from libraries/ESP32SSDP-1.2.1/examples/SSDPAsyncWebserver/Readme.md rename to libraries/ESP32SSDP-2.0.2/examples/SSDPAsyncWebserver/Readme.md diff --git a/libraries/ESP32SSDP-2.0.2/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino b/libraries/ESP32SSDP-2.0.2/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino new file mode 100644 index 00000000..de838833 --- /dev/null +++ b/libraries/ESP32SSDP-2.0.2/examples/SSDPAsyncWebserver/SSDPAsyncWebserver.ino @@ -0,0 +1,104 @@ +#include "ESP32SSDP.h" +#include "ESPAsyncWebServer.h" + +const char* ssid = "********"; +const char* password = "********"; + +AsyncWebServer webserver(80); + +void setup() { + Serial.begin(115200); + Serial.println(); + Serial.println("Starting WiFi..."); + + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() == WL_CONNECTED) { + Serial.printf("Starting HTTP...\n"); + webserver.on("/index.html", HTTP_GET, [&](AsyncWebServerRequest* request) { + request->send(200, "text/plain", "Hello World!"); + }); + webserver.on("/description.xml", HTTP_GET, + [&](AsyncWebServerRequest* request) { + request->send(200, "text/xml", SSDP.getSchema()); + }); + webserver.begin(); + + // set schema xml url, nees to match http handler + //"ssdp/schema.xml" if not set + SSDP.setSchemaURL("description.xml"); + // set port + // 80 if not set + SSDP.setHTTPPort(80); + // set device name + // Null string if not set + SSDP.setName("Philips hue clone"); + // set Serial Number + // Null string if not set + SSDP.setSerialNumber("001788102201"); + // set device url + // Null string if not set + SSDP.setURL("index.html"); + // set model name + // Null string if not set + SSDP.setModelName("Philips hue bridge 2012"); + // set model description + // Null string if not set + SSDP.setModelDescription("This device can be controled by WiFi"); + // set model number + // Null string if not set + SSDP.setModelNumber("929000226503"); + // set model url + // Null string if not set + SSDP.setModelURL("http://www.meethue.com"); + // set model manufacturer name + // Null string if not set + SSDP.setManufacturer("Royal Philips Electronics"); + // set model manufacturer url + // Null string if not set + SSDP.setManufacturerURL("http://www.philips.com"); + // set device type + //"urn:schemas-upnp-org:device:Basic:1" if not set + SSDP.setDeviceType( + "rootdevice"); // to appear as root device, other examples: + // MediaRenderer, MediaServer ... + // set server name + //"Arduino/1.0" if not set + SSDP.setServerName("SSDPServer/1.0"); + // set UUID, you can use https://www.uuidgenerator.net/ + // use 38323636-4558-4dda-9188-cda0e6 + 4 last bytes of mac address if not + // set use SSDP.setUUID("daa26fa3-d2d4-4072-bc7a-a1b88ab4234a", false); for + // full UUID + SSDP.setUUID("daa26fa3-d2d4-4072-bc7a"); + // Set icons list, NB: optional, this is ignored under windows + SSDP.setIcons( + "" + "image/png" + "48" + "48" + "24" + "icon48.png" + ""); + // Set service list, NB: optional for simple device + SSDP.setServices( + "" + "urn:schemas-upnp-org:service:SwitchPower:1" + "urn:upnp-org:serviceId:SwitchPower:1" + "/SwitchPower1.xml" + "/SwitchPower/Control" + "/SwitchPower/Event" + ""); + + Serial.printf("Starting SSDP...\n"); + SSDP.begin(); + + Serial.printf("Ready!\n"); + } else { + Serial.printf("WiFi Failed\n"); + while (1) { + delay(100); + } + } +} + +void loop() { delay(1); } diff --git a/libraries/ESP32SSDP-1.2.1/keywords.txt b/libraries/ESP32SSDP-2.0.2/keywords.txt similarity index 100% rename from libraries/ESP32SSDP-1.2.1/keywords.txt rename to libraries/ESP32SSDP-2.0.2/keywords.txt diff --git a/libraries/ESP32SSDP-1.2.1/library.properties b/libraries/ESP32SSDP-2.0.2/library.properties similarity index 93% rename from libraries/ESP32SSDP-1.2.1/library.properties rename to libraries/ESP32SSDP-2.0.2/library.properties index 1964ae95..4cf7928d 100644 --- a/libraries/ESP32SSDP-1.2.1/library.properties +++ b/libraries/ESP32SSDP-2.0.2/library.properties @@ -1,5 +1,5 @@ name=ESP32SSDP -version=1.2.1 +version=2.0.2 author=Me-No-Dev maintainer=luc-github sentence=Simple SSDP library for ESP32 diff --git a/libraries/ESP32SSDP-1.2.1/set_style.bat b/libraries/ESP32SSDP-2.0.2/set_style.bat similarity index 100% rename from libraries/ESP32SSDP-1.2.1/set_style.bat rename to libraries/ESP32SSDP-2.0.2/set_style.bat diff --git a/libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.cpp b/libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.cpp new file mode 100644 index 00000000..0f3163bd --- /dev/null +++ b/libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.cpp @@ -0,0 +1,687 @@ +/* +ESP32 Simple Service Discovery +Copyright (c) 2015 Hristo Gochkov + +Original (Arduino) version by Filippo Sallemi, July 23, 2014. +Can be found at: https://github.com/nomadnt/uSSDP + +License (MIT license): + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ +#ifdef ARDUINO_ARCH_ESP32 +#include "ESP32SSDP.h" + +#include +#include + +#include + +// #define DEBUG_SSDP Serial +// #define DEBUG_VERBOSE_SSDP +// #define DEBUG_WITH_MARLIN +#if defined(DEBUG_WITH_MARLIN) +class FlushableHardwareSerial : public HardwareSerial { + public: + FlushableHardwareSerial(int uart_nr) : HardwareSerial(uart_nr) {} +}; +extern FlushableHardwareSerial flushableSerial; +#define DEBUG_SSDP flushableSerial +#endif // endif DEBUG_WITH_MARLIN + +#define SSDP_INTERVAL 1200 +#define SSDP_PORT 1900 +#define SSDP_METHOD_SIZE 10 +#define SSDP_URI_SIZE 2 +#define SSDP_BUFFER_SIZE 64 +#define SSDP_MULTICAST_TTL 2 +static const IPAddress SSDP_MULTICAST_ADDR(239, 255, 255, 250); +#define SSDP_UUID_ROOT "38323636-4558-4dda-9188-cda0e6" + +esp_netif_t *get_esp_interface_netif(esp_interface_t interface); + +static const char _ssdp_response_template[] PROGMEM = + "HTTP/1.1 200 OK\r\n" + "EXT:\r\n"; + +static const char _ssdp_notify_template[] PROGMEM = + "NOTIFY * HTTP/1.1\r\n" + "HOST: 239.255.255.250:1900\r\n" + "NTS: ssdp:alive\r\n"; + +static const char _ssdp_packet_template[] PROGMEM = + "%s" // _ssdp_response_template / _ssdp_notify_template +#if (ESP_ARDUINO_VERSION_MAJOR < 3) + "CACHE-CONTROL: max-age=%u\r\n" // _interval +#else + "CACHE-CONTROL: max-age=%lu\r\n" // _interval +#endif //(ESP_ARDUINO_VERSION_MAJOR < 3) + "SERVER: %s UPNP/1.1 %s/%s\r\n" // _servername, _modelName, _modelNumber + "USN: uuid:%s%s\r\n" // _uuid, _usn_suffix + "%s: %s\r\n" // "NT" or "ST", _deviceType + "LOCATION: http://%u.%u.%u.%u:%u/%s\r\n" // WiFi.localIP(), _port, + // _schemaURL + "\r\n"; + +/*This need to be removed as part as deprecated, headers should be handled + * outside of library*/ +static const char _ssdp_schema_header[] PROGMEM = + "HTTP/1.1 200 OK\r\n" + "Content-Type: text/xml\r\n" + "Connection: close\r\n" + "Access-Control-Allow-Origin: *\r\n" + "\r\n"; + +static const char _ssdp_schema_template[] PROGMEM = + "" + "" + "" + "1" + "0" + "" + "http://%u.%u.%u.%u:%u/" // WiFi.localIP(), _port + "" + "urn:schemas-upnp-org:device:%s:1" + "%s" + "%s" + "%s" + "%s" + "%s" + "%s" + "%s" + "%s" + "%s" + "uuid:%s" + "%s" + "%s" + "" + "\r\n" + "\r\n"; + +SSDPClass::SSDPClass() : _replySlots{NULL}, _respondToAddr{0, 0, 0, 0} { + _port = 80; + _ttl = SSDP_MULTICAST_TTL; + _interval = SSDP_INTERVAL; + _respondToPort = 0; + _pending = false; + _stmatch = false; + _delay = 0; + _process_time = 0; + _notify_time = 0; + _uuid[0] = '\0'; + _usn_suffix[0] = '\0'; + _respondType[0] = '\0'; + _modelNumber[0] = '\0'; + sprintf(_deviceType, "Basic"); + _friendlyName[0] = '\0'; + _presentationURL[0] = '\0'; + _serialNumber[0] = '\0'; + _modelName[0] = '\0'; + _modelURL[0] = '\0'; + _manufacturer[0] = '\0'; + _manufacturerURL[0] = '\0'; + _servername = "Arduino/1.0"; + sprintf(_schemaURL, "ssdp/schema.xml"); + _schema = nullptr; +} + +SSDPClass::~SSDPClass() { end(); } + +void SSDPClass::end() { + if (_schema) { + free(_schema); + _schema = nullptr; + } + if (_udp.connected()) { + _udp.close(); + } +#ifdef DEBUG_SSDP + DEBUG_SSDP.printf_P(PSTR("SSDP end ... ")); +#endif +} + +IPAddress SSDPClass::localIP() { + +#if (ESP_ARDUINO_VERSION_MAJOR < 3) + // Arduino ESP32 2.x board version + tcpip_adapter_ip_info_t ip; + if (WiFi.getMode() == WIFI_STA) { + if (tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_STA, &ip)) { + return IPAddress(); + } + } else if (WiFi.getMode() == WIFI_OFF) { + if (tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_ETH, &ip)) { + return IPAddress(); + } + } + +#else + // Arduino ESP32 3.x board version + esp_netif_ip_info_t ip; + if (WiFi.getMode() == WIFI_STA) { + if (esp_netif_get_ip_info(get_esp_interface_netif(ESP_IF_WIFI_STA), &ip)) { + return IPAddress(); + } + } else if (WiFi.getMode() == WIFI_OFF) { + if (esp_netif_get_ip_info(get_esp_interface_netif(ESP_IF_ETH), &ip)) { + return IPAddress(); + } + } + +#endif + + return IPAddress(ip.ip.addr); +} + + +void SSDPClass::setUUID(const char *uuid, bool rootonly) { + // no sanity check is done - TBD + if (rootonly) { + uint32_t chipId = ((uint16_t)(ESP.getEfuseMac() >> 32)); + sprintf(_uuid, "%s%02x%02x%02x", uuid, (uint16_t)((chipId >> 16) & 0xff), + (uint16_t)((chipId >> 8) & 0xff), (uint16_t)chipId & 0xff); + } else { + strlcpy(_uuid, uuid, sizeof(_uuid)); + } +} + +bool SSDPClass::begin() { + _pending = false; + _stmatch = false; + end(); + if (strlen(_uuid) == 0) { + setUUID(SSDP_UUID_ROOT); + } +#if defined(DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) + DEBUG_SSDP.printf("SSDP UUID: %s\n", (char *)_uuid); +#endif + if (_udp.connected()) { +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("Already connected, abort begin"); +#endif + return true; + } + + _udp.onPacket( + [](void *arg, AsyncUDPPacket &packet) { + ((SSDPClass *)(arg))->_onPacket(packet); + }, + this); + + if (!_udp.listenMulticast(IPAddress(SSDP_MULTICAST_ADDR), SSDP_PORT, _ttl)) { +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("Error begin"); +#endif + return false; + } + + return true; +} + +void SSDPClass::_send(ssdp_method_t method) { + char buffer[1460]; + IPAddress ip = localIP(); + + char valueBuffer[strlen_P(_ssdp_notify_template) + 1]; + strcpy_P(valueBuffer, + (method == NONE) ? _ssdp_response_template : _ssdp_notify_template); + + int len = + snprintf_P(buffer, sizeof(buffer), _ssdp_packet_template, valueBuffer, + _interval, _servername.c_str(), _modelName, _modelNumber, + _uuid, _usn_suffix, (method == NONE) ? "ST" : "NT", + _respondType, ip[0], ip[1], ip[2], ip[3], _port, _schemaURL); + if (len < 0) { +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("Error not enough memory for using valueBuffer"); +#endif + return; + } + IPAddress remoteAddr; + uint16_t remotePort; + if (method == NONE) { + remoteAddr = _respondToAddr; + remotePort = _respondToPort; +#ifdef DEBUG_SSDP + DEBUG_SSDP.print("Sending Response to "); +#endif + } else { + remoteAddr = IPAddress(SSDP_MULTICAST_ADDR); + remotePort = SSDP_PORT; +#ifdef DEBUG_SSDP + DEBUG_SSDP.print("Sending Notify to "); +#endif + } +#ifdef DEBUG_SSDP + DEBUG_SSDP.print(remoteAddr); + DEBUG_SSDP.print(":"); + DEBUG_SSDP.println(remotePort); +#endif + _udp.writeTo((const uint8_t *)buffer, len, remoteAddr, remotePort); +#if defined(DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) + DEBUG_SSDP.println("*************************TX*************************"); + DEBUG_SSDP.println(buffer); + DEBUG_SSDP.println("****************************************************"); +#endif +} + +const char *SSDPClass::getSchema() { + uint len = strlen(_ssdp_schema_template) + 21 //(IP = 15) + 1 (:) + 5 (port) + + SSDP_DEVICE_TYPE_SIZE + SSDP_FRIENDLY_NAME_SIZE + + SSDP_SCHEMA_URL_SIZE + SSDP_SERIAL_NUMBER_SIZE + + SSDP_MODEL_NAME_SIZE + _modelDescription.length() + + SSDP_MODEL_VERSION_SIZE + SSDP_MODEL_URL_SIZE + + SSDP_MANUFACTURER_SIZE + SSDP_MANUFACTURER_URL_SIZE + + SSDP_UUID_SIZE + _services.length() + _icons.length(); + if (_schema) { + free(_schema); + _schema = nullptr; + } + _schema = (char *)malloc(len + 1); + if (_schema) { + IPAddress ip = localIP(); + sprintf(_schema, _ssdp_schema_template, ip[0], ip[1], ip[2], ip[3], _port, + _deviceType, _friendlyName, _presentationURL, _serialNumber, + _modelName, _modelDescription.c_str(), _modelNumber, _modelURL, + _manufacturer, _manufacturerURL, _uuid, _services.c_str(), + _icons.c_str()); + } else { +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("not enough memory for schema"); +#endif + } + return _schema; +} + +void SSDPClass::_onPacket(AsyncUDPPacket &packet) { + if (packet.length() == 0) { + return; + } + int nbBytes = 0; + char *packetBuffer = nullptr; + + if (!_pending) { + ssdp_method_t method = NONE; + nbBytes = packet.length(); + + typedef enum { METHOD, URI, PROTO, KEY, VALUE, ABORT } states; + states state = METHOD; + typedef enum { STRIP, START, SKIP, MAN, ST, MX } headers; + headers header = STRIP; + + uint8_t cursor = 0; + uint8_t cr = 0; + + char buffer[SSDP_BUFFER_SIZE] = {0}; + packetBuffer = new char[nbBytes + 1]; + if (packetBuffer == nullptr) { +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("not enough memory for the packet"); +#endif + return; + } + int process_pos = 0; + strncpy(packetBuffer, (const char *)packet.data(), nbBytes); + packetBuffer[nbBytes] = '\0'; + _respondToAddr = packet.remoteIP(); + _respondToPort = packet.remotePort(); + +#if defined(DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) + if (nbBytes) { + DEBUG_SSDP.println( + "*************************RX*************************"); + DEBUG_SSDP.print(packet.remoteIP()); + DEBUG_SSDP.print(":"); + DEBUG_SSDP.println(packet.remotePort()); + DEBUG_SSDP.println(packetBuffer); + DEBUG_SSDP.println( + "****************************************************"); + } +#endif + while (process_pos < nbBytes) { + char c = packetBuffer[process_pos]; + process_pos++; + (c == '\r' || c == '\n') ? cr++ : cr = 0; + switch (state) { + case METHOD: + if (c == ' ') { + if (strcmp(buffer, "M-SEARCH") == 0) { + method = SEARCH; + } + + if (method == NONE) { + state = ABORT; + } else { + state = URI; + } + cursor = 0; + + } else if (cursor < SSDP_METHOD_SIZE - 1) { + buffer[cursor++] = c; + buffer[cursor] = '\0'; + } + break; + case URI: + if (c == ' ') { + if (strcmp(buffer, "*")) { + state = ABORT; + } else { + state = PROTO; + } + cursor = 0; + } else if (cursor < SSDP_URI_SIZE - 1) { + buffer[cursor++] = c; + buffer[cursor] = '\0'; + } + break; + case PROTO: + if (cr == 2) { + state = KEY; + cursor = 0; + } + break; + case KEY: + // end of HTTP request parsing. If we find a match start reply delay. + if (cr == 4) { + if (_stmatch) { + _pending = true; + _process_time = millis(); + } + } else if (c == ':') { + cursor = 0; + state = VALUE; + } else if (c != '\r' && c != '\n' && c != ' ' && + cursor < SSDP_BUFFER_SIZE - 1) { + buffer[cursor++] = c; + buffer[cursor] = '\0'; + } + break; + case VALUE: + if (cr == 2) { + switch (header) { + case START: +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("***********************"); +#endif + case STRIP: + case SKIP: + break; + case MAN: +#ifdef DEBUG_SSDP + DEBUG_SSDP.printf("MAN: %s\n", (char *)buffer); +#endif + break; + case ST: + // save the search term for the reply and clear usn suffix. + strlcpy(_respondType, buffer, sizeof(_respondType)); + _usn_suffix[0] = '\0'; +#ifdef DEBUG_SSDP + DEBUG_SSDP.printf("ST: '%s'\n", buffer); +#endif + // if looking for all or root reply with upnp:rootdevice + if (strcmp(buffer, "ssdp:all") == 0 || + strcmp(buffer, "upnp:rootdevice") == 0) { + _stmatch = true; + // set USN suffix + strlcpy(_usn_suffix, "::upnp:rootdevice", + sizeof(_usn_suffix)); +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("the search type matches all and root"); +#endif + state = KEY; + } else + // if the search type matches our type, we should respond + // instead of ABORT + if (strcasecmp(buffer, _deviceType) == 0) { + _stmatch = true; + // set USN suffix to the device type + strlcpy(_usn_suffix, "::", sizeof(_usn_suffix)); + strlcat(_usn_suffix, _deviceType, sizeof(_usn_suffix)); +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("the search type matches our type"); +#endif + state = KEY; + } else { + state = ABORT; +#ifdef DEBUG_SSDP + DEBUG_SSDP.println( + "REJECT. The search type does not match our type"); + DEBUG_SSDP.println("***********************"); + +#endif + } + break; + case MX: + // delay in ms from 0 to MX*1000 where MX is in seconds with + // limits. + _delay = (short)random(0, atoi(buffer) * 1000L); + if (_delay > SSDP_MAX_DELAY) { + _delay = SSDP_MAX_DELAY; + } + break; + } + + if (state != ABORT) { + state = KEY; + header = STRIP; + cursor = 0; + } + } else if (c != '\r' && c != '\n') { + if (header == STRIP) { + if (c == ' ') { + break; + } else { + header = START; + } + } + if (header == START) { + if (strncmp(buffer, "MA", 2) == 0) { + header = MAN; + } else if (strcmp(buffer, "ST") == 0) { + header = ST; + } else if (strcmp(buffer, "MX") == 0) { + header = MX; + } else { + header = SKIP; + } + } + + if (cursor < SSDP_BUFFER_SIZE - 1) { + buffer[cursor++] = c; + buffer[cursor] = '\0'; + } + } + break; + case ABORT: + _pending = false; + _delay = 0; + break; + } + } + } + if (packetBuffer) { + delete[] packetBuffer; + } + // save reply in reply queue if one is pending + if (_pending) { + int i; + // Many UPNP hosts send out mulitple M-SEARCH packets at the same time to + // mitigate packet loss. Just reply to one for a given host:port. + for (i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { + if (_replySlots[i]) { + if (_replySlots[i]->_respondToPort == _respondToPort && + _replySlots[i]->_respondToAddr == _respondToAddr) { + // keep original delay + _delay = _replySlots[i]->_delay; + _process_time = _replySlots[i]->_process_time; +#ifdef DEBUG_SSDP + DEBUG_SSDP.printf("Remove duplicate SSDP reply in slot %i.\n", i); +#endif + delete _replySlots[i]; + _replySlots[i] = 0; + } + } + } + // save packet to available reply queue slot + for (i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { + if (!_replySlots[i]) { +#ifdef DEBUG_SSDP + DEBUG_SSDP.printf("Saving deferred SSDP reply to queue slot %i.\n", i); + DEBUG_SSDP.println("***********************"); + +#endif + _replySlots[i] = new ssdp_reply_slot_item_t; + if (_replySlots[i]) { + _replySlots[i]->_process_time = _process_time; + _replySlots[i]->_delay = _delay; + _replySlots[i]->_respondToAddr = _respondToAddr; + _replySlots[i]->_respondToPort = _respondToPort; + strlcpy(_replySlots[i]->_respondType, _respondType, + sizeof(_replySlots[i]->_respondType)); + strlcpy(_replySlots[i]->_usn_suffix, _usn_suffix, + sizeof(_replySlots[i]->_usn_suffix)); + } + break; + } + } +#ifdef DEBUG_SSDP + if (i == SSDP_MAX_REPLY_SLOTS) { + DEBUG_SSDP.println("SSDP reply queue is full dropping packet."); + } +#endif + _pending = false; + _delay = 0; + } + // send any packets that are pending and overdue. + unsigned long t = millis(); + bool sent = false; + for (int i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { + if (_replySlots[i]) { + // millis delay with overflow protection. + if (t - _replySlots[i]->_process_time > _replySlots[i]->_delay) { + // reply ready. restore and send. + _respondToAddr = _replySlots[i]->_respondToAddr; + _respondToPort = _replySlots[i]->_respondToPort; + strlcpy(_respondType, _replySlots[i]->_respondType, + sizeof(_respondType)); + strlcpy(_usn_suffix, _replySlots[i]->_usn_suffix, sizeof(_usn_suffix)); +#ifdef DEBUG_SSDP + DEBUG_SSDP.printf("Slot(%d) ", i); + DEBUG_SSDP.println("Send None"); +#endif + _send(NONE); + sent = true; + delete _replySlots[i]; + _replySlots[i] = 0; +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("***********************"); +#endif + } + } + } +#if defined(DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) + uint8_t rcount = 0; + DEBUG_SSDP.print("SSDP reply queue status: ["); + for (int i = 0; i < SSDP_MAX_REPLY_SLOTS; i++) { + DEBUG_SSDP.print(_replySlots[i] ? "X" : "-"); + } + DEBUG_SSDP.println("]"); +#endif + if (_notify_time == 0 || (millis() - _notify_time) > (_interval * 1000L)) { + _notify_time = millis(); + // send notify with our root device type + strlcpy(_respondType, "upnp:rootdevice", sizeof(_respondType)); + strlcpy(_usn_suffix, "::upnp:rootdevice", sizeof(_usn_suffix)); +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("Send Notify"); +#endif + _send(NOTIFY); + sent = true; +#ifdef DEBUG_SSDP + DEBUG_SSDP.println("***********************"); +#endif + } + if (!sent) { +#if defined(DEBUG_SSDP) && defined(DEBUG_VERBOSE_SSDP) + DEBUG_SSDP.println("Do not sent"); +#endif + } +} + +void SSDPClass::setSchemaURL(const char *url) { + strlcpy(_schemaURL, url, sizeof(_schemaURL)); +} + +void SSDPClass::setHTTPPort(uint16_t port) { _port = port; } + +void SSDPClass::setDeviceType(const char *deviceType) { + strlcpy(_deviceType, deviceType, sizeof(_deviceType)); +} + +void SSDPClass::setName(const char *name) { + strlcpy(_friendlyName, name, sizeof(_friendlyName)); +} + +void SSDPClass::setURL(const char *url) { + strlcpy(_presentationURL, url, sizeof(_presentationURL)); +} + +void SSDPClass::setSerialNumber(const char *serialNumber) { + strlcpy(_serialNumber, serialNumber, sizeof(_serialNumber)); +} + +void SSDPClass::setSerialNumber(const uint32_t serialNumber) { + snprintf(_serialNumber, sizeof(uint32_t) * 2 + 1, "%08X", + (unsigned int)serialNumber); +} + +void SSDPClass::setModelName(const char *name) { + strlcpy(_modelName, name, sizeof(_modelName)); +} + +void SSDPClass::setModelDescription(const char *desc) { + _modelDescription = desc; +} +void SSDPClass::setServerName(const char *name) { _servername = name; } + +void SSDPClass::setModelNumber(const char *num) { + strlcpy(_modelNumber, num, sizeof(_modelNumber)); +} + +void SSDPClass::setModelURL(const char *url) { + strlcpy(_modelURL, url, sizeof(_modelURL)); +} + +void SSDPClass::setManufacturer(const char *name) { + strlcpy(_manufacturer, name, sizeof(_manufacturer)); +} + +void SSDPClass::setManufacturerURL(const char *url) { + strlcpy(_manufacturerURL, url, sizeof(_manufacturerURL)); +} + +void SSDPClass::setTTL(const uint8_t ttl) { _ttl = ttl; } + +void SSDPClass::setInterval(uint32_t interval) { _interval = interval; } + +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SSDP) +SSDPClass SSDP; +#endif + +#endif diff --git a/libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.h b/libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.h new file mode 100644 index 00000000..2dca83fa --- /dev/null +++ b/libraries/ESP32SSDP-2.0.2/src/ESP32SSDP.h @@ -0,0 +1,154 @@ +/* +ESP32 Simple Service Discovery +Copyright (c) 2015 Hristo Gochkov + +Original (Arduino) version by Filippo Sallemi, July 23, 2014. +Can be found at: https://github.com/nomadnt/uSSDP + +License (MIT license): + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ +#ifdef ARDUINO_ARCH_ESP32 +#ifndef ESP32SSDP_H +#define ESP32SSDP_H + +#include +#include +#include + +#define SSDP_UUID_SIZE 37 +#define SSDP_SCHEMA_URL_SIZE 64 +#define SSDP_DEVICE_TYPE_SIZE 64 +#define SSDP_FRIENDLY_NAME_SIZE 64 +#define SSDP_SERIAL_NUMBER_SIZE 32 +#define SSDP_PRESENTATION_URL_SIZE 128 +#define SSDP_MODEL_NAME_SIZE 64 +#define SSDP_MODEL_URL_SIZE 128 +#define SSDP_MODEL_VERSION_SIZE 32 +#define SSDP_MANUFACTURER_SIZE 64 +#define SSDP_MANUFACTURER_URL_SIZE 128 +#define SSDP_MAX_REPLY_SLOTS 5 +#define SSDP_MAX_DELAY 10000 + +typedef struct { + unsigned long _process_time; + short _delay; + IPAddress _respondToAddr; + uint16_t _respondToPort; + char _respondType[SSDP_DEVICE_TYPE_SIZE]; + char _usn_suffix[SSDP_DEVICE_TYPE_SIZE]; +} ssdp_reply_slot_item_t; + +class SSDPClass { + public: + SSDPClass(); + ~SSDPClass(); + + bool begin(); + void end(); + + const char* getSchema(); + + void setDeviceType(const String& deviceType) { + setDeviceType(deviceType.c_str()); + } + void setDeviceType(const char* deviceType); + void setName(const String& name) { setName(name.c_str()); } + void setName(const char* name); + void setURL(const String& url) { setURL(url.c_str()); } + void setURL(const char* url); + void setSchemaURL(const String& url) { setSchemaURL(url.c_str()); } + void setSchemaURL(const char* url); + void setSerialNumber(const String& serialNumber) { + setSerialNumber(serialNumber.c_str()); + } + void setSerialNumber(const char* serialNumber); + void setSerialNumber(const uint32_t serialNumber); + void setModelName(const String& name) { setModelName(name.c_str()); } + void setModelName(const char* name); + void setModelNumber(const String& num) { setModelNumber(num.c_str()); } + void setModelNumber(const char* num); + void setModelURL(const String& url) { setModelURL(url.c_str()); } + void setModelDescription(const String& desc) { + setModelDescription(desc.c_str()); + } + void setModelDescription(const char* desc); + void setServerName(const String& name) { setServerName(name.c_str()); } + void setServerName(const char* name); + void setModelURL(const char* url); + void setManufacturer(const String& name) { setManufacturer(name.c_str()); } + void setManufacturer(const char* name); + void setManufacturerURL(const String& url) { + setManufacturerURL(url.c_str()); + } + void setManufacturerURL(const char* url); + void setHTTPPort(uint16_t port); + void setTTL(uint8_t ttl); + void setInterval(uint32_t interval); + void setUUID(const char* uuid, bool rootonly = true); + void setServices(const char* services) { _services = services; } + void setIcons(const char* icons) { _icons = icons; } + + protected: + typedef enum { NONE, SEARCH, NOTIFY } ssdp_method_t; + + void _onPacket(AsyncUDPPacket& packet); + void _send(ssdp_method_t method); + IPAddress localIP(); + uint16_t _port; + uint32_t _ttl; + uint32_t _interval; + AsyncUDP _udp; + ssdp_reply_slot_item_t* _replySlots[SSDP_MAX_REPLY_SLOTS]; + IPAddress _respondToAddr; + uint16_t _respondToPort; + + bool _pending; + bool _stmatch; + short _delay; + unsigned long _process_time; + unsigned long _notify_time; + + char _respondType[SSDP_DEVICE_TYPE_SIZE]; + char _schemaURL[SSDP_SCHEMA_URL_SIZE]; + char _uuid[SSDP_UUID_SIZE]; + char _usn_suffix[SSDP_DEVICE_TYPE_SIZE]; + char _deviceType[SSDP_DEVICE_TYPE_SIZE]; + char _friendlyName[SSDP_FRIENDLY_NAME_SIZE]; + char _serialNumber[SSDP_SERIAL_NUMBER_SIZE]; + char _presentationURL[SSDP_PRESENTATION_URL_SIZE]; + char _manufacturer[SSDP_MANUFACTURER_SIZE]; + char _manufacturerURL[SSDP_MANUFACTURER_URL_SIZE]; + char _modelName[SSDP_MODEL_NAME_SIZE]; + char _modelURL[SSDP_MODEL_URL_SIZE]; + char _modelNumber[SSDP_MODEL_VERSION_SIZE]; + String _modelDescription; + String _servername; + char* _schema; + String _services; + String _icons; +}; + +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SSDP) +extern SSDPClass SSDP; +#endif + +#endif +#endif diff --git a/libraries/ESP32SSDP-1.2.1/test/platformio.ini b/libraries/ESP32SSDP-2.0.2/test/platformio.ini similarity index 100% rename from libraries/ESP32SSDP-1.2.1/test/platformio.ini rename to libraries/ESP32SSDP-2.0.2/test/platformio.ini diff --git a/libraries/ESP32SSDP-2.0.2/tools/format_sources.py b/libraries/ESP32SSDP-2.0.2/tools/format_sources.py new file mode 100644 index 00000000..13777e3c --- /dev/null +++ b/libraries/ESP32SSDP-2.0.2/tools/format_sources.py @@ -0,0 +1,50 @@ +#!/usr/bin/python + +import os +import subprocess + +def format_sources(): + """ + Formats the source code files in the ESP3D project using clang-format with Google style. + + This script recursively searches for C, C++, H, and INO files in the ESP3D project directory + and its subdirectories. It then applies the clang-format tool to each file, using the Google + style for formatting. + + Note: Make sure you have clang-format installed and available in your system's PATH. + + Returns: + None + """ + # Base directory of the script + script_path = os.path.abspath(__file__) + + # Extract dir path + script_dir = os.path.dirname(script_path) + + # Build path of sources dir: ../esp3d + src_dir = os.path.abspath(os.path.normpath(os.path.join(script_dir, '..', 'src'))) + examples_dir = os.path.abspath(os.path.normpath(os.path.join(script_dir, '..', 'examples'))) + + # Parse all c, h, cpp, and ino files in all directories and subdirectories + file_paths = [] + for base_dir in [src_dir, examples_dir]: + for root, dirs, files in os.walk(base_dir): + for file in files: + if file.endswith(('.c', '.cpp', '.h', '.ino')): + file_path = os.path.join(root, file) + file_paths.append(os.path.abspath(os.path.normpath(file_path))) + + # Now format all files one by one with clang-format + for file_path in file_paths: + tmpPath = '"' + file_path + '"' + print("Formatting " + tmpPath, end="") + try: + command = ['clang-format', '-i', '--style=Google', file_path] + subprocess.run(command, check=False) + print(" => Ok") + except subprocess.CalledProcessError as e: + print(f'=> Error: {e}') + +# Call the format_sources function to format the source code +format_sources() diff --git a/libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/feature_request.md b/libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 0d89f881..00000000 --- a/libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: "[FEATURE REQUEST]" -labels: Feature request -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/libraries/EspLuaEngine-1.0.1/.github/stale.yml b/libraries/EspLuaEngine-1.0.1/.github/stale.yml deleted file mode 100644 index 8e77b2e0..00000000 --- a/libraries/EspLuaEngine-1.0.1/.github/stale.yml +++ /dev/null @@ -1,49 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 21 - -# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 3 - -# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) -onlyLabels: [] - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - pinned - - security - - "Under Investigation" - - "Work in progress" - - Planned - - "Feedback Welcome" - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Set to true to ignore issues with an assignee (defaults to false) -exemptAssignees: false - -# Label to use when marking as stale -staleLabel: stale - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when removing the stale label. -unmarkComment: > - This issue has been removed from the stale queue. Please ensure activity to keep it openin the future. -# Comment to post when closing a stale Issue or Pull Request. -closeComment: > - This stale issue has been automatically closed. Thank you for your contributions. -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues diff --git a/libraries/EspLuaEngine-1.0.1/API.md b/libraries/EspLuaEngine-1.0.1/API.md deleted file mode 100644 index 8bef69fc..00000000 --- a/libraries/EspLuaEngine-1.0.1/API.md +++ /dev/null @@ -1,53 +0,0 @@ -# EspLuaEngine for ESP32 - -## 📚 API Reference - -### `EspLuaEngine()` -Constructor. Initializes a new Lua state and loads standard libraries. - -### `~EspLuaEngine()` -Destructor. Closes the Lua state and frees resources. - -### `bool executeScript(const char* script)` -Executes a Lua script. -- **Parameters:** - - `script`: A null-terminated string containing the Lua code to execute. -- **Returns:** `true` if the script executes successfully, `false` otherwise. -- **Note:** This is a blocking function. For long-running scripts, consider integrating it into a separate task to allow the rest of your firmware to continue running. - - -### `bool registerFunction(const char* name, lua_CFunction function)` -Registers a C function to be callable from Lua scripts. -- **Parameters:** - - `name`: The name to use for the function in Lua. - - `function`: A pointer to the C function to register. -- **Returns:** `true` if the function is successfully registered, `false` otherwise. - -### `template bool registerConstant(const char* name, T value)` -Registers a constant value that can be accessed from Lua scripts. -- **Parameters:** - - `name`: The name to use for the constant in Lua. - - `value`: The value of the constant. Supported types include `lua_Number`, `const char*`, `bool`, `int`, and `unsigned char`. -- **Returns:** `true` if the constant is successfully registered, `false` otherwise. - -## 🔧 Usage Examples - -```cpp -EspLuaEngine lua; - -// Register a custom function -lua.registerFunction("myFunction", l_myCustomFunction); - -// Register constants -lua.registerConstant("PI", 3.14159); -lua.registerConstant("PROJECT_NAME", "MyESP32Project"); -lua.registerConstant("DEBUG_MODE", true); - -// Execute a Lua script -lua.executeScript(R"( - print("PI is: " .. PI) - print("Project: " .. PROJECT_NAME) - myFunction() -)"); -``` - diff --git a/libraries/EspLuaEngine-1.0.1/.github/FUNDING.yml b/libraries/EspLuaEngine-1.0.2/.github/FUNDING.yml similarity index 100% rename from libraries/EspLuaEngine-1.0.1/.github/FUNDING.yml rename to libraries/EspLuaEngine-1.0.2/.github/FUNDING.yml diff --git a/libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/bug_report.md b/libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/bug_report.md similarity index 100% rename from libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/bug_report.md rename to libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/bug_report.md diff --git a/libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/config.yml b/libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/config.yml similarity index 100% rename from libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/config.yml rename to libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/config.yml diff --git a/libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/feature_request.md b/libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/feature_request.md similarity index 100% rename from libraries/ESP32SSDP-1.2.1/.github/ISSUE_TEMPLATE/feature_request.md rename to libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/feature_request.md diff --git a/libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/question-template.md b/libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/question-template.md similarity index 100% rename from libraries/EspLuaEngine-1.0.1/.github/ISSUE_TEMPLATE/question-template.md rename to libraries/EspLuaEngine-1.0.2/.github/ISSUE_TEMPLATE/question-template.md diff --git a/libraries/ESP32SSDP-1.2.1/.github/stale.yml b/libraries/EspLuaEngine-1.0.2/.github/stale.yml similarity index 100% rename from libraries/ESP32SSDP-1.2.1/.github/stale.yml rename to libraries/EspLuaEngine-1.0.2/.github/stale.yml diff --git a/libraries/EspLuaEngine-1.0.2/API.md b/libraries/EspLuaEngine-1.0.2/API.md new file mode 100644 index 00000000..7951a744 --- /dev/null +++ b/libraries/EspLuaEngine-1.0.2/API.md @@ -0,0 +1,142 @@ +# EspLuaEngine for ESP32 + +## 📚 API Reference + +### `EspLuaEngine()` +Constructor. Initializes a new Lua state and loads standard libraries. + +### `~EspLuaEngine()` +Destructor. Closes the Lua state and frees resources. + +### `bool executeScript(const char* script)` +Executes a Lua script. +- **Parameters:** + - `script`: A null-terminated string containing the Lua code to execute. +- **Returns:** `true` if the script executes successfully, `false` otherwise. +- **Note:** This function is non-blocking and supports pause and stop operations. + +### `bool registerFunction(const char* name, lua_CFunction function, void* userData = nullptr)` +Registers a C function to be callable from Lua scripts. +- **Parameters:** + - `name`: The name to use for the function in Lua. + - `function`: A pointer to the C function to register. + - `userData`: Optional user data to be passed to the function. +- **Returns:** `true` if the function is successfully registered, `false` otherwise. + +### `template bool registerConstant(const char* name, T value)` +Registers a constant value that can be accessed from Lua scripts. +- **Parameters:** + - `name`: The name to use for the constant in Lua. + - `value`: The value of the constant. Supported types include `lua_Number`, `const char*`, `bool`, `int`, and `unsigned char`. +- **Returns:** `true` if the constant is successfully registered, `false` otherwise. + +### `void resetState()` +Resets the Lua state, clearing all registered functions and constants. + +### `void setPauseFunction(PauseFunction func)` +Sets a custom function to be called when execution is paused. +- **Parameters:** + - `func`: A function of type `std::function` to be called during pauses. + +### `void pauseExecution()` +Pauses the execution of the current script. + +### `void resumeExecution()` +Resumes the execution of a paused script. + +### `void stopExecution()` +Stops the execution of the current script. + +### `bool isPaused()` +Checks if the script execution is currently paused. +- **Returns:** `true` if paused, `false` otherwise. + +### `bool isRunning()` +Checks if a script is currently running. +- **Returns:** `true` if running, `false` otherwise. + +### `Status getStatus()` +Gets the current status of the EspLuaEngine. +- **Returns:** An enum of type `EspLuaEngine::Status` with possible values: + - `Idle`: No script is currently running. + - `Running`: A script is currently executing. + - `Paused`: Script execution is paused. + +### `bool hasError()` +Checks if an error occurred during the last script execution. +- **Returns:** `true` if an error occurred, `false` otherwise. + +### `const char* getLastError()` +Gets the last error message. +- **Returns:** A string containing the last error message, or an empty string if no error occurred. + +### `lua_State* getLuaState()` +Gets the underlying Lua state. +- **Returns:** A pointer to the `lua_State` object. + +## 🔧 Usage Examples + +```cpp +EspLuaEngine lua; + +// Register a custom function +lua.registerFunction("myFunction", l_myCustomFunction); + +// Register constants +lua.registerConstant("PI", 3.14159); +lua.registerConstant("PROJECT_NAME", "MyESP32Project"); +lua.registerConstant("DEBUG_MODE", true); + +// Execute a Lua script +if (lua.executeScript(R"( + print("PI is: " .. PI) + print("Project: " .. PROJECT_NAME) + myFunction() +)")) { + Serial.println("Script executed successfully"); +} else { + Serial.print("Error executing script: "); + Serial.println(lua.getLastError()); +} + +// Pause and resume execution +lua.pauseExecution(); +// Do something while paused +lua.resumeExecution(); + +// Check status +if (lua.getStatus() == EspLuaEngine::Status::Running) { + Serial.println("Script is running"); +} + +// Stop execution +lua.stopExecution(); + +// Reset state +lua.resetState(); +``` + + +## 📝 Notes + +- The EspLuaEngine now supports non-blocking script execution with pause and stop capabilities. +- Use `setPauseFunction()` to define custom behavior during pauses. +- Always check for errors after executing a script using `hasError()` and `getLastError()`. +- The engine supports multitasking environments, making it suitable for complex ESP32 projects. +- **Important note for ESP8266 users:** While state monitoring and control are straightforward on ESP32 due to its task management capabilities, implementation on ESP8266 may require additional libraries or the use of an interrupt system. Currently, this functionality is not fully supported on ESP8266 platforms. + +## 🚀 Platform-Specific Considerations + +### ESP32 +On ESP32, the EspLuaEngine takes full advantage of the FreeRTOS task management system, allowing for efficient multitasking and state control without additional setup. + +### ESP8266 +For ESP8266 users: + +- The current implementation may not fully support all state monitoring and control features. +- To achieve similar functionality as on ESP32, you might need to: + 1. Implement a custom interrupt-based system for state checks. + 2. Use additional libraries for task management (e.g., `TaskScheduler`). + 3. Carefully manage your main loop to prevent blocking while allowing for state checks. + +Please note that these advanced features on ESP8266 are not officially supported in the current version of EspLuaEngine and may require custom modifications to the library. diff --git a/libraries/EspLuaEngine-1.0.1/LICENSE b/libraries/EspLuaEngine-1.0.2/LICENSE similarity index 100% rename from libraries/EspLuaEngine-1.0.1/LICENSE rename to libraries/EspLuaEngine-1.0.2/LICENSE diff --git a/libraries/EspLuaEngine-1.0.1/README.md b/libraries/EspLuaEngine-1.0.2/README.md similarity index 100% rename from libraries/EspLuaEngine-1.0.1/README.md rename to libraries/EspLuaEngine-1.0.2/README.md diff --git a/libraries/EspLuaEngine-1.0.1/cleanLua.py b/libraries/EspLuaEngine-1.0.2/cleanLua.py similarity index 100% rename from libraries/EspLuaEngine-1.0.1/cleanLua.py rename to libraries/EspLuaEngine-1.0.2/cleanLua.py diff --git a/libraries/EspLuaEngine-1.0.1/examples/HelloWorld/HelloWorld.ino b/libraries/EspLuaEngine-1.0.2/examples/HelloWorld/HelloWorld.ino similarity index 100% rename from libraries/EspLuaEngine-1.0.1/examples/HelloWorld/HelloWorld.ino rename to libraries/EspLuaEngine-1.0.2/examples/HelloWorld/HelloWorld.ino diff --git a/libraries/EspLuaEngine-1.0.1/examples/files/files.ino b/libraries/EspLuaEngine-1.0.2/examples/files/files.ino similarity index 100% rename from libraries/EspLuaEngine-1.0.1/examples/files/files.ino rename to libraries/EspLuaEngine-1.0.2/examples/files/files.ino diff --git a/libraries/EspLuaEngine-1.0.1/examples/gpio/gpio.ino b/libraries/EspLuaEngine-1.0.2/examples/gpio/gpio.ino similarity index 100% rename from libraries/EspLuaEngine-1.0.1/examples/gpio/gpio.ino rename to libraries/EspLuaEngine-1.0.2/examples/gpio/gpio.ino diff --git a/libraries/EspLuaEngine-1.0.1/examples/userData/userData.ino b/libraries/EspLuaEngine-1.0.2/examples/userData/userData.ino similarity index 100% rename from libraries/EspLuaEngine-1.0.1/examples/userData/userData.ino rename to libraries/EspLuaEngine-1.0.2/examples/userData/userData.ino diff --git a/libraries/EspLuaEngine-1.0.1/library.properties b/libraries/EspLuaEngine-1.0.2/library.properties similarity index 95% rename from libraries/EspLuaEngine-1.0.1/library.properties rename to libraries/EspLuaEngine-1.0.2/library.properties index b0798c59..b6de53d1 100644 --- a/libraries/EspLuaEngine-1.0.1/library.properties +++ b/libraries/EspLuaEngine-1.0.2/library.properties @@ -1,5 +1,5 @@ name=EspLuaEngine -version=1.0.1 +version=1.0.2 author=Luc LEBOSSE maintainer=Luc LEBOSSE sentence=Lua engine for ESP diff --git a/libraries/EspLuaEngine-1.0.1/portingLua.md b/libraries/EspLuaEngine-1.0.2/portingLua.md similarity index 100% rename from libraries/EspLuaEngine-1.0.1/portingLua.md rename to libraries/EspLuaEngine-1.0.2/portingLua.md diff --git a/libraries/EspLuaEngine-1.0.1/src/EspLuaEngine.cpp b/libraries/EspLuaEngine-1.0.2/src/EspLuaEngine.cpp similarity index 67% rename from libraries/EspLuaEngine-1.0.1/src/EspLuaEngine.cpp rename to libraries/EspLuaEngine-1.0.2/src/EspLuaEngine.cpp index 9f0ad58d..cbaf423d 100644 --- a/libraries/EspLuaEngine-1.0.1/src/EspLuaEngine.cpp +++ b/libraries/EspLuaEngine-1.0.2/src/EspLuaEngine.cpp @@ -19,9 +19,28 @@ */ #include "EspLuaEngine.h" +#define ESP_LUA_NB_LINES_BEFORE_HOOK 1000 -#include +#if defined(ARDUINO_ARCH_ESP32) +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#endif // defined(ARDUINO_ARCH_ESP32) +#if defined(ARDUINO_ARCH_ESP8266) +// #define DEBUG_ESP_LUA_ENGINE Serial +#if defined(DEBUG_ESP_LUA_ENGINE) +#define log_e(format, ...) \ + DEBUG_ESP_LUA_ENGINE.printf("E: " format "\n", ##__VA_ARGS__) +#define log_v(format, ...) \ + DEBUG_ESP_LUA_ENGINE.printf("V: " format "\n", ##__VA_ARGS__) +#else +#define log_e(format, ...) +#define log_v(format, ...) +#endif // defined(DEBUG_ESP_LUA_ENGINE) +#endif // defined(ARDUINO_ARCH_ESP8266) + +EspLuaEngine::PauseFunction EspLuaEngine::_pauseFunction = nullptr; +String EspLuaEngine::_lastError; /*Public methods*/ @@ -40,15 +59,112 @@ EspLuaEngine::~EspLuaEngine() { } } -bool EspLuaEngine::executeScript(const char* script) { - if (luaL_dostring(_lua_state, script) != LUA_OK) { - log_e("%s", lua_tostring(_lua_state, -1)); - lua_pop(_lua_state, 1); - return false; - } - return true; +void EspLuaEngine::setPauseFunction(PauseFunction func) { + _pauseFunction = func; } +void EspLuaEngine::_defaultPauseFunction() { +#if defined(ARDUINO_ARCH_ESP32) + vTaskDelay(ESP_LUA_CHECK_INTERVAL); +#endif // defined(ARDUINO_ARCH_ESP32) +#if defined(ARDUINO_ARCH_ESP8266) + delay(ESP_LUA_CHECK_INTERVAL); +#endif // defined(ARDUINO_ARCH_ESP8266) +} + +void EspLuaEngine::hookFunction(lua_State* L, lua_Debug* ar) { + if (_isPaused.load()) { + while (_isPaused.load() && _isRunning.load()) { + if (_pauseFunction) { + _pauseFunction(); + } else { + _defaultPauseFunction(); + } + } + } + if (!_isRunning.load()) { + if (_lastError.length() == 0) _lastError = "Execution stopped"; + luaL_error(L, "Execution stopped"); + } +} + +void EspLuaEngine::resetState() { + if (_lua_state) { + lua_close(_lua_state); + _lua_state = luaL_newstate(); + if (_lua_state) { + _loadLibraries(); + } else { + log_e("Error: Impossible to create a new Lua state"); + } + } +} + +bool EspLuaEngine::executeScript(const char* script) { + _lastError=""; // Clear the error message + _isPaused.store(false); + _isRunning.store(true); + + // Configure the hook function + lua_sethook(_lua_state, hookFunction, LUA_MASKCOUNT, + ESP_LUA_NB_LINES_BEFORE_HOOK); + + bool success = true; + + // Compile the script + if (luaL_loadstring(_lua_state, script) != LUA_OK) { + if (_lastError.length() == 0) _lastError = lua_tostring(_lua_state, -1); + log_e("Error loading script: %s", _lastError.c_str()); + lua_pop(_lua_state, 1); + success = false; + } else { + // Execute the script + if (lua_pcall(_lua_state, 0, 0, 0) != LUA_OK) { + if (_lastError.length() == 0) _lastError = lua_tostring(_lua_state, -1); + log_e("Error executing script: %s", _lastError.c_str()); + lua_pop(_lua_state, 1); + success = false; + } + } + + // Disable the hook function + lua_sethook(_lua_state, nullptr, 0, 0); + _isRunning.store(false); + _isPaused.store(false); + + return success; +} + +void EspLuaEngine::pauseExecution() { + if (_isRunning.load()) { + _isPaused.store(true); + } +} + +void EspLuaEngine::resumeExecution() { _isPaused.store(false); } + +void EspLuaEngine::stopExecution() { + _isRunning.store(false); + _isPaused.store(false); + if (_lastError.length() == 0) _lastError = "Execution stopped by user"; +} + +bool EspLuaEngine::isRunning() { return _isRunning.load(); } + +bool EspLuaEngine::isPaused() { return _isPaused.load(); } + +EspLuaEngine::Status EspLuaEngine::getStatus() { + if (_isPaused.load()) { + return Status::Paused; + } else if (_isRunning.load()) { + return Status::Running; + } else { + return Status::Idle; + } +} + +bool EspLuaEngine::hasError() { return _lastError.length() > 0; } + bool EspLuaEngine::registerFunction(const char* name, lua_CFunction function, void* userData) { if (!_checkPreconditions(name) || !function) { @@ -222,4 +338,4 @@ bool EspLuaEngine::_makeReadOnly(const char* name) { lua_setmetatable(_lua_state, -2); lua_pop(_lua_state, 2); return true; -} \ No newline at end of file +} diff --git a/libraries/EspLuaEngine-1.0.1/src/EspLuaEngine.h b/libraries/EspLuaEngine-1.0.2/src/EspLuaEngine.h similarity index 62% rename from libraries/EspLuaEngine-1.0.1/src/EspLuaEngine.h rename to libraries/EspLuaEngine-1.0.2/src/EspLuaEngine.h index 1cc7cbd5..edc7e476 100644 --- a/libraries/EspLuaEngine-1.0.1/src/EspLuaEngine.h +++ b/libraries/EspLuaEngine-1.0.2/src/EspLuaEngine.h @@ -20,22 +20,62 @@ #pragma once #define LUA_USE_C89 +#include + +#include +#include + #include "lua-5.4.7/src/lua.hpp" +#if defined(ARDUINO_ARCH_ESP32) +#define ESP_LUA_CHECK_INTERVAL pdMS_TO_TICKS(10) +#endif // defined(ARDUINO_ARCH_ESP32) + +#if defined(ARDUINO_ARCH_ESP8266) +#define ESP_LUA_CHECK_INTERVAL 10 +#endif // defined(ARDUINO_ARCH_ESP8266) + + class EspLuaEngine { public: + enum class Status { + Idle, + Running, + Paused, + }; EspLuaEngine(); ~EspLuaEngine(); + using PauseFunction = std::function; + bool executeScript(const char* script); bool registerFunction(const char* name, lua_CFunction function, void* userData = nullptr); template bool registerConstant(const char* name, T value); lua_State* getLuaState() { return _lua_state; } + const char* getLastError() { return _lastError.c_str(); } + void resetState(); + + void setPauseFunction(PauseFunction func); + + static void pauseExecution(); + static void resumeExecution(); + static void stopExecution(); + bool isPaused(); + bool isRunning(); + Status getStatus(); + bool hasError(); private: lua_State* _lua_state; + static PauseFunction _pauseFunction; + static String _lastError; + static inline std::atomic _isPaused{false}; + static inline std::atomic _isRunning{false}; + + static void hookFunction(lua_State* L, lua_Debug* ar); + static void _defaultPauseFunction(); void _loadLibraries(); bool _checkPreconditions(const char* name); bool _verifyGlobal(const char* name, int type); @@ -46,3 +86,5 @@ class EspLuaEngine { bool _registerConstantImpl(const char* name, bool value); bool _registerConstantImpl(const char* name, int value); }; + +using EspLuaStatus = EspLuaEngine::Status; diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/Makefile b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/Makefile similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/Makefile rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/Makefile diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/README b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/README similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/README rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/README diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/OSIApproved_100X125.png b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/OSIApproved_100X125.png similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/OSIApproved_100X125.png rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/OSIApproved_100X125.png diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/contents.html b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/contents.html similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/contents.html rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/contents.html diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/index.css b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/index.css similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/index.css rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/index.css diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/logo.gif b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/logo.gif similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/logo.gif rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/logo.gif diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/lua.1 b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/lua.1 similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/lua.1 rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/lua.1 diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/lua.css b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/lua.css similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/lua.css rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/lua.css diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/luac.1 b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/luac.1 similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/luac.1 rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/luac.1 diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/manual.css b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/manual.css similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/manual.css rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/manual.css diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/manual.html b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/manual.html similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/manual.html rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/manual.html diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/readme.html b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/readme.html similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/doc/readme.html rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/doc/readme.html diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/Makefile b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/Makefile similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/Makefile rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/Makefile diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lapi.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lapi.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lapi.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lapi.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lapi.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lapi.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lapi.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lapi.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lauxlib.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lauxlib.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lauxlib.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lauxlib.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lauxlib.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lauxlib.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lauxlib.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lauxlib.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lbaselib.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lbaselib.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lbaselib.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lbaselib.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lcode.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lcode.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lcode.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lcode.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lcode.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lcode.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lcode.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lcode.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lcorolib.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lcorolib.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lcorolib.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lcorolib.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lctype.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lctype.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lctype.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lctype.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lctype.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lctype.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lctype.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lctype.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldblib.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldblib.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldblib.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldblib.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldebug.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldebug.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldebug.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldebug.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldebug.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldebug.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldebug.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldebug.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldo.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldo.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldo.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldo.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldo.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldo.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldo.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldo.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldump.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldump.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ldump.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ldump.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lfunc.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lfunc.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lfunc.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lfunc.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lfunc.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lfunc.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lfunc.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lfunc.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lgc.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lgc.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lgc.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lgc.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lgc.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lgc.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lgc.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lgc.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/linit.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/linit.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/linit.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/linit.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/liolib.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/liolib.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/liolib.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/liolib.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ljumptab.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ljumptab.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ljumptab.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ljumptab.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/llex.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/llex.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/llex.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/llex.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/llex.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/llex.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/llex.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/llex.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/llimits.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/llimits.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/llimits.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/llimits.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lmathlib.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lmathlib.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lmathlib.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lmathlib.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lmem.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lmem.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lmem.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lmem.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lmem.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lmem.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lmem.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lmem.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/loadlib.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/loadlib.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/loadlib.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/loadlib.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lobject.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lobject.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lobject.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lobject.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lobject.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lobject.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lobject.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lobject.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lopcodes.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lopcodes.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lopcodes.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lopcodes.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lopcodes.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lopcodes.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lopcodes.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lopcodes.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lopnames.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lopnames.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lopnames.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lopnames.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/loslib.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/loslib.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/loslib.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/loslib.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lparser.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lparser.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lparser.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lparser.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lparser.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lparser.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lparser.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lparser.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lprefix.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lprefix.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lprefix.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lprefix.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstate.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstate.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstate.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstate.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstate.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstate.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstate.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstate.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstring.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstring.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstring.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstring.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstring.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstring.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstring.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstring.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstrlib.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstrlib.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lstrlib.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lstrlib.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltable.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltable.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltable.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltable.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltable.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltable.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltable.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltable.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltablib.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltablib.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltablib.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltablib.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltm.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltm.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltm.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltm.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltm.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltm.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/ltm.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/ltm.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lua.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lua.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lua.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lua.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lua.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lua.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lua.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lua.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lua.hpp b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lua.hpp similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lua.hpp rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lua.hpp diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/luac.c.disabled b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/luac.c.disabled similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/luac.c.disabled rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/luac.c.disabled diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/luaconf.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/luaconf.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/luaconf.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/luaconf.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lualib.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lualib.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lualib.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lualib.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lundump.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lundump.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lundump.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lundump.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lundump.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lundump.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lundump.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lundump.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lutf8lib.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lutf8lib.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lutf8lib.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lutf8lib.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lvm.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lvm.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lvm.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lvm.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lvm.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lvm.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lvm.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lvm.h diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lzio.c b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lzio.c similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lzio.c rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lzio.c diff --git a/libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lzio.h b/libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lzio.h similarity index 100% rename from libraries/EspLuaEngine-1.0.1/src/lua-5.4.7/src/lzio.h rename to libraries/EspLuaEngine-1.0.2/src/lua-5.4.7/src/lzio.h diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio b/libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio deleted file mode 100644 index bca2dc6d..00000000 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio +++ /dev/null @@ -1,76 +0,0 @@ -// Raspberry Pi Pico PIO program to output data to a TFT -// controller via a 16 bit 8080 style data path. - -// Original sourced from: -// https://github.com/zapta/pio_tft - -// Side set: 1 output pin, TFT_WR. Active low. -// Data set: 16 consecutive output pins, TFT_D0 .. TFT_D15 - -.program tft_io -.side_set 1 opt ; The TFT_WR output. - -// The C++ code switches between the different SM routines -// by waiting for the SM to be idle and setting its PC. -// The default SM routine is a 16 bit transfer - -// Do a block fill of N+1 pixels. -public block_fill: - // Fetch colour value. - pull side 1 - // Move colour to x. - mov x, osr - // Fetch pixel count N (sends N+1 pixels). - pull - // Move pixel count to y. - mov y, osr -next: - // Copy colour value into osr, colour in LS 16 bits. - mov osr, x side 1 - // Output colour 16 bits, unwanted top 16 bits shifted through. - out pins, 32 side 0 [1] - // Decrement pixel count and loop. - jmp y--, next side 1 - -.wrap_target -// Transmit an 8 bit value (LS 8 bits of 32 bits). -public start_8: -// Transmit a 16 bit value (LS 16 bits of 32 bits). -public start_tx: - // Fetch the next 32 bit value from the TX FIFO and set TFT_WR high. - pull side 1 - // Write the 16 bits and set WR low. This also - // shifts the unused top 16 bits through. - out pins, 32 side 0 [1] - // Set WR high and jump back to start. - jmp start_tx side 1 - -// Transmit a set window command sequence. -public set_addr_window: - // Loop count in x (to send caset, paset and ramwr commands). - set x, 2 side 1 -pull_cmd: - // Set TFT_DC low. - set pins, 0 - // Fetch caset, paset or ramwr. - pull - // Output LS byte (caset, paset or ramwr), discarding top 16 bits, set TFT_WR low. - out pins, 32 side 0 - // Jump to end if 3rd cmd byte ramwr sent (x == 0) - jmp !x, end_set_addr - // pull next start and end coordinates, TFT_WR high. - pull side 1 - // Set TFT_DC high. - set pins, 1 -send_xy: - // Output byte, TFT_WR low. - out pins, 8 side 0 [1] - // Loop until 4 bytes sent, TFT_WR high. - jmp !osre, send_xy side 1 [1] -end_set_addr: // Jump here since delay needed before DC change - // Loop back for next command and write last command. - jmp x--, pull_cmd side 1 - // Set DC high. - set pins, 1 - // Auto-wrap back to start_tx. -.wrap \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio b/libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio deleted file mode 100644 index 86704fd3..00000000 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio +++ /dev/null @@ -1,92 +0,0 @@ -// Raspberry Pi Pico PIO program to output data to a TFT -// controller via a 8 bit 8080 style data path. - -// Original sourced from: -// https://github.com/zapta/pio_tft - -// Side set: 1 output pin, TFT_WR. Active low. -// Data set: 8 consecutive output pins, TFT_D0 .. TFT_D7 - -.program tft_io -.side_set 1 opt ; The TFT_WR output. - -// The C++ code switches between the different SM routines -// by waiting for the SM to be idle and setting its PC. -// The default SM routine is a 16 bit transfer - -// Do a block fill of N+1 pixels. -public block_fill: - // Fetch colour value. - pull side 1 - // Move colour to x. - mov x, osr - // Fetch pixel count N (sends N+1 pixels). - pull - // Move pixel count to y. - mov y, osr -next: - // Copy colour value into osr, colour in LS 16 bits. - mov osr, x side 1 - // Output colour 8 MS bits, unwanted top 16 bits shifted through. - out pins, 24 side 0 [1] - // Write first colour byte. - nop side 1 [1] - // Write second colour byte. - out pins, 8 side 0 [1] - // Decrement pixel count and loop. - jmp y--, next side 1 - -.wrap_target -// Transmit a 16 bit value (LS 16 bits of 32 bits). -public start_tx: - // Fetch the next 32 bit value from the TX FIFO and set TFT_WR high. - pull side 1 - // Write the first byte (MSB) and set WR low. This also - // shifts the unused top 16 bits through. - out pins, 24 side 0 [1] - // Set WR high and delay to next byte. - nop side 1 [1] - // Output the second byte and set TFT_WRITE low. - out pins, 8 side 0 [1] - // Set WR high and jump back to start. - jmp start_tx side 1 - -// Transmit an 8 bit value (LS 8 bits of 32 bits). -public start_8: - // Fetch the next 32 bit value from the TX FIFO and set TFT_WR high. - pull side 1 - // Write the first byte (LSB) and sets WR low. This also - // shifts the unused top 24 bits through. - out pins, 32 side 0 [1] - // Jump to start - jmp start_tx side 1 - -// Transmit a set window command sequence. -public set_addr_window: - // Loop count in x (to send caset, paset and ramwr commands). - set x, 2 side 1 -pull_cmd: - // Set TFT_DC low. - set pins, 0 - // Fetch caset, paset or ramwr. - pull - // Output LS byte (caset, paset or ramwr), discarding top 24 bits, set TFT_WR low. - out pins, 32 side 0 - // Jump to end if 3rd cmd byte ramwr sent (x == 0) - jmp !x, end_set_addr - // pull next start and end coordinates, TFT_WR high. - pull side 1 - // Set TFT_DC high. - set pins, 1 -send_xy: - // Output byte, TFT_WR low. - out pins, 8 side 0 [1] - // Loop until 4 bytes sent, TFT_WR high. - jmp !osre, send_xy side 1 [1] -end_set_addr: - // Loop back for next command and write last command. - jmp x--, pull_cmd side 1 - // Set DC high. - set pins, 1 - // Auto-wrap back to start_tx. -.wrap \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio b/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio deleted file mode 100644 index 8515a3ac..00000000 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio +++ /dev/null @@ -1,89 +0,0 @@ -// Raspberry Pi Pico PIO program to output data to a TFT -// controller via a SPI output data path. - -//"Set" set: 1 output pin, TFT_DC -// Side set: 1 output pin, TFT_SCLK -// Data set: 1 output pin, TFT_MOSI - -.program tft_io -.side_set 1 opt ; The TFT_SCLK output. - -// The C++ code switches between the 8 bits and 16 bits loops -// by waiting for the SM to be idle and setting its PC. -// - -// 8 bit transfer -public start_8: - // Pull the next 32 bit value from the TX FIFO. - pull side 0 - // Lose the top 24 bits, send 1st bit - out pins, 25 - // Now send remaining bits - jmp spi_out side 1 - -public set_addr_window: - // Loop count in x for caset, paset and ramwr - set x, 2 side 0 -pull_cmd: - // Set DC low - set pins, 0 - // Fetch and output LS byte (caset, paset or ramwr), discarding top 24 bits, set WR low - pull side 0 - out pins, 25 - nop side 1 -next_cmd_bit: - out pins, 1 side 0 - jmp !osre, next_cmd_bit side 1 - // Set DC high - set pins, 1 side 0 - // Finish if 3rd cmd byte ramwr sent (x == 0) - jmp !x, start_tx - pull -next_xy: - // send 32 bit start and end coordinates - out pins, 1 side 0 - jmp !osre, next_xy side 1 - // Loop back for next command - jmp x--, pull_cmd side 0 - // End - jmp start_tx - -public block_fill: - // Fetch colour value - pull side 0 - // Move colour to x - mov x, osr - // Fetch pixel count - pull - // Move pixel count to y - mov y, osr -next_16: - // Copy colour value back into osr - mov osr, x side 0 - // Lose the top 16 bits, send 1st bit - out pins, 17 side 0 - nop side 1 -next_bit: - // Output next 15 colour bits - out pins, 1 side 0 - // Set TFT_SCLK high and jump for next bit - jmp !osre, next_bit side 1 - // Decrement count and loop - jmp y--, next_16 side 0 - // Now drop back to 16 bit output - -.wrap_target -public start_tx: - // Pull the next 32 bit value from the TX FIFO. - // Send the bottom 16 bits - pull side 0 - // Drop the first 16 bits, write first bit - out pins, 17 side 0 - nop side 1 -spi_out: - // Output the next 15 bits - out pins, 1 side 0 - // Set TFT_SCLK high and jump for next bit - jmp !osre, spi_out side 1 - // Return to start -.wrap diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio b/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio deleted file mode 100644 index 25df4c00..00000000 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio +++ /dev/null @@ -1,89 +0,0 @@ -// Raspberry Pi Pico PIO program to output 18 bit data to a TFT -// controller via a SPI output data path. - -//"Set" set: 1 output pin, TFT_DC -// Side set: 1 output pin, TFT_SCLK -// Data set: 1 output pin, TFT_MOSI - -.program tft_io -.side_set 1 opt ; The TFT_SCLK output. - -// The C++ code switches between the 8 bits and 16 bits loops -// by waiting for the SM to be idle and setting its PC. -// - -// 8 bit transfer -public start_8: - // Pull the next 32 bit value from the TX FIFO. - pull side 0 - // Lose the top 24 bits, send 1st bit - out pins, 25 - // Now send remaining bits - jmp spi_out side 1 - -public set_addr_window: - // Loop count in x for caset, paset and ramwr - set x, 2 side 0 -pull_cmd: - // Set DC low - set pins, 0 - // Fetch and output LS byte (caset, paset or ramwr), discarding top 24 bits, set WR low - pull side 0 - out pins, 25 - nop side 1 -next_cmd_bit: - out pins, 1 side 0 - jmp !osre, next_cmd_bit side 1 - // Set DC high - set pins, 1 side 0 - // Finish if 3rd cmd byte ramwr sent (x == 0) - jmp !x, start_tx - pull -next_xy: - // send 32 bit start and end coordinates - out pins, 1 side 0 - jmp !osre, next_xy side 1 - // Loop back for next command - jmp x--, pull_cmd side 0 - // End - jmp start_tx - -public block_fill: - // Fetch colour value - pull side 0 - // Move colour to x - mov x, osr - // Fetch pixel count - pull - // Move pixel count to y - mov y, osr -next_16: - // Copy colour value back into osr - mov osr, x side 0 - // Lose the top 8 bits, send 1st bit - out pins, 9 side 0 - nop side 1 -next_bit: - // Output next remaining bits - out pins, 1 side 0 - // Set TFT_SCLK high and jump for next bit - jmp !osre, next_bit side 1 - // Decrement count and loop - jmp y--, next_16 side 0 - // Now drop back to 16 bit output - -.wrap_target -public start_tx: - // Pull the next 32 bit value from the TX FIFO. - // Send the bottom 24 bits - pull side 0 - // Drop the first 8 bits, write first bit - out pins, 9 side 0 - nop side 1 -spi_out: - // Output the remaining bits - out pins, 1 side 0 - // Set TFT_SCLK high and jump for next bit - jmp !osre, spi_out side 1 - // Return to start -.wrap diff --git a/libraries/TFT_eSPI-2.4.72/README.txt b/libraries/TFT_eSPI-2.4.72/README.txt deleted file mode 100644 index 17ff25fa..00000000 --- a/libraries/TFT_eSPI-2.4.72/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -This is a stand-alone library that contains both graphics functions -and the TFT chip driver library. It supports the ESP8266, ESP32 and -STM32 processors with performance optimised code. Other Arduino IDE -compatible boards are also supported but the library then uses -generic functions which will be slower. The library uses 32 bit -variables extensively so this will affect performance on 8 and 16 -bit processors. diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Init.h b/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Init.h deleted file mode 100644 index 4d388367..00000000 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Init.h +++ /dev/null @@ -1,429 +0,0 @@ - -writeRegister(0xF000, 0x55); -writeRegister(0xF001, 0xAA); -writeRegister(0xF002, 0x52); -writeRegister(0xF003, 0x08); -writeRegister(0xF004, 0x01); - -//GAMMA SETING RED -writeRegister(0xD100, 0x00); -writeRegister(0xD101, 0x00); -writeRegister(0xD102, 0x1b); -writeRegister(0xD103, 0x44); -writeRegister(0xD104, 0x62); -writeRegister(0xD105, 0x00); -writeRegister(0xD106, 0x7b); -writeRegister(0xD107, 0xa1); -writeRegister(0xD108, 0xc0); -writeRegister(0xD109, 0xee); -writeRegister(0xD10A, 0x55); -writeRegister(0xD10B, 0x10); -writeRegister(0xD10C, 0x2c); -writeRegister(0xD10D, 0x43); -writeRegister(0xD10E, 0x57); -writeRegister(0xD10F, 0x55); -writeRegister(0xD110, 0x68); -writeRegister(0xD111, 0x78); -writeRegister(0xD112, 0x87); -writeRegister(0xD113, 0x94); -writeRegister(0xD114, 0x55); -writeRegister(0xD115, 0xa0); -writeRegister(0xD116, 0xac); -writeRegister(0xD117, 0xb6); -writeRegister(0xD118, 0xc1); -writeRegister(0xD119, 0x55); -writeRegister(0xD11A, 0xcb); -writeRegister(0xD11B, 0xcd); -writeRegister(0xD11C, 0xd6); -writeRegister(0xD11D, 0xdf); -writeRegister(0xD11E, 0x95); -writeRegister(0xD11F, 0xe8); -writeRegister(0xD120, 0xf1); -writeRegister(0xD121, 0xfa); -writeRegister(0xD122, 0x02); -writeRegister(0xD123, 0xaa); -writeRegister(0xD124, 0x0b); -writeRegister(0xD125, 0x13); -writeRegister(0xD126, 0x1d); -writeRegister(0xD127, 0x26); -writeRegister(0xD128, 0xaa); -writeRegister(0xD129, 0x30); -writeRegister(0xD12A, 0x3c); -writeRegister(0xD12B, 0x4A); -writeRegister(0xD12C, 0x63); -writeRegister(0xD12D, 0xea); -writeRegister(0xD12E, 0x79); -writeRegister(0xD12F, 0xa6); -writeRegister(0xD130, 0xd0); -writeRegister(0xD131, 0x20); -writeRegister(0xD132, 0x0f); -writeRegister(0xD133, 0x8e); -writeRegister(0xD134, 0xff); -//GAMMA SETING GREEN -writeRegister(0xD200, 0x00); -writeRegister(0xD201, 0x00); -writeRegister(0xD202, 0x1b); -writeRegister(0xD203, 0x44); -writeRegister(0xD204, 0x62); -writeRegister(0xD205, 0x00); -writeRegister(0xD206, 0x7b); -writeRegister(0xD207, 0xa1); -writeRegister(0xD208, 0xc0); -writeRegister(0xD209, 0xee); -writeRegister(0xD20A, 0x55); -writeRegister(0xD20B, 0x10); -writeRegister(0xD20C, 0x2c); -writeRegister(0xD20D, 0x43); -writeRegister(0xD20E, 0x57); -writeRegister(0xD20F, 0x55); -writeRegister(0xD210, 0x68); -writeRegister(0xD211, 0x78); -writeRegister(0xD212, 0x87); -writeRegister(0xD213, 0x94); -writeRegister(0xD214, 0x55); -writeRegister(0xD215, 0xa0); -writeRegister(0xD216, 0xac); -writeRegister(0xD217, 0xb6); -writeRegister(0xD218, 0xc1); -writeRegister(0xD219, 0x55); -writeRegister(0xD21A, 0xcb); -writeRegister(0xD21B, 0xcd); -writeRegister(0xD21C, 0xd6); -writeRegister(0xD21D, 0xdf); -writeRegister(0xD21E, 0x95); -writeRegister(0xD21F, 0xe8); -writeRegister(0xD220, 0xf1); -writeRegister(0xD221, 0xfa); -writeRegister(0xD222, 0x02); -writeRegister(0xD223, 0xaa); -writeRegister(0xD224, 0x0b); -writeRegister(0xD225, 0x13); -writeRegister(0xD226, 0x1d); -writeRegister(0xD227, 0x26); -writeRegister(0xD228, 0xaa); -writeRegister(0xD229, 0x30); -writeRegister(0xD22A, 0x3c); -writeRegister(0xD22B, 0x4a); -writeRegister(0xD22C, 0x63); -writeRegister(0xD22D, 0xea); -writeRegister(0xD22E, 0x79); -writeRegister(0xD22F, 0xa6); -writeRegister(0xD230, 0xd0); -writeRegister(0xD231, 0x20); -writeRegister(0xD232, 0x0f); -writeRegister(0xD233, 0x8e); -writeRegister(0xD234, 0xff); - -//GAMMA SETING BLUE -writeRegister(0xD300, 0x00); -writeRegister(0xD301, 0x00); -writeRegister(0xD302, 0x1b); -writeRegister(0xD303, 0x44); -writeRegister(0xD304, 0x62); -writeRegister(0xD305, 0x00); -writeRegister(0xD306, 0x7b); -writeRegister(0xD307, 0xa1); -writeRegister(0xD308, 0xc0); -writeRegister(0xD309, 0xee); -writeRegister(0xD30A, 0x55); -writeRegister(0xD30B, 0x10); -writeRegister(0xD30C, 0x2c); -writeRegister(0xD30D, 0x43); -writeRegister(0xD30E, 0x57); -writeRegister(0xD30F, 0x55); -writeRegister(0xD310, 0x68); -writeRegister(0xD311, 0x78); -writeRegister(0xD312, 0x87); -writeRegister(0xD313, 0x94); -writeRegister(0xD314, 0x55); -writeRegister(0xD315, 0xa0); -writeRegister(0xD316, 0xac); -writeRegister(0xD317, 0xb6); -writeRegister(0xD318, 0xc1); -writeRegister(0xD319, 0x55); -writeRegister(0xD31A, 0xcb); -writeRegister(0xD31B, 0xcd); -writeRegister(0xD31C, 0xd6); -writeRegister(0xD31D, 0xdf); -writeRegister(0xD31E, 0x95); -writeRegister(0xD31F, 0xe8); -writeRegister(0xD320, 0xf1); -writeRegister(0xD321, 0xfa); -writeRegister(0xD322, 0x02); -writeRegister(0xD323, 0xaa); -writeRegister(0xD324, 0x0b); -writeRegister(0xD325, 0x13); -writeRegister(0xD326, 0x1d); -writeRegister(0xD327, 0x26); -writeRegister(0xD328, 0xaa); -writeRegister(0xD329, 0x30); -writeRegister(0xD32A, 0x3c); -writeRegister(0xD32B, 0x4A); -writeRegister(0xD32C, 0x63); -writeRegister(0xD32D, 0xea); -writeRegister(0xD32E, 0x79); -writeRegister(0xD32F, 0xa6); -writeRegister(0xD330, 0xd0); -writeRegister(0xD331, 0x20); -writeRegister(0xD332, 0x0f); -writeRegister(0xD333, 0x8e); -writeRegister(0xD334, 0xff); - - -//GAMMA SETING RED -writeRegister(0xD400, 0x00); -writeRegister(0xD401, 0x00); -writeRegister(0xD402, 0x1b); -writeRegister(0xD403, 0x44); -writeRegister(0xD404, 0x62); -writeRegister(0xD405, 0x00); -writeRegister(0xD406, 0x7b); -writeRegister(0xD407, 0xa1); -writeRegister(0xD408, 0xc0); -writeRegister(0xD409, 0xee); -writeRegister(0xD40A, 0x55); -writeRegister(0xD40B, 0x10); -writeRegister(0xD40C, 0x2c); -writeRegister(0xD40D, 0x43); -writeRegister(0xD40E, 0x57); -writeRegister(0xD40F, 0x55); -writeRegister(0xD410, 0x68); -writeRegister(0xD411, 0x78); -writeRegister(0xD412, 0x87); -writeRegister(0xD413, 0x94); -writeRegister(0xD414, 0x55); -writeRegister(0xD415, 0xa0); -writeRegister(0xD416, 0xac); -writeRegister(0xD417, 0xb6); -writeRegister(0xD418, 0xc1); -writeRegister(0xD419, 0x55); -writeRegister(0xD41A, 0xcb); -writeRegister(0xD41B, 0xcd); -writeRegister(0xD41C, 0xd6); -writeRegister(0xD41D, 0xdf); -writeRegister(0xD41E, 0x95); -writeRegister(0xD41F, 0xe8); -writeRegister(0xD420, 0xf1); -writeRegister(0xD421, 0xfa); -writeRegister(0xD422, 0x02); -writeRegister(0xD423, 0xaa); -writeRegister(0xD424, 0x0b); -writeRegister(0xD425, 0x13); -writeRegister(0xD426, 0x1d); -writeRegister(0xD427, 0x26); -writeRegister(0xD428, 0xaa); -writeRegister(0xD429, 0x30); -writeRegister(0xD42A, 0x3c); -writeRegister(0xD42B, 0x4A); -writeRegister(0xD42C, 0x63); -writeRegister(0xD42D, 0xea); -writeRegister(0xD42E, 0x79); -writeRegister(0xD42F, 0xa6); -writeRegister(0xD430, 0xd0); -writeRegister(0xD431, 0x20); -writeRegister(0xD432, 0x0f); -writeRegister(0xD433, 0x8e); -writeRegister(0xD434, 0xff); - -//GAMMA SETING GREEN -writeRegister(0xD500, 0x00); -writeRegister(0xD501, 0x00); -writeRegister(0xD502, 0x1b); -writeRegister(0xD503, 0x44); -writeRegister(0xD504, 0x62); -writeRegister(0xD505, 0x00); -writeRegister(0xD506, 0x7b); -writeRegister(0xD507, 0xa1); -writeRegister(0xD508, 0xc0); -writeRegister(0xD509, 0xee); -writeRegister(0xD50A, 0x55); -writeRegister(0xD50B, 0x10); -writeRegister(0xD50C, 0x2c); -writeRegister(0xD50D, 0x43); -writeRegister(0xD50E, 0x57); -writeRegister(0xD50F, 0x55); -writeRegister(0xD510, 0x68); -writeRegister(0xD511, 0x78); -writeRegister(0xD512, 0x87); -writeRegister(0xD513, 0x94); -writeRegister(0xD514, 0x55); -writeRegister(0xD515, 0xa0); -writeRegister(0xD516, 0xac); -writeRegister(0xD517, 0xb6); -writeRegister(0xD518, 0xc1); -writeRegister(0xD519, 0x55); -writeRegister(0xD51A, 0xcb); -writeRegister(0xD51B, 0xcd); -writeRegister(0xD51C, 0xd6); -writeRegister(0xD51D, 0xdf); -writeRegister(0xD51E, 0x95); -writeRegister(0xD51F, 0xe8); -writeRegister(0xD520, 0xf1); -writeRegister(0xD521, 0xfa); -writeRegister(0xD522, 0x02); -writeRegister(0xD523, 0xaa); -writeRegister(0xD524, 0x0b); -writeRegister(0xD525, 0x13); -writeRegister(0xD526, 0x1d); -writeRegister(0xD527, 0x26); -writeRegister(0xD528, 0xaa); -writeRegister(0xD529, 0x30); -writeRegister(0xD52A, 0x3c); -writeRegister(0xD52B, 0x4a); -writeRegister(0xD52C, 0x63); -writeRegister(0xD52D, 0xea); -writeRegister(0xD52E, 0x79); -writeRegister(0xD52F, 0xa6); -writeRegister(0xD530, 0xd0); -writeRegister(0xD531, 0x20); -writeRegister(0xD532, 0x0f); -writeRegister(0xD533, 0x8e); -writeRegister(0xD534, 0xff); - -//GAMMA SETING BLUE -writeRegister(0xD600, 0x00); -writeRegister(0xD601, 0x00); -writeRegister(0xD602, 0x1b); -writeRegister(0xD603, 0x44); -writeRegister(0xD604, 0x62); -writeRegister(0xD605, 0x00); -writeRegister(0xD606, 0x7b); -writeRegister(0xD607, 0xa1); -writeRegister(0xD608, 0xc0); -writeRegister(0xD609, 0xee); -writeRegister(0xD60A, 0x55); -writeRegister(0xD60B, 0x10); -writeRegister(0xD60C, 0x2c); -writeRegister(0xD60D, 0x43); -writeRegister(0xD60E, 0x57); -writeRegister(0xD60F, 0x55); -writeRegister(0xD610, 0x68); -writeRegister(0xD611, 0x78); -writeRegister(0xD612, 0x87); -writeRegister(0xD613, 0x94); -writeRegister(0xD614, 0x55); -writeRegister(0xD615, 0xa0); -writeRegister(0xD616, 0xac); -writeRegister(0xD617, 0xb6); -writeRegister(0xD618, 0xc1); -writeRegister(0xD619, 0x55); -writeRegister(0xD61A, 0xcb); -writeRegister(0xD61B, 0xcd); -writeRegister(0xD61C, 0xd6); -writeRegister(0xD61D, 0xdf); -writeRegister(0xD61E, 0x95); -writeRegister(0xD61F, 0xe8); -writeRegister(0xD620, 0xf1); -writeRegister(0xD621, 0xfa); -writeRegister(0xD622, 0x02); -writeRegister(0xD623, 0xaa); -writeRegister(0xD624, 0x0b); -writeRegister(0xD625, 0x13); -writeRegister(0xD626, 0x1d); -writeRegister(0xD627, 0x26); -writeRegister(0xD628, 0xaa); -writeRegister(0xD629, 0x30); -writeRegister(0xD62A, 0x3c); -writeRegister(0xD62B, 0x4A); -writeRegister(0xD62C, 0x63); -writeRegister(0xD62D, 0xea); -writeRegister(0xD62E, 0x79); -writeRegister(0xD62F, 0xa6); -writeRegister(0xD630, 0xd0); -writeRegister(0xD631, 0x20); -writeRegister(0xD632, 0x0f); -writeRegister(0xD633, 0x8e); -writeRegister(0xD634, 0xff); - -//AVDD VOLTAGE SETTING -writeRegister(0xB000, 0x05); -writeRegister(0xB001, 0x05); -writeRegister(0xB002, 0x05); -//AVEE VOLTAGE SETTING -writeRegister(0xB100, 0x05); -writeRegister(0xB101, 0x05); -writeRegister(0xB102, 0x05); - -//AVDD Boosting -writeRegister(0xB600, 0x34); -writeRegister(0xB601, 0x34); -writeRegister(0xB603, 0x34); -//AVEE Boosting -writeRegister(0xB700, 0x24); -writeRegister(0xB701, 0x24); -writeRegister(0xB702, 0x24); -//VCL Boosting -writeRegister(0xB800, 0x24); -writeRegister(0xB801, 0x24); -writeRegister(0xB802, 0x24); -//VGLX VOLTAGE SETTING -writeRegister(0xBA00, 0x14); -writeRegister(0xBA01, 0x14); -writeRegister(0xBA02, 0x14); -//VCL Boosting -writeRegister(0xB900, 0x24); -writeRegister(0xB901, 0x24); -writeRegister(0xB902, 0x24); -//Gamma Voltage -writeRegister(0xBc00, 0x00); -writeRegister(0xBc01, 0xa0);//vgmp=5.0 -writeRegister(0xBc02, 0x00); -writeRegister(0xBd00, 0x00); -writeRegister(0xBd01, 0xa0);//vgmn=5.0 -writeRegister(0xBd02, 0x00); -//VCOM Setting -writeRegister(0xBe01, 0x3d);//3 -//ENABLE PAGE 0 -writeRegister(0xF000, 0x55); -writeRegister(0xF001, 0xAA); -writeRegister(0xF002, 0x52); -writeRegister(0xF003, 0x08); -writeRegister(0xF004, 0x00); -//Vivid Color Function Control -writeRegister(0xB400, 0x10); -//Z-INVERSION -writeRegister(0xBC00, 0x05); -writeRegister(0xBC01, 0x05); -writeRegister(0xBC02, 0x05); - -//*************** add on 20111021**********************// -writeRegister(0xB700, 0x22);//GATE EQ CONTROL -writeRegister(0xB701, 0x22);//GATE EQ CONTROL -writeRegister(0xC80B, 0x2A);//DISPLAY TIMING CONTROL -writeRegister(0xC80C, 0x2A);//DISPLAY TIMING CONTROL -writeRegister(0xC80F, 0x2A);//DISPLAY TIMING CONTROL -writeRegister(0xC810, 0x2A);//DISPLAY TIMING CONTROL -//*************** add on 20111021**********************// -//PWM_ENH_OE =1 -writeRegister(0xd000, 0x01); -//DM_SEL =1 -writeRegister(0xb300, 0x10); -//VBPDA=07h -writeRegister(0xBd02, 0x07); -//VBPDb=07h -writeRegister(0xBe02, 0x07); -//VBPDc=07h -writeRegister(0xBf02, 0x07); -//ENABLE PAGE 2 -writeRegister(0xF000, 0x55); -writeRegister(0xF001, 0xAA); -writeRegister(0xF002, 0x52); -writeRegister(0xF003, 0x08); -writeRegister(0xF004, 0x02); -//SDREG0 =0 -writeRegister(0xc301, 0xa9); -//DS=14 -writeRegister(0xfe01, 0x94); -//OSC =60h -writeRegister(0xf600, 0x60); -//TE ON -writeRegister(0x3500, 0x00); -//SLEEP OUT -writecommand(0x1100); -delay(100); -//DISPLY ON -writecommand(0x2900); -delay(100); - -writeRegister(0x3A00, 0x55); -writeRegister(0x3600, 0xA3); diff --git a/libraries/TFT_eSPI-2.4.72/TFT_eSPI.h b/libraries/TFT_eSPI-2.4.72/TFT_eSPI.h deleted file mode 100644 index d364b4a6..00000000 --- a/libraries/TFT_eSPI-2.4.72/TFT_eSPI.h +++ /dev/null @@ -1,1043 +0,0 @@ -/*************************************************** - Arduino TFT graphics library targeted at ESP8266 - and ESP32 based boards. - - This is a stand-alone library that contains the - hardware driver, the graphics functions and the - proportional fonts. - - The built-in fonts 4, 6, 7 and 8 are Run Length - Encoded (RLE) to reduce the FLASH footprint. - - Last review/edit by Bodmer: 04/02/22 - ****************************************************/ - -// Stop fonts etc being loaded multiple times -#ifndef _TFT_eSPIH_ -#define _TFT_eSPIH_ - -#define TFT_ESPI_VERSION "2.4.72" - -// Bit level feature flags -// Bit 0 set: viewport capability -#define TFT_ESPI_FEATURES 1 - -/*************************************************************************************** -** Section 1: Load required header files -***************************************************************************************/ - -// Standard support -#include -#include -#include - -/*************************************************************************************** -** Section 2: Load library and processor specific header -*files -***************************************************************************************/ -// Include header file that defines the fonts loaded, the TFT drivers -// available and the pins to be used, etc, etc -#ifdef CONFIG_TFT_eSPI_ESPIDF -#include "TFT_config.h" -#endif -#include - -// Handle FLASH based storage e.g. PROGMEM -#if defined(ARDUINO_ARCH_RP2040) -#undef pgm_read_byte -#define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#undef pgm_read_word -#define pgm_read_word(addr) \ - ({ \ - typeof(addr) _addr = (addr); \ - *(const unsigned short *)(_addr); \ - }) -#undef pgm_read_dword -#define pgm_read_dword(addr) \ - ({ \ - typeof(addr) _addr = (addr); \ - *(const unsigned long *)(_addr); \ - }) -#elif defined(__AVR__) -#include -#elif defined(ESP8266) || defined(ESP32) -#include -#else -#define PROGMEM -#endif - -// Include the processor specific drivers -#if defined(CONFIG_IDF_TARGET_ESP32S3) -#include "Processors/TFT_eSPI_ESP32_S3.h" -#elif defined(CONFIG_IDF_TARGET_ESP32C3) -#include "Processors/TFT_eSPI_ESP32_C3.h" -#elif defined(ESP32) -#include "Processors/TFT_eSPI_ESP32.h" -#elif defined(ESP8266) -#include "Processors/TFT_eSPI_ESP8266.h" -#elif defined(STM32) -#include "Processors/TFT_eSPI_STM32.h" -#elif defined(ARDUINO_ARCH_RP2040) -#include "Processors/TFT_eSPI_RP2040.h" -#else -#include "Processors/TFT_eSPI_Generic.h" -#endif - -/*************************************************************************************** -** Section 3: Interface setup -***************************************************************************************/ -#ifndef TAB_COLOUR -#define TAB_COLOUR 0 -#endif - -// If the SPI frequency is not defined, set a default -#ifndef SPI_FREQUENCY -#define SPI_FREQUENCY 20000000 -#endif - -// If the SPI read frequency is not defined, set a default -#ifndef SPI_READ_FREQUENCY -#define SPI_READ_FREQUENCY 10000000 -#endif - -// Some ST7789 boards do not work with Mode 0 -#ifndef TFT_SPI_MODE -#if defined(ST7789_DRIVER) || defined(ST7789_2_DRIVER) -#define TFT_SPI_MODE SPI_MODE3 -#else -#define TFT_SPI_MODE SPI_MODE0 -#endif -#endif - -// If the XPT2046 SPI frequency is not defined, set a default -#ifndef SPI_TOUCH_FREQUENCY -#define SPI_TOUCH_FREQUENCY 2500000 -#endif - -#ifndef SPI_BUSY_CHECK -#define SPI_BUSY_CHECK -#endif - -/*************************************************************************************** -** Section 4: Setup fonts -***************************************************************************************/ -// Use GLCD font in error case where user requests a smooth font file -// that does not exist (this is a temporary fix to stop ESP32 reboot) -#ifdef SMOOTH_FONT -#ifndef LOAD_GLCD -#define LOAD_GLCD -#endif -#endif - -// Only load the fonts defined in User_Setup.h (to save space) -// Set flag so RLE rendering code is optionally compiled -#ifdef LOAD_GLCD -#include -#endif - -#ifdef LOAD_FONT2 -#include -#endif - -#ifdef LOAD_FONT4 -#include -#define LOAD_RLE -#endif - -#ifdef LOAD_FONT6 -#include -#ifndef LOAD_RLE -#define LOAD_RLE -#endif -#endif - -#ifdef LOAD_FONT7 -#include -#ifndef LOAD_RLE -#define LOAD_RLE -#endif -#endif - -#ifdef LOAD_FONT8 -#include -#ifndef LOAD_RLE -#define LOAD_RLE -#endif -#elif defined LOAD_FONT8N // Optional narrower version -#define LOAD_FONT8 -#include -#ifndef LOAD_RLE -#define LOAD_RLE -#endif -#endif - -#ifdef LOAD_GFXFF -// We can include all the free fonts and they will only be built into -// the sketch if they are used -#include -// Call up any user custom fonts -#include -#endif // #ifdef LOAD_GFXFF - -// Create a null default font in case some fonts not used (to prevent crash) -const uint8_t widtbl_null[1] = {0}; -PROGMEM const uint8_t chr_null[1] = {0}; -PROGMEM const uint8_t *const chrtbl_null[1] = {chr_null}; - -// This is a structure to conveniently hold information on the default fonts -// Stores pointer to font character image address table, width table and height -typedef struct { - const uint8_t *chartbl; - const uint8_t *widthtbl; - uint8_t height; - uint8_t baseline; -} fontinfo; - -// Now fill the structure -const PROGMEM fontinfo fontdata[] = { -#ifdef LOAD_GLCD - {(const uint8_t *)font, widtbl_null, 0, 0}, -#else - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, -#endif - // GLCD font (Font 1) does not have all parameters - {(const uint8_t *)chrtbl_null, widtbl_null, 8, 7}, - -#ifdef LOAD_FONT2 - {(const uint8_t *)chrtbl_f16, widtbl_f16, chr_hgt_f16, baseline_f16}, -#else - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, -#endif - - // Font 3 current unused - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, - -#ifdef LOAD_FONT4 - {(const uint8_t *)chrtbl_f32, widtbl_f32, chr_hgt_f32, baseline_f32}, -#else - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, -#endif - - // Font 5 current unused - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, - -#ifdef LOAD_FONT6 - {(const uint8_t *)chrtbl_f64, widtbl_f64, chr_hgt_f64, baseline_f64}, -#else - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, -#endif - -#ifdef LOAD_FONT7 - {(const uint8_t *)chrtbl_f7s, widtbl_f7s, chr_hgt_f7s, baseline_f7s}, -#else - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0}, -#endif - -#ifdef LOAD_FONT8 - {(const uint8_t *)chrtbl_f72, widtbl_f72, chr_hgt_f72, baseline_f72} -#else - {(const uint8_t *)chrtbl_null, widtbl_null, 0, 0} -#endif -}; - -/*************************************************************************************** -** Section 5: Font datum enumeration -***************************************************************************************/ -// These enumerate the text plotting alignment (reference datum point) -#define TL_DATUM 0 // Top left (default) -#define TC_DATUM 1 // Top centre -#define TR_DATUM 2 // Top right -#define ML_DATUM 3 // Middle left -#define CL_DATUM 3 // Centre left, same as above -#define MC_DATUM 4 // Middle centre -#define CC_DATUM 4 // Centre centre, same as above -#define MR_DATUM 5 // Middle right -#define CR_DATUM 5 // Centre right, same as above -#define BL_DATUM 6 // Bottom left -#define BC_DATUM 7 // Bottom centre -#define BR_DATUM 8 // Bottom right -#define L_BASELINE \ - 9 // Left character baseline (Line the 'A' character would sit on) -#define C_BASELINE 10 // Centre character baseline -#define R_BASELINE 11 // Right character baseline - -/*************************************************************************************** -** Section 6: Colour enumeration -***************************************************************************************/ -// Default color definitions -#define TFT_BLACK 0x0000 /* 0, 0, 0 */ -#define TFT_NAVY 0x000F /* 0, 0, 128 */ -#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */ -#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */ -#define TFT_MAROON 0x7800 /* 128, 0, 0 */ -#define TFT_PURPLE 0x780F /* 128, 0, 128 */ -#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */ -#define TFT_LIGHTGREY 0xD69A /* 211, 211, 211 */ -#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */ -#define TFT_BLUE 0x001F /* 0, 0, 255 */ -#define TFT_GREEN 0x07E0 /* 0, 255, 0 */ -#define TFT_CYAN 0x07FF /* 0, 255, 255 */ -#define TFT_RED 0xF800 /* 255, 0, 0 */ -#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */ -#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */ -#define TFT_WHITE 0xFFFF /* 255, 255, 255 */ -#define TFT_ORANGE 0xFDA0 /* 255, 180, 0 */ -#define TFT_GREENYELLOW 0xB7E0 /* 180, 255, 0 */ -#define TFT_PINK 0xFE19 /* 255, 192, 203 */ // Lighter pink, was 0xFC9F -#define TFT_BROWN 0x9A60 /* 150, 75, 0 */ -#define TFT_GOLD 0xFEA0 /* 255, 215, 0 */ -#define TFT_SILVER 0xC618 /* 192, 192, 192 */ -#define TFT_SKYBLUE 0x867D /* 135, 206, 235 */ -#define TFT_VIOLET 0x915C /* 180, 46, 226 */ - -// Next is a special 16 bit colour value that encodes to 8 bits -// and will then decode back to the same 16 bit value. -// Convenient for 8 bit and 16 bit transparent sprites. -#define TFT_TRANSPARENT 0x0120 // This is actually a dark green - -// Default palette for 4 bit colour sprites -static const uint16_t default_4bit_palette[] PROGMEM = { - TFT_BLACK, // 0 ^ - TFT_BROWN, // 1 | - TFT_RED, // 2 | - TFT_ORANGE, // 3 | - TFT_YELLOW, // 4 Colours 0-9 follow the resistor colour code! - TFT_GREEN, // 5 | - TFT_BLUE, // 6 | - TFT_PURPLE, // 7 | - TFT_DARKGREY, // 8 | - TFT_WHITE, // 9 v - TFT_CYAN, // 10 Blue+green mix - TFT_MAGENTA, // 11 Blue+red mix - TFT_MAROON, // 12 Darker red colour - TFT_DARKGREEN, // 13 Darker green colour - TFT_NAVY, // 14 Darker blue colour - TFT_PINK // 15 -}; - -/*************************************************************************************** -** Section 7: Diagnostic support -***************************************************************************************/ -// #define TFT_eSPI_DEBUG // Switch on debug support serial messages (not -// used yet) #define TFT_eSPI_FNx_DEBUG // Switch on debug support for function -// "x" (not used yet) - -// This structure allows sketches to retrieve the user setup parameters at -// runtime by calling getSetup(), zero impact on code size unless used, mainly -// for diagnostics -typedef struct { - String version = TFT_ESPI_VERSION; - String setup_info; // Setup reference name available to use in a user setup - uint32_t setup_id; // ID available to use in a user setup - int32_t esp; // Processor code - uint8_t trans; // SPI transaction support - uint8_t serial; // Serial (SPI) or parallel - uint8_t port; // SPI port - uint8_t overlap; // ESP8266 overlap mode - uint8_t interface; // Interface type - - uint16_t tft_driver; // Hexadecimal code - uint16_t tft_width; // Rotation 0 width and height - uint16_t tft_height; - - uint8_t r0_x_offset; // Display offsets, not all used yet - uint8_t r0_y_offset; - uint8_t r1_x_offset; - uint8_t r1_y_offset; - uint8_t r2_x_offset; - uint8_t r2_y_offset; - uint8_t r3_x_offset; - uint8_t r3_y_offset; - - int8_t pin_tft_mosi; // SPI pins - int8_t pin_tft_miso; - int8_t pin_tft_clk; - int8_t pin_tft_cs; - - int8_t pin_tft_dc; // Control pins - int8_t pin_tft_rd; - int8_t pin_tft_wr; - int8_t pin_tft_rst; - - int8_t pin_tft_d0; // Parallel port pins - int8_t pin_tft_d1; - int8_t pin_tft_d2; - int8_t pin_tft_d3; - int8_t pin_tft_d4; - int8_t pin_tft_d5; - int8_t pin_tft_d6; - int8_t pin_tft_d7; - - int8_t pin_tft_led; - int8_t pin_tft_led_on; - - int8_t pin_tch_cs; // Touch chip select pin - - int16_t tft_spi_freq; // TFT write SPI frequency - int16_t tft_rd_freq; // TFT read SPI frequency - int16_t tch_spi_freq; // Touch controller read/write SPI frequency -} setup_t; - -/*************************************************************************************** -** Section 8: Class member and support functions -***************************************************************************************/ -// Swap any type -template -static inline void swap_coord(T &a, T &b) { - T t = a; - a = b; - b = t; -} - -// Callback prototype for smooth font pixel colour read -typedef uint16_t (*getColorCallback)(uint16_t x, uint16_t y); - -// Class functions and variables -class TFT_eSPI : public Print { - friend class TFT_eSprite; // Sprite class has access to protected members - - //--------------------------------------- public - //------------------------------------// - public: - TFT_eSPI(int16_t _W = TFT_WIDTH, int16_t _H = TFT_HEIGHT); - - // init() and begin() are equivalent, begin() included for backwards - // compatibility Sketch defined tab colour option is for ST7735 displays only - void init(uint8_t tc = TAB_COLOUR), begin(uint8_t tc = TAB_COLOUR); - - // These are virtual so the TFT_eSprite class can override them with sprite - // specific functions - virtual void drawPixel(int32_t x, int32_t y, uint32_t color), - drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32_t bg, - uint8_t size), - drawLine(int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color), - drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color), - drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color), - fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color); - - virtual int16_t drawChar(uint16_t uniCode, int32_t x, int32_t y, - uint8_t font), - drawChar(uint16_t uniCode, int32_t x, int32_t y), height(void), - width(void); - - // Read the colour of a pixel at x,y and return value in 565 format - virtual uint16_t readPixel(int32_t x, int32_t y); - - virtual void setWindow(int32_t xs, int32_t ys, int32_t xe, - int32_t ye); // Note: start + end coordinates - - // Push (aka write pixel) colours to the set window - virtual void pushColor(uint16_t color); - - // These are non-inlined to enable override - virtual void begin_nin_write(); - virtual void end_nin_write(); - - void setRotation( - uint8_t r); // Set the display image orientation to 0, 1, 2 or 3 - uint8_t getRotation(void); // Read the current rotation - - void invertDisplay(bool i); // Tell TFT to invert all displayed colours - - // The TFT_eSprite class inherits the following functions (not all are useful - // to Sprite class - void setAddrWindow(int32_t xs, int32_t ys, int32_t w, - int32_t h); // Note: start coordinates + width and height - - // Viewport commands, see "Viewport_Demo" sketch - void setViewport(int32_t x, int32_t y, int32_t w, int32_t h, - bool vpDatum = true); - bool checkViewport(int32_t x, int32_t y, int32_t w, int32_t h); - int32_t getViewportX(void); - int32_t getViewportY(void); - int32_t getViewportWidth(void); - int32_t getViewportHeight(void); - bool getViewportDatum(void); - void frameViewport(uint16_t color, int32_t w); - void resetViewport(void); - - // Clip input window to viewport bounds, return false if whole area is out of - // bounds - bool clipAddrWindow(int32_t *x, int32_t *y, int32_t *w, int32_t *h); - // Clip input window area to viewport bounds, return false if whole area is - // out of bounds - bool clipWindow(int32_t *xs, int32_t *ys, int32_t *xe, int32_t *ye); - - // Push (aka write pixel) colours to the TFT (use setAddrWindow() first) - void pushColor(uint16_t color, uint32_t len), // Deprecated, use pushBlock() - pushColors(uint16_t *data, uint32_t len, - bool swap = true), // With byte swap option - pushColors(uint8_t *data, uint32_t len); // Deprecated, use pushPixels() - - // Write a solid block of a single colour - void pushBlock(uint16_t color, uint32_t len); - - // Write a set of pixels stored in memory, use setSwapBytes(true/false) - // function to correct endianess - void pushPixels(const void *data_in, uint32_t len); - -// Support for half duplex (bi-directional SDA) SPI bus where MOSI must be -// switched to input -#ifdef TFT_SDA_READ -#if defined(TFT_eSPI_ENABLE_8_BIT_READ) - uint8_t tft_Read_8(void); // Read 8 bit value from TFT command register -#endif - void begin_SDA_Read(void); // Begin a read on a half duplex (bi-directional - // SDA) SPI bus - sets MOSI to input - void end_SDA_Read(void); // Restore MOSI to output -#endif - - // Graphics drawing - void fillScreen(uint32_t color), - drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color), - drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, - uint32_t color), - fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, - uint32_t color); - - void fillRectVGradient(int16_t x, int16_t y, int16_t w, int16_t h, - uint32_t color1, uint32_t color2); - void fillRectHGradient(int16_t x, int16_t y, int16_t w, int16_t h, - uint32_t color1, uint32_t color2); - - // Draw a pixel blended with the pixel colour on the TFT or sprite, return - // blended colour If bg_color is not included the background pixel colour will - // be read from TFT or sprite - uint16_t drawPixel(int32_t x, int32_t y, uint32_t color, uint8_t alpha, - uint32_t bg_color = 0x00FFFFFF); - - // Draw a small anti-aliased filled circle at ax,ay with radius r (uses - // drawWideLine) If bg_color is not included the background pixel colour will - // be read from TFT or sprite - void drawSpot(float ax, float ay, float r, uint32_t fg_color, - uint32_t bg_color = 0x00FFFFFF); - - // Draw an anti-aliased filled circle at x, y with radius r - // If bg_color is not included the background pixel colour will be read from - // TFT or sprite - void fillSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t color, - uint32_t bg_color = 0x00FFFFFF); - - void fillSmoothRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, - int32_t radius, uint32_t color, - uint32_t bg_color = 0x00FFFFFF); - - // Draw an anti-aliased wide line from ax,ay to bx,by width wd with radiused - // ends (radius is wd/2) If bg_color is not included the background pixel - // colour will be read from TFT or sprite - void drawWideLine(float ax, float ay, float bx, float by, float wd, - uint32_t fg_color, uint32_t bg_color = 0x00FFFFFF); - - // Draw an anti-aliased wide line from ax,ay to bx,by with different width at - // each end aw, bw and with radiused ends If bg_color is not included the - // background pixel colour will be read from TFT or sprite - void drawWedgeLine(float ax, float ay, float bx, float by, float aw, float bw, - uint32_t fg_color, uint32_t bg_color = 0x00FFFFFF); - - void drawCircle(int32_t x, int32_t y, int32_t r, uint32_t color), - drawCircleHelper(int32_t x, int32_t y, int32_t r, uint8_t cornername, - uint32_t color), - fillCircle(int32_t x, int32_t y, int32_t r, uint32_t color), - fillCircleHelper(int32_t x, int32_t y, int32_t r, uint8_t cornername, - int32_t delta, uint32_t color), - - drawEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color), - fillEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color), - - // Corner 1 Corner 2 Corner 3 - drawTriangle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, - int32_t y3, uint32_t color), - fillTriangle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, - int32_t y3, uint32_t color); - - // Image rendering - // Swap the byte order for pushImage() and pushPixels() - corrects endianness - void setSwapBytes(bool swap); - bool getSwapBytes(void); - - // Draw bitmap - void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, - int16_t h, uint16_t fgcolor), - drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, - int16_t h, uint16_t fgcolor, uint16_t bgcolor), - drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, - int16_t h, uint16_t fgcolor), - drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, - int16_t h, uint16_t fgcolor, uint16_t bgcolor), - setBitmapColor( - uint16_t fgcolor, - uint16_t bgcolor); // Define the 2 colours for 1bpp sprites - - // Set TFT pivot point (use when rendering rotated sprites) - void setPivot(int16_t x, int16_t y); - int16_t getPivotX(void), // Get pivot x - getPivotY(void); // Get pivot y - - // The next functions can be used as a pair to copy screen blocks (or - // horizontal/vertical lines) to another location Read a block of pixels to a - // data buffer, buffer is 16 bit and the size must be at least w * h - void readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data); - // Write a block of pixels to the screen which have been read by readRect() - void pushRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data); - - // These are used to render images or sprites stored in RAM arrays (used by - // Sprite class for 16bpp Sprites) - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data); - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, - uint16_t transparent); - - // These are used to render images stored in FLASH (PROGMEM) - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, - const uint16_t *data, uint16_t transparent); - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, - const uint16_t *data); - - // These are used by Sprite class pushSprite() member function for 1, 4 and 8 - // bits per pixel (bpp) colours They are not intended to be used with user - // sketches (but could be) Set bpp8 true for 8bpp sprites, false otherwise. - // The cmap pointer must be specified for 4bpp - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, - bool bpp8 = true, uint16_t *cmap = nullptr); - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, - uint8_t transparent, bool bpp8 = true, - uint16_t *cmap = nullptr); - // FLASH version - void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, - const uint8_t *data, bool bpp8, uint16_t *cmap = nullptr); - // This next function has been used successfully to dump the TFT screen to a - // PC for documentation purposes It reads a screen area and returns the 3 RGB - // 8 bit colour values of each pixel in the buffer Set w and h to 1 to read 1 - // pixel's colour. The data buffer must be at least w * h * 3 bytes - void readRectRGB(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data); - - // Text rendering - value returned is the pixel width of the rendered text - int16_t drawNumber(long intNumber, int32_t x, int32_t y, - uint8_t font), // Draw integer using specified font number - drawNumber(long intNumber, int32_t x, - int32_t y), // Draw integer using current font - - // Decimal is the number of decimal places to render - // Use with setTextDatum() to position values on TFT, and setTextPadding() - // to blank old displayed values - drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y, - uint8_t font), // Draw float using specified font number - drawFloat(float floatNumber, uint8_t decimal, int32_t x, - int32_t y), // Draw float using current font - - // Handle char arrays - // Use with setTextDatum() to position string on TFT, and setTextPadding() - // to blank old displayed strings - drawString(const char *string, int32_t x, int32_t y, - uint8_t font), // Draw string using specified font number - drawString(const char *string, int32_t x, - int32_t y), // Draw string using current font - drawString(const String &string, int32_t x, int32_t y, - uint8_t font), // Draw string using specified font number - drawString(const String &string, int32_t x, - int32_t y), // Draw string using current font - - drawCentreString( - const char *string, int32_t x, int32_t y, - uint8_t font), // Deprecated, use setTextDatum() and drawString() - drawRightString( - const char *string, int32_t x, int32_t y, - uint8_t font), // Deprecated, use setTextDatum() and drawString() - drawCentreString( - const String &string, int32_t x, int32_t y, - uint8_t font), // Deprecated, use setTextDatum() and drawString() - drawRightString( - const String &string, int32_t x, int32_t y, - uint8_t font); // Deprecated, use setTextDatum() and drawString() - - // Text rendering and font handling support funtions - void setCursor(int16_t x, int16_t y), // Set cursor for tft.print() - setCursor(int16_t x, int16_t y, - uint8_t font); // Set cursor and font number for tft.print() - - int16_t getCursorX( - void), // Read current cursor x position (moves with tft.print()) - getCursorY(void); // Read current cursor y position - - void setTextColor(uint16_t color), // Set character (glyph) color only - // (background not over-written) - setTextColor(uint16_t fgcolor, uint16_t bgcolor, - bool bgfill = false), // Set character (glyph) foreground - // and background colour, optional - // background fill for smooth fonts - setTextSize(uint8_t size); // Set character size multiplier (this - // increases pixel size) - - void setTextWrap(bool wrapX, - bool wrapY = false); // Turn on/off wrapping of text in TFT - // width and/or height - - void setTextDatum(uint8_t datum); // Set text datum position (default is top - // left), see Section 6 above - uint8_t getTextDatum(void); - - void setTextPadding( - uint16_t x_width); // Set text padding (background blanking/over-write) - // width in pixels - uint16_t getTextPadding(void); // Get text padding - -#ifdef LOAD_GFXFF - void setFreeFont(const GFXfont *f = NULL), // Select the GFX Free Font - setTextFont(uint8_t font); // Set the font number to use in future -#else - void setFreeFont( - uint8_t font), // Not used, historical fix to prevent an error - setTextFont(uint8_t font); // Set the font number to use in future -#endif - - int16_t textWidth( - const char *string, - uint8_t font), // Returns pixel width of string in specified font - textWidth( - const char *string), // Returns pixel width of string in current font - textWidth(const String &string, - uint8_t font), // As above for String types - textWidth(const String &string), - fontHeight( - int16_t font), // Returns pixel height of string in specified font - fontHeight(void); // Returns pixel width of string in current font - - // Used by library and Smooth font class to extract Unicode point codes from a - // UTF8 encoded string - uint16_t decodeUTF8(uint8_t *buf, uint16_t *index, uint16_t remaining), - decodeUTF8(uint8_t c); - - // Support function to UTF8 decode and draw characters piped through print - // stream - size_t write(uint8_t); - // size_t write(const uint8_t *buf, size_t len); - - // Used by Smooth font class to fetch a pixel colour for the anti-aliasing - void setCallback(getColorCallback getCol); - - uint16_t fontsLoaded( - void); // Each bit in returned value represents a font type that is - // loaded - used for debug/error handling only - - // Low level read/write - void spiwrite(uint8_t); // legacy support only -#ifndef RM68120_DRIVER - void writecommand( - uint8_t c); // Send a command, function resets DC/RS high ready for data -#else - void writecommand( - uint16_t c); // Send a command, function resets DC/RS high ready for data - void writeRegister(uint16_t c, - uint8_t d); // Write data to 16 bit command register -#endif - void writedata(uint8_t d); // Send data with DC/RS set high - - void commandList(const uint8_t *addr); // Send a initialisation sequence to - // TFT stored in FLASH - - uint8_t readcommand8(uint8_t cmd_function, - uint8_t index = 0); // read 8 bits from TFT - uint16_t readcommand16(uint8_t cmd_function, - uint8_t index = 0); // read 16 bits from TFT - uint32_t readcommand32(uint8_t cmd_function, - uint8_t index = 0); // read 32 bits from TFT - - // Colour conversion - // Convert 8 bit red, green and blue to 16 bits - uint16_t color565(uint8_t red, uint8_t green, uint8_t blue); - - // Convert 8 bit colour to 16 bits - uint16_t color8to16(uint8_t color332); - // Convert 16 bit colour to 8 bits - uint8_t color16to8(uint16_t color565); - - // Convert 16 bit colour to/from 24 bit, R+G+B concatenated into LS 24 bits - uint32_t color16to24(uint16_t color565); - uint32_t color24to16(uint32_t color888); - - // Alpha blend 2 colours, see generic "alphaBlend_Test" example - // alpha = 0 = 100% background colour - // alpha = 255 = 100% foreground colour - uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc); - // 16 bit colour alphaBlend with alpha dither (dither reduces colour banding) - uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc, - uint8_t dither); - // 24 bit colour alphaBlend with optional alpha dither - uint32_t alphaBlend24(uint8_t alpha, uint32_t fgc, uint32_t bgc, - uint8_t dither = 0); - - // DMA support functions - these are currently just for SPI writes when using - // the ESP32 or STM32 processors Bear in mind DMA will only be of benefit in - // particular circumstances and can be tricky to manage by noobs. The - // functions have however been designed to be noob friendly and avoid a few - // DMA behaviour "gotchas". - // - // At best you will get a 2x TFT rendering performance improvement when using - // DMA because this library handles the SPI bus so efficiently during normal - // (non DMA) transfers. The best performance improvement scenario is the DMA - // transfer time is exactly the same as the time it takes for the processor to - // prepare the next image buffer and initiate another DMA transfer. - // - // DMA transfer to the TFT is done while the processor moves on to handle - // other tasks. Bear this in mind and watch out for "gotchas" like the image - // buffer going out of scope as the processor leaves a function or its content - // being changed while the DMA engine is reading it. - // - // The compiler MAY change the implied scope of a buffer which has been set - // aside by creating an array. For example a buffer defined before a - // "for-next" loop may get de-allocated when the loop ends. To avoid this use, - // for example, malloc() and free() to take control of when the buffer space - // is available and ensure it is not released until DMA is complete. - // - // Clearly you should not modify a buffer that is being DMA'ed to the TFT - // until the DMA is over. Use the dmaBusy() function to check this. Use - // tft.startWrite() before invoking DMA so the TFT chip select stays low. If - // you use tft.endWrite() before DMA is complete then the endWrite function - // will wait for the DMA to complete, so this may defeat any DMA performance - // benefit. - // - - bool initDMA( - bool ctrl_cs = - false); // Initialise the DMA engine and attach to SPI bus - - // typically used in setup() Parameter "true" enables DMA - // engine control of TFT chip select (ESP32 only) For ESP32 - // only, TFT reads will not work if parameter is true - void deInitDMA(void); // De-initialise the DMA engine and detach from SPI bus - // - typically not used - - // Push an image to the TFT using DMA, buffer is optional and grabs (double - // buffers) a copy of the image Use the buffer if the image data will get - // over-written or destroyed while DMA is in progress If swapping colour bytes - // is defined, and the double buffer option is NOT used, then the bytes in the - // original data image will be swapped by the function before DMA is - // initiated. The function will wait for the last DMA to complete if it is - // called while a previous DMA is still in progress, this simplifies the - // sketch and helps avoid "gotchas". - void pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, - uint16_t *buffer = nullptr); - -#if defined(ESP32) // ESP32 only at the moment - // For case where pointer is a const and the image data must not be modified - // (clipped or byte swapped) - void pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, - uint16_t const *data); -#endif - // Push a block of pixels into a window set up using setAddrWindow() - void pushPixelsDMA(uint16_t *image, uint32_t len); - - // Check if the DMA is complete - use while(tft.dmaBusy); for a blocking wait - bool dmaBusy(void); // returns true if DMA is still in progress - void dmaWait(void); // wait until DMA is complete - - bool DMA_Enabled = false; // Flag for DMA enabled state - uint8_t spiBusyCheck = 0; // Number of ESP32 transfer buffers to check - - // Bare metal functions - void startWrite(void); // Begin SPI transaction - void writeColor(uint16_t color, uint32_t len); // Deprecated, use pushBlock() - void endWrite(void); // End SPI transaction - - // Set/get an arbitrary library configuration attribute or option - // Use to switch ON/OFF capabilities such as UTF8 decoding - each - // attribute has a unique ID id = 0: reserved - may be used in future to - // reset all attributes to a default state id = 1: Turn on (a=true) or - // off (a=false) GLCD cp437 font character error correction id = 2: Turn - // on (a=true) or off (a=false) UTF8 decoding id = 3: Enable or disable - // use of ESP32 PSRAM (if available) -#define CP437_SWITCH 1 -#define UTF8_SWITCH 2 -#define PSRAM_ENABLE 3 - void setAttribute(uint8_t id = 0, uint8_t a = 0); // Set attribute value - uint8_t getAttribute(uint8_t id = 0); // Get attribute value - - // Used for diagnostic sketch to see library setup adopted by compiler, see - // Section 7 above - void getSetup( - setup_t &tft_settings); // Sketch provides the instance to populate - bool verifySetupID(uint32_t id); - - // Global variables - static SPIClass &getSPIinstance(void); // Get SPI class handle - - uint32_t textcolor, textbgcolor; // Text foreground and background colours - - uint32_t bitmap_fg, - bitmap_bg; // Bitmap foreground (bit=1) and background (bit=0) colours - - uint8_t textfont, // Current selected font number - textsize, // Current font size multiplier - textdatum, // Text reference datum - rotation; // Display rotation (0-3) - - uint8_t decoderState = 0; // UTF8 decoder state - not for user access - uint16_t decoderBuffer; // Unicode code-point buffer - not for user access - - //--------------------------------------- private - //------------------------------------// - private: - // Legacy begin and end prototypes - deprecated TODO: delete - void spi_begin(); - void spi_end(); - - void spi_begin_read(); - void spi_end_read(); - - // New begin and end prototypes - // begin/end a TFT write transaction - // For SPI bus the transmit clock rate is set - inline void begin_tft_write() __attribute__((always_inline)); - inline void end_tft_write() __attribute__((always_inline)); - - // begin/end a TFT read transaction - // For SPI bus: begin lowers SPI clock rate, end reinstates transmit clock - // rate - inline void begin_tft_read() __attribute__((always_inline)); - inline void end_tft_read() __attribute__((always_inline)); - - // Initialise the data bus GPIO and hardware interfaces - void initBus(void); - - // Temporary library development function TODO: remove need for this - void pushSwapBytePixels(const void *data_in, uint32_t len); - - // Same as setAddrWindow but exits with CGRAM in read mode - void readAddrWindow(int32_t xs, int32_t ys, int32_t w, int32_t h); - - // Byte read prototype - uint8_t readByte(void); - - // GPIO parallel bus input/output direction control - void busDir(uint32_t mask, uint8_t mode); - - // Single GPIO input/output direction control - void gpioMode(uint8_t gpio, uint8_t mode); - - // Helper function: calculate distance of a point from a finite length line - // between two points - float wedgeLineDistance(float pax, float pay, float bax, float bay, float dr); - - // Display variant settings - uint8_t tabcolor, // ST7735 screen protector "tab" colour (now invalid) - colstart = 0, - rowstart = 0; // Screen display area to CGRAM area coordinate offsets - - // Port and pin masks for control signals (ESP826 only) - TODO: remove need - // for this - volatile uint32_t *dcport, *csport; - uint32_t cspinmask, dcpinmask, wrpinmask, sclkpinmask; - -#if defined(ESP32_PARALLEL) - // Bit masks for ESP32 parallel bus interface - uint32_t xclr_mask, xdir_mask; // Port set/clear and direction control masks - - // Lookup table for ESP32 parallel bus interface uses 1kbyte RAM, - uint32_t xset_mask[256]; // Makes Sprite rendering test 33% faster, for - // slower macro equivalent see commented out #define - // set_mask(C) within TFT_eSPI_ESP32.h -#endif - - // uint32_t lastColor = 0xFFFF; // Last colour - used to minimise bit shifting - // overhead - - getColorCallback getColor = nullptr; // Smooth font callback function pointer - - bool locked, inTransaction, - lockTransaction; // SPI transaction and mutex lock flags - - //-------------------------------------- protected - //----------------------------------// - protected: - // int32_t win_xe, win_ye; // Window end coords - not needed - - int32_t _init_width, - _init_height; // Display w/h as input, used by setRotation() - int32_t _width, _height; // Display w/h as modified by current rotation - int32_t addr_row, - addr_col; // Window position - used to minimise window commands - - int16_t _xPivot; // TFT x pivot point coordinate for rotated Sprites - int16_t _yPivot; // TFT x pivot point coordinate for rotated Sprites - - // Viewport variables - int32_t _vpX, _vpY, _vpW, - _vpH; // Note: x start, y start, x end + 1, y end + 1 - int32_t _xDatum; - int32_t _yDatum; - int32_t _xWidth; - int32_t _yHeight; - bool _vpDatum; - bool _vpOoB; - - int32_t cursor_x, cursor_y, padX; // Text cursor x,y and padding setting - int32_t bg_cursor_x; // Background fill cursor - int32_t last_cursor_x; // Previous text cursor position when fill used - - uint32_t fontsloaded; // Bit field of fonts loaded - - uint8_t glyph_ab, // Smooth font glyph delta Y (height) above baseline - glyph_bb; // Smooth font glyph delta Y (height) below baseline - - bool isDigits; // adjust bounding box for numbers to reduce visual jiggling - bool textwrapX, textwrapY; // If set, 'wrap' text at right and optionally - // bottom edge of display - bool _swapBytes; // Swap the byte order for TFT pushImage() - - bool _booted; // init() or begin() has already run once - - // User sketch manages these via set/getAttribute() - bool _cp437; // If set, use correct CP437 charset (default is ON) - bool _utf8; // If set, use UTF-8 decoder in print stream 'write()' function - // (default ON) - bool _psram_enable; // Enable PSRAM use for library functions (TBD) and - // Sprites - - uint32_t _lastColor; // Buffered value of last colour used - - bool _fillbg; // Fill background flag (just for for smooth fonts at the - // moment) - -#if defined(SSD1963_DRIVER) - uint16_t Cswap; // Swap buffer for SSD1963 - uint8_t r6, g6, b6; // RGB buffer for SSD1963 -#endif - -#ifdef LOAD_GFXFF - GFXfont *gfxFont; -#endif - -/*************************************************************************************** -** Section 9: TFT_eSPI class conditional extensions -***************************************************************************************/ -// Load the Touch extension -#ifdef TOUCH_CS -#if defined(TFT_PARALLEL_8_BIT) || defined(RP2040_PIO_INTERFACE) -#if !defined(DISABLE_ALL_LIBRARY_WARNINGS) -#error >>>>------>> Touch functions not supported in 8/16 bit parallel mode or with RP2040 PIO. -#endif -#else -#include "Extensions/Touch.h" // Loaded if TOUCH_CS is defined by user -#endif -#else -#if !defined(DISABLE_ALL_LIBRARY_WARNINGS) - // #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI - // touch functions will not be available! -#endif -#endif - -// Load the Anti-aliased font extension -#ifdef SMOOTH_FONT -#include "Extensions/Smooth_font.h" // Loaded if SMOOTH_FONT is defined by user -#endif - -}; // End of class TFT_eSPI - -/*************************************************************************************** -** Section 10: Additional extension classes -***************************************************************************************/ -// Load the Button Class -#include "Extensions/Button.h" - -// Load the Sprite Class -#include "Extensions/Sprite.h" - -#endif // ends #ifndef _TFT_eSPIH_ diff --git a/libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.vlw b/libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.vlw deleted file mode 100644 index 2872fd554bbf34f5e1268770dd8ea3cf55cecdfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25287 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 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup17_ePaper.h b/libraries/TFT_eSPI-2.4.72/User_Setups/Setup17_ePaper.h deleted file mode 100644 index c86b08a0..00000000 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup17_ePaper.h +++ /dev/null @@ -1,41 +0,0 @@ -// See SetupX_Template.h for all options available -#define USER_SETUP_ID 17 - -#define EPD_DRIVER // ePaper driver - - -// READ THIS READ THIS READ THIS READ THIS READ THIS READ THIS -// Install the ePaper library for your own display size and type -// from here: -// https://github.com/Bodmer/EPD_Libraries - -// Note: Pin allocations for the ePaper signals are defined in -// the ePaper library's epdif.h file. There follows the default -// pins already included in epdif.h file for the ESP8266: - -/////////////////////////////////////////////////////////////////// -// For ESP8266 connect as follows: // -// Display 3.3V to NodeMCU 3V3 // -// Display GND to NodeMCU GND // -// // -// Display GPIO NodeMCU pin // -// BUSY 5 D1 // -// RESET 4 D2 // -// DC 0 D3 // -// CS 2 D4 // -// CLK 14 D5 // -// D6 (MISO not connected to display) // -// DIN 13 D7 // -// // -/////////////////////////////////////////////////////////////////// - - -#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH -#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters -#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters -#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm -#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. -#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. -#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts - -#define SMOOTH_FONT diff --git a/libraries/TFT_eSPI-2.4.72/.gitattributes b/libraries/TFT_eSPI-2.5.43/.gitattributes similarity index 100% rename from libraries/TFT_eSPI-2.4.72/.gitattributes rename to libraries/TFT_eSPI-2.5.43/.gitattributes diff --git a/libraries/TFT_eSPI-2.4.72/.github/ISSUE_TEMPLATE/issue-template.md b/libraries/TFT_eSPI-2.5.43/.github/ISSUE_TEMPLATE/issue-template.md similarity index 67% rename from libraries/TFT_eSPI-2.4.72/.github/ISSUE_TEMPLATE/issue-template.md rename to libraries/TFT_eSPI-2.5.43/.github/ISSUE_TEMPLATE/issue-template.md index 90b1e064..9855d3ff 100644 --- a/libraries/TFT_eSPI-2.4.72/.github/ISSUE_TEMPLATE/issue-template.md +++ b/libraries/TFT_eSPI-2.5.43/.github/ISSUE_TEMPLATE/issue-template.md @@ -7,6 +7,8 @@ assignees: '' --- +Only raise issues for problems with the library and/or provided examples. Post questions, comments and useful tips etc in the "Discussions" section. + To minimise effort to resolve issues the following should be provided as a minimum: 1. A description of the problem and the conditions that cause it to occur 2. IDE (e.g. Arduino or PlatformIO) @@ -22,9 +24,11 @@ Plus further information as appropriate to the problem: 3. A zip file containing a simple and complete example sketch that demonstrates the problem but needs no special hardware sensors or libraries. 4. Screen shot pictures showing the problem (just drag and drop in message window) -The idea is to provide sufficient information so I can setup the exact same (or sufficiently similar) scenario to investigate and resolve the issue. +The idea is to provide sufficient information so I can setup the exact same (or sufficiently similar) scenario to investigate and resolve the issue without having a tedious ping-pong of Q&A. -Put three ticks ( ` character on key next to "1" key) at the start and end of short pasted code segments to avoid format/markup anomolies and to use a monspaced font. Example: +DO NOT paste code directly into the issue. To correctly format code put three ticks ( ` character on key next to "1" key) at the start and end of short pasted code segments to avoid format/markup anomolies. [See here:](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code) + +Example output: ``` Serial.begin(115200); diff --git a/libraries/TFT_eSPI-2.4.72/.gitignore b/libraries/TFT_eSPI-2.5.43/.gitignore similarity index 92% rename from libraries/TFT_eSPI-2.4.72/.gitignore rename to libraries/TFT_eSPI-2.5.43/.gitignore index cd2946ad..55bda4cb 100644 --- a/libraries/TFT_eSPI-2.4.72/.gitignore +++ b/libraries/TFT_eSPI-2.5.43/.gitignore @@ -17,6 +17,11 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk +# Arduino debug +debug.cfg +debug_custom.json +*.svd + # ========================= # Operating System Files # ========================= diff --git a/libraries/TFT_eSPI-2.4.72/CMakeLists.txt b/libraries/TFT_eSPI-2.5.43/CMakeLists.txt similarity index 100% rename from libraries/TFT_eSPI-2.4.72/CMakeLists.txt rename to libraries/TFT_eSPI-2.5.43/CMakeLists.txt diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Button.cpp b/libraries/TFT_eSPI-2.5.43/Extensions/Button.cpp similarity index 98% rename from libraries/TFT_eSPI-2.4.72/Extensions/Button.cpp rename to libraries/TFT_eSPI-2.5.43/Extensions/Button.cpp index 475c631f..9c93098f 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Button.cpp +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Button.cpp @@ -8,6 +8,8 @@ TFT_eSPI_Button::TFT_eSPI_Button(void) { _yd = 0; _textdatum = MC_DATUM; _label[9] = '\0'; + currstate = false; + laststate = false; } // Classic initButton() function: pass center & size diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Button.h b/libraries/TFT_eSPI-2.5.43/Extensions/Button.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Extensions/Button.h rename to libraries/TFT_eSPI-2.5.43/Extensions/Button.h index 7e0c5097..3a0e2d56 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Button.h +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Button.h @@ -6,8 +6,8 @@ // within button ***************************************************************************************/ -class TFT_eSPI_Button : public TFT_eSPI { - +class TFT_eSPI_Button +{ public: TFT_eSPI_Button(void); // "Classic" initButton() uses centre & size diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Smooth_font.cpp b/libraries/TFT_eSPI-2.5.43/Extensions/Smooth_font.cpp similarity index 96% rename from libraries/TFT_eSPI-2.4.72/Extensions/Smooth_font.cpp rename to libraries/TFT_eSPI-2.5.43/Extensions/Smooth_font.cpp index d1915a48..c67204ac 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Smooth_font.cpp +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Smooth_font.cpp @@ -48,7 +48,7 @@ void TFT_eSPI::loadFont(String fontName, bool flash) 6. Descent in pixels from baseline to bottom of "p" Next are gCount sets of values for each glyph, each set comprises 7 int32t parameters (28 bytes): - 1. Glyph Unicode stored as a 32 bit value + 1. Glyph Unicode stored as a 32-bit value 2. Height of bitmap bounding box 3. Width of bitmap bounding box 4. gxAdvance for cursor (setWidth in Processing) @@ -57,7 +57,7 @@ void TFT_eSPI::loadFont(String fontName, bool flash) 7. padding value, typically 0 The bitmaps start next at 24 + (28 * gCount) bytes from the start of the file. - Each pixel is 1 byte, an 8 bit Alpha value which represents the transparency from + Each pixel is 1 byte, an 8-bit Alpha value which represents the transparency from 0xFF foreground colour, 0x00 background. The library uses a linear interpolation between the foreground and background RGB component colours. e.g. pixelRed = ((fgRed * alpha) + (bgRed * (255 - alpha))/255 @@ -158,7 +158,7 @@ void TFT_eSPI::loadMetrics(void) #if defined (ESP32) && defined (CONFIG_SPIRAM_SUPPORT) if ( psramFound() ) { - gUnicode = (uint16_t*)ps_malloc( gFont.gCount * 2); // Unicode 16 bit Basic Multilingual Plane (0-FFFF) + gUnicode = (uint16_t*)ps_malloc( gFont.gCount * 2); // Unicode 16-bit Basic Multilingual Plane (0-FFFF) gHeight = (uint8_t*)ps_malloc( gFont.gCount ); // Height of glyph gWidth = (uint8_t*)ps_malloc( gFont.gCount ); // Width of glyph gxAdvance = (uint8_t*)ps_malloc( gFont.gCount ); // xAdvance - to move x cursor @@ -169,7 +169,7 @@ void TFT_eSPI::loadMetrics(void) else #endif { - gUnicode = (uint16_t*)malloc( gFont.gCount * 2); // Unicode 16 bit Basic Multilingual Plane (0-FFFF) + gUnicode = (uint16_t*)malloc( gFont.gCount * 2); // Unicode 16-bit Basic Multilingual Plane (0-FFFF) gHeight = (uint8_t*)malloc( gFont.gCount ); // Height of glyph gWidth = (uint8_t*)malloc( gFont.gCount ); // Width of glyph gxAdvance = (uint8_t*)malloc( gFont.gCount ); // xAdvance - to move x cursor @@ -308,7 +308,7 @@ void TFT_eSPI::unloadFont( void ) /*************************************************************************************** ** Function name: readInt32 -** Description: Get a 32 bit integer from the font file +** Description: Get a 32-bit integer from the font file *************************************************************************************x*/ uint32_t TFT_eSPI::readInt32(void) { @@ -316,18 +316,18 @@ uint32_t TFT_eSPI::readInt32(void) #ifdef FONT_FS_AVAILABLE if (fs_font) { - val = fontFile.read() << 24; - val |= fontFile.read() << 16; - val |= fontFile.read() << 8; - val |= fontFile.read(); + val = (uint32_t)fontFile.read() << 24; + val |= (uint32_t)fontFile.read() << 16; + val |= (uint32_t)fontFile.read() << 8; + val |= (uint32_t)fontFile.read(); } else #endif { - val = pgm_read_byte(fontPtr++) << 24; - val |= pgm_read_byte(fontPtr++) << 16; - val |= pgm_read_byte(fontPtr++) << 8; - val |= pgm_read_byte(fontPtr++); + val = (uint32_t)pgm_read_byte(fontPtr++) << 24; + val |= (uint32_t)pgm_read_byte(fontPtr++) << 16; + val |= (uint32_t)pgm_read_byte(fontPtr++) << 8; + val |= (uint32_t)pgm_read_byte(fontPtr++); } return val; diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Smooth_font.h b/libraries/TFT_eSPI-2.5.43/Extensions/Smooth_font.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Extensions/Smooth_font.h rename to libraries/TFT_eSPI-2.5.43/Extensions/Smooth_font.h diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Sprite.cpp b/libraries/TFT_eSPI-2.5.43/Extensions/Sprite.cpp similarity index 98% rename from libraries/TFT_eSPI-2.4.72/Extensions/Sprite.cpp rename to libraries/TFT_eSPI-2.5.43/Extensions/Sprite.cpp index baaa0578..af841cc1 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Sprite.cpp +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Sprite.cpp @@ -47,7 +47,7 @@ TFT_eSprite::TFT_eSprite(TFT_eSPI *tft) ** Function name: createSprite ** Description: Create a sprite (bitmap) of defined width and height ***************************************************************************************/ -// cast returned value to (uint8_t*) for 8 bit or (uint16_t*) for 16 bit colours +// cast returned value to (uint8_t*) for 8-bit or (uint16_t*) for 16-bit colours void* TFT_eSprite::createSprite(int16_t w, int16_t h, uint8_t frames) { @@ -88,8 +88,6 @@ void* TFT_eSprite::createSprite(int16_t w, int16_t h, uint8_t frames) _img8_2 = _img8 + (w * h + 1); } - if ( (_bpp == 4) && (_colorMap == nullptr)) createPalette(default_4bit_palette); - // This is to make it clear what pointer size is expected to be used // but casting in the user sketch is needed due to the use of void* if ( (_bpp == 1) && (frames > 1) ) @@ -101,6 +99,8 @@ void* TFT_eSprite::createSprite(int16_t w, int16_t h, uint8_t frames) if (_img8) { _created = true; + if ( (_bpp == 4) && (_colorMap == nullptr)) createPalette(default_4bit_palette); + rotation = 0; setViewport(0, 0, _dwidth, _dheight); setPivot(_iwidth/2, _iheight/2); @@ -223,10 +223,7 @@ void* TFT_eSprite::callocSprite(int16_t w, int16_t h, uint8_t frames) ***************************************************************************************/ void TFT_eSprite::createPalette(uint16_t colorMap[], uint8_t colors) { - if (_colorMap != nullptr) - { - free(_colorMap); - } + if (!_created) return; if (colorMap == nullptr) { @@ -236,7 +233,7 @@ void TFT_eSprite::createPalette(uint16_t colorMap[], uint8_t colors) } // Allocate and clear memory for 16 color map - _colorMap = (uint16_t *)calloc(16, sizeof(uint16_t)); + if (_colorMap == nullptr) _colorMap = (uint16_t *)calloc(16, sizeof(uint16_t)); if (colors > 16) colors = 16; @@ -254,6 +251,8 @@ void TFT_eSprite::createPalette(uint16_t colorMap[], uint8_t colors) ***************************************************************************************/ void TFT_eSprite::createPalette(const uint16_t colorMap[], uint8_t colors) { + if (!_created) return; + if (colorMap == nullptr) { // Create a color map using the default FLASH map @@ -261,7 +260,7 @@ void TFT_eSprite::createPalette(const uint16_t colorMap[], uint8_t colors) } // Allocate and clear memory for 16 color map - _colorMap = (uint16_t *)calloc(16, sizeof(uint16_t)); + if (_colorMap == nullptr) _colorMap = (uint16_t *)calloc(16, sizeof(uint16_t)); if (colors > 16) colors = 16; @@ -310,13 +309,9 @@ void* TFT_eSprite::setColorDepth(int8_t b) else if ( b > 1 ) _bpp = 4; else _bpp = 1; - // Can't change an existing sprite's colour depth so delete it - if (_created) free(_img8_1); - - // If it existed, re-create the sprite with the new colour depth - if (_created) - { - _created = false; + // Can't change an existing sprite's colour depth so delete and create a new one + if (_created) { + deleteSprite(); return createSprite(_dwidth, _dheight); } @@ -380,7 +375,7 @@ void TFT_eSprite::deleteSprite(void) if (_colorMap != nullptr) { free(_colorMap); - _colorMap = nullptr; + _colorMap = nullptr; } if (_created) @@ -781,7 +776,7 @@ bool TFT_eSprite::pushToSprite(TFT_eSprite *dspr, int32_t x, int32_t y, uint16_t if (transp == rp) { if (pixel_count) { - dspr->pushImage(ox, y, pixel_count, 1, sline_buffer, _bpp); + dspr->pushImage(ox, y, pixel_count, 1, sline_buffer); ox += pixel_count; pixel_count = 0; } @@ -1109,7 +1104,7 @@ void TFT_eSprite::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_ } else if (_bpp == 4) { - // The image is assumed to be 4 bit, where each byte corresponds to two pixels. + // The image is assumed to be 4-bit, where each byte corresponds to two pixels. // much faster when aligned to a byte boundary, because the alternative is slower, requiring // tedious bit operations. @@ -1257,8 +1252,8 @@ void TFT_eSprite::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const u // Intentionally not constrained to viewport area, does not manage 1bpp rotations void TFT_eSprite::setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1) { - if (x0 > x1) swap_coord(x0, x1); - if (y0 > y1) swap_coord(y0, y1); + if (x0 > x1) transpose(x0, x1); + if (y0 > y1) transpose(y0, y1); int32_t w = width(); int32_t h = height(); @@ -1360,10 +1355,10 @@ void TFT_eSprite::writeColor(uint16_t color) { if (!_created ) return; - // Write 16 bit RGB 565 encoded colour to RAM + // Write 16-bit RGB 565 encoded colour to RAM if (_bpp == 16) _img [_xptr + _yptr * _iwidth] = color; - // Write 8 bit RGB 332 encoded colour to RAM + // Write 8-bit RGB 332 encoded colour to RAM else if (_bpp == 8) _img8[_xptr + _yptr * _iwidth] = (uint8_t) color; else if (_bpp == 4) @@ -1700,13 +1695,13 @@ void TFT_eSprite::drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint3 bool steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { - swap_coord(x0, y0); - swap_coord(x1, y1); + transpose(x0, y0); + transpose(x1, y1); } if (x0 > x1) { - swap_coord(x0, x1); - swap_coord(y0, y1); + transpose(x0, x1); + transpose(y0, y1); } int32_t dx = x1 - x0, dy = abs(y1 - y0);; @@ -1990,10 +1985,6 @@ void TFT_eSprite::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uin { if ( _vpOoB || !_created ) return; - if ((x >= _vpW - _xDatum) || // Clip right - (y >= _vpH - _yDatum)) // Clip bottom - return; - if (c < 32) return; #ifdef LOAD_GLCD //>>>>>>>>>>>>>>>>>> @@ -2002,10 +1993,17 @@ void TFT_eSprite::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uin #endif //>>>>>>>>>>>>>>>>>> + if ((x >= _vpW - _xDatum) || // Clip right + (y >= _vpH - _yDatum)) // Clip bottom + return; + if (((x + 6 * size - 1) < (_vpX - _xDatum)) || // Clip left ((y + 8 * size - 1) < (_vpY - _yDatum))) // Clip top return; + if (c > 255) return; + if (!_cp437 && c > 175) c++; + bool fillbg = (bg != color); if ((size==1) && fillbg) @@ -2140,7 +2138,7 @@ void TFT_eSprite::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uin /*************************************************************************************** ** Function name: drawChar -** Description: draw a unicode glyph into the sprite +** Description: draw a Unicode glyph into the sprite ***************************************************************************************/ // TODO: Rationalise with TFT_eSPI // Any UTF-8 decoding must be done before calling drawChar() @@ -2292,7 +2290,7 @@ int16_t TFT_eSprite::drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t fo uint8_t tnp = 0; // Temporary copy of np for while loop uint8_t ts = textsize - 1; // Temporary copy of textsize - // 16 bit pixel count so maximum font size is equivalent to 180x180 pixels in area + // 16-bit pixel count so maximum font size is equivalent to 180x180 pixels in area // w is total number of pixels to plot to fill character block while (pc < w) { line = pgm_read_byte((uint8_t *)flash_address); @@ -2417,6 +2415,8 @@ void TFT_eSprite::drawGlyph(uint16_t code) { uint16_t fg = textcolor; uint16_t bg = textbgcolor; + bool getBG = false; + if (fg == bg) getBG = true; // Check if cursor has moved if (last_cursor_x != cursor_x) @@ -2551,7 +2551,7 @@ void TFT_eSprite::drawGlyph(uint16_t code) else drawFastHLine( fxs, y + cy, fl, fg); fl = 0; } - if (getColor) bg = getColor(x + cx, y + cy); + if (getBG) bg = readPixel(x + cx, y + cy); drawPixel(x + cx, y + cy, alphaBlend(pixel, fg, bg)); } else diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Sprite.h b/libraries/TFT_eSPI-2.5.43/Extensions/Sprite.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/Extensions/Sprite.h rename to libraries/TFT_eSPI-2.5.43/Extensions/Sprite.h index 5f3e59ef..67e29de7 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Sprite.h +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Sprite.h @@ -13,12 +13,12 @@ class TFT_eSprite : public TFT_eSPI { ~TFT_eSprite(void); // Create a sprite of width x height pixels, return a pointer to the RAM area - // Sketch can cast returned value to (uint16_t*) for 16 bit depth if needed + // Sketch can cast returned value to (uint16_t*) for 16-bit depth if needed // RAM required is: // - 1 bit per pixel for 1 bit colour depth - // - 1 nibble per pixel for 4 bit colour (with palette table) - // - 1 byte per pixel for 8 bit colour (332 RGB format) - // - 2 bytes per pixel for 16 bit color depth (565 RGB format) + // - 1 nibble per pixel for 4-bit colour (with palette table) + // - 1 byte per pixel for 8-bit colour (332 RGB format) + // - 2 bytes per pixel for 16-bit color depth (565 RGB format) void* createSprite(int16_t width, int16_t height, uint8_t frames = 1); // Returns a pointer to the sprite or nullptr if not created, user must cast to pointer type @@ -39,7 +39,7 @@ class TFT_eSprite : public TFT_eSPI { void* setColorDepth(int8_t b); int8_t getColorDepth(void); - // Set the palette for a 4 bit depth sprite. Only the first 16 colours in the map are used. + // Set the palette for a 4-bit depth sprite. Only the first 16 colours in the map are used. void createPalette(uint16_t *palette = nullptr, uint8_t colors = 16); // Palette in RAM void createPalette(const uint16_t *palette = nullptr, uint8_t colors = 16); // Palette in FLASH @@ -61,14 +61,14 @@ class TFT_eSprite : public TFT_eSPI { // Fill Sprite with a colour fillSprite(uint32_t color), - // Define a window to push 16 bit colour pixels into in a raster order + // Define a window to push 16-bit colour pixels into in a raster order // Colours are converted to the set Sprite colour bit depth setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1), // Push a color (aka singe pixel) to the sprite's set window area pushColor(uint16_t color), // Push len colors (pixels) to the sprite's set window area pushColor(uint16_t color, uint32_t len), - // Push a pixel pre-formatted as a 1, 4, 8 or 16 bit colour (avoids conversion overhead) + // Push a pixel pre-formatted as a 1, 4, 8 or 16-bit colour (avoids conversion overhead) writeColor(uint16_t color), // Set the scroll zone, top left corner at x,y with defined width and height @@ -139,7 +139,7 @@ class TFT_eSprite : public TFT_eSPI { height(void); // Functions associated with anti-aliased fonts - // Draw a single unicode character using the loaded font + // Draw a single Unicode character using the loaded font void drawGlyph(uint16_t code); // Print string to sprite using loaded font at cursor position void printToSprite(String string); @@ -162,13 +162,13 @@ class TFT_eSprite : public TFT_eSPI { protected: uint8_t _bpp; // bits per pixel (1, 4, 8 or 16) - uint16_t *_img; // pointer to 16 bit sprite - uint8_t *_img8; // pointer to 1 and 8 bit sprite frame 1 or frame 2 - uint8_t *_img4; // pointer to 4 bit sprite (uses color map) + uint16_t *_img; // pointer to 16-bit sprite + uint8_t *_img8; // pointer to 1 and 8-bit sprite frame 1 or frame 2 + uint8_t *_img4; // pointer to 4-bit sprite (uses color map) uint8_t *_img8_1; // pointer to frame 1 uint8_t *_img8_2; // pointer to frame 2 - uint16_t *_colorMap; // color map pointer: 16 entries, used with 4 bit color map. + uint16_t *_colorMap; // color map pointer: 16 entries, used with 4-bit color map. int32_t _sinra; // Sine of rotation angle in fixed point int32_t _cosra; // Cosine of rotation angle in fixed point diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Touch.cpp b/libraries/TFT_eSPI-2.5.43/Extensions/Touch.cpp similarity index 98% rename from libraries/TFT_eSPI-2.4.72/Extensions/Touch.cpp rename to libraries/TFT_eSPI-2.5.43/Extensions/Touch.cpp index 3b20a83d..3d3ed825 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Touch.cpp +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Touch.cpp @@ -10,6 +10,11 @@ // See license in root directory. +// Define a default pressure threshold +#ifndef Z_THRESHOLD + #define Z_THRESHOLD 350 // Touch pressure threshold for validating touches +#endif + /*************************************************************************************** ** Function name: begin_touch_read_write - was spi_begin_touch ** Description: Start transaction and select touch controller @@ -107,6 +112,8 @@ uint16_t TFT_eSPI::getTouchRawZ(void){ end_touch_read_write(); + if (tz == 4095) tz = 0; + return (uint16_t)tz; } @@ -159,7 +166,6 @@ uint8_t TFT_eSPI::validTouch(uint16_t *x, uint16_t *y, uint16_t threshold){ ** Function name: getTouch ** Description: read callibrated position. Return false if not pressed. ***************************************************************************************/ -#define Z_THRESHOLD 350 // Touch pressure threshold for validating touches uint8_t TFT_eSPI::getTouch(uint16_t *x, uint16_t *y, uint16_t threshold){ uint16_t x_tmp, y_tmp; diff --git a/libraries/TFT_eSPI-2.4.72/Extensions/Touch.h b/libraries/TFT_eSPI-2.5.43/Extensions/Touch.h similarity index 85% rename from libraries/TFT_eSPI-2.4.72/Extensions/Touch.h rename to libraries/TFT_eSPI-2.5.43/Extensions/Touch.h index d6916972..9bb81fc8 100644 --- a/libraries/TFT_eSPI-2.4.72/Extensions/Touch.h +++ b/libraries/TFT_eSPI-2.5.43/Extensions/Touch.h @@ -11,7 +11,10 @@ // Get the screen touch coordinates, returns true if screen has been touched // if the touch coordinates are off screen then x and y are not updated // The returned value can be treated as a bool type, false or 0 means touch not detected - // In future the function may return an 8 "quality" (jitter) value. + // In future the function may return an 8-bit "quality" (jitter) value. + // The threshold value is optional, this must be higher than the bias level for z (pressure) + // reported by Test_Touch_Controller when the screen is NOT touched. When touched the z value + // must be higher than the threshold for a touch to be detected. uint8_t getTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600); // Run screen calibration and test, report calibration values to the serial port diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Custom/Orbitron_Light_24.h b/libraries/TFT_eSPI-2.5.43/Fonts/Custom/Orbitron_Light_24.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Custom/Orbitron_Light_24.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Custom/Orbitron_Light_24.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Custom/Orbitron_Light_32.h b/libraries/TFT_eSPI-2.5.43/Fonts/Custom/Orbitron_Light_32.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Custom/Orbitron_Light_32.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Custom/Orbitron_Light_32.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Custom/Roboto_Thin_24.h b/libraries/TFT_eSPI-2.5.43/Fonts/Custom/Roboto_Thin_24.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Custom/Roboto_Thin_24.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Custom/Roboto_Thin_24.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Custom/Satisfy_24.h b/libraries/TFT_eSPI-2.5.43/Fonts/Custom/Satisfy_24.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Custom/Satisfy_24.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Custom/Satisfy_24.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Custom/Yellowtail_32.h b/libraries/TFT_eSPI-2.5.43/Fonts/Custom/Yellowtail_32.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Custom/Yellowtail_32.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Custom/Yellowtail_32.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font16.c b/libraries/TFT_eSPI-2.5.43/Fonts/Font16.c similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font16.c rename to libraries/TFT_eSPI-2.5.43/Fonts/Font16.c diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font16.h b/libraries/TFT_eSPI-2.5.43/Fonts/Font16.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font16.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Font16.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font32rle.c b/libraries/TFT_eSPI-2.5.43/Fonts/Font32rle.c similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font32rle.c rename to libraries/TFT_eSPI-2.5.43/Fonts/Font32rle.c index f163986c..7a8119b0 100644 --- a/libraries/TFT_eSPI-2.4.72/Fonts/Font32rle.c +++ b/libraries/TFT_eSPI-2.5.43/Fonts/Font32rle.c @@ -1,6 +1,6 @@ // Font 4 // -// This font has been 8 bit Run Length Encoded to save FLASH space +// This font has been 8-bit Run Length Encoded to save FLASH space // // This font contains 96 ASCII characters diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font32rle.h b/libraries/TFT_eSPI-2.5.43/Fonts/Font32rle.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font32rle.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Font32rle.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font64rle.c b/libraries/TFT_eSPI-2.5.43/Fonts/Font64rle.c similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font64rle.c rename to libraries/TFT_eSPI-2.5.43/Fonts/Font64rle.c index 9d1415b0..a80e6ea7 100644 --- a/libraries/TFT_eSPI-2.4.72/Fonts/Font64rle.c +++ b/libraries/TFT_eSPI-2.5.43/Fonts/Font64rle.c @@ -1,6 +1,6 @@ // Font 6 is intended to display numbers and time // -// This font has been 8 bit Run Length Encoded to save FLASH space +// This font has been 8-bit Run Length Encoded to save FLASH space // // This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 : - . a p m // The Pipe character | is a narrow space to aid formatting diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font64rle.h b/libraries/TFT_eSPI-2.5.43/Fonts/Font64rle.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font64rle.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Font64rle.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font72rle.c b/libraries/TFT_eSPI-2.5.43/Fonts/Font72rle.c similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font72rle.c rename to libraries/TFT_eSPI-2.5.43/Fonts/Font72rle.c index 7f5da5df..478411aa 100644 --- a/libraries/TFT_eSPI-2.4.72/Fonts/Font72rle.c +++ b/libraries/TFT_eSPI-2.5.43/Fonts/Font72rle.c @@ -1,6 +1,6 @@ // Font 8 // -// This font has been 8 bit Run Length Encoded to save FLASH space +// This font has been 8-bit Run Length Encoded to save FLASH space // // It is a Arial 75 pixel height font intended to display large numbers // This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 0 : - . diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font72rle.h b/libraries/TFT_eSPI-2.5.43/Fonts/Font72rle.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font72rle.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Font72rle.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font72x53rle.c b/libraries/TFT_eSPI-2.5.43/Fonts/Font72x53rle.c similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font72x53rle.c rename to libraries/TFT_eSPI-2.5.43/Fonts/Font72x53rle.c index 71c2c4f6..ae8d00cb 100644 --- a/libraries/TFT_eSPI-2.4.72/Fonts/Font72x53rle.c +++ b/libraries/TFT_eSPI-2.5.43/Fonts/Font72x53rle.c @@ -1,6 +1,6 @@ // Font 8 // -// This font has been 8 bit Run Length Encoded to save FLASH space +// This font has been 8-bit Run Length Encoded to save FLASH space // // It is a Arial 75 pixel height font intended to display large numbers // Width for numerals reduced from 55 to 53 (to fit in 160 pixel screens) diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font72x53rle.h b/libraries/TFT_eSPI-2.5.43/Fonts/Font72x53rle.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font72x53rle.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Font72x53rle.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font7srle.c b/libraries/TFT_eSPI-2.5.43/Fonts/Font7srle.c similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font7srle.c rename to libraries/TFT_eSPI-2.5.43/Fonts/Font7srle.c index 7c6f929b..7d54a6fa 100644 --- a/libraries/TFT_eSPI-2.4.72/Fonts/Font7srle.c +++ b/libraries/TFT_eSPI-2.5.43/Fonts/Font7srle.c @@ -1,6 +1,6 @@ // Font 7 // -// This font has been 8 bit Run Length Encoded to save FLASH space +// This font has been 8-bit Run Length Encoded to save FLASH space // // This is a 7 segment font intended to display numbers and time // This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 : . - diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/Font7srle.h b/libraries/TFT_eSPI-2.5.43/Fonts/Font7srle.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/Font7srle.h rename to libraries/TFT_eSPI-2.5.43/Fonts/Font7srle.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMono9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMono9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBold9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBold9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeMonoOblique9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeMonoOblique9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSans9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSans9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBold9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBold9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansBoldOblique9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansBoldOblique9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSansOblique9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSansOblique9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerif9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerif9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBold9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBold9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic12pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic12pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic12pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic12pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic18pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic18pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic18pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic18pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic24pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic24pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic24pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic24pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic9pt7b.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic9pt7b.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/FreeSerifItalic9pt7b.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/FreeSerifItalic9pt7b.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/TomThumb.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/TomThumb.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/TomThumb.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/TomThumb.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/gfxfont.h b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/gfxfont.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/gfxfont.h rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/gfxfont.h diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/license.txt b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/license.txt similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/license.txt rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/license.txt diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/print.txt b/libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/print.txt similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/GFXFF/print.txt rename to libraries/TFT_eSPI-2.5.43/Fonts/GFXFF/print.txt diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/TrueType/Not_yet_supported.txt b/libraries/TFT_eSPI-2.5.43/Fonts/TrueType/Not_yet_supported.txt similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Fonts/TrueType/Not_yet_supported.txt rename to libraries/TFT_eSPI-2.5.43/Fonts/TrueType/Not_yet_supported.txt diff --git a/libraries/TFT_eSPI-2.4.72/Fonts/glcdfont.c b/libraries/TFT_eSPI-2.5.43/Fonts/glcdfont.c similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Fonts/glcdfont.c rename to libraries/TFT_eSPI-2.5.43/Fonts/glcdfont.c index 882a133b..95c1c98a 100644 --- a/libraries/TFT_eSPI-2.4.72/Fonts/glcdfont.c +++ b/libraries/TFT_eSPI-2.5.43/Fonts/glcdfont.c @@ -182,8 +182,9 @@ static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x7B, 0x00, 0x00, 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 0x14, 0x08, - 0xAA, 0x00, 0x55, 0x00, 0xAA, - 0xAA, 0x55, 0xAA, 0x55, 0xAA, + 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code + 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block + 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x14, 0x14, 0x14, 0xFF, 0x00, diff --git a/libraries/TFT_eSPI-2.4.72/Kconfig b/libraries/TFT_eSPI-2.5.43/Kconfig similarity index 89% rename from libraries/TFT_eSPI-2.4.72/Kconfig rename to libraries/TFT_eSPI-2.5.43/Kconfig index b4efe203..2e21c90f 100644 --- a/libraries/TFT_eSPI-2.4.72/Kconfig +++ b/libraries/TFT_eSPI-2.5.43/Kconfig @@ -150,12 +150,16 @@ menu "TFT_eSPI" endchoice - config TFT_PARALLEL_8_BIT - bool "Enable 8-bit parallel mode (otherwise SPI is assumed)" - default "n" - depends on IDF_TARGET_ESP32 + choice TFT_INTERFACE + prompt "LCD Interface" + default TFT_SPI help - Use 8-bit parallel bus to send data to the LCD. If not set SPI will be used. + Communication interface between the microcontroller and the LCD. + config TFT_SPI + bool "SPI" + config TFT_PARALLEL_8_BIT + bool "Parallel (8-bit)" + endchoice menu "Display Data pins" depends on TFT_PARALLEL_8_BIT @@ -211,12 +215,28 @@ menu "TFT_eSPI" endmenu menu "Display SPI config" - depends on !TFT_PARALLEL_8_BIT + depends on TFT_SPI + + choice TFT_SPI_PORT + prompt "SPI port" + default TFT_VSPI_PORT + help + The ESP32 has 2 free SPI ports i.e. VSPI (SPI2) and HSPI (SPI3), + the VSPI is the default. If the VSPI port is in use and pins are + not accessible (e.g. TTGO T-Beam) then use the HSPI port for the + TFT display. + config TFT_VSPI_PORT + bool "VSPI (SPI2)" + config TFT_HSPI_PORT + bool "HSPI (SPI3)" + endchoice + config TFT_MISO int "TFT MISO pin" default -1 range -1 32 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 help Master In Slave Out pin. Can be labelled as SDO in some displays @@ -226,6 +246,7 @@ menu "TFT_eSPI" default -1 range -1 32 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 help Master Out Slave In pin. Can be labelled as SDA or SDI in some displays @@ -235,6 +256,7 @@ menu "TFT_eSPI" default -1 range -1 32 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 help Labelled in some displays as WR @@ -272,6 +294,7 @@ menu "TFT_eSPI" default -1 range -1 33 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 config TFT_DC int "TFT Data/Command pin" @@ -285,6 +308,7 @@ menu "TFT_eSPI" default -1 range -1 33 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 config ENABLE_BL bool "Enable backlight control" @@ -296,6 +320,7 @@ menu "TFT_eSPI" default -1 range -1 33 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 help Pin for the backlight control signal @@ -364,6 +389,7 @@ menu "TFT_eSPI" default -1 range -1 33 if IDF_TARGET_ESP32 range -1 45 if IDF_TARGET_ESP32S2 + range -1 48 if IDF_TARGET_ESP32S3 config SPI_TOUCH_FREQUENCY int "SPI frequency for XPT2046 chip (Hz)" @@ -372,4 +398,10 @@ menu "TFT_eSPI" endif endmenu + menu "Other settings" + config DISABLE_WARNINGS + bool "Disable Library warnings" + default n + endmenu + endmenu diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32.c similarity index 93% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32.c index 5534f056..faf30343 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32.c @@ -41,11 +41,11 @@ #endif #else #ifdef USE_HSPI_PORT - #define DMA_CHANNEL 2 - spi_host_device_t spi_host = (spi_host_device_t) DMA_CHANNEL; // Draws once then freezes + #define DMA_CHANNEL SPI_DMA_CH_AUTO + spi_host_device_t spi_host = (spi_host_device_t) SPI3_HOST; // Draws once then freezes #else // use FSPI port - #define DMA_CHANNEL 1 - spi_host_device_t spi_host = (spi_host_device_t) DMA_CHANNEL; // Draws once then freezes + #define DMA_CHANNEL SPI_DMA_CH_AUTO + spi_host_device_t spi_host = (spi_host_device_t) SPI2_HOST; // Draws once then freezes #endif #endif #endif @@ -64,29 +64,35 @@ //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** -** Function name: beginSDA -** Description: Detach SPI from pin to permit software SPI +** Function name: beginSDA - VSPI port only, FPSI port only for S2 +** Description: Detach MOSI and attach MISO to SDA for reads ***************************************************************************************/ void TFT_eSPI::begin_SDA_Read(void) { - pinMatrixOutDetach(TFT_MOSI, false, false); - pinMode(TFT_MOSI, INPUT); - pinMatrixInAttach(TFT_MOSI, VSPIQ_IN_IDX, false); + gpio_set_direction((gpio_num_t)TFT_MOSI, GPIO_MODE_INPUT); + #ifdef CONFIG_IDF_TARGET_ESP32 + pinMatrixInAttach(TFT_MOSI, VSPIQ_IN_IDX, false); + #else // S2 + pinMatrixInAttach(TFT_MOSI, FSPIQ_IN_IDX, false); + #endif SET_BUS_READ_MODE; } /*************************************************************************************** -** Function name: endSDA -** Description: Attach SPI pins after software SPI +** Function name: endSDA - VSPI port only, FPSI port only for S2 +** Description: Attach MOSI to SDA and detach MISO for writes ***************************************************************************************/ void TFT_eSPI::end_SDA_Read(void) { - pinMode(TFT_MOSI, OUTPUT); - pinMatrixOutAttach(TFT_MOSI, VSPID_OUT_IDX, false, false); - pinMode(TFT_MISO, INPUT); - pinMatrixInAttach(TFT_MISO, VSPIQ_IN_IDX, false); + gpio_set_direction((gpio_num_t)TFT_MOSI, GPIO_MODE_OUTPUT); + #ifdef CONFIG_IDF_TARGET_ESP32 + pinMatrixOutAttach(TFT_MOSI, VSPID_OUT_IDX, false, false); + #else // S2 + pinMatrixOutAttach(TFT_MOSI, FSPID_OUT_IDX, false, false); + #endif SET_BUS_WRITE_MODE; } + //////////////////////////////////////////////////////////////////////////////////////// #endif // #if defined (TFT_SDA_READ) //////////////////////////////////////////////////////////////////////////////////////// @@ -94,7 +100,7 @@ void TFT_eSPI::end_SDA_Read(void) /*************************************************************************************** ** Function name: read byte - supports class functions -** Description: Read a byte from ESP32 8 bit data port +** Description: Read a byte from ESP32 8-bit data port ***************************************************************************************/ // Parallel bus MUST be set to input before calling this function! uint8_t TFT_eSPI::readByte(void) @@ -409,7 +415,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -422,7 +428,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) uint32_t r = (color & 0xF800)>>8; uint32_t g = (color & 0x07E0)<<5; uint32_t b = (color & 0x001F)<<19; - // Concatenate 4 pixels into three 32 bit blocks + // Concatenate 4 pixels into three 32-bit blocks uint32_t r0 = r<<24 | b | g | r; uint32_t r1 = r0>>8 | g<<16; uint32_t r2 = r1>>8 | b<<8; @@ -506,7 +512,7 @@ void TFT_eSPI::pushSwapBytePixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (TFT_PARALLEL_8_BIT) // Now the code for ESP32 8 bit parallel +#elif defined (TFT_PARALLEL_8_BIT) // Now the code for ESP32 8-bit parallel //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -761,6 +767,17 @@ void IRAM_ATTR dc_callback(spi_transaction_t *spi_tx) else {DC_C;} } +/*************************************************************************************** +** Function name: dma_end_callback +** Description: Clear DMA run flag to stop retransmission loop +***************************************************************************************/ +extern "C" void dma_end_callback(); + +void IRAM_ATTR dma_end_callback(spi_transaction_t *spi_tx) +{ + WRITE_PERI_REG(SPI_DMA_CONF_REG(spi_host), 0); +} + /*************************************************************************************** ** Function name: initDMA ** Description: Initialise the DMA engine - returns true if init OK @@ -776,6 +793,12 @@ bool TFT_eSPI::initDMA(bool ctrl_cs) .sclk_io_num = TFT_SCLK, .quadwp_io_num = -1, .quadhd_io_num = -1, + #ifdef xCONFIG_IDF_TARGET_ESP32S2 + .data4_io_num = -1, + .data5_io_num = -1, + .data6_io_num = -1, + .data7_io_num = -1, + #endif .max_transfer_sz = TFT_WIDTH * TFT_HEIGHT * 2 + 8, // TFT screen size .flags = 0, .intr_flags = 0 @@ -798,7 +821,11 @@ bool TFT_eSPI::initDMA(bool ctrl_cs) .flags = SPI_DEVICE_NO_DUMMY, //0, .queue_size = 1, .pre_cb = 0, //dc_callback, //Callback to handle D/C line - .post_cb = 0 + #ifdef CONFIG_IDF_TARGET_ESP32 + .post_cb = 0 + #else + .post_cb = dma_end_callback + #endif }; ret = spi_bus_initialize(spi_host, &buscfg, DMA_CHANNEL); ESP_ERROR_CHECK(ret); diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32.h similarity index 81% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32.h index c0dc893a..ad60e3dd 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32.h @@ -11,6 +11,7 @@ // Include processor specific header #include "soc/spi_reg.h" #include "driver/spi_master.h" +#include "hal/gpio_ll.h" #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32) #define CONFIG_IDF_TARGET_ESP32 @@ -86,14 +87,14 @@ SPI3_HOST = 2 // Initialise processor specific SPI functions, used by init() #define INIT_TFT_DATA_BUS // Not used -// Define a generic flag for 8 bit parallel +// Define a generic flag for 8-bit parallel #if defined (ESP32_PARALLEL) // Specific to ESP32 for backwards compatibility #if !defined (TFT_PARALLEL_8_BIT) #define TFT_PARALLEL_8_BIT // Generic parallel flag #endif #endif -// Ensure ESP32 specific flag is defined for 8 bit parallel +// Ensure ESP32 specific flag is defined for 8-bit parallel #if defined (TFT_PARALLEL_8_BIT) #if !defined (ESP32_PARALLEL) #define ESP32_PARALLEL @@ -139,6 +140,7 @@ SPI3_HOST = 2 #define FONT_FS_AVAILABLE #endif + //////////////////////////////////////////////////////////////////////////////////////// // Define the DC (TFT Data/Command or Register Select (RS))pin drive code //////////////////////////////////////////////////////////////////////////////////////// @@ -151,6 +153,9 @@ SPI3_HOST = 2 #if (TFT_DC >= 0) && (TFT_DC < 32) #define DC_C GPIO.out_w1tc = (1 << TFT_DC) #define DC_D GPIO.out_w1ts = (1 << TFT_DC) + #elif (TFT_DC >= 32) + #define DC_C GPIO.out1_w1tc.val = (1 << (TFT_DC- 32)) + #define DC_D GPIO.out1_w1ts.val = (1 << (TFT_DC- 32)) #else #define DC_C #define DC_D @@ -350,16 +355,16 @@ SPI3_HOST = 2 } \ // Mask for the 8 data bits to set pin directions - #define dir_mask ((1 << TFT_D0) | (1 << TFT_D1) | (1 << TFT_D2) | (1 << TFT_D3) | (1 << TFT_D4) | (1 << TFT_D5) | (1 << TFT_D6) | (1 << TFT_D7)) + #define GPIO_DIR_MASK ((1 << TFT_D0) | (1 << TFT_D1) | (1 << TFT_D2) | (1 << TFT_D3) | (1 << TFT_D4) | (1 << TFT_D5) | (1 << TFT_D6) | (1 << TFT_D7)) #if (TFT_WR >= 32) // Data bits and the write line are cleared sequentially - #define clr_mask (dir_mask); WR_L + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK); WR_L #elif (TFT_WR >= 0) // Data bits and the write line are cleared to 0 in one step (1.25x faster) - #define clr_mask (dir_mask | (1 << TFT_WR)) + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK | (1 << TFT_WR)) #else - #define clr_mask + #define GPIO_OUT_CLR_MASK #endif // A lookup table is used to set the different bit patterns, this uses 1kByte of RAM @@ -371,53 +376,53 @@ SPI3_HOST = 2 //*/ // Write 8 bits to TFT - #define tft_Write_8(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t)(C)); WR_H + #define tft_Write_8(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t)(C)); WR_H #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT - #define tft_Write_16(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0xF800)>> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x07E0)>> 3)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x001F)<< 3)); WR_H + // Write 18-bit color to TFT + #define tft_Write_16(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0xF800)>> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x07E0)>> 3)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x001F)<< 3)); WR_H - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else #ifdef PSEUDO_16_BIT // One write strobe for both bytes - #define tft_Write_16(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H - #define tft_Write_16S(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H + #define tft_Write_16(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_16S(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H #else // Write 16 bits to TFT - #define tft_Write_16(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_16(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H - // 16 bit write with swapped bytes - #define tft_Write_16S(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H + // 16-bit write with swapped bytes + #define tft_Write_16S(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H #endif #endif // Write 32 bits to TFT - #define tft_Write_32(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 24)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 16)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_32(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 24)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 16)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H - // Write two concatenated 16 bit values to TFT - #define tft_Write_32C(C,D) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((D) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((D) >> 0)); WR_H + // Write two concatenated 16-bit values to TFT + #define tft_Write_32C(C,D) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((D) >> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((D) >> 0)); WR_H - // Write 16 bit value twice to TFT - used by drawPixel() - #define tft_Write_32D(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + // Write 16-bit value twice to TFT - used by drawPixel() + #define tft_Write_32D(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H // Read pin #ifdef TFT_RD @@ -442,12 +447,12 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI ILI948x TFT //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour // Write 8 bits to TFT #define tft_Write_8(C) spi.transfer(C) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16(C) spi.transfer(((C) & 0xF800)>>8); \ spi.transfer(((C) & 0x07E0)>>3); \ spi.transfer(((C) & 0x001F)<<3) @@ -455,7 +460,7 @@ SPI3_HOST = 2 // Future option for transfer without wait #define tft_Write_16N(C) tft_Write_16(C) - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes + // Convert swapped byte 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16S(C) spi.transfer((C) & 0xF8); \ spi.transfer(((C) & 0xE000)>>11 | ((C) & 0x07)<<5); \ spi.transfer(((C) & 0x1F00)>>5) @@ -463,10 +468,10 @@ SPI3_HOST = 2 // Write 32 bits to TFT #define tft_Write_32(C) spi.write32(C) - // Write two concatenated 16 bit values to TFT + // Write two concatenated 16-bit values to TFT #define tft_Write_32C(C,D) spi.write32((C)<<16 | (D)) - // Write 16 bit value twice to TFT + // Write 16-bit value twice to TFT #define tft_Write_32D(C) spi.write32((C)<<16 | (C)) //////////////////////////////////////////////////////////////////////////////////////// @@ -474,7 +479,7 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// #elif defined (RPI_DISPLAY_TYPE) - // ESP32 low level SPI writes for 8, 16 and 32 bit values + // ESP32 low level SPI writes for 8, 16 and 32-bit values // to avoid the function call overhead #define TFT_WRITE_BITS(D, B) \ WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), B-1); \ @@ -485,7 +490,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS((C)<<8, 16) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Future option for transfer without wait @@ -509,7 +514,7 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// #else /* Old macros - // ESP32 low level SPI writes for 8, 16 and 32 bit values + // ESP32 low level SPI writes for 8, 16 and 32-bit values // to avoid the function call overhead #define TFT_WRITE_BITS(D, B) \ WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), B-1); \ @@ -520,7 +525,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS(C, 8) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Write 16 bits @@ -544,7 +549,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS(C, 8) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Future option for transfer without wait diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_C3.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_C3.c similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_C3.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_C3.c index 4e1b15b8..8c97a5fe 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_C3.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_C3.c @@ -66,27 +66,24 @@ //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** -** Function name: beginSDA -** Description: Detach SPI from pin to permit software SPI +** Function name: beginSDA - FPSI port only +** Description: Detach MOSI and attach MISO to SDA for reads ***************************************************************************************/ void TFT_eSPI::begin_SDA_Read(void) { - pinMatrixOutDetach(TFT_MOSI, false, false); - pinMode(TFT_MOSI, INPUT); - pinMatrixInAttach(TFT_MOSI, VSPIQ_IN_IDX, false); + gpio_set_direction((gpio_num_t)TFT_MOSI, GPIO_MODE_INPUT); + pinMatrixInAttach(TFT_MOSI, FSPIQ_IN_IDX, false); SET_BUS_READ_MODE; } /*************************************************************************************** -** Function name: endSDA -** Description: Attach SPI pins after software SPI +** Function name: endSDA - FPSI port only +** Description: Attach MOSI to SDA and detach MISO for writes ***************************************************************************************/ void TFT_eSPI::end_SDA_Read(void) { - pinMode(TFT_MOSI, OUTPUT); - pinMatrixOutAttach(TFT_MOSI, VSPID_OUT_IDX, false, false); - pinMode(TFT_MISO, INPUT); - pinMatrixInAttach(TFT_MISO, VSPIQ_IN_IDX, false); + gpio_set_direction((gpio_num_t)TFT_MOSI, GPIO_MODE_OUTPUT); + pinMatrixOutAttach(TFT_MOSI, FSPID_OUT_IDX, false, false); SET_BUS_WRITE_MODE; } //////////////////////////////////////////////////////////////////////////////////////// @@ -96,7 +93,7 @@ void TFT_eSPI::end_SDA_Read(void) /*************************************************************************************** ** Function name: read byte - supports class functions -** Description: Read a byte from ESP32 8 bit data port +** Description: Read a byte from ESP32 8-bit data port ***************************************************************************************/ // Parallel bus MUST be set to input before calling this function! uint8_t TFT_eSPI::readByte(void) @@ -439,7 +436,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -452,7 +449,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) uint32_t r = (color & 0xF800)>>8; uint32_t g = (color & 0x07E0)<<5; uint32_t b = (color & 0x001F)<<19; - // Concatenate 4 pixels into three 32 bit blocks + // Concatenate 4 pixels into three 32-bit blocks uint32_t r0 = r<<24 | b | g | r; uint32_t r1 = r0>>8 | g<<16; uint32_t r2 = r1>>8 | b<<8; @@ -543,7 +540,7 @@ void TFT_eSPI::pushSwapBytePixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (TFT_PARALLEL_8_BIT) // Now the code for ESP32 8 bit parallel +#elif defined (TFT_PARALLEL_8_BIT) // Now the code for ESP32 8-bit parallel //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -809,6 +806,10 @@ bool TFT_eSPI::initDMA(bool ctrl_cs) .sclk_io_num = TFT_SCLK, .quadwp_io_num = -1, .quadhd_io_num = -1, + .data4_io_num = -1, + .data5_io_num = -1, + .data6_io_num = -1, + .data7_io_num = -1, .max_transfer_sz = TFT_WIDTH * TFT_HEIGHT * 2 + 8, // TFT screen size .flags = 0, .intr_flags = 0 diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_C3.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_C3.h similarity index 81% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_C3.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_C3.h index 7cc2ac6c..6fa18585 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_C3.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_C3.h @@ -17,6 +17,7 @@ // Include processor specific header #include "soc/spi_reg.h" #include "driver/spi_master.h" +#include "hal/gpio_ll.h" #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32) #define CONFIG_IDF_TARGET_ESP32 @@ -78,14 +79,14 @@ SPI3_HOST = 2 // Initialise processor specific SPI functions, used by init() #define INIT_TFT_DATA_BUS // Not used -// Define a generic flag for 8 bit parallel +// Define a generic flag for 8-bit parallel #if defined (ESP32_PARALLEL) // Specific to ESP32 for backwards compatibility #if !defined (TFT_PARALLEL_8_BIT) #define TFT_PARALLEL_8_BIT // Generic parallel flag #endif #endif -// Ensure ESP32 specific flag is defined for 8 bit parallel +// Ensure ESP32 specific flag is defined for 8-bit parallel #if defined (TFT_PARALLEL_8_BIT) #if !defined (ESP32_PARALLEL) #define ESP32_PARALLEL @@ -143,6 +144,9 @@ SPI3_HOST = 2 #if (TFT_DC >= 0) && (TFT_DC < 32) #define DC_C GPIO.out_w1tc.val = (1 << TFT_DC) #define DC_D GPIO.out_w1ts.val = (1 << TFT_DC) + #elif (TFT_DC >= 32) + #define DC_C GPIO.out_w1tc.val = (1 << (TFT_DC- 32)) + #define DC_D GPIO.out_w1ts.val = (1 << (TFT_DC- 32)) #else #define DC_C #define DC_D @@ -342,16 +346,16 @@ SPI3_HOST = 2 } \ // Mask for the 8 data bits to set pin directions - #define dir_mask ((1 << TFT_D0) | (1 << TFT_D1) | (1 << TFT_D2) | (1 << TFT_D3) | (1 << TFT_D4) | (1 << TFT_D5) | (1 << TFT_D6) | (1 << TFT_D7)) + #define GPIO_DIR_MASK ((1 << TFT_D0) | (1 << TFT_D1) | (1 << TFT_D2) | (1 << TFT_D3) | (1 << TFT_D4) | (1 << TFT_D5) | (1 << TFT_D6) | (1 << TFT_D7)) #if (TFT_WR >= 32) // Data bits and the write line are cleared sequentially - #define clr_mask (dir_mask); WR_L + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK); WR_L #elif (TFT_WR >= 0) // Data bits and the write line are cleared to 0 in one step (1.25x faster) - #define clr_mask (dir_mask | (1 << TFT_WR)) + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK | (1 << TFT_WR)) #else - #define clr_mask + #define GPIO_OUT_CLR_MASK #endif // A lookup table is used to set the different bit patterns, this uses 1kByte of RAM @@ -363,53 +367,53 @@ SPI3_HOST = 2 //*/ // Write 8 bits to TFT - #define tft_Write_8(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t)(C)); WR_H + #define tft_Write_8(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t)(C)); WR_H #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT - #define tft_Write_16(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) (((C) & 0xF800)>> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) (((C) & 0x07E0)>> 3)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) (((C) & 0x001F)<< 3)); WR_H + // Write 18-bit color to TFT + #define tft_Write_16(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) (((C) & 0xF800)>> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) (((C) & 0x07E0)>> 3)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) (((C) & 0x001F)<< 3)); WR_H - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else #ifdef PSEUDO_16_BIT // One write strobe for both bytes - #define tft_Write_16(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H - #define tft_Write_16S(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H + #define tft_Write_16(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_16S(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H #else // Write 16 bits to TFT - #define tft_Write_16(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_16(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H - // 16 bit write with swapped bytes - #define tft_Write_16S(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H + // 16-bit write with swapped bytes + #define tft_Write_16S(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H #endif #endif // Write 32 bits to TFT - #define tft_Write_32(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 24)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 16)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_32(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 24)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 16)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H - // Write two concatenated 16 bit values to TFT - #define tft_Write_32C(C,D) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((D) >> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((D) >> 0)); WR_H + // Write two concatenated 16-bit values to TFT + #define tft_Write_32C(C,D) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((D) >> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((D) >> 0)); WR_H - // Write 16 bit value twice to TFT - used by drawPixel() - #define tft_Write_32D(C) GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc.val = clr_mask; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H + // Write 16-bit value twice to TFT - used by drawPixel() + #define tft_Write_32D(C) GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO.out_w1tc.val = GPIO_OUT_CLR_MASK; GPIO.out_w1ts.val = set_mask((uint8_t) ((C) >> 0)); WR_H // Read pin #ifdef TFT_RD @@ -434,12 +438,12 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI ILI948x TFT //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour // Write 8 bits to TFT #define tft_Write_8(C) spi.transfer(C) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16(C) spi.transfer(((C) & 0xF800)>>8); \ spi.transfer(((C) & 0x07E0)>>3); \ spi.transfer(((C) & 0x001F)<<3) @@ -447,7 +451,7 @@ SPI3_HOST = 2 // Future option for transfer without wait #define tft_Write_16N(C) tft_Write_16(C) - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes + // Convert swapped byte 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16S(C) spi.transfer((C) & 0xF8); \ spi.transfer(((C) & 0xE000)>>11 | ((C) & 0x07)<<5); \ spi.transfer(((C) & 0x1F00)>>5) @@ -455,10 +459,10 @@ SPI3_HOST = 2 // Write 32 bits to TFT #define tft_Write_32(C) spi.write32(C) - // Write two concatenated 16 bit values to TFT + // Write two concatenated 16-bit values to TFT #define tft_Write_32C(C,D) spi.write32((C)<<16 | (D)) - // Write 16 bit value twice to TFT + // Write 16-bit value twice to TFT #define tft_Write_32D(C) spi.write32((C)<<16 | (C)) //////////////////////////////////////////////////////////////////////////////////////// @@ -466,7 +470,7 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// #elif defined (RPI_DISPLAY_TYPE) - // ESP32 low level SPI writes for 8, 16 and 32 bit values + // ESP32 low level SPI writes for 8, 16 and 32-bit values // to avoid the function call overhead #define TFT_WRITE_BITS(D, B) \ WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), B-1); \ @@ -477,7 +481,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS((C)<<8, 16) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Future option for transfer without wait @@ -501,7 +505,7 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// #else /* Old macros - // ESP32 low level SPI writes for 8, 16 and 32 bit values + // ESP32 low level SPI writes for 8, 16 and 32-bit values // to avoid the function call overhead #define TFT_WRITE_BITS(D, B) \ WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), B-1); \ @@ -512,7 +516,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS(C, 8) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Write 16 bits @@ -544,7 +548,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS(C, 8) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Future option for transfer without wait diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_S3.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_S3.c similarity index 87% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_S3.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_S3.c index c17be8a3..d689e72a 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_S3.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_S3.c @@ -43,50 +43,38 @@ #endif #else #ifdef USE_HSPI_PORT - #define DMA_CHANNEL 2 - spi_host_device_t spi_host = (spi_host_device_t) DMA_CHANNEL; // Draws once then freezes + #define DMA_CHANNEL SPI_DMA_CH_AUTO + spi_host_device_t spi_host = SPI3_HOST; #else // use FSPI port - #define DMA_CHANNEL 1 - spi_host_device_t spi_host = (spi_host_device_t) DMA_CHANNEL; // Draws once then freezes + #define DMA_CHANNEL SPI_DMA_CH_AUTO + spi_host_device_t spi_host = SPI2_HOST; #endif #endif #endif -#if !defined (TFT_PARALLEL_8_BIT) - // Volatile for register reads: - volatile uint32_t* _spi_cmd = (volatile uint32_t*)(SPI_CMD_REG(SPI_PORT)); - volatile uint32_t* _spi_user = (volatile uint32_t*)(SPI_USER_REG(SPI_PORT)); - // Register writes only: - volatile uint32_t* _spi_mosi_dlen = (volatile uint32_t*)(SPI_MOSI_DLEN_REG(SPI_PORT)); - volatile uint32_t* _spi_w = (volatile uint32_t*)(SPI_W0_REG(SPI_PORT)); -#endif - //////////////////////////////////////////////////////////////////////////////////////// #if defined (TFT_SDA_READ) && !defined (TFT_PARALLEL_8_BIT) //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** -** Function name: beginSDA -** Description: Detach SPI from pin to permit software SPI +** Function name: beginSDA - FPSI port only +** Description: Detach MOSI and attach MISO to SDA for reads ***************************************************************************************/ void TFT_eSPI::begin_SDA_Read(void) { - pinMatrixOutDetach(TFT_MOSI, false, false); - pinMode(TFT_MOSI, INPUT); - pinMatrixInAttach(TFT_MOSI, VSPIQ_IN_IDX, false); + gpio_set_direction((gpio_num_t)TFT_MOSI, GPIO_MODE_INPUT); + pinMatrixInAttach(TFT_MOSI, FSPIQ_IN_IDX, false); SET_BUS_READ_MODE; } /*************************************************************************************** -** Function name: endSDA -** Description: Attach SPI pins after software SPI +** Function name: endSDA - FPSI port only +** Description: Attach MOSI to SDA and detach MISO for writes ***************************************************************************************/ void TFT_eSPI::end_SDA_Read(void) { - pinMode(TFT_MOSI, OUTPUT); - pinMatrixOutAttach(TFT_MOSI, VSPID_OUT_IDX, false, false); - pinMode(TFT_MISO, INPUT); - pinMatrixInAttach(TFT_MISO, VSPIQ_IN_IDX, false); + gpio_set_direction((gpio_num_t)TFT_MOSI, GPIO_MODE_OUTPUT); + pinMatrixOutAttach(TFT_MOSI, FSPID_OUT_IDX, false, false); SET_BUS_WRITE_MODE; } //////////////////////////////////////////////////////////////////////////////////////// @@ -96,7 +84,7 @@ void TFT_eSPI::end_SDA_Read(void) /*************************************************************************************** ** Function name: read byte - supports class functions -** Description: Read a byte from ESP32 8 bit data port +** Description: Read a byte from ESP32 8-bit data port ***************************************************************************************/ // Parallel bus MUST be set to input before calling this function! uint8_t TFT_eSPI::readByte(void) @@ -105,21 +93,20 @@ uint8_t TFT_eSPI::readByte(void) #if defined (TFT_PARALLEL_8_BIT) RD_L; - uint32_t reg; // Read all GPIO pins 0-31 - reg = gpio_input_get(); // Read three times to allow for bus access time - reg = gpio_input_get(); - reg = gpio_input_get(); // Data should be stable now - RD_H; + b = gpio_get_level((gpio_num_t)TFT_D0); // Read three times to allow for bus access time + b = gpio_get_level((gpio_num_t)TFT_D0); + b = gpio_get_level((gpio_num_t)TFT_D0); // Data should be stable now // Check GPIO bits used and build value - b = (((reg>>TFT_D0)&1) << 0); - b |= (((reg>>TFT_D1)&1) << 1); - b |= (((reg>>TFT_D2)&1) << 2); - b |= (((reg>>TFT_D3)&1) << 3); - b |= (((reg>>TFT_D4)&1) << 4); - b |= (((reg>>TFT_D5)&1) << 5); - b |= (((reg>>TFT_D6)&1) << 6); - b |= (((reg>>TFT_D7)&1) << 7); + b = (gpio_get_level((gpio_num_t)TFT_D0) << 0); + b |= (gpio_get_level((gpio_num_t)TFT_D1) << 1); + b |= (gpio_get_level((gpio_num_t)TFT_D2) << 2); + b |= (gpio_get_level((gpio_num_t)TFT_D3) << 3); + b |= (gpio_get_level((gpio_num_t)TFT_D4) << 4); + b |= (gpio_get_level((gpio_num_t)TFT_D5) << 5); + b |= (gpio_get_level((gpio_num_t)TFT_D6) << 6); + b |= (gpio_get_level((gpio_num_t)TFT_D7) << 7); + RD_H; #endif return b; @@ -439,7 +426,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -452,7 +439,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) uint32_t r = (color & 0xF800)>>8; uint32_t g = (color & 0x07E0)<<5; uint32_t b = (color & 0x001F)<<19; - // Concatenate 4 pixels into three 32 bit blocks + // Concatenate 4 pixels into three 32-bit blocks uint32_t r0 = r<<24 | b | g | r; uint32_t r1 = r0>>8 | g<<16; uint32_t r2 = r1>>8 | b<<8; @@ -543,7 +530,7 @@ void TFT_eSPI::pushSwapBytePixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (TFT_PARALLEL_8_BIT) // Now the code for ESP32 8 bit parallel +#elif defined (TFT_PARALLEL_8_BIT) // Now the code for ESP32 8-bit parallel //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -653,6 +640,18 @@ void TFT_eSPI::pushPixelsDMA(uint16_t* image, uint32_t len) for (uint32_t i = 0; i < len; i++) (image[i] = image[i] << 8 | image[i] >> 8); } + // DMA byte count for transmit is 64Kbytes maximum, so to avoid this constraint + // small transfers are performed using a blocking call until DMA capacity is reached. + // User sketch can prevent blocking by managing pixel count and splitting into blocks + // of 32768 pixels maximum. (equivalent to an area of ~320 x 100 pixels) + bool temp = _swapBytes; + _swapBytes = false; + while(len>0x4000) { // Transfer 16-bit pixels in blocks if len*2 over 65536 bytes + pushPixels(image, 0x400); + len -= 0x400; image+= 0x400; // Arbitrarily send 1K pixel blocks (2Kbytes) + } + _swapBytes = temp; + esp_err_t ret; static spi_transaction_t trans; @@ -679,11 +678,23 @@ void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t { if ((w == 0) || (h == 0) || (!DMA_Enabled)) return; + uint16_t *buffer = (uint16_t*)image; uint32_t len = w*h; dmaWait(); setAddrWindow(x, y, w, h); + // DMA byte count for transmit is 64Kbytes maximum, so to avoid this constraint + // small transfers are performed using a blocking call until DMA capacity is reached. + // User sketch can prevent blocking by managing pixel count and splitting into blocks + // of 32768 pixels maximum. (equivalent to an area of ~320 x 100 pixels) + bool temp = _swapBytes; + _swapBytes = false; + while(len>0x4000) { // Transfer 16-bit pixels in blocks if len*2 over 65536 bytes + pushPixels(buffer, 0x400); + len -= 0x400; buffer+= 0x400; // Arbitrarily send 1K pixel blocks (2Kbytes) + } + _swapBytes = temp; esp_err_t ret; static spi_transaction_t trans; @@ -691,7 +702,7 @@ void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t memset(&trans, 0, sizeof(spi_transaction_t)); trans.user = (void *)1; - trans.tx_buffer = image; //Data pointer + trans.tx_buffer = buffer; //Data pointer trans.length = len * 16; //Data length, in bits trans.flags = 0; //SPI_TRANS_USE_TXDATA flag @@ -761,6 +772,18 @@ void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t setAddrWindow(x, y, dw, dh); + // DMA byte count for transmit is 64Kbytes maximum, so to avoid this constraint + // small transfers are performed using a blocking call until DMA capacity is reached. + // User sketch can prevent blocking by managing pixel count and splitting into blocks + // of 32768 pixels maximum. (equivalent to an area of ~320 x 100 pixels) + bool temp = _swapBytes; + _swapBytes = false; + while(len>0x4000) { // Transfer 16-bit pixels in blocks if len*2 over 65536 bytes + pushPixels(buffer, 0x400); + len -= 0x400; buffer+= 0x400; // Arbitrarily send 1K pixel blocks (2Kbytes) + } + _swapBytes = temp; + esp_err_t ret; static spi_transaction_t trans; @@ -784,7 +807,7 @@ void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t // The DMA functions here work with SPI only (not parallel) /*************************************************************************************** ** Function name: dc_callback -** Description: Toggles DC line during transaction +** Description: Toggles DC line during transaction (not used) ***************************************************************************************/ extern "C" void dc_callback(); @@ -794,6 +817,17 @@ void IRAM_ATTR dc_callback(spi_transaction_t *spi_tx) else {DC_C;} } +/*************************************************************************************** +** Function name: dma_end_callback +** Description: Clear DMA run flag to stop retransmission loop +***************************************************************************************/ +extern "C" void dma_end_callback(); + +void IRAM_ATTR dma_end_callback(spi_transaction_t *spi_tx) +{ + WRITE_PERI_REG(SPI_DMA_CONF_REG(spi_host), 0); +} + /*************************************************************************************** ** Function name: initDMA ** Description: Initialise the DMA engine - returns true if init OK @@ -809,7 +843,11 @@ bool TFT_eSPI::initDMA(bool ctrl_cs) .sclk_io_num = TFT_SCLK, .quadwp_io_num = -1, .quadhd_io_num = -1, - .max_transfer_sz = TFT_WIDTH * TFT_HEIGHT * 2 + 8, // TFT screen size + .data4_io_num = -1, + .data5_io_num = -1, + .data6_io_num = -1, + .data7_io_num = -1, + .max_transfer_sz = 65536, // ESP32 S3 max size is 64Kbytes .flags = 0, .intr_flags = 0 }; @@ -829,9 +867,9 @@ bool TFT_eSPI::initDMA(bool ctrl_cs) .input_delay_ns = 0, .spics_io_num = pin, .flags = SPI_DEVICE_NO_DUMMY, //0, - .queue_size = 1, - .pre_cb = 0, //dc_callback, //Callback to handle D/C line - .post_cb = 0 + .queue_size = 1, // Not using queues + .pre_cb = 0, //dc_callback, //Callback to handle D/C line (not used) + .post_cb = dma_end_callback //Callback to end transmission }; ret = spi_bus_initialize(spi_host, &buscfg, DMA_CHANNEL); ESP_ERROR_CHECK(ret); diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_S3.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_S3.h similarity index 73% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_S3.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_S3.h index 4ec4e20e..c1a9e101 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP32_S3.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP32_S3.h @@ -7,16 +7,13 @@ #ifndef _TFT_eSPI_ESP32H_ #define _TFT_eSPI_ESP32H_ -#if !defined(DISABLE_ALL_LIBRARY_WARNINGS) - #warning >>>>------>> DMA is not supported on the ESP32 S3 (possible future update) -#endif - // Processor ID reported by getSetup() #define PROCESSOR_ID 0x32 // Include processor specific header #include "soc/spi_reg.h" #include "driver/spi_master.h" +#include "hal/gpio_ll.h" #if !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32) #define CONFIG_IDF_TARGET_ESP32 @@ -96,22 +93,31 @@ SPI3_HOST = 2 // Initialise processor specific SPI functions, used by init() #define INIT_TFT_DATA_BUS // Not used -// Define a generic flag for 8 bit parallel +// Define a generic flag for 8-bit parallel #if defined (ESP32_PARALLEL) // Specific to ESP32 for backwards compatibility #if !defined (TFT_PARALLEL_8_BIT) #define TFT_PARALLEL_8_BIT // Generic parallel flag #endif #endif -// Ensure ESP32 specific flag is defined for 8 bit parallel +// Ensure ESP32 specific flag is defined for 8-bit parallel #if defined (TFT_PARALLEL_8_BIT) #if !defined (ESP32_PARALLEL) #define ESP32_PARALLEL #endif #endif +#if !defined(DISABLE_ALL_LIBRARY_WARNINGS) && defined (ESP32_PARALLEL) + #warning >>>>------>> DMA is not supported in parallel mode +#endif + // Processor specific code used by SPI bus transaction startWrite and endWrite functions #if !defined (ESP32_PARALLEL) + #define _spi_cmd (volatile uint32_t*)(SPI_CMD_REG(SPI_PORT)) + #define _spi_user (volatile uint32_t*)(SPI_USER_REG(SPI_PORT)) + #define _spi_mosi_dlen (volatile uint32_t*)(SPI_MOSI_DLEN_REG(SPI_PORT)) + #define _spi_w (volatile uint32_t*)(SPI_W0_REG(SPI_PORT)) + #if (TFT_SPI_MODE == SPI_MODE1) || (TFT_SPI_MODE == SPI_MODE2) #define SET_BUS_WRITE_MODE *_spi_user = SPI_USR_MOSI | SPI_CK_OUT_EDGE #define SET_BUS_READ_MODE *_spi_user = SPI_USR_MOSI | SPI_USR_MISO | SPI_DOUTDIN | SPI_CK_OUT_EDGE @@ -161,6 +167,9 @@ SPI3_HOST = 2 #if (TFT_DC >= 0) && (TFT_DC < 32) #define DC_C GPIO.out_w1tc = (1 << TFT_DC) #define DC_D GPIO.out_w1ts = (1 << TFT_DC) + #elif (TFT_DC >= 32) + #define DC_C GPIO.out1_w1tc.val = (1 << (TFT_DC- 32)) + #define DC_D GPIO.out1_w1ts.val = (1 << (TFT_DC- 32)) #else #define DC_C #define DC_D @@ -343,33 +352,53 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// #if defined (TFT_PARALLEL_8_BIT) + #if (TFT_D0 >= 32) // If D0 is a high GPIO assume all other data bits are high GPIO + #define MASK_OFFSET 32 + #define GPIO_CLR_REG GPIO.out1_w1tc.val + #define GPIO_SET_REG GPIO.out1_w1ts.val + #else + #define MASK_OFFSET 0 + #define GPIO_CLR_REG GPIO.out_w1tc + #define GPIO_SET_REG GPIO.out_w1ts + #endif + // Create a bit set lookup table for data bus - wastes 1kbyte of RAM but speeds things up dramatically // can then use e.g. GPIO.out_w1ts = set_mask(0xFF); to set data bus to 0xFF #define PARALLEL_INIT_TFT_DATA_BUS \ for (int32_t c = 0; c<256; c++) \ { \ xset_mask[c] = 0; \ - if ( c & 0x01 ) xset_mask[c] |= (1 << TFT_D0); \ - if ( c & 0x02 ) xset_mask[c] |= (1 << TFT_D1); \ - if ( c & 0x04 ) xset_mask[c] |= (1 << TFT_D2); \ - if ( c & 0x08 ) xset_mask[c] |= (1 << TFT_D3); \ - if ( c & 0x10 ) xset_mask[c] |= (1 << TFT_D4); \ - if ( c & 0x20 ) xset_mask[c] |= (1 << TFT_D5); \ - if ( c & 0x40 ) xset_mask[c] |= (1 << TFT_D6); \ - if ( c & 0x80 ) xset_mask[c] |= (1 << TFT_D7); \ - } \ + if ( c & 0x01 ) xset_mask[c] |= (1 << (TFT_D0-MASK_OFFSET)); \ + if ( c & 0x02 ) xset_mask[c] |= (1 << (TFT_D1-MASK_OFFSET)); \ + if ( c & 0x04 ) xset_mask[c] |= (1 << (TFT_D2-MASK_OFFSET)); \ + if ( c & 0x08 ) xset_mask[c] |= (1 << (TFT_D3-MASK_OFFSET)); \ + if ( c & 0x10 ) xset_mask[c] |= (1 << (TFT_D4-MASK_OFFSET)); \ + if ( c & 0x20 ) xset_mask[c] |= (1 << (TFT_D5-MASK_OFFSET)); \ + if ( c & 0x40 ) xset_mask[c] |= (1 << (TFT_D6-MASK_OFFSET)); \ + if ( c & 0x80 ) xset_mask[c] |= (1 << (TFT_D7-MASK_OFFSET)); \ + } \ // Mask for the 8 data bits to set pin directions - #define dir_mask ((1 << TFT_D0) | (1 << TFT_D1) | (1 << TFT_D2) | (1 << TFT_D3) | (1 << TFT_D4) | (1 << TFT_D5) | (1 << TFT_D6) | (1 << TFT_D7)) + #define GPIO_DIR_MASK ((1 << (TFT_D0-MASK_OFFSET)) | (1 << (TFT_D1-MASK_OFFSET)) | (1 << (TFT_D2-MASK_OFFSET)) | (1 << (TFT_D3-MASK_OFFSET)) | (1 << (TFT_D4-MASK_OFFSET)) | (1 << (TFT_D5-MASK_OFFSET)) | (1 << (TFT_D6-MASK_OFFSET)) | (1 << (TFT_D7-MASK_OFFSET))) #if (TFT_WR >= 32) - // Data bits and the write line are cleared sequentially - #define clr_mask (dir_mask); WR_L + #if (TFT_D0 >= 32) + // Data bits and the write line are cleared to 0 in one step (1.25x faster) + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK | (1 << (TFT_WR-32))) + #elif (TFT_D0 >= 0) + // Data bits and the write line are cleared sequentially + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK); WR_L + #endif #elif (TFT_WR >= 0) - // Data bits and the write line are cleared to 0 in one step (1.25x faster) - #define clr_mask (dir_mask | (1 << TFT_WR)) + #if (TFT_D0 >= 32) + // Data bits and the write line are cleared sequentially + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK); WR_L + #elif (TFT_D0 >= 0) + // Data bits and the write line are cleared to 0 in one step (1.25x faster) + #define GPIO_OUT_CLR_MASK (GPIO_DIR_MASK | (1 << TFT_WR)) + #endif #else - #define clr_mask + #define GPIO_OUT_CLR_MASK #endif // A lookup table is used to set the different bit patterns, this uses 1kByte of RAM @@ -381,53 +410,53 @@ SPI3_HOST = 2 //*/ // Write 8 bits to TFT - #define tft_Write_8(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t)(C)); WR_H + #define tft_Write_8(C) GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t)(C)); WR_H #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT - #define tft_Write_16(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0xF800)>> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x07E0)>> 3)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x001F)<< 3)); WR_H + // Write 18-bit color to TFT + #define tft_Write_16(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0xF800)>> 8)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x07E0)>> 3)); WR_H; \ + GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) (((C) & 0x001F)<< 3)); WR_H - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else #ifdef PSEUDO_16_BIT // One write strobe for both bytes - #define tft_Write_16(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H - #define tft_Write_16S(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H + #define tft_Write_16(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_16S(C) GPIO.out_w1tc = GPIO_OUT_CLR_MASK; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H #else // Write 16 bits to TFT - #define tft_Write_16(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_16(C) GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 0)); WR_H - // 16 bit write with swapped bytes - #define tft_Write_16S(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H + // 16-bit write with swapped bytes + #define tft_Write_16S(C) GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 8)); WR_H #endif #endif // Write 32 bits to TFT - #define tft_Write_32(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 24)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 16)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + #define tft_Write_32(C) GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 24)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 16)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 0)); WR_H - // Write two concatenated 16 bit values to TFT - #define tft_Write_32C(C,D) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((D) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((D) >> 0)); WR_H + // Write two concatenated 16-bit values to TFT + #define tft_Write_32C(C,D) GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((D) >> 8)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((D) >> 0)); WR_H - // Write 16 bit value twice to TFT - used by drawPixel() - #define tft_Write_32D(C) GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 8)); WR_H; \ - GPIO.out_w1tc = clr_mask; GPIO.out_w1ts = set_mask((uint8_t) ((C) >> 0)); WR_H + // Write 16-bit value twice to TFT - used by drawPixel() + #define tft_Write_32D(C) GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 0)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 8)); WR_H; \ + GPIO_CLR_REG = GPIO_OUT_CLR_MASK; GPIO_SET_REG = set_mask((uint8_t) ((C) >> 0)); WR_H // Read pin #ifdef TFT_RD @@ -452,12 +481,12 @@ SPI3_HOST = 2 //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI ILI948x TFT //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour // Write 8 bits to TFT #define tft_Write_8(C) spi.transfer(C) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16(C) spi.transfer(((C) & 0xF800)>>8); \ spi.transfer(((C) & 0x07E0)>>3); \ spi.transfer(((C) & 0x001F)<<3) @@ -465,7 +494,7 @@ SPI3_HOST = 2 // Future option for transfer without wait #define tft_Write_16N(C) tft_Write_16(C) - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes + // Convert swapped byte 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16S(C) spi.transfer((C) & 0xF8); \ spi.transfer(((C) & 0xE000)>>11 | ((C) & 0x07)<<5); \ spi.transfer(((C) & 0x1F00)>>5) @@ -473,29 +502,29 @@ SPI3_HOST = 2 // Write 32 bits to TFT #define tft_Write_32(C) spi.write32(C) - // Write two concatenated 16 bit values to TFT + // Write two concatenated 16-bit values to TFT #define tft_Write_32C(C,D) spi.write32((C)<<16 | (D)) - // Write 16 bit value twice to TFT + // Write 16-bit value twice to TFT #define tft_Write_32D(C) spi.write32((C)<<16 | (C)) //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to an Raspberry Pi TFT //////////////////////////////////////////////////////////////////////////////////////// #elif defined (RPI_DISPLAY_TYPE) - - // ESP32 low level SPI writes for 8, 16 and 32 bit values + // ESP32-S3 low level SPI writes for 8, 16 and 32-bit values // to avoid the function call overhead - #define TFT_WRITE_BITS(D, B) \ - WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), B-1); \ - WRITE_PERI_REG(SPI_W0_REG(SPI_PORT), D); \ - SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR); \ - while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR); + #define TFT_WRITE_BITS(D, B) *_spi_mosi_dlen = B-1; \ + *_spi_w = D; \ + *_spi_cmd = SPI_UPDATE; \ + while (*_spi_cmd & SPI_UPDATE); \ + *_spi_cmd = SPI_USR; \ + while (*_spi_cmd & SPI_USR); // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS((C)<<8, 16) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Future option for transfer without wait @@ -518,34 +547,6 @@ SPI3_HOST = 2 // Macros for all other SPI displays //////////////////////////////////////////////////////////////////////////////////////// #else -/* Old macros - // ESP32 low level SPI writes for 8, 16 and 32 bit values - // to avoid the function call overhead - #define TFT_WRITE_BITS(D, B) \ - WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), B-1); \ - WRITE_PERI_REG(SPI_W0_REG(SPI_PORT), D); \ - SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR); \ - while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR); - - // Write 8 bits - #define tft_Write_8(C) TFT_WRITE_BITS(C, 8) - - // Write 16 bits with corrected endianness for 16 bit colours - #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) - - // Write 16 bits - #define tft_Write_16S(C) TFT_WRITE_BITS(C, 16) - - // Write 32 bits - #define tft_Write_32(C) TFT_WRITE_BITS(C, 32) - - // Write two address coordinates - #define tft_Write_32C(C,D) TFT_WRITE_BITS((uint16_t)((D)<<8 | (D)>>8)<<16 | (uint16_t)((C)<<8 | (C)>>8), 32) - - // Write same value twice - #define tft_Write_32D(C) TFT_WRITE_BITS((uint16_t)((C)<<8 | (C)>>8)<<16 | (uint16_t)((C)<<8 | (C)>>8), 32) -//*/ -//* Replacement slimmer macros #if !defined(CONFIG_IDF_TARGET_ESP32S3) #define TFT_WRITE_BITS(D, B) *_spi_mosi_dlen = B-1; \ *_spi_w = D; \ @@ -562,7 +563,7 @@ SPI3_HOST = 2 // Write 8 bits #define tft_Write_8(C) TFT_WRITE_BITS(C, 8) - // Write 16 bits with corrected endianness for 16 bit colours + // Write 16 bits with corrected endianness for 16-bit colours #define tft_Write_16(C) TFT_WRITE_BITS((C)<<8 | (C)>>8, 16) // Future option for transfer without wait @@ -570,13 +571,13 @@ SPI3_HOST = 2 #define tft_Write_16N(C) *_spi_mosi_dlen = 16-1; \ *_spi_w = ((C)<<8 | (C)>>8); \ *_spi_cmd = SPI_USR; -#else + #else #define tft_Write_16N(C) *_spi_mosi_dlen = 16-1; \ *_spi_w = ((C)<<8 | (C)>>8); \ *_spi_cmd = SPI_UPDATE; \ while (*_spi_cmd & SPI_UPDATE); \ *_spi_cmd = SPI_USR; -#endif + #endif // Write 16 bits #define tft_Write_16S(C) TFT_WRITE_BITS(C, 16) @@ -590,7 +591,6 @@ SPI3_HOST = 2 // Write same value twice #define tft_Write_32D(C) TFT_WRITE_BITS((uint16_t)((C)<<8 | (C)>>8)<<16 | (uint16_t)((C)<<8 | (C)>>8), 32) -//*/ #endif #ifndef tft_Write_16N diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP8266.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP8266.c similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP8266.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP8266.c index 83939f9d..b49380a9 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP8266.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP8266.c @@ -109,7 +109,7 @@ void TFT_eSPI::pushSwapBytePixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -122,7 +122,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) uint8_t r = (color & 0xF800)>>8; uint8_t g = (color & 0x07E0)>>3; uint8_t b = (color & 0x001F)<<3; - // Concatenate 4 pixels into three 32 bit blocks + // Concatenate 4 pixels into three 32-bit blocks uint32_t r0 = r<<24 | b<<16 | g<<8 | r; uint32_t r1 = g<<24 | r<<16 | b<<8 | g; uint32_t r2 = b<<24 | g<<16 | r<<8 | b; diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP8266.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP8266.h similarity index 96% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP8266.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP8266.h index 24d8fffd..1aacc1ee 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_ESP8266.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_ESP8266.h @@ -19,7 +19,7 @@ #define DMA_BUSY_CHECK // DMA not available, leave blank // Initialise processor specific SPI functions, used by init() -#if (!defined (SUPPORT_TRANSACTIONS) && defined (ESP8266)) +#if (!defined (SUPPORT_TRANSACTIONS) && defined (ARDUINO_ARCH_ESP8266)) #define INIT_TFT_DATA_BUS \ spi.setBitOrder(MSBFIRST); \ spi.setDataMode(TFT_SPI_MODE); \ @@ -117,17 +117,17 @@ //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI ILI948x TFT //////////////////////////////////////////////////////////////////////////////////////// -#if defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#if defined (SPI_18BIT_DRIVER) // SPI 18-bit colour // Write 8 bits to TFT #define tft_Write_8(C) spi.transfer(C) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16(C) spi.transfer(((C) & 0xF800)>>8); \ spi.transfer(((C) & 0x07E0)>>3); \ spi.transfer(((C) & 0x001F)<<3) - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes + // Convert swapped byte 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16S(C) spi.transfer((C) & 0xF8); \ spi.transfer(((C) & 0xE000)>>11 | ((C) & 0x07)<<5); \ spi.transfer(((C) & 0x1F00)>>5) @@ -148,7 +148,7 @@ // Command is 16 bits #define CMD_BITS 16 - // ESP8266 low level SPI writes for 8, 16 and 32 bit values + // ESP8266 low level SPI writes for 8, 16 and 32-bit values // to avoid the function call overhead #define TFT_WRITE_BITS(D, B) \ SPI1U1 = ((B-1) << SPILMOSI); \ diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_Generic.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_Generic.c similarity index 98% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_Generic.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_Generic.c index 14eda108..1c2287b3 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_Generic.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_Generic.c @@ -172,7 +172,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -216,7 +216,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#else // Standard SPI 16 bit colour TFT +#else // Standard SPI 16-bit colour TFT //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_Generic.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_Generic.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_Generic.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_Generic.h index 8b316552..df7981d3 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_Generic.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_Generic.h @@ -3,7 +3,7 @@ //////////////////////////////////////////////////// // This is a generic driver for Arduino boards, it supports SPI interface displays -// 8 bit parallel interface to TFT is not supported for generic processors +// 8-bit parallel interface to TFT is not supported for generic processors #ifndef _TFT_eSPI_GENERICH_ #define _TFT_eSPI_GENERICH_ @@ -94,17 +94,17 @@ //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI ILI948x TFT //////////////////////////////////////////////////////////////////////////////////////// -#if defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#if defined (SPI_18BIT_DRIVER) // SPI 18-bit colour // Write 8 bits to TFT #define tft_Write_8(C) spi.transfer(C) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16(C) spi.transfer(((C) & 0xF800)>>8); \ spi.transfer(((C) & 0x07E0)>>3); \ spi.transfer(((C) & 0x001F)<<3) - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes + // Convert swapped byte 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16S(C) spi.transfer((C) & 0xF8); \ spi.transfer(((C) & 0xE000)>>11 | ((C) & 0x07)<<5); \ spi.transfer(((C) & 0x1F00)>>5) @@ -121,7 +121,7 @@ // Macros to write commands/pixel colour data to other displays //////////////////////////////////////////////////////////////////////////////////////// #else - #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16 bit transfers + #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16-bit transfers #define tft_Write_8(C) spi.transfer(C); spi.transfer(C) #define tft_Write_16(C) spi.transfer((uint8_t)((C)>>8));spi.transfer((uint8_t)((C)>>0)) #define tft_Write_16S(C) spi.transfer((uint8_t)((C)>>0));spi.transfer((uint8_t)((C)>>8)) @@ -143,7 +143,7 @@ spi.transfer(0); spi.transfer((C)>>0) #else - #ifdef __AVR__ // AVR processors do not have 16 bit transfer + #ifdef __AVR__ // AVR processors do not have 16-bit transfer #define tft_Write_8(C) {SPDR=(C); while (!(SPSR&_BV(SPIF)));} #define tft_Write_16(C) tft_Write_8((uint8_t)((C)>>8));tft_Write_8((uint8_t)((C)>>0)) #define tft_Write_16S(C) tft_Write_8((uint8_t)((C)>>0));tft_Write_8((uint8_t)((C)>>8)) diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_RP2040.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_RP2040.c similarity index 93% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_RP2040.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_RP2040.c index 4e3ab4fa..e046c7a3 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_RP2040.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_RP2040.c @@ -18,21 +18,26 @@ SPIClassRP2040 spi = SPIClassRP2040(SPI_X, TFT_MISO, -1, TFT_SCLK, TFT_MOSI); #endif -#else // PIO interface used (8 bit parallel or SPI) +#else // PIO interface used (8-bit parallel or SPI) #ifdef RP2040_PIO_SPI #if defined (SPI_18BIT_DRIVER) - // SPI PIO code for 18 bit colour transmit + // SPI PIO code for 18-bit colour transmit #include "pio_SPI_18bit.pio.h" #else - // SPI PIO code for 16 bit colour transmit + // SPI PIO code for 16-bit colour transmit #include "pio_SPI.pio.h" #endif #elif defined (TFT_PARALLEL_8_BIT) - // SPI PIO code for 8 bit parallel interface (16 bit colour) - #include "pio_8bit_parallel.pio.h" + #if defined (SSD1963_DRIVER) + // PIO code for 8-bit parallel interface (18-bit colour) + #include "pio_8bit_parallel_18bpp.pio.h" + #else + // PIO code for 8-bit parallel interface (16-bit colour) + #include "pio_8bit_parallel.pio.h" + #endif #else // must be TFT_PARALLEL_16_BIT - // SPI PIO code for 16 bit parallel interface (16 bit colour) + // PIO code for 16-bit parallel interface (16-bit colour) #include "pio_16bit_parallel.pio.h" #endif @@ -123,24 +128,12 @@ void TFT_eSPI::end_SDA_Read(void) #ifdef RP2040_PIO_SPI void pioinit(uint32_t clock_freq) { - // Find a free SM on one of the PIO's - tft_pio = pio0; - - /* - pio_sm = pio_claim_unused_sm(tft_pio, false); // false means don't panic - // Try pio1 if SM not found - if (pio_sm < 0) { - tft_pio = pio1; - pio_sm = pio_claim_unused_sm(tft_pio, true); // panic this time if no SM is free - } - */ - // Find enough free space on one of the PIO's tft_pio = pio0; if (!pio_can_add_program(tft_pio, &tft_io_program)) { tft_pio = pio1; if (!pio_can_add_program(tft_pio, &tft_io_program)) { - Serial.println("No room for PIO program!"); + // Serial.println("No room for PIO program!"); return; } } @@ -192,29 +185,21 @@ void pioinit(uint32_t clock_freq) { pio_instr_set_dc = pio_encode_set((pio_src_dest)0, 1); pio_instr_clr_dc = pio_encode_set((pio_src_dest)0, 0); } -#else // 8 or 16 bit parallel +#else // 8 or 16-bit parallel void pioinit(uint16_t clock_div, uint16_t fract_div) { - // Find a free SM on one of the PIO's - tft_pio = pio0; - pio_sm = pio_claim_unused_sm(tft_pio, false); // false means don't panic - // Try pio1 if SM not found - if (pio_sm < 0) { - tft_pio = pio1; - pio_sm = pio_claim_unused_sm(tft_pio, true); // panic this time if no SM is free - } -/* // Find enough free space on one of the PIO's tft_pio = pio0; - if (!pio_can_add_program(tft_pio, &tft_io_program) { + if (!pio_can_add_program(tft_pio, &tft_io_program)) { tft_pio = pio1; - if (!pio_can_add_program(tft_pio, &tft_io_program) { - Serial.println("No room for PIO program!"); - while(1) delay(100); + if (!pio_can_add_program(tft_pio, &tft_io_program)) { + // Serial.println("No room for PIO program!"); return; } } -*/ + + pio_sm = pio_claim_unused_sm(tft_pio, false); + #if defined (TFT_PARALLEL_8_BIT) uint8_t bits = 8; #else // must be TFT_PARALLEL_16_BIT @@ -279,7 +264,7 @@ void pioinit(uint16_t clock_div, uint16_t fract_div) { // PIO handles pixel block fill writes void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) { -#if defined (SPI_18BIT_DRIVER) +#if defined (SPI_18BIT_DRIVER) || (defined (SSD1963_DRIVER) && defined (TFT_PARALLEL_8_BIT)) uint32_t col = ((color & 0xF800)<<8) | ((color & 0x07E0)<<5) | ((color & 0x001F)<<3); if (len) { WAIT_FOR_STALL; @@ -327,7 +312,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len){ ** Description: Write a sequence of pixels ***************************************************************************************/ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ -#if defined (SPI_18BIT_DRIVER) +#if defined (SPI_18BIT_DRIVER) || (defined (SSD1963_DRIVER) && defined (TFT_PARALLEL_8_BIT)) uint16_t *data = (uint16_t*)data_in; if (_swapBytes) { while ( len-- ) { @@ -473,7 +458,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -486,12 +471,12 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) uint16_t g = (color & 0x07E0)>>3; uint16_t b = (color & 0x001F)<<3; - // If more than 32 pixels then change to 16 bit transfers with concatenated pixels + // If more than 32 pixels then change to 16-bit transfers with concatenated pixels if (len > 32) { uint32_t rg = r<<8 | g; uint32_t br = b<<8 | r; uint32_t gb = g<<8 | b; - // Must wait before changing to 16 bit + // Must wait before changing to 16-bit while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); while ( len > 1 ) { @@ -500,7 +485,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) while (!spi_is_writable(SPI_X)){}; spi_get_hw(SPI_X)->dr = gb; len -= 2; } - // Must wait before changing back to 8 bit + // Must wait before changing back to 8-bit while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; hw_write_masked(&spi_get_hw(SPI_X)->cr0, (8 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); } @@ -531,7 +516,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ } //////////////////////////////////////////////////////////////////////////////////////// -#else // Standard SPI 16 bit colour TFT +#else // Standard SPI 16-bit colour TFT //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -577,7 +562,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){ //////////////////////////////////////////////////////////////////////////////////////// -#ifdef RP2040_DMA // DMA functions for 16 bit SPI and 8 bit parallel displays +#ifdef RP2040_DMA // DMA functions for 16-bit SPI and 8/16-bit parallel displays //////////////////////////////////////////////////////////////////////////////////////// /* These are created in header file: diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_RP2040.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_RP2040.h similarity index 81% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_RP2040.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_RP2040.h index 35ec19f9..f10058fe 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_RP2040.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_RP2040.h @@ -3,7 +3,7 @@ //////////////////////////////////////////////////// // This is a generic driver for Arduino boards, it supports SPI interface displays -// 8 bit parallel interface to TFT is not supported for generic processors +// 8-bit parallel interface to TFT is not supported for generic processors #ifndef _TFT_eSPI_RP2040H_ #define _TFT_eSPI_RP2040H_ @@ -49,7 +49,7 @@ // Processor specific code used by SPI bus transaction begin/end_tft_write functions #define SET_BUS_WRITE_MODE spi_set_format(SPI_X, 8, (spi_cpol_t)(TFT_SPI_MODE >> 1), (spi_cpha_t)(TFT_SPI_MODE & 0x1), SPI_MSB_FIRST) - #define SET_BUS_READ_MODE // spi_set_format(SPI_X, 8, (spi_cpol_t)0, (spi_cpha_t)0, SPI_MSB_FIRST) + #define SET_BUS_READ_MODE spi_set_format(SPI_X, 8, (spi_cpol_t)0, (spi_cpha_t)0, SPI_MSB_FIRST) #else // Processor specific code used by SPI bus transaction begin/end_tft_write functions #define SET_BUS_WRITE_MODE @@ -65,9 +65,20 @@ #define DMA_BUSY_CHECK #endif +// Handle high performance MHS RPi display type +#if defined (MHS_DISPLAY_TYPE) && !defined (RPI_DISPLAY_TYPE) + #define RPI_DISPLAY_TYPE +#endif + #if !defined (RP2040_PIO_INTERFACE) // SPI - // Initialise processor specific SPI functions, used by init() - #define INIT_TFT_DATA_BUS // Not used + + #if defined (MHS_DISPLAY_TYPE) // High speed RPi TFT type always needs 16-bit transfers + // This swaps to 16-bit mode, used for commands so wait avoids clash with DC timing + #define INIT_TFT_DATA_BUS hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS) + #else + // Initialise processor specific SPI functions, used by init() + #define INIT_TFT_DATA_BUS // Not used + #endif // Wait for tx to end, flush rx FIFO, clear rx overrun #define SPI_BUSY_CHECK while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; \ @@ -82,9 +93,18 @@ // Different controllers have different minimum write cycle periods, so the PIO clock is changed accordingly // The PIO clock is a division of the CPU clock so scales when the processor is overclocked - // PIO write frequency = (CPU clock/(4 * DIV_UNITS)) - #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RP2040_PIO_SPI) - #if defined (TFT_PARALLEL_16_BIT) + // PIO write frequency = (CPU clock/(4 * RP2040_PIO_CLK_DIV)) + // The write cycle periods below assume a 125MHz CPU clock speed + #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) + #if defined (RP2040_PIO_CLK_DIV) + #if (RP2040_PIO_CLK_DIV > 0) + #define DIV_UNITS RP2040_PIO_CLK_DIV + #define DIV_FRACT 0 + #else + #define DIV_UNITS 3 + #define DIV_FRACT 0 + #endif + #elif defined (TFT_PARALLEL_16_BIT) // Different display drivers have different minimum write cycle times #if defined (HX8357C_DRIVER) || defined (SSD1963_DRIVER) #define DIV_UNITS 1 // 32ns write cycle time SSD1963, HX8357C (maybe HX8357D?) @@ -94,14 +114,9 @@ #define DIV_UNITS 3 // 96ns write cycle time #endif #define DIV_FRACT 0 - #else // 8 bit parallel mode - #ifdef ILI9481_DRIVER - #define DIV_UNITS 1 - #define DIV_FRACT 160 // Note: Fractional values done with clock period dithering - #else - #define DIV_UNITS 1 - #define DIV_FRACT 0 - #endif + #else // 8-bit parallel mode default 64ns write cycle time + #define DIV_UNITS 2 + #define DIV_FRACT 0 // Note: Fractional values done with clock period dithering #endif #endif @@ -137,7 +152,7 @@ #if !defined (RP2040_PIO_INTERFACE)// SPI //#define DC_C sio_hw->gpio_clr = (1ul << TFT_DC) //#define DC_D sio_hw->gpio_set = (1ul << TFT_DC) - #if defined (RPI_DISPLAY_TYPE) + #if defined (RPI_DISPLAY_TYPE) && !defined (MHS_DISPLAY_TYPE) #define DC_C digitalWrite(TFT_DC, LOW); #define DC_D digitalWrite(TFT_DC, HIGH); #else @@ -150,8 +165,13 @@ #define DC_C WAIT_FOR_STALL; \ tft_pio->sm[pio_sm].instr = pio_instr_clr_dc - // Flush has happened before this and mode changed back to 16 bit - #define DC_D tft_pio->sm[pio_sm].instr = pio_instr_set_dc + #ifndef RM68120_DRIVER + // Flush has happened before this and mode changed back to 16-bit + #define DC_D tft_pio->sm[pio_sm].instr = pio_instr_set_dc + #else + // Need to wait for stall since RM68120 commands are 16-bit + #define DC_D WAIT_FOR_STALL; tft_pio->sm[pio_sm].instr = pio_instr_set_dc + #endif #endif #endif @@ -163,7 +183,7 @@ #define CS_H // No macro allocated so it generates no code #else #if !defined (RP2040_PIO_INTERFACE) // SPI - #if defined (RPI_DISPLAY_TYPE) + #if defined (RPI_DISPLAY_TYPE) && !defined (MHS_DISPLAY_TYPE) #define CS_L digitalWrite(TFT_CS, LOW); #define CS_H digitalWrite(TFT_CS, HIGH); #else @@ -237,7 +257,7 @@ //////////////////////////////////////////////////////////////////////////////////////// #if !defined (RP2040_PIO_INTERFACE) // SPI - #if defined (SPI_18BIT_DRIVER) // SPI 18 bit colour + #if defined (SPI_18BIT_DRIVER) // SPI 18-bit colour // Write 8 bits to TFT #define tft_Write_8(C) spi_get_hw(SPI_X)->dr = (uint32_t)(C); \ @@ -247,17 +267,17 @@ #define tft_Write_8N(B) while (!spi_is_writable(SPI_X)){}; \ spi_get_hw(SPI_X)->dr = (uint8_t)(B) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16(C) tft_Write_8N(((C) & 0xF800)>>8); \ tft_Write_8N(((C) & 0x07E0)>>3); \ tft_Write_8N(((C) & 0x001F)<<3) - // Convert 16 bit colour to 18 bit and write in 3 bytes + // Convert 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16N(C) tft_Write_8N(((C) & 0xF800)>>8); \ tft_Write_8N(((C) & 0x07E0)>>3); \ tft_Write_8N(((C) & 0x001F)<<3) - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes + // Convert swapped byte 16-bit colour to 18-bit and write in 3 bytes #define tft_Write_16S(C) tft_Write_8N((C) & 0xF8); \ tft_Write_8N(((C) & 0xE000)>>11 | ((C) & 0x07)<<5); \ tft_Write_8N(((C) & 0x1F00)>>5) @@ -283,7 +303,28 @@ // Macros to write commands/pixel colour data to other displays //////////////////////////////////////////////////////////////////////////////////////// #else - #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16 bit transfers + #if defined (MHS_DISPLAY_TYPE) // High speed RPi TFT type always needs 16-bit transfers + // This swaps to 16-bit mode, used for commands so wait avoids clash with DC timing + #define tft_Write_8(C) while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; \ + hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); \ + spi_get_hw(SPI_X)->dr = (uint32_t)((C) | ((C)<<8)); \ + while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; \ + + // Note: the following macros do not wait for the end of transmission + + #define tft_Write_16(C) while (!spi_is_writable(SPI_X)){}; spi_get_hw(SPI_X)->dr = (uint32_t)(C) + + #define tft_Write_16N(C) while (!spi_is_writable(SPI_X)){}; spi_get_hw(SPI_X)->dr = (uint32_t)(C) + + #define tft_Write_16S(C) while (!spi_is_writable(SPI_X)){}; spi_get_hw(SPI_X)->dr = (uint32_t)(C)<<8 | (C)>>8 + + #define tft_Write_32(C) spi_get_hw(SPI_X)->dr = (uint32_t)((C)>>16); spi_get_hw(SPI_X)->dr = (uint32_t)(C) + + #define tft_Write_32C(C,D) spi_get_hw(SPI_X)->dr = (uint32_t)(C); spi_get_hw(SPI_X)->dr = (uint32_t)(D) + + #define tft_Write_32D(C) spi_get_hw(SPI_X)->dr = (uint32_t)(C); spi_get_hw(SPI_X)->dr = (uint32_t)(C) + + #elif defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16-bit transfers #define tft_Write_8(C) spi.transfer(C); spi.transfer(C) #define tft_Write_16(C) spi.transfer((uint8_t)((C)>>8));spi.transfer((uint8_t)((C)>>0)) #define tft_Write_16N(C) spi.transfer((uint8_t)((C)>>8));spi.transfer((uint8_t)((C)>>0)) @@ -307,7 +348,7 @@ #elif defined (ILI9225_DRIVER) // Needs gaps between commands + data bytes, so use slower transfer functions - // Warning: these all end in 8 bit SPI mode! + // Warning: these all end in 8-bit SPI mode! #define tft_Write_8(C) spi.transfer(C); #define tft_Write_16(C) spi.transfer16(C) @@ -324,7 +365,7 @@ #else - // This swaps to 8 bit mode, then back to 16 bit mode + // This swaps to 8-bit mode, then back to 16-bit mode #define tft_Write_8(C) while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; \ hw_write_masked(&spi_get_hw(SPI_X)->cr0, (8 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); \ spi_get_hw(SPI_X)->dr = (uint32_t)(C); \ @@ -348,7 +389,7 @@ #endif // RPI_DISPLAY_TYPE #endif -#else // Parallel 8 bit or PIO SPI +#else // Parallel 8-bit or PIO SPI // Wait for the PIO to stall (SM pull request finds no data in TX FIFO) // This is used to detect when the SM is idle and hence ready for a jump instruction @@ -370,17 +411,17 @@ #define TX_FIFO tft_pio->txf[pio_sm] // Temporary - to be deleted - #define dir_mask 0 + #define GPIO_DIR_MASK 0 - #if defined (SPI_18BIT_DRIVER) // SPI 18 bit colour - // This writes 8 bits, then switches back to 16 bit mode automatically + #if defined (SPI_18BIT_DRIVER) || defined (SSD1963_DRIVER) // 18-bit colour (3 bytes) + // This writes 8 bits, then switches back to 16-bit mode automatically // Have already waited for pio stalled (last data write complete) when DC switched to command mode // The wait for stall allows DC to be changed immediately afterwards #define tft_Write_8(C) tft_pio->sm[pio_sm].instr = pio_instr_jmp8; \ TX_FIFO = (C); \ WAIT_FOR_STALL - // Used to send last byte for 32 bit macros below since PIO sends 24 bits + // Used to send last byte for 32-bit macros below since PIO sends 24 bits #define tft_Write_8L(C) WAIT_FOR_STALL; \ tft_pio->sm[pio_sm].instr = pio_instr_jmp8; \ TX_FIFO = (C) @@ -400,14 +441,14 @@ #define tft_Write_32D(C) WAIT_FOR_FIFO_FREE(2); TX_FIFO = (((C)<<8) | ((C)>>8)); tft_Write_8L(C) #else // PIO interface, SPI or parallel - // This writes 8 bits, then switches back to 16 bit mode automatically + // This writes 8 bits, then switches back to 16-bit mode automatically // Have already waited for pio stalled (last data write complete) when DC switched to command mode // The wait for stall allows DC to be changed immediately afterwards #if defined (TFT_PARALLEL_8_BIT) || defined (RP2040_PIO_SPI) #define tft_Write_8(C) tft_pio->sm[pio_sm].instr = pio_instr_jmp8; \ TX_FIFO = (C); \ WAIT_FOR_STALL - #else // For 16 bit parallel 16 bits are always sent + #else // For 16-bit parallel 16 bits are always sent #define tft_Write_8(C) TX_FIFO = (C); \ WAIT_FOR_STALL #endif diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_STM32.c b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_STM32.c similarity index 90% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_STM32.c rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_STM32.c index 9fcd0137..a74dcbc2 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_STM32.c +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_STM32.c @@ -24,9 +24,6 @@ DMA_HandleTypeDef dmaHal; #endif - // Buffer for SPI transmit byte padding and byte order manipulation - uint8_t spiBuffer[8]; - //////////////////////////////////////////////////////////////////////////////////////// #if defined (TFT_SDA_READ) && !defined (TFT_PARALLEL_8_BIT) //////////////////////////////////////////////////////////////////////////////////////// @@ -76,7 +73,7 @@ void TFT_eSPI::end_SDA_Read(void) //////////////////////////////////////////////////////////////////////////////////////// -#if defined (TFT_PARALLEL_8_BIT) // Code for STM32 8 bit parallel +#if defined (TFT_PARALLEL_8_BIT) // Code for STM32 8-bit parallel //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -286,7 +283,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) } //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -296,34 +293,19 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) #define BUF_SIZE 240*3 void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) { - uint8_t col[BUF_SIZE]; + //uint8_t col[BUF_SIZE]; // Always using swapped bytes is a peculiarity of this function... //color = color>>8 | color<<8; uint8_t r = (color & 0xF800)>>8; // Red uint8_t g = (color & 0x07E0)>>3; // Green uint8_t b = (color & 0x001F)<<3; // Blue - if (len=BUF_SIZE/3 ) ; - // Send remaining pixels - if (len) HAL_SPI_Transmit(&spiHal, col, len*3, HAL_MAX_DELAY); //*/ + SPI_BUSY_CHECK; } /*************************************************************************************** ** Function name: pushPixels - for STM32 and 3 byte RGB display @@ -333,30 +315,29 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) { uint16_t *data = (uint16_t*)data_in; - if(_swapBytes) { + if(!_swapBytes) { while ( len-- ) { // Split out the colours - spiBuffer[0] = (*data & 0xF8); // Red - spiBuffer[1] = (*data & 0xE000)>>11 | (*data & 0x07)<<5; // Green - spiBuffer[2] = (*data & 0x1F00)>>5; // Blue + TX_FIFO = (*data & 0xF8); // Red + TX_FIFO = (*data & 0xE000)>>11 | (*data & 0x07)<<5; // Green + TX_FIFO = (*data & 0x1F00)>>5; // Blue data++; - HAL_SPI_Transmit(&spiHal, spiBuffer, 3, HAL_MAX_DELAY); } } else { while ( len-- ) { // Split out the colours - spiBuffer[0] = (*data & 0xF800)>>8; // Red - spiBuffer[1] = (*data & 0x07E0)>>3; // Green - spiBuffer[2] = (*data & 0x001F)<<3; // Blue + TX_FIFO = (*data & 0xF800)>>8; // Red + TX_FIFO = (*data & 0x07E0)>>3; // Green + TX_FIFO = (*data & 0x001F)<<3; // Blue data++; - HAL_SPI_Transmit(&spiHal, spiBuffer, 3, HAL_MAX_DELAY); } } + SPI_BUSY_CHECK; } //////////////////////////////////////////////////////////////////////////////////////// -#else // Standard SPI 16 bit colour TFT All Tested +#else // Standard SPI 16-bit colour TFT All Tested //////////////////////////////////////////////////////////////////////////////////////// /*************************************************************************************** @@ -364,6 +345,7 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) ** Description: Write a block of pixels of the same colour ***************************************************************************************/ #define BUF_SIZE 480 +/* void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) { uint16_t col[BUF_SIZE]; @@ -381,7 +363,47 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) len -= BUF_SIZE; } while ( len>=BUF_SIZE ) ; // Send remaining pixels - if (len) HAL_SPI_Transmit(&spiHal, (uint8_t*)col, len<<1, HAL_MAX_DELAY); //*/ + if (len) HAL_SPI_Transmit(&spiHal, (uint8_t*)col, len<<1, HAL_MAX_DELAY); +} + //*/ +void TFT_eSPI::pushBlock(uint16_t color, uint32_t len){ + // Loop unrolling improves speed dramatically graphics test 0.634s => 0.374s + while (len>31) { + #if !defined (SSD1963_DRIVER) + // 32D macro writes 16 bits twice + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + #else + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + #endif + len-=32; + } + + while (len>7) { + #if !defined (SSD1963_DRIVER) + tft_Write_32D(color); tft_Write_32D(color); + tft_Write_32D(color); tft_Write_32D(color); + #else + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); tft_Write_16(color); + #endif + len-=8; + } + + while (len--) {tft_Write_16(color);} } @@ -392,26 +414,23 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) void TFT_eSPI::pushPixels(const void* data_in, uint32_t len) { uint16_t *data = (uint16_t*)data_in; + if(_swapBytes) { - uint16_t col[BUF_SIZE]; // Buffer for swapped bytes - while ( len>=BUF_SIZE ) { - for (uint32_t i = 0; i < BUF_SIZE; i++) { col[i] = (*data>>8) | (*data<<8); data++; } - HAL_SPI_Transmit(&spiHal, (uint8_t*)col, BUF_SIZE<<1, HAL_MAX_DELAY); - len -= BUF_SIZE; + while ( len-- ) { + TX_FIFO = (uint8_t)(*data>>8); + TX_FIFO = (uint8_t)(*data); + data++; } - for (uint32_t i = 0; i < len; i++) { col[i] = (*data>>8) | (*data<<8); data++; } - HAL_SPI_Transmit(&spiHal, (uint8_t*)col, len<<1, HAL_MAX_DELAY); } else { - // HAL byte count for transmit is only 16 bits maximum so to avoid this constraint - // transfers of small blocks are performed until HAL capacity is reached. - while(len>0x7FFF) { // Transfer 16 bit pixels in blocks if len*2 over 65534 bytes - HAL_SPI_Transmit(&spiHal, (uint8_t*)data, 0x800<<1, HAL_MAX_DELAY); - len -= 0x800; data+= 0x800; // Arbitrarily use 2KByte blocks + while ( len-- ) { + // Split out the colours + TX_FIFO = (uint8_t)(*data); + TX_FIFO = (uint8_t)(*data>>8); + data++; } - // Send remaining pixels (max 65534 bytes) - HAL_SPI_Transmit(&spiHal, (uint8_t*)data, len<<1, HAL_MAX_DELAY); } + SPI_BUSY_CHECK; } //////////////////////////////////////////////////////////////////////////////////////// @@ -527,7 +546,7 @@ void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t // small transfers are performed using a blocking call until DMA capacity is reached. // User sketch can prevent blocking by managing pixel count and splitting into blocks // of 32767 pixels maximum. (equivalent to an area of ~320 x 100 pixels) - while(len>0x7FFF) { // Transfer 16 bit pixels in blocks if len*2 over 65534 bytes + while(len>0x7FFF) { // Transfer 16-bit pixels in blocks if len*2 over 65534 bytes HAL_SPI_Transmit(&spiHal, (uint8_t*)buffer, 0x800<<1, HAL_MAX_DELAY); len -= 0x800; buffer+= 0x800; // Arbitrarily send 1K pixel blocks (2Kbytes) } @@ -598,6 +617,8 @@ bool TFT_eSPI::initDMA(bool ctrl_cs) HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); // Enable DMA end interrupt handler #elif (TFT_SPI_PORT == 2) HAL_NVIC_EnableIRQ(DMA1_Stream4_IRQn); // Enable DMA end interrupt handler + #elif (TFT_SPI_PORT == 3) + HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn); #endif __HAL_LINKDMA(&spiHal, hdmatx, dmaHal); // Attach DMA engine to SPI peripheral diff --git a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_STM32.h b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_STM32.h similarity index 91% rename from libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_STM32.h rename to libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_STM32.h index 2b23a585..73a22cbf 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/TFT_eSPI_STM32.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/TFT_eSPI_STM32.h @@ -151,6 +151,15 @@ #define TFT_SPI_PORT 1 #endif + #if (TFT_SPI_PORT == 1) + #define SPIX SPI1 + #elif (TFT_SPI_PORT == 2) + #define SPIX SPI2 + #elif (TFT_SPI_PORT == 3) + #define SPIX SPI3 + #elif (TFT_SPI_PORT == 4) + #define SPIX SPI4 + #endif // Global define is _VARIANT_ARDUINO_STM32_, see board package stm32_def.h for specific variants #if defined (STM32F2xx) || defined (STM32F4xx) || defined (STM32F7xx) @@ -226,8 +235,8 @@ #define DC_PORT digitalPinToPort(TFT_DC) #define DC_PIN_MASK digitalPinToBitMask(TFT_DC) // Use bit set reset register - #define DC_C DC_PORT->BSRR = DC_PIN_MASK<<16 - #define DC_D DC_PORT->BSRR = DC_PIN_MASK + #define DC_C DC_DELAY; DC_PORT->BSRR = DC_PIN_MASK<<16 + #define DC_D DC_DELAY; DC_PORT->BSRR = DC_PIN_MASK #endif //////////////////////////////////////////////////////////////////////////////////////// @@ -306,7 +315,7 @@ #if defined (TFT_PARALLEL_8_BIT) // Mask for the 8 data bits to set pin directions (not used) - #define dir_mask 0 + #define GPIO_DIR_MASK 0 #define PARALLEL_INIT_TFT_DATA_BUS // None @@ -401,7 +410,7 @@ #define D5_BSR_MASK(B) ((D5_PIN_MASK<<16)>>(((B)>> 1)&0x10)) #define D6_BSR_MASK(B) ((D6_PIN_MASK<<16)>>(((B)>> 2)&0x10)) #define D7_BSR_MASK(B) ((D7_PIN_MASK<<16)>>(((B)>> 3)&0x10)) - // Create bit set/reset mask for top byte of 16 bit value B + // Create bit set/reset mask for top byte of 16-bit value B #define D8_BSR_MASK(B) ((D0_PIN_MASK<<16)>>(((B)>> 4)&0x10)) #define D9_BSR_MASK(B) ((D1_PIN_MASK<<16)>>(((B)>> 5)&0x10)) #define D10_BSR_MASK(B) ((D2_PIN_MASK<<16)>>(((B)>> 6)&0x10)) @@ -420,7 +429,7 @@ #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT (untested) + // Write 18-bit color to TFT (untested) #define tft_Write_16(C) r6 = (((C) & 0xF800)>> 8); g6 = (((C) & 0x07E0)>> 3); b6 = (((C) & 0x001F)<< 3); \ GPIOA->BSRR = D0_BSR_MASK(r6) | D2_BSR_MASK(r6) | D7_BSR_MASK(r6); \ WR_L; \ @@ -438,7 +447,7 @@ GPIOB->BSRR = D3_BSR_MASK(b6) | D4_BSR_MASK(b6) | D5_BSR_MASK(b6) | D6_BSR_MASK(b6); \ WR_STB // Need to slow down strobe - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else @@ -454,7 +463,7 @@ GPIOB->BSRR = D3_BSR_MASK(C) | D4_BSR_MASK(C) | D5_BSR_MASK(C) | D6_BSR_MASK(C); \ WR_STB // Need to slow down strobe - // 16 bit write with swapped bytes + // 16-bit write with swapped bytes #define tft_Write_16S(C) GPIOA->BSRR = D0_BSR_MASK(C) | D2_BSR_MASK(C) | D7_BSR_MASK(C); \ WR_L; \ GPIOC->BSRR = D1_BSR_MASK(C); \ @@ -541,7 +550,7 @@ #define D5_BSR_MASK(B) ((D5_PIN_MASK<<16)>>(((B)>> 1)&0x10)) #define D6_BSR_MASK(B) ((D6_PIN_MASK<<16)>>(((B)>> 2)&0x10)) #define D7_BSR_MASK(B) ((D7_PIN_MASK<<16)>>(((B)>> 3)&0x10)) - // Create bit set/reset mask for top byte of 16 bit value B + // Create bit set/reset mask for top byte of 16-bit value B #define D8_BSR_MASK(B) ((D0_PIN_MASK<<16)>>(((B)>> 4)&0x10)) #define D9_BSR_MASK(B) ((D1_PIN_MASK<<16)>>(((B)>> 5)&0x10)) #define D10_BSR_MASK(B) ((D2_PIN_MASK<<16)>>(((B)>> 6)&0x10)) @@ -561,7 +570,7 @@ #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT (untested) + // Write 18-bit color to TFT (untested) #define tft_Write_16(C) r6 = (((C) & 0xF800)>> 8); g6 = (((C) & 0x07E0)>> 3); b6 = (((C) & 0x001F)<< 3); \ GPIOF->BSRR = D0_BSR_MASK(r6) | D2_BSR_MASK(r6) | D4_BSR_MASK(r6) | D7_BSR_MASK(r6); \ WR_L; \ @@ -579,7 +588,7 @@ GPIOE->BSRR = D3_BSR_MASK(b6) | D5_BSR_MASK(b6) | D6_BSR_MASK(b6); \ WR_STB // Need to slow down strobe - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else @@ -596,7 +605,7 @@ GPIOE->BSRR = D3_BSR_MASK(C) | D5_BSR_MASK(C) | D6_BSR_MASK(C); \ WR_STB - // 16 bit write with swapped bytes + // 16-bit write with swapped bytes #define tft_Write_16S(C) GPIOF->BSRR = D0_BSR_MASK(C) | D2_BSR_MASK(C) | D4_BSR_MASK(C) | D7_BSR_MASK(C); \ WR_L; \ GPIOD->BSRR = D1_BSR_MASK(C); \ @@ -659,7 +668,7 @@ #define D5_BSR_MASK(B) ((D5_PIN_MASK<<16)>>(((B)>> 1)&0x10)) #define D6_BSR_MASK(B) ((D6_PIN_MASK<<16)>>(((B)>> 2)&0x10)) #define D7_BSR_MASK(B) ((D7_PIN_MASK<<16)>>(((B)>> 3)&0x10)) - // Create bit set/reset mask for top byte of 16 bit value B + // Create bit set/reset mask for top byte of 16-bit value B #define D8_BSR_MASK(B) ((D0_PIN_MASK<<16)>>(((B)>> 4)&0x10)) #define D9_BSR_MASK(B) ((D1_PIN_MASK<<16)>>(((B)>> 5)&0x10)) #define D10_BSR_MASK(B) ((D2_PIN_MASK<<16)>>(((B)>> 6)&0x10)) @@ -692,7 +701,7 @@ GPIOE->BSRR = D3_BSR_MASK(C) | D4_BSR_MASK(C) | D5_BSR_MASK(C) | D6_BSR_MASK(C); \ WR_STB - // 16 bit write with swapped bytes + // 16-bit write with swapped bytes #define tft_Write_16S(C) GPIOF->BSRR = D0_BSR_MASK(C); \ GPIOG->BSRR = D2_BSR_MASK(C) | D7_BSR_MASK(C); \ WR_L; \ @@ -743,14 +752,14 @@ #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT (untested) + // Write 18-bit color to TFT (untested) #define tft_Write_16(C) r6 = (((C) & 0xF800)>> 8); g6 = (((C) & 0x07E0)>> 3); b6 = (((C) & 0x001F)<< 3); \ GPIOX->BSRR = (0x00FF0000 | (uint8_t)(r6)); WR_L; WR_STB; \ GPIOX->BSRR = (0x00FF0000 | (uint8_t)(g6)); WR_L; WR_STB; \ GPIOX->BSRR = (0x00FF0000 | (uint8_t)(b6)); WR_L; WR_STB - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else @@ -759,7 +768,7 @@ #define tft_Write_16(C) GPIOX->BSRR = (0x00FF0000 | (uint8_t)(C>>8)); WR_L; WR_STB; \ GPIOX->BSRR = (0x00FF0000 | (uint8_t)(C>>0)); WR_L; WR_STB - // 16 bit write with swapped bytes + // 16-bit write with swapped bytes #define tft_Write_16S(C) GPIOX->BSRR = (0x00FF0000 | (uint8_t)(C>>0)); WR_L; WR_STB; \ GPIOX->BSRR = (0x00FF0000 | (uint8_t)(C>>8)); WR_L; WR_STB #endif @@ -832,7 +841,7 @@ #define D5_BSR_MASK(B) ((D5_PIN_MASK<<16)>>(((B)>> 1)&0x10)) #define D6_BSR_MASK(B) ((D6_PIN_MASK<<16)>>(((B)>> 2)&0x10)) #define D7_BSR_MASK(B) ((D7_PIN_MASK<<16)>>(((B)>> 3)&0x10)) - // Create bit set/reset mask for top byte of 16 bit value B + // Create bit set/reset mask for top byte of 16-bit value B #define D8_BSR_MASK(B) ((D0_PIN_MASK<<16)>>(((B)>> 4)&0x10)) #define D9_BSR_MASK(B) ((D1_PIN_MASK<<16)>>(((B)>> 5)&0x10)) #define D10_BSR_MASK(B) ((D2_PIN_MASK<<16)>>(((B)>> 6)&0x10)) @@ -857,7 +866,7 @@ #if defined (SSD1963_DRIVER) - // Write 18 bit color to TFT (untested) + // Write 18-bit color to TFT (untested) #define tft_Write_16(C) r6 = (((C) & 0xF800)>> 8); g6 = (((C) & 0x07E0)>> 3); b6 = (((C) & 0x001F)<< 3); \ D0_PIN_PORT->BSRR = D8_BSR_MASK(r6); \ D1_PIN_PORT->BSRR = D9_BSR_MASK(r6); \ @@ -890,7 +899,7 @@ D7_PIN_PORT->BSRR = D7_BSR_MASK(b6); \ WR_STB - // 18 bit color write with swapped bytes + // 18-bit color write with swapped bytes #define tft_Write_16S(C) Cswap = ((C) >>8 | (C) << 8); tft_Write_16(Cswap) #else @@ -917,7 +926,7 @@ D7_PIN_PORT->BSRR = D7_BSR_MASK(C); \ WR_STB - // 16 bit write with swapped bytes + // 16-bit write with swapped bytes #define tft_Write_16S(C) D0_PIN_PORT->BSRR = D0_BSR_MASK(C); \ D1_PIN_PORT->BSRR = D1_BSR_MASK(C); \ D2_PIN_PORT->BSRR = D2_BSR_MASK(C); \ @@ -960,66 +969,58 @@ //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI ILI948x TFT //////////////////////////////////////////////////////////////////////////////////////// -#elif defined (SPI_18BIT_DRIVER) // SPI 18 bit colour +#elif defined (SPI_18BIT_DRIVER) // SPI 18-bit colour - // Write 8 bits to TFT - #define tft_Write_8(C) \ - { spiBuffer[0] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 1, 10); } + #define SPI_TXE_CHECK while(!__HAL_SPI_GET_FLAG(&spiHal, SPI_FLAG_TXE)){} + //BSY check must allow for APB clock delay by checking TXE flag first + #define SPI_BUSY_CHECK SPI_TXE_CHECK; while( __HAL_SPI_GET_FLAG(&spiHal, SPI_FLAG_BSY)){} + #define TX_FIFO SPI_TXE_CHECK; *((__IO uint8_t *)&SPIX->DR) - // Convert 16 bit colour to 18 bit and write in 3 bytes - #define tft_Write_16(C) \ - { spiBuffer[0] = ((C) & 0xF800)>>8; spiBuffer[1] = ((C) & 0x07E0)>>3; spiBuffer[2] = ((C) & 0x001F)<<3; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 3, 10); } + //#define tft_Write_8(C) spi.transfer(C) + #define tft_Write_8(C) TX_FIFO = (C); SPI_BUSY_CHECK + #define tft_Write_16(C) TX_FIFO = ((C) & 0xF800)>>8; TX_FIFO = ((C) & 0x07E0)>>3; TX_FIFO = ((C) & 0x001F)<<3; SPI_BUSY_CHECK + #define tft_Write_16S(C) TX_FIFO = (C) & 0xF8; TX_FIFO = ((C) & 0xE000)>>11 | ((C) & 0x07)<<5; TX_FIFO = ((C) & 0x1F00)>>5; SPI_BUSY_CHECK + #define tft_Write_16N(C) TX_FIFO = ((C) & 0xF800)>>8; TX_FIFO = ((C) & 0x07E0)>>3; TX_FIFO = ((C) & 0x001F)<<3 - // Convert swapped byte 16 bit colour to 18 bit and write in 3 bytes - #define tft_Write_16S(C) \ - { spiBuffer[0] = (C) & 0xF8; spiBuffer[1] = ((C) & 0xE000)>>11 | ((C) & 0x07)<<5; spiBuffer[2] = ((C) & 0x1F00)>>5; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 3, 10); } - - // Write 32 bits to TFT #define tft_Write_32(C) \ - { spiBuffer[0] = (C)>>24; spiBuffer[1] = (C)>>16; spiBuffer[2] = (C)>>8; spiBuffer[3] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>24; TX_FIFO = (C)>>16; \ + TX_FIFO = (C)>>8; TX_FIFO = (C); SPI_BUSY_CHECK - // Write two address coordinates #define tft_Write_32C(C,D) \ - { spiBuffer[0] = (C)>>8; spiBuffer[1] = C; spiBuffer[2] = (D)>>8; spiBuffer[3] = D; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>8; TX_FIFO = (C); \ + TX_FIFO = (D)>>8; TX_FIFO = (D); SPI_BUSY_CHECK - // Write same value twice #define tft_Write_32D(C) \ - { spiBuffer[0] = spiBuffer[2] = (C)>>8; spiBuffer[1] = spiBuffer[3] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>8; TX_FIFO = (C); \ + TX_FIFO = (C)>>8; TX_FIFO = (C); SPI_BUSY_CHECK //////////////////////////////////////////////////////////////////////////////////////// // Macros to write commands/pixel colour data to a SPI Raspberry Pi TFT //////////////////////////////////////////////////////////////////////////////////////// #elif defined (RPI_DISPLAY_TYPE) - #define tft_Write_8(C) \ - { spiBuffer[0] = 0; spiBuffer[1] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 2, 10); } + #define SPI_TXE_CHECK while(!__HAL_SPI_GET_FLAG(&spiHal, SPI_FLAG_TXE)){} + //BSY check must allow for APB clock delay by checking TXE flag first + #define SPI_BUSY_CHECK SPI_TXE_CHECK; while( __HAL_SPI_GET_FLAG(&spiHal, SPI_FLAG_BSY)){} + #define TX_FIFO SPI_TXE_CHECK; *((__IO uint8_t *)&SPIX->DR) - #define tft_Write_16(C) \ - { spiBuffer[0] = (C)>>8; spiBuffer[1] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 2, 10); } - - #define tft_Write_16S(C) \ - { spiBuffer[0] = C; spiBuffer[1] = (C)>>8; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 2, 10); } + //#define tft_Write_8(C) spi.transfer(C) + #define tft_Write_8(C) TX_FIFO = (0); TX_FIFO = (C); SPI_BUSY_CHECK + #define tft_Write_16(C) TX_FIFO = (C)>>8; TX_FIFO = (C); SPI_BUSY_CHECK + #define tft_Write_16S(C) TX_FIFO = (C); TX_FIFO = (C)>>8; SPI_BUSY_CHECK + #define tft_Write_16N(C) TX_FIFO = (C)>>8; TX_FIFO = (C) #define tft_Write_32(C) \ - { spiBuffer[0] = (C)>>24; spiBuffer[1] = (C)>>16; spiBuffer[2] = (C)>>8; spiBuffer[3] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>24; TX_FIFO = (C)>>16; \ + TX_FIFO = (C)>>8; TX_FIFO = (C); SPI_BUSY_CHECK #define tft_Write_32C(C,D) \ - { spiBuffer[1] = ((C)>>8); spiBuffer[3] = (C); spiBuffer[5] = ((D)>>8); spiBuffer[7] = D; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 8, 10); } + TX_FIFO = (0); TX_FIFO = (C)>>8; TX_FIFO = (0); TX_FIFO = (C); \ + TX_FIFO = (0); TX_FIFO = (D)>>8; TX_FIFO = (0); TX_FIFO = (D); SPI_BUSY_CHECK #define tft_Write_32D(C) \ - { spiBuffer[1] = ((C)>>8); spiBuffer[3] = (C); spiBuffer[5] = ((C)>>8); spiBuffer[7] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 8, 10); } + TX_FIFO = (0); TX_FIFO = (C)>>8; TX_FIFO = (0); TX_FIFO = (C); \ + TX_FIFO = (0); TX_FIFO = (C)>>8; TX_FIFO = (0); TX_FIFO = (C); SPI_BUSY_CHECK //////////////////////////////////////////////////////////////////////////////////////// // Macros for all other SPI displays @@ -1027,37 +1028,37 @@ #else - #if defined(ST7789_DRIVER) || defined(ST7789_2_DRIVER) - // Temporary workaround for issue #510 part 2 - #define tft_Write_8(C) spi.transfer(C) - #else - #define tft_Write_8(C) \ - { spiBuffer[0] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 1, 10); delayMicroseconds(1);} - #endif + //#define DC_DELAY delayMicroseconds(1) // Premature BSY clear Hardware bug? - #define tft_Write_16(C) \ - { spiBuffer[0] = (C)>>8; spiBuffer[1] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 2, 10); } + #define SPI_TXE_CHECK while(!__HAL_SPI_GET_FLAG(&spiHal, SPI_FLAG_TXE)){} + //BSY check must allow for APB clock delay by checking TXE flag first + #define SPI_BUSY_CHECK SPI_TXE_CHECK; while( __HAL_SPI_GET_FLAG(&spiHal, SPI_FLAG_BSY)){} + #define TX_FIFO SPI_TXE_CHECK; *((__IO uint8_t *)&SPIX->DR) - #define tft_Write_16S(C) \ - { spiBuffer[0] = C; spiBuffer[1] = (C)>>8; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 2, 10); } + #define tft_Write_8(C) TX_FIFO = (C); SPI_BUSY_CHECK + #define tft_Write_16(C) TX_FIFO = (C)>>8; TX_FIFO = (C); SPI_BUSY_CHECK + #define tft_Write_16S(C) TX_FIFO = (C); TX_FIFO = (C)>>8; SPI_BUSY_CHECK + #define tft_Write_16N(C) TX_FIFO = (C)>>8; TX_FIFO = (C) #define tft_Write_32(C) \ - { spiBuffer[0] = (C)>>24; spiBuffer[1] = (C)>>16; spiBuffer[2] = (C)>>8; spiBuffer[3] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>24; TX_FIFO = (C)>>16; \ + tft_Write_16((uint16_t) ((C)>>0)) #define tft_Write_32C(C,D) \ - { spiBuffer[0] = (C)>>8; spiBuffer[1] = C; spiBuffer[2] = (D)>>8; spiBuffer[3] = D; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>8; TX_FIFO = (C); \ + tft_Write_16((uint16_t) (D)) #define tft_Write_32D(C) \ - { spiBuffer[0] = spiBuffer[2] = (C)>>8; spiBuffer[1] = spiBuffer[3] = C; \ - HAL_SPI_Transmit(&spiHal, spiBuffer, 4, 10); } + TX_FIFO = (C)>>8; TX_FIFO = (C); \ + tft_Write_16((uint16_t) (C)) #endif +#ifndef DC_DELAY + //#define DC_DELAY delayMicroseconds(1) // Premature BSY clear hardware bug? + #define DC_DELAY +#endif + #ifndef tft_Write_16N #define tft_Write_16N tft_Write_16 #endif diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio.h b/libraries/TFT_eSPI-2.5.43/Processors/pio_16bit_parallel.pio.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio.h rename to libraries/TFT_eSPI-2.5.43/Processors/pio_16bit_parallel.pio.h index 6d792f0c..655c1b13 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_16bit_parallel.pio.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/pio_16bit_parallel.pio.h @@ -1,5 +1,6 @@ // -------------------------------------------------- // // This file is autogenerated by pioasm; do not edit! // +// 16-bit parallel // // -------------------------------------------------- // #pragma once @@ -14,7 +15,6 @@ #define tft_io_wrap_target 7 #define tft_io_wrap 20 - #define tft_io_offset_block_fill 0u #define tft_io_offset_start_8 7u #define tft_io_offset_start_tx 7u diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio.h b/libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel.pio.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio.h rename to libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel.pio.h index 5bae33ea..b5d6a8cd 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_8bit_parallel.pio.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel.pio.h @@ -1,5 +1,6 @@ // -------------------------------------------------- // // This file is autogenerated by pioasm; do not edit! // +// 8-bit parallel // // -------------------------------------------------- // #pragma once diff --git a/libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel_18bpp.pio.h b/libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel_18bpp.pio.h new file mode 100644 index 00000000..b2aaff45 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/Processors/pio_8bit_parallel_18bpp.pio.h @@ -0,0 +1,73 @@ +// -------------------------------------------------- // +// This file is autogenerated by pioasm; do not edit! // +// -------------------------------------------------- // + +#pragma once + +#if !PICO_NO_HARDWARE +#include "hardware/pio.h" +#endif + +// ------ // +// tft_io // +// ------ // + +#define tft_io_wrap_target 11 +#define tft_io_wrap 31 + +#define tft_io_offset_block_fill 0u +#define tft_io_offset_start_tx 11u +#define tft_io_offset_start_8 18u +#define tft_io_offset_set_addr_window 21u + +static const uint16_t tft_io_program_instructions[] = { + 0x98a0, // 0: pull block side 1 + 0xa027, // 1: mov x, osr + 0x80a0, // 2: pull block + 0xa047, // 3: mov y, osr + 0xb8e1, // 4: mov osr, x side 1 + 0x7110, // 5: out pins, 16 side 0 [1] + 0xb942, // 6: nop side 1 [1] + 0x7108, // 7: out pins, 8 side 0 [1] + 0xb942, // 8: nop side 1 [1] + 0x7108, // 9: out pins, 8 side 0 [1] + 0x1884, // 10: jmp y--, 4 side 1 + // .wrap_target + 0x98a0, // 11: pull block side 1 + 0x7110, // 12: out pins, 16 side 0 [1] + 0xb942, // 13: nop side 1 [1] + 0x7108, // 14: out pins, 8 side 0 [1] + 0xb942, // 15: nop side 1 [1] + 0x7108, // 16: out pins, 8 side 0 [1] + 0x180b, // 17: jmp 11 side 1 + 0x98a0, // 18: pull block side 1 + 0x7100, // 19: out pins, 32 side 0 [1] + 0x180b, // 20: jmp 11 side 1 + 0xf822, // 21: set x, 2 side 1 + 0xe000, // 22: set pins, 0 + 0x80a0, // 23: pull block + 0x7000, // 24: out pins, 32 side 0 + 0x003e, // 25: jmp !x, 30 + 0x98a0, // 26: pull block side 1 + 0xe001, // 27: set pins, 1 + 0x7108, // 28: out pins, 8 side 0 [1] + 0x19fc, // 29: jmp !osre, 28 side 1 [1] + 0x1856, // 30: jmp x--, 22 side 1 + 0xe001, // 31: set pins, 1 + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program tft_io_program = { + .instructions = tft_io_program_instructions, + .length = 32, + .origin = -1, +}; + +static inline pio_sm_config tft_io_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + tft_io_wrap_target, offset + tft_io_wrap); + sm_config_set_sideset(&c, 2, true, false); + return c; +} +#endif diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio.h b/libraries/TFT_eSPI-2.5.43/Processors/pio_SPI.pio.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio.h rename to libraries/TFT_eSPI-2.5.43/Processors/pio_SPI.pio.h index 6aa724d1..0848529b 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI.pio.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/pio_SPI.pio.h @@ -1,5 +1,6 @@ // -------------------------------------------------- // // This file is autogenerated by pioasm; do not edit! // +// 8 + 16-bit SPI - no auto colour conversion // // -------------------------------------------------- // #pragma once diff --git a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio.h b/libraries/TFT_eSPI-2.5.43/Processors/pio_SPI_18bit.pio.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio.h rename to libraries/TFT_eSPI-2.5.43/Processors/pio_SPI_18bit.pio.h index bd13a660..09bbfeb0 100644 --- a/libraries/TFT_eSPI-2.4.72/Processors/pio_SPI_18bit.pio.h +++ b/libraries/TFT_eSPI-2.5.43/Processors/pio_SPI_18bit.pio.h @@ -1,5 +1,6 @@ // -------------------------------------------------- // // This file is autogenerated by pioasm; do not edit! // +// 8 + 18-bit SPI - no auto colour conversion // // -------------------------------------------------- // #pragma once diff --git a/libraries/TFT_eSPI-2.4.72/README.md b/libraries/TFT_eSPI-2.5.43/README.md similarity index 58% rename from libraries/TFT_eSPI-2.4.72/README.md rename to libraries/TFT_eSPI-2.5.43/README.md index 6e5200ee..0c0c15bc 100644 --- a/libraries/TFT_eSPI-2.4.72/README.md +++ b/libraries/TFT_eSPI-2.5.43/README.md @@ -1,10 +1,28 @@ A ["Discussions"](https://github.com/Bodmer/TFT_eSPI/discussions) facility has been added for Q&A etc. Use the ["Issues"](https://github.com/Bodmer/TFT_eSPI/issues) tab only for problems with the library. Thanks! # News -1. Support has been added in v2.4.70 for the RP2040 with 16 bit parallel displays. This has been tested and the screen update performance is very good (4ms to clear 320 x 480 screen with HC8357C). The use of the RP2040 PIO makes it easy to change the write cycle timing for different displays. DMA with 16 bit transfers is also supported. +1. The Create_font Processing sketch has been updated to automatically create a complete C header file. The automatic opening of the font folder can also be disabled within the Processing sketch. (Thanks to Pierre-Loup Martin). -2. Support for HX8357B and HX8357C screens has been added (only tested with RP2040 and 16 bit parallel interface) +2. New board setup files have been added for the Seeed XIAO with round display, LilyGo T-Embed S3, LilyGo_T_QT_Pro_S3, ESP32 S3 Box and ESP32_S3_Box_Lite. The "RPi" interface style boards are now supported with the ESP32 S3. -3. Support for the ESP32-S2, ESP32-S3 and ESP32-C3 has been added (DMA not supported at the moment). Tested with v2.0.3 RC1 of the ESP32 board package. Example setups: +3. New functions have been added to draw smooth (antialiased) arcs, circles, and rounded rectangle outlines. New sketches are provided in the "Smooth Graphics" examples folder. Arcs can be drawn with or without anti-aliasing (which will then render faster). The arc ends can be straight or rounded. The arc drawing algorithm uses an optimised fixed point sqrt() function to improve performance on processors that do not have a hardware Floating Point Unit (e.g. RP2040). Here are two demo images, on the left smooth (anti-aliased) arcs with rounded ends, the image to the right is the same resolution (grabbed from the same 240x240 TFT) with the smoothing diasbled (no anti-aliasing): + + ![arcs](https://github.com/Bodmer/Github-images/blob/main/aa_arc_240x240.png) ![pixelated_arcs](https://github.com/Bodmer/Github-images/blob/main/no_aa_arc_240x240.png) + + Here the smooth arcs have been used to create anti-aliased meter gauges on a 320x240 TFT: + + ![arcs](https://github.com/Bodmer/Github-images/blob/main/xarc_meters_320x240.png) + +4. An excellent new compatible library is available which can render TrueType fonts on a TFT screen (or into a sprite). This has been developed by [takkaO](https://github.com/takkaO/OpenFontRender). The library provides access to compact font files, with fully scaleable anti-aliased glyphs. Left, middle and right justified text can also be printed to the screen. I have added TFT_eSPI specific examples to the OpenFontRender library and tested on RP2040 and ESP32 processors, the ESP8266 does not have sufficient RAM due to the glyph render complexity. Here is a demo screen where a single 12kbyte font file binary was used to render fully anti-aliased glyphs of gradually increasing size on a 320x480 TFT screen: + + ![ttf_font_demo](https://i.imgur.com/bKkilIb.png) + +5. New GUI examples have been added for sliders, buttons, graphs and meters. These examples require a new support library here: + + [TFT_eWidget](https://github.com/Bodmer/TFT_eWidget) + +6. Support has been added in v2.4.70 for the RP2040 with 16-bit parallel displays. This has been tested and the screen update performance is very good (4ms to clear 320 x 480 screen with HC8357C). The use of the RP2040 PIO makes it easy to change the write cycle timing for different displays. DMA with 16-bit transfers is also supported. + +7. Support for the ESP32-S2, ESP32-S3 and ESP32-C3 has been added (DMA only on ESP32 S3 at the moment). Tested with v2.0.3 RC1 of the ESP32 board package. Example setups: [Setup70_ESP32_S2_ILI9341.h](https://github.com/Bodmer/TFT_eSPI/blob/master/User_Setups/Setup70_ESP32_S2_ILI9341.h) @@ -14,20 +32,18 @@ A ["Discussions"](https://github.com/Bodmer/TFT_eSPI/discussions) facility has b [Setup70d_ILI9488_S3_Parallel.h](https://github.com/Bodmer/TFT_eSPI/blob/master/User_Setups/Setup70d_ILI9488_S3_Parallel.h) -4. Smooth fonts can now be rendered direct to the TFT with very little flicker for quickly changing values. This is achieved by a line-by-line and block-by-block update of the glyph area without drawing pixels twice. This is a "breaking" change for some sketches because a new true/false parameter is needed to render the background. The default is false if the parameter is missing, Examples: +8. Smooth fonts can now be rendered direct to the TFT with very little flicker for quickly changing values. This is achieved by a line-by-line and block-by-block update of the glyph area without drawing pixels twice. This is a "breaking" change for some sketches because a new true/false parameter is needed to render the background. The default is false if the parameter is missing, Examples: tft.setTextColor(TFT_WHITE, TFT_BLUE, true); spr.setTextColor(TFT_BLUE, TFT_BLACK, true); Note: background rendering for Smooth fonts is also now available when using the print stream e.g. with: tft.println("Hello World"); -5. New anti-aliased graphics functions to draw lines, wedge shaped lines, circles and rounded rectangles. [Examples are included](https://github.com/Bodmer/TFT_eSPI/tree/master/examples/Smooth%20Graphics). Examples have also been added to [display PNG compressed images](https://github.com/Bodmer/TFT_eSPI/tree/master/examples/PNG%20Images) (note: requires ~40kbytes RAM). +9. New anti-aliased graphics functions to draw lines, wedge shaped lines, circles and rounded rectangles. [Examples are included](https://github.com/Bodmer/TFT_eSPI/tree/master/examples/Smooth%20Graphics). Examples have also been added to [display PNG compressed images](https://github.com/Bodmer/TFT_eSPI/tree/master/examples/PNG%20Images) (note: requires ~40kbytes RAM). -6. Frank Boesing has created an extension library for TFT_eSPI that allows a large range of ready-built fonts to be used. Frank's library (adapted to permit rendering in sprites as well as TFT) can be [downloaded here](https://github.com/Bodmer/TFT_eSPI_ext). More than 3300 additional Fonts are [available here](https://github.com/FrankBoesing/fonts/tree/master/ofl). The TFT_eSPI_ext library contains examples that demonstrate the use of the fonts. +10. Users of PowerPoint experienced with running macros may be interested in the [pptm sketch generator here](https://github.com/Bodmer/PowerPoint_to_sketch), this converts graphics and tables drawn in PowerPoint slides into an Arduino sketch that renders the graphics on a 480x320 TFT. This is based on VB macros [created by Kris Kasprzak here](https://github.com/KrisKasprzak/Powerpoint-ILI9341_t3). -7. Users of PowerPoint experienced with running macros may be interested in the [pptm sketch generator here](https://github.com/Bodmer/PowerPoint_to_sketch), this converts graphics and tables drawn in PowerPoint slides into an Arduino sketch that renders the graphics on a 480x320 TFT. This is based on VB macros [created by Kris Kasprzak here](https://github.com/KrisKasprzak/Powerpoint-ILI9341_t3). - -8. The library contains two new functions for rectangles filled with a horizontal or vertical coloured gradient: +11. The library contains two new functions for rectangles filled with a horizontal or vertical coloured gradient: tft.fillRectHGradient(x, y, w, h, color1, color2); @@ -35,36 +51,48 @@ Note: background rendering for Smooth fonts is also now available when using the ![Gradient](https://i.imgur.com/atR0DmP.png) -9. The RP2040 8 bit parallel interface uses the PIO. The PIO now manages the "setWindow" and "block fill" actions, releasing the processor for other tasks when areas of the screen are being filled with a colour. The PIO can optionally be used for SPI interface displays if #define RP2040_PIO_SPI is put in the setup file. Touch screens and pixel read operations are not supported when the PIO interface is used. +12. The RP2040 8-bit parallel interface uses the PIO. The PIO now manages the "setWindow" and "block fill" actions, releasing the processor for other tasks when areas of the screen are being filled with a colour. The PIO can optionally be used for SPI interface displays if #define RP2040_PIO_SPI is put in the setup file. Touch screens and pixel read operations are not supported when the PIO interface is used. The RP2040 PIO features only work with [Earle Philhower's board package](https://github.com/earlephilhower/arduino-pico), NOT the Arduino Mbed version. The use of PIO for SPI allows the RP2040 to be over-clocked (up to 250MHz works on my boards) in Earle's board package whilst still maintaining high SPI clock rates. -10. DMA can now be used with the Raspberry Pi Pico (RP2040) when used with both 8 bit parallel and 16 bit colour SPI displays. See "Bouncy_Circles" sketch. - - ["Bouncing circles"](https://www.youtube.com/watch?v=njFXIzCTQ_Q&lc=UgymaUIwOIuihvYh-Qt4AaABAg) - -11. The library now supports the Raspberry Pi Pico with both the [official Arduino board package](https://github.com/arduino/ArduinoCore-mbed) and the one provided by [Earle Philhower](https://github.com/earlephilhower/arduino-pico). The setup file "Setup60_RP2040_ILI9341.h" has been used for tests with an ILI9341 display. At the moment only SPI interface displays have been tested. SPI port 0 is the default but SPI port 1 can be specifed in the setup file if those SPI pins are used. - - ["Rotating cube demo"](https://www.youtube.com/watch?v=4fPxEN9ImVE) - -12. The library now provides a "viewport" capability. See "Viewport_Demo" and "Viewport_graphicstest" examples. When a viewport is defined graphics will only appear within that window. The coordinate datum by default moves to the top left corner of the viewport, but can optionally remain at top left corner of TFT. The GUIslice library will make use of this feature to speed up the rendering of GUI objects ([see #769](https://github.com/Bodmer/TFT_eSPI/issues/769)). - - # TFT_eSPI -An Arduino IDE compatible graphics and fonts library for 32 bit processors. The library is targeted at 32 bit processors, it has been performance optimised for STM32, ESP8266 and ESP32 types. The library can be loaded using the Arduino IDE's Library Manager. Direct Memory Access (DMA) can be used with the ESP32, RP2040 and STM32 processors with SPI interface displays to improve rendering performance. DMA with a parallel interface is only supported with the RP2040. +A feature rich Arduino IDE compatible graphics and fonts library for 32-bit processors. The library is targeted at 32-bit processors, it has been performance optimised for RP2040, STM32, ESP8266 and ESP32 types, other 32-bit processors may be used but will use the slower generic Arduino interface calls. The library can be loaded using the Arduino IDE's Library Manager. Direct Memory Access (DMA) can be used with the ESP32, RP2040 and STM32 processors with SPI interface displays to improve rendering performance. DMA with a parallel interface (8 and 16-bit) is only supported with the RP2040. -Optimised drivers are incorporated for the following processors: +The updates for the ESP32 S2/C3/S3 means that the library requires the ESP32 Arduino board package 2.x.x or later. + +The screen controller, interface pins and library configuration settings must be defined inside the library. They can NOT be defined in the Arduino sketch. See the User_Setup_Select.h file for details. This approach has significant advantages, it keeps the examples clean from long configuration options and once the setup is defined any example can be run without modification. PlatformIO users can define these settings on a per project basis within a platformio.ini file, see Docs folder in library. + +Lots of example sketches are provided which demonstrate using the functions in the library. Due to the popularity of the library there are lots of online tutorials for TFT_eSPI that have been created by enthusiastic users. + +Optimised drivers have been tested with the following processors: * RP2040, e.g. Raspberry Pi Pico * ESP32 and ESP32-S2, ESP32-C3, ESP32-S3 * ESP8266 * STM32F1xx, STM32F2xx, STM32F4xx, STM32F767 (higher RAM processors recommended) -Generic (non-optimised Arduino function calls) are used by the library for other processors. +The library supports the following interface types for these processors: -"Four wire" SPI and 8 bit parallel interfaces are supported. Due to lack of GPIO pins the 8 bit parallel interface is NOT supported on the ESP8266. 8 bit parallel interface TFTs (e.g. UNO format mcufriend shields) can used with the STM32 Nucleo 64/144 range or the UNO format ESP32 (see below for ESP32). +| Processor | 4 wire SPI | 8-bit parallel | 16-bit parallel | DMA support | +|-----------| :---: | :---: | :---: | :---: | +| RP2040 | Yes | Yes | Yes | Yes (all) | +| ESP32 | Yes | Yes | No | Yes (SPI only) | +| ESP32 C3 | Yes | No | No | No | +| ESP32 S2 | Yes | No | No | No | +| ESP32 S3 | Yes | Yes | No | Yes (SPI only) | +| ESP8266 | Yes | No | No | No | +| STM32Fxxx | Yes | Yes | No | Yes (SPI only) | +| Other | Yes | No | No | No | + +For other (generic) processors only SPI interface displays are supported and the slower Arduino SPI library functions are used by the library. Higher clock speed processors such as used for the Teensy 3.x and 4.x boards will still provide a very good performance with the generic Arduino SPI functions. + +4 wire SPI means the display must have SPI interface comaptible signals and a "Data/Command" control signal, this signal line is sometimes labelled DC, RS or A0. + +Due to lack of GPIO pins the 8-bit parallel interface is NOT supported on the ESP8266. 8-bit parallel interface TFTs (e.g. UNO format mcufriend shields) can used with the STM32Fxxx Nucleo 64/144 range or the UNO format ESP32 (see below for ESP32). + +Support for the XPT2046 touch screen controller is built into the library and can be used with SPI interface displays. Third party touch support libraries are also available when using a display parallel interface. Displays using the following controllers are supported: @@ -76,42 +104,40 @@ Displays using the following controllers are supported: * ILI9481 (DMA not supported with SPI) * ILI9486 (DMA not supported with SPI) * ILI9488 (DMA not supported with SPI) -* HX8357B (16 bit parallel tested with RP2040) -* HX8357C (16 bit parallel tested with RP2040) +* HX8357B (16-bit parallel tested with RP2040) +* HX8357C (16-bit parallel tested with RP2040) * HX8357D * R61581 * RM68120 (support files added but untested) * RM68140 * S6D02A1 * SSD1351 -* SSD1963 +* SSD1963 (this controller only has a parallel interface option) * ST7735 * ST7789 * ST7796 ILI9341 and ST7796 SPI based displays are recommended as starting point for experimenting with this library. -The library supports some TFT displays designed for the Raspberry Pi (RPi) that are based on a ILI9486 or ST7796 driver chip with a 480 x 320 pixel screen. The ILI9486 RPi display must be of the Waveshare design and use a 16 bit serial interface based on the 74HC04, 74HC4040 and 2 x 74HC4094 logic chips. Note that due to design variations between these displays not all RPi displays will work with this library, so purchasing a RPi display of these types solely for use with this library is not recommended. +The library supports some TFT displays designed for the Raspberry Pi (RPi) that are based on a ILI9486 or ST7796 driver chip with a 480 x 320 pixel screen. The ILI9486 RPi display must be of the Waveshare design and use a 16-bit serial interface based on the 74HC04, 74HC4040 and 2 x 74HC4094 logic chips. Note that due to design variations between these displays not all RPi displays will work with this library, so purchasing a RPi display of these types solely for use with this library is NOT recommended. -A "good" RPi display is the [MHS-4.0 inch Display-B type ST7796](http://www.lcdwiki.com/MHS-4.0inch_Display-B) which provides good performance. This has a dedicated controller and can be clocked at up to 80MHz with the ESP32 (55MHz with STM32 and 40MHz with ESP8266). The [MHS-3.5 inch RPi ILI9486](http://www.lcdwiki.com/MHS-3.5inch_RPi_Display) based display is also supported. +A "good" RPi display is the [MHS-4.0 inch Display-B type ST7796](http://www.lcdwiki.com/MHS-4.0inch_Display-B) which provides good performance. This has a dedicated controller and can be clocked at up to 80MHz with the ESP32 (125MHz with overclocked RP2040, 55MHz with STM32 and 40MHz with ESP8266). The [MHS-3.5 inch RPi ILI9486](http://www.lcdwiki.com/MHS-3.5inch_RPi_Display) based display is also supported, however the MHS ILI9341 based display of the same type does NOT work with this library. Some displays permit the internal TFT screen RAM to be read, a few of the examples use this feature. The TFT_Screen_Capture example allows full screens to be captured and sent to a PC, this is handy to create program documentation. -The library supports Waveshare 2 and 3 colour ePaper displays using full frame buffers. This addition is relatively immature and thus only one example has been provided. - The library includes a "Sprite" class, this enables flicker free updates of complex graphics. Direct writes to the TFT with graphics functions are still available, so existing sketches do not need to be changed. # Sprites -A Sprite is notionally an invisible graphics screen that is kept in the processors RAM. Graphics can be drawn into the Sprite just as they can be drawn directly to the screen. Once the Sprite is completed it can be plotted onto the screen in any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. Sprites by default use 16 bit colours, the bit depth can be set to 8 bits (256 colours) , or 1 bit (any 2 colours) to reduce the RAM needed. On an ESP8266 the largest 16 bit colour Sprite that can be created is about 160x128 pixels, this consumes 40Kbytes of RAM. On an ESP32 the workspace RAM is more limited than the datasheet implies so a 16 bit colour Sprite is limited to about 200x200 pixels (~80Kbytes), an 8 bit sprite to 320x240 pixels (~76kbytes). A 1 bit per pixel Sprite requires only 9600 bytes for a full 320 x 240 screen buffer, this is ideal for supporting use with 2 colour bitmap fonts. +A Sprite is notionally an invisible graphics screen that is kept in the processors RAM. Graphics can be drawn into the Sprite just as they can be drawn directly to the screen. Once the Sprite is completed it can be plotted onto the screen in any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. Sprites by default use 16-bit colours, the bit depth can be set to 8 bits (256 colours) , or 1 bit (any 2 colours) to reduce the RAM needed. On an ESP8266 the largest 16-bit colour Sprite that can be created is about 160x128 pixels, this consumes 40Kbytes of RAM. On an ESP32 the workspace RAM is more limited than the datasheet implies so a 16-bit colour Sprite is limited to about 200x200 pixels (~80Kbytes), an 8-bit sprite to 320x240 pixels (~76kbytes). A 1 bit per pixel Sprite requires only 9600 bytes for a full 320 x 240 screen buffer, this is ideal for supporting use with 2 colour bitmap fonts. -One or more sprites can be created, a sprite can be any pixel width and height, limited only by available RAM. The RAM needed for a 16 bit colour depth Sprite is (2 x width x height) bytes, for a Sprite with 8 bit colour depth the RAM needed is (width x height) bytes. Sprites can be created and deleted dynamically as needed in the sketch, this means RAM can be freed up after the Sprite has been plotted on the screen, more RAM intensive WiFi based code can then be run and normal graphics operations still work. +One or more sprites can be created, a sprite can be any pixel width and height, limited only by available RAM. The RAM needed for a 16-bit colour depth Sprite is (2 x width x height) bytes, for a Sprite with 8-bit colour depth the RAM needed is (width x height) bytes. Sprites can be created and deleted dynamically as needed in the sketch, this means RAM can be freed up after the Sprite has been plotted on the screen, more RAM intensive WiFi based code can then be run and normal graphics operations still work. Drawing graphics into a sprite is very fast, for those familiar with the Adafruit "graphicstest" example, this whole test completes in 18ms in a 160x128 sprite. Examples of sprite use can be found in the "examples/Sprite" folder. Sprites can be plotted to the TFT with one colour being specified as "transparent", see Transparent_Sprite_Demo example. -If an ESP32 board has SPIRAM (i.e. PSRAM) fitted then Sprites will use the PSRAM memory and large full screen buffer Sprites can be created. Full screen Sprites take longer to render (~45ms for a 320 x 240 16 bit Sprite), so bear that in mind. +If an ESP32 board has SPIRAM (i.e. PSRAM) fitted then Sprites will use the PSRAM memory and large full screen buffer Sprites can be created. Full screen Sprites take longer to render (~45ms for a 320 x 240 16-bit Sprite), so bear that in mind. The "Animated_dial" example shows how dials can be created using a rotated Sprite for the needle. To run this example the TFT interface must support reading from the screen RAM (not all do). The dial rim and scale is a jpeg image, created using a paint program. @@ -131,7 +157,7 @@ The library supports SPI overlap on the ESP8266 so the TFT screen can share MOSI # Fonts -The library contains proportional fonts, different sizes can be enabled/disabled at compile time to optimise the use of FLASH memory. Anti-aliased (smooth) font files in vlw format stored in SPIFFS are supported. Any 16 bit Unicode character can be included and rendered, this means many language specific characters can be rendered to the screen. +The library contains proportional fonts, different sizes can be enabled/disabled at compile time to optimise the use of FLASH memory. Anti-aliased (smooth) font files in vlw format stored in SPIFFS are supported. Any 16-bit Unicode character can be included and rendered, this means many language specific characters can be rendered to the screen. The library is based on the Adafruit GFX and Adafruit driver libraries and the aim is to retain compatibility. Significant additions have been made to the library to boost the speed for the different processors (it is typically 3 to 10 times faster) and to add new features. The new graphics functions include different size proportional fonts and formatting features. There are lots of example sketches to demonstrate the different features and included functions. @@ -140,7 +166,7 @@ Configuration of the library font selections, pins used to interface with the TF # Anti-aliased Fonts -Anti-aliased (smooth) font files in "vlw" format are generated by the free [Processing IDE](https://processing.org/) using a sketch included in the library Tools folder. This sketch with the Processing IDE can be used to generate font files from your computer's font set or any TrueType (.ttf) font, the font file can include **any** combination of 16 bit Unicode characters. This means Greek, Japanese and any other UCS-2 glyphs can be used. Character arrays and Strings in UTF-8 format are supported. +Anti-aliased (smooth) font files in "vlw" format are generated by the free [Processing IDE](https://processing.org/) using a sketch included in the library Tools folder. This sketch with the Processing IDE can be used to generate font files from your computer's font set or any TrueType (.ttf) font, the font file can include **any** combination of 16-bit Unicode characters. This means Greek, Japanese and any other UCS-2 glyphs can be used. Character arrays and Strings in UTF-8 format are supported. The .vlw files must be uploaded to the processors FLASH filing system (SPIFFS, LittleFS or SD card) for use. Alternatively the .vlw files can be converted to C arrays (see "Smooth Font -> FLASH_Array" examples) and stored directly in FLASH as part of the compile process. The array based approach is convenient, provides performance improvements and is suitable where: either use of a filing system is undesirable, or the processor type (e.g. STM32) does not support a FLASH based filing system. @@ -162,9 +188,9 @@ Anti-aliased fonts can also be drawn over a gradient background with a callback Anti-aliased fonts cannot be scaled with setTextSize so you need to create a font for each size you need. See examples. -# 8 bit parallel support +# 8-bit parallel support -The common 8 bit "Mcufriend" shields are supported for the STM Nucleo 64/144 boards and ESP32 UNO style board. The STM32 "Blue/Black Pill" boards can also be used with 8 bit parallel displays. +The common 8-bit "Mcufriend" shields are supported for the STM Nucleo 64/144 boards and ESP32 UNO style board. The STM32 "Blue/Black Pill" boards can also be used with 8-bit parallel displays. The ESP32 board I have been using for testing has the following pinout: @@ -199,10 +225,3 @@ You can take this one step further and have your own setup select file and then #include <../TFT_eSPI_Setups/my_setup_select.h> ``` To select a new setup you then edit your own my_setup_select.h file (which will not get overwritten during an upgrade). - -# ePaper displays - -The library was intended to support only TFT displays but using a Sprite as a 1 bit per pixel screen buffer permits support for the Waveshare 2 and 3 colour SPI ePaper displays. This addition to the library is experimental and only one example is provided. Further examples will be added. - -![Example](https://i.imgur.com/L2tV129.jpg?1) - diff --git a/libraries/TFT_eSPI-2.5.43/README.txt b/libraries/TFT_eSPI-2.5.43/README.txt new file mode 100644 index 00000000..45eb4fbd --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/README.txt @@ -0,0 +1,7 @@ +This is a stand-alone library that contains both graphics functions +and the TFT chip driver library. It supports the ESP8266, ESP32, +STM32 and RP2040 processors with performance optimised code. Other +Arduino IDE compatible boards are also supported but the library +then uses generic functions which will be slower. The library uses +32-bit variables extensively so this will affect performance on 8 +and 16-bit processors. diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/EPD_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/EPD_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/EPD_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/EPD_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Defines.h similarity index 86% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Defines.h index b6c56483..4cb10952 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Defines.h @@ -4,7 +4,7 @@ #define TFT_WIDTH 240 #endif #ifndef TFT_HEIGHT - #define TFT_HEIGHT 320 + #define TFT_HEIGHT 240 #endif // Delay between some initialisation commands @@ -14,6 +14,15 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_SLPIN 0x10 +#define TFT_SLPOUT 0x11 + +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -29,6 +38,3 @@ #define TFT_MAD_BGR 0x08 #define TFT_MAD_MH 0x04 #define TFT_MAD_RGB 0x00 - -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Init.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Init.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Rotation.h similarity index 62% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Rotation.h index a4c8f3ec..48724e73 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/GC9A01_Rotation.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/GC9A01_Rotation.h @@ -9,20 +9,48 @@ writedata(TFT_MAD_BGR); _width = _init_width; _height = _init_height; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 2; + rowstart = 1; + } +#endif break; case 1: // Landscape (Portrait + 90) writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR); _width = _init_height; _height = _init_width; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 1; + rowstart = 2; + } +#endif break; case 2: // Inverter portrait writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR); _width = _init_width; _height = _init_height; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 2; + rowstart = 1; + } +#endif break; case 3: // Inverted landscape writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR); _width = _init_height; _height = _init_width; +#ifdef CGRAM_OFFSET + if (_init_width == 128) + { + colstart = 1; + rowstart = 2; + } +#endif break; } diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Init.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Init.h index b5f8c2ea..7ca937c1 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the HX8357B driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357B_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357B_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Init.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Init.h index 35cde5c3..807cadbe 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the HX8357C driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357C_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357C_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Init.h similarity index 96% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Init.h index 9b5f05a9..0e49d3f7 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the HX8357D driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format @@ -94,7 +94,7 @@ writedata(0x01); writecommand(HX8357_COLMOD); - writedata(0x55); // 16 bit + writedata(0x55); // 16-bit writecommand(HX8357_MADCTL); writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/HX8357D_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/HX8357D_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Defines.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Defines.h index 4abaa1dc..f1c63396 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Defines.h @@ -42,6 +42,12 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -57,6 +63,3 @@ #define TFT_MAD_BGR 0x08 #define TFT_MAD_MH 0x04 #define TFT_MAD_RGB 0x00 - -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Init.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Init.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9163_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9163_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9225_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9225_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9225_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9225_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9225_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9225_Init.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9225_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9225_Init.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9225_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9225_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9225_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9225_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Defines.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Defines.h index 70e17624..94ce1ef5 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Defines.h @@ -40,6 +40,12 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -66,10 +72,6 @@ #define TFT_MAD_COLOR_ORDER TFT_MAD_BGR #endif -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 - - // All ILI9341 specific commands some are used by init() #define ILI9341_NOP 0x00 #define ILI9341_SWRESET 0x01 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Init.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Init.h index 05a703ef..05a5dda3 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the ILI9341 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9341_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9341_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Init.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Init.h index 3ac9965b..a5f19b89 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the ILI9481 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format @@ -64,9 +64,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -153,9 +153,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -242,9 +242,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -327,9 +327,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -415,9 +415,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -527,9 +527,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -605,9 +605,9 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) @@ -700,9 +700,9 @@ writecommand(0x3a); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9481_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9481_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Defines.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Defines.h index 31996e41..fcec0b86 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Defines.h @@ -39,6 +39,12 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -56,6 +62,3 @@ #define TFT_MAD_SS 0x02 #define TFT_MAD_GS 0x01 #define TFT_MAD_RGB 0x00 - -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Init.h similarity index 66% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Init.h index 899c47f8..db0f7aa3 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the ILI9486 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format @@ -16,13 +16,19 @@ writecommand(0x3A); #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour interface + writedata(0x55); // 16-bit colour interface #else - writedata(0x66); // 18 bit colour interface + writedata(0x66); // 18-bit colour interface #endif - writecommand(0xC2); - writedata(0x44); + writecommand(0xC0); // 1100.0000 Power Control 1 + writedata(0x0E); // 0001.0111 ... VRH1 + writedata(0x0E); // 0001.0101 ... VRH2 + writecommand(0xC1); // 1100.0001 Power Control 2 + writedata(0x41); // 0100.0001 . SAP BT + writedata(0x00); // 0000.0000 ..... VC + writecommand(0xC2); // 1100.0010 Power Control 3 + writedata(0x55); // nb. was 0x44 0101.0101 . DCA1 . DCA0 writecommand(0xC5); writedata(0x00); diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9486_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9486_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Init.h similarity index 92% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Init.h index d487187d..c1b20b6d 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the ILI9488 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format @@ -59,9 +59,9 @@ writecommand(0x3A); // Pixel Interface Format #if defined (TFT_PARALLEL_8_BIT) || defined (TFT_PARALLEL_16_BIT) || defined (RPI_DISPLAY_TYPE) - writedata(0x55); // 16 bit colour for parallel + writedata(0x55); // 16-bit colour for parallel #else - writedata(0x66); // 18 bit colour for SPI + writedata(0x66); // 18-bit colour for SPI #endif writecommand(0xB0); // Interface Mode Control diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ILI9488_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ILI9488_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Init.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Init.h index 929d680a..1e9adeee 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the R61581 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/R61581_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/R61581_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Defines.h similarity index 51% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Defines.h index d9fed9ac..50ed5a47 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Defines.h @@ -14,24 +14,32 @@ #define TFT_INIT_DELAY 0x80 // Not used unless commandlist invoked // Generic commands used by TFT_eSPI.cpp -#define TFT_NOP 0x0000 -#define TFT_SWRST 0x0100 +#define TFT_NOP 0x0000 +#define TFT_SWRST 0x0100 -#define TFT_CASET 0x2A00 -#define TFT_PASET 0x2B00 -#define TFT_RAMWR 0x2C00 +#define TFT_INVOFF 0x2000 +#define TFT_INVON 0x2100 -#define TFT_RAMRD 0x2E00 -#define TFT_IDXRD 0xDD00 // ILI9341 only, indexed control register read +#define TFT_DISPOFF 0x2800 +#define TFT_DISPON 0x2900 -#define TFT_MADCTL 0x3600 -#define TFT_MAD_MY 0x80 -#define TFT_MAD_MX 0x40 -#define TFT_MAD_MV 0x20 -#define TFT_MAD_ML 0x10 -#define TFT_MAD_BGR 0x08 -#define TFT_MAD_MH 0x04 -#define TFT_MAD_RGB 0x00 +#define TFT_CASET 0x2A00 +#define TFT_PASET 0x2B00 +#define TFT_RAMWR 0x2C00 + +#define TFT_RAMRD 0x2E00 +#define TFT_IDXRD 0xDD00 // ILI9341 only, indexed control register read + +#define TFT_MADCTL 0x3600 +#define TFT_MAD_MY 0x80 +#define TFT_MAD_MX 0x40 +#define TFT_MAD_MV 0x20 +#define TFT_MAD_ML 0x10 +#define TFT_MAD_BGR 0x08 +#define TFT_MAD_RGB 0x00 +#define TFT_MAD_MH 0x04 +#define TFT_MAD_H_FLIP 0x02 +#define TFT_MAD_V_FLIP 0x01 #ifdef TFT_RGB_ORDER #if (TFT_RGB_ORDER == 1) @@ -42,6 +50,3 @@ #else #define TFT_MAD_COLOR_ORDER TFT_MAD_RGB #endif - -#define TFT_INVOFF 0x2000 -#define TFT_INVON 0x2100 diff --git a/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Init.h new file mode 100644 index 00000000..5b7e8f4a --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Init.h @@ -0,0 +1,269 @@ +// Initialisation for RM68120 + +//ENABLE PAGE 1 +writeRegister8(0xF000, 0x55); +writeRegister8(0xF001, 0xAA); +writeRegister8(0xF002, 0x52); +writeRegister8(0xF003, 0x08); +writeRegister8(0xF004, 0x01); + +//GAMMA SETING RED +writeRegister8(0xD400, 0x00); +writeRegister8(0xD401, 0x00); +writeRegister8(0xD402, 0x1b); +writeRegister8(0xD403, 0x44); +writeRegister8(0xD404, 0x62); +writeRegister8(0xD405, 0x00); +writeRegister8(0xD406, 0x7b); +writeRegister8(0xD407, 0xa1); +writeRegister8(0xD408, 0xc0); +writeRegister8(0xD409, 0xee); +writeRegister8(0xD40A, 0x55); +writeRegister8(0xD40B, 0x10); +writeRegister8(0xD40C, 0x2c); +writeRegister8(0xD40D, 0x43); +writeRegister8(0xD40E, 0x57); +writeRegister8(0xD40F, 0x55); +writeRegister8(0xD410, 0x68); +writeRegister8(0xD411, 0x78); +writeRegister8(0xD412, 0x87); +writeRegister8(0xD413, 0x94); +writeRegister8(0xD414, 0x55); +writeRegister8(0xD415, 0xa0); +writeRegister8(0xD416, 0xac); +writeRegister8(0xD417, 0xb6); +writeRegister8(0xD418, 0xc1); +writeRegister8(0xD419, 0x55); +writeRegister8(0xD41A, 0xcb); +writeRegister8(0xD41B, 0xcd); +writeRegister8(0xD41C, 0xd6); +writeRegister8(0xD41D, 0xdf); +writeRegister8(0xD41E, 0x95); +writeRegister8(0xD41F, 0xe8); +writeRegister8(0xD420, 0xf1); +writeRegister8(0xD421, 0xfa); +writeRegister8(0xD422, 0x02); +writeRegister8(0xD423, 0xaa); +writeRegister8(0xD424, 0x0b); +writeRegister8(0xD425, 0x13); +writeRegister8(0xD426, 0x1d); +writeRegister8(0xD427, 0x26); +writeRegister8(0xD428, 0xaa); +writeRegister8(0xD429, 0x30); +writeRegister8(0xD42A, 0x3c); +writeRegister8(0xD42B, 0x4A); +writeRegister8(0xD42C, 0x63); +writeRegister8(0xD42D, 0xea); +writeRegister8(0xD42E, 0x79); +writeRegister8(0xD42F, 0xa6); +writeRegister8(0xD430, 0xd0); +writeRegister8(0xD431, 0x20); +writeRegister8(0xD432, 0x0f); +writeRegister8(0xD433, 0x8e); +writeRegister8(0xD434, 0xff); + +//GAMMA SETING GREEN +writeRegister8(0xD500, 0x00); +writeRegister8(0xD501, 0x00); +writeRegister8(0xD502, 0x1b); +writeRegister8(0xD503, 0x44); +writeRegister8(0xD504, 0x62); +writeRegister8(0xD505, 0x00); +writeRegister8(0xD506, 0x7b); +writeRegister8(0xD507, 0xa1); +writeRegister8(0xD508, 0xc0); +writeRegister8(0xD509, 0xee); +writeRegister8(0xD50A, 0x55); +writeRegister8(0xD50B, 0x10); +writeRegister8(0xD50C, 0x2c); +writeRegister8(0xD50D, 0x43); +writeRegister8(0xD50E, 0x57); +writeRegister8(0xD50F, 0x55); +writeRegister8(0xD510, 0x68); +writeRegister8(0xD511, 0x78); +writeRegister8(0xD512, 0x87); +writeRegister8(0xD513, 0x94); +writeRegister8(0xD514, 0x55); +writeRegister8(0xD515, 0xa0); +writeRegister8(0xD516, 0xac); +writeRegister8(0xD517, 0xb6); +writeRegister8(0xD518, 0xc1); +writeRegister8(0xD519, 0x55); +writeRegister8(0xD51A, 0xcb); +writeRegister8(0xD51B, 0xcd); +writeRegister8(0xD51C, 0xd6); +writeRegister8(0xD51D, 0xdf); +writeRegister8(0xD51E, 0x95); +writeRegister8(0xD51F, 0xe8); +writeRegister8(0xD520, 0xf1); +writeRegister8(0xD521, 0xfa); +writeRegister8(0xD522, 0x02); +writeRegister8(0xD523, 0xaa); +writeRegister8(0xD524, 0x0b); +writeRegister8(0xD525, 0x13); +writeRegister8(0xD526, 0x1d); +writeRegister8(0xD527, 0x26); +writeRegister8(0xD528, 0xaa); +writeRegister8(0xD529, 0x30); +writeRegister8(0xD52A, 0x3c); +writeRegister8(0xD52B, 0x4a); +writeRegister8(0xD52C, 0x63); +writeRegister8(0xD52D, 0xea); +writeRegister8(0xD52E, 0x79); +writeRegister8(0xD52F, 0xa6); +writeRegister8(0xD530, 0xd0); +writeRegister8(0xD531, 0x20); +writeRegister8(0xD532, 0x0f); +writeRegister8(0xD533, 0x8e); +writeRegister8(0xD534, 0xff); + +//GAMMA SETING BLUE +writeRegister8(0xD600, 0x00); +writeRegister8(0xD601, 0x00); +writeRegister8(0xD602, 0x1b); +writeRegister8(0xD603, 0x44); +writeRegister8(0xD604, 0x62); +writeRegister8(0xD605, 0x00); +writeRegister8(0xD606, 0x7b); +writeRegister8(0xD607, 0xa1); +writeRegister8(0xD608, 0xc0); +writeRegister8(0xD609, 0xee); +writeRegister8(0xD60A, 0x55); +writeRegister8(0xD60B, 0x10); +writeRegister8(0xD60C, 0x2c); +writeRegister8(0xD60D, 0x43); +writeRegister8(0xD60E, 0x57); +writeRegister8(0xD60F, 0x55); +writeRegister8(0xD610, 0x68); +writeRegister8(0xD611, 0x78); +writeRegister8(0xD612, 0x87); +writeRegister8(0xD613, 0x94); +writeRegister8(0xD614, 0x55); +writeRegister8(0xD615, 0xa0); +writeRegister8(0xD616, 0xac); +writeRegister8(0xD617, 0xb6); +writeRegister8(0xD618, 0xc1); +writeRegister8(0xD619, 0x55); +writeRegister8(0xD61A, 0xcb); +writeRegister8(0xD61B, 0xcd); +writeRegister8(0xD61C, 0xd6); +writeRegister8(0xD61D, 0xdf); +writeRegister8(0xD61E, 0x95); +writeRegister8(0xD61F, 0xe8); +writeRegister8(0xD620, 0xf1); +writeRegister8(0xD621, 0xfa); +writeRegister8(0xD622, 0x02); +writeRegister8(0xD623, 0xaa); +writeRegister8(0xD624, 0x0b); +writeRegister8(0xD625, 0x13); +writeRegister8(0xD626, 0x1d); +writeRegister8(0xD627, 0x26); +writeRegister8(0xD628, 0xaa); +writeRegister8(0xD629, 0x30); +writeRegister8(0xD62A, 0x3c); +writeRegister8(0xD62B, 0x4A); +writeRegister8(0xD62C, 0x63); +writeRegister8(0xD62D, 0xea); +writeRegister8(0xD62E, 0x79); +writeRegister8(0xD62F, 0xa6); +writeRegister8(0xD630, 0xd0); +writeRegister8(0xD631, 0x20); +writeRegister8(0xD632, 0x0f); +writeRegister8(0xD633, 0x8e); +writeRegister8(0xD634, 0xff); + +//AVDD VOLTAGE SETTING +writeRegister8(0xB000, 0x05); +writeRegister8(0xB001, 0x05); +writeRegister8(0xB002, 0x05); +//AVEE VOLTAGE SETTING +writeRegister8(0xB100, 0x05); +writeRegister8(0xB101, 0x05); +writeRegister8(0xB102, 0x05); + +//AVDD Boosting +writeRegister8(0xB600, 0x34); +writeRegister8(0xB601, 0x34); +writeRegister8(0xB603, 0x34); +//AVEE Boosting +writeRegister8(0xB700, 0x24); +writeRegister8(0xB701, 0x24); +writeRegister8(0xB702, 0x24); +//VCL Boosting +writeRegister8(0xB800, 0x24); +writeRegister8(0xB801, 0x24); +writeRegister8(0xB802, 0x24); +//VGLX VOLTAGE SETTING +writeRegister8(0xBA00, 0x14); +writeRegister8(0xBA01, 0x14); +writeRegister8(0xBA02, 0x14); +//VCL Boosting +writeRegister8(0xB900, 0x24); +writeRegister8(0xB901, 0x24); +writeRegister8(0xB902, 0x24); +//Gamma Voltage +writeRegister8(0xBc00, 0x00); +writeRegister8(0xBc01, 0xa0);//vgmp=5.0 +writeRegister8(0xBc02, 0x00); +writeRegister8(0xBd00, 0x00); +writeRegister8(0xBd01, 0xa0);//vgmn=5.0 +writeRegister8(0xBd02, 0x00); +//VCOM Setting +writeRegister8(0xBe01, 0x3d);//3 + +//ENABLE PAGE 0 +writeRegister8(0xF000, 0x55); +writeRegister8(0xF001, 0xAA); +writeRegister8(0xF002, 0x52); +writeRegister8(0xF003, 0x08); +writeRegister8(0xF004, 0x00); +//Vivid Color Function Control +writeRegister8(0xB400, 0x10); +//Z-INVERSION +writeRegister8(0xBC00, 0x05); +writeRegister8(0xBC01, 0x05); +writeRegister8(0xBC02, 0x05); +//*************** add on 20111021**********************// +writeRegister8(0xB700, 0x22);//GATE EQ CONTROL +writeRegister8(0xB701, 0x22);//GATE EQ CONTROL +writeRegister8(0xC80B, 0x2A);//DISPLAY TIMING CONTROL +writeRegister8(0xC80C, 0x2A);//DISPLAY TIMING CONTROL +writeRegister8(0xC80F, 0x2A);//DISPLAY TIMING CONTROL +writeRegister8(0xC810, 0x2A);//DISPLAY TIMING CONTROL +//*************** add on 20111021**********************// +//PWM_ENH_OE =1 +writeRegister8(0xd000, 0x01); +//DM_SEL =1 +writeRegister8(0xb300, 0x10); +//VBPDA=07h +writeRegister8(0xBd02, 0x07); +//VBPDb=07h +writeRegister8(0xBe02, 0x07); +//VBPDc=07h +writeRegister8(0xBf02, 0x07); + +//ENABLE PAGE 2 +writeRegister8(0xF000, 0x55); +writeRegister8(0xF001, 0xAA); +writeRegister8(0xF002, 0x52); +writeRegister8(0xF003, 0x08); +writeRegister8(0xF004, 0x02); +//SDREG0 =0 +writeRegister8(0xc301, 0xa9); +//DS=14 +writeRegister8(0xfe01, 0x94); +//OSC =60h +writeRegister8(0xf600, 0x60); +//TE ON +writeRegister8(0x3500, 0x00); +writeRegister8(0xFFFF, 0xFF); + +//SLEEP OUT +writecommand(0x1100); +delay(100); +//DISPLY ON +writecommand(0x2900); +delay(100); + +writeRegister16(0x3A00, 0x55); +writeRegister8(0x3600, TFT_MAD_COLOR_ORDER); diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Rotation.h similarity index 65% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Rotation.h index 26ebb492..492493ab 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68120_Rotation.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68120_Rotation.h @@ -2,28 +2,28 @@ // This is the command sequence that rotates the RM68120 driver coordinate frame rotation = m % 4; // Limit the range of values to 0-3 + uint8_t reg = 0; - writecommand(TFT_MADCTL); switch (rotation) { case 0: - writedata(TFT_MAD_COLOR_ORDER); + reg = TFT_MAD_COLOR_ORDER; _width = _init_width; _height = _init_height; break; case 1: - writedata(TFT_MAD_MV | TFT_MAD_MX | TFT_MAD_COLOR_ORDER); + reg = TFT_MAD_MV | TFT_MAD_MX | TFT_MAD_COLOR_ORDER; _width = _init_height; _height = _init_width; break; case 2: - writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); + reg = TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_COLOR_ORDER; _width = _init_width; _height = _init_height; break; case 3: - writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); + reg = TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_COLOR_ORDER; _width = _init_height; _height = _init_width; break; - } + writeRegister16(TFT_MADCTL, reg); \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Init.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Init.h index e5df339f..cc447195 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the RM68140 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/RM68140_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/RM68140_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Defines.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Defines.h index 96aea859..7806eb8b 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Defines.h @@ -35,6 +35,12 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -50,6 +56,3 @@ #define TFT_MAD_BGR 0x08 #define TFT_MAD_MH 0x04 #define TFT_MAD_RGB 0x00 - -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Init.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Init.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/S6D02A1_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/S6D02A1_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1351_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1351_Defines.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1351_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1351_Defines.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1351_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1351_Init.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1351_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1351_Init.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1351_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1351_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1351_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1351_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Defines.h similarity index 96% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Defines.h index 1c3e9132..f3ca7d4a 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Defines.h @@ -26,6 +26,12 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -51,6 +57,3 @@ #else #define TFT_MAD_COLOR_ORDER TFT_MAD_BGR #endif - -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Init.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Init.h index f7859617..87d4ee6e 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Init.h @@ -62,7 +62,7 @@ writedata(0x21 | TFT_MAD_COLOR_ORDER); writecommand(0xF0); //pixel data interface - writedata(0x00); //8 bit bus + writedata(0x00); //8-bit bus delay(1); @@ -166,7 +166,7 @@ writedata(0x21 | TFT_MAD_COLOR_ORDER); writecommand(0xF0); //pixel data interface - writedata(0x00); //8 bit bus + writedata(0x00); //8-bit bus delay(1); @@ -270,7 +270,7 @@ writedata(0x21 | TFT_MAD_COLOR_ORDER); // -- Set rotation writecommand(0xF0); //pixel data interface - writedata(0x00); //8 bit bus + writedata(0x00); //8-bit bus delay(10); @@ -371,7 +371,7 @@ //writedata(0x0050); //16-bit/pixel writecommand(0xF0); //pixel data interface - writedata(0x00); //000 = 8 bit bus, 011 = 16 bit, 110 = 9 bit + writedata(0x00); //000 = 8-bit bus, 011 = 16-bit, 110 = 9-bit writecommand(0xBC); writedata(0x40); //contrast value diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/SSD1963_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/SSD1963_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Defines.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Defines.h index 1e02c1d5..b02ee15e 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Defines.h @@ -17,6 +17,7 @@ #define INITR_GREENTAB128 0x5 // Use if you only get part of 128x128 screen in rotation 0 & 1 #define INITR_GREENTAB160x80 0x6 // Use if you only get part of 128x128 screen in rotation 0 & 1 #define INITR_REDTAB160x80 0x7 // Added for https://www.aliexpress.com/item/ShengYang-1pcs-IPS-0-96-inch-7P-SPI-HD-65K-Full-Color-OLED-Module-ST7735-Drive/32918394604.html +#define INITR_ROBOTLCD 0x8 #define INITB 0xB @@ -44,6 +45,10 @@ #define TAB_COLOUR INITR_GREENTAB160x80 #define CGRAM_OFFSET +#elif defined (ST7735_ROBOTLCD) + #define TAB_COLOUR INITR_ROBOTLCD + #define CGRAM_OFFSET + #elif defined (ST7735_REDTAB160x80) #define TAB_COLOUR INITR_REDTAB160x80 #define CGRAM_OFFSET @@ -90,6 +95,12 @@ #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -107,7 +118,7 @@ #define TFT_MAD_RGB 0x00 #ifndef TFT_RGB_ORDER - #if defined(INITR_BLACKTAB) || defined(INITR_GREENTAB2) || defined(INITB) + #if defined(ST7735_BLACKTAB) || defined(ST7735_GREENTAB2) || defined(ST7735_INITB) #define TFT_MAD_COLOR_ORDER TFT_MAD_RGB #else #define TFT_MAD_COLOR_ORDER TFT_MAD_BGR @@ -120,9 +131,6 @@ #endif #endif -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 - // ST7735 specific commands used in init #define ST7735_NOP 0x00 #define ST7735_SWRESET 0x01 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Init.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Init.h index 08e29135..3b525f28 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Init.h @@ -123,6 +123,17 @@ 0x00, 0x00, // XSTART = 0 0x00, 0x9F }, // XEND = 159 + // Frame control init for RobotLCD, taken from https://github.com/arduino-libraries/TFT, Adafruit_ST7735.cpp l. 263, commit 61b8a7e + Rcmd3RobotLCD[] = { + 3, + ST7735_FRMCTR1, 2 , // 1: Frame rate ctrl - normal mode, 2 args + 0x0B, 0x14, + ST7735_FRMCTR2, 2 , // 2: Frame rate ctrl - idle mode, 2 args + 0x0B, 0x14, + ST7735_FRMCTR3, 4 , // 3: Frame rate ctrl - partial mode, 4 args + 0x0B, 0x14, + 0x0B, 0x14 }, + Rcmd3[] = { // Init for 7735R, part 3 (red or green tab) 4, // 4 commands in list: ST7735_GMCTRP1, 16 , // 1: 16 args, no delay: @@ -181,6 +192,11 @@ colstart = 26; rowstart = 1; } + else if (tabcolor == INITR_ROBOTLCD) + { + commandList(Rcmd2green); + commandList(Rcmd3RobotLCD); + } else if (tabcolor == INITR_REDTAB160x80) { commandList(Rcmd2green); diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7735_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7735_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Defines.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Defines.h index b2e53223..917e602c 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Defines.h @@ -34,6 +34,12 @@ #endif #endif +#if (TFT_HEIGHT == 320) && (TFT_WIDTH == 170) + #ifndef CGRAM_OFFSET + #define CGRAM_OFFSET + #endif +#endif + #if (TFT_HEIGHT == 300) && (TFT_WIDTH == 240) #ifndef CGRAM_OFFSET #define CGRAM_OFFSET diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Init.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Init.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Rotation.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_2_Rotation.h diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Defines.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Defines.h index b0ef25e6..f1b21f30 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Defines.h @@ -34,6 +34,12 @@ #endif #endif +#if (TFT_HEIGHT == 320) && (TFT_WIDTH == 170) + #ifndef CGRAM_OFFSET + #define CGRAM_OFFSET + #endif +#endif + #if (TFT_HEIGHT == 300) && (TFT_WIDTH == 240) #ifndef CGRAM_OFFSET #define CGRAM_OFFSET diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Init.h similarity index 51% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Init.h index 4855f082..b2ed7ebf 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Init.h @@ -1,11 +1,13 @@ // This is the command sequence that initialises the ST7789 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format +#ifndef INIT_SEQUENCE_3 { + fillScreen(TFT_RED); writecommand(ST7789_SLPOUT); // Sleep out delay(120); @@ -23,7 +25,7 @@ writecommand(ST7789_RAMCTRL); writedata(0x00); - writedata(0xE0); // 5 to 6 bit conversion: r0 = r5, b0 = b5 + writedata(0xE0); // 5 to 6-bit conversion: r0 = r5, b0 = b5 writecommand(ST7789_COLMOD); writedata(0x55); @@ -103,7 +105,7 @@ writedata(0x00); writedata(0x00); writedata(0x00); - writedata(0xE5); // 239 + writedata(0xEF); // 239 writecommand(ST7789_RASET); // Row address set writedata(0x00); @@ -126,3 +128,111 @@ pinMode(TFT_BL, OUTPUT); #endif } + + +#else +// TTGO ESP32 S3 T-Display +{ + writecommand(ST7789_SLPOUT); // Sleep out + delay(120); + + writecommand(ST7789_NORON); // Normal display mode on + + //------------------------------display and color format setting--------------------------------// + writecommand(ST7789_MADCTL); + writedata(TFT_MAD_COLOR_ORDER); + + // writecommand(ST7789_RAMCTRL); + // writedata(0x00); + // writedata(0xE0); // 5 to 6-bit conversion: r0 = r5, b0 = b5 + + writecommand(ST7789_COLMOD); + writedata(0x55); + delay(10); + + //--------------------------------ST7789V Frame rate setting----------------------------------// + writecommand(ST7789_PORCTRL); + writedata(0x0b); + writedata(0x0b); + writedata(0x00); + writedata(0x33); + writedata(0x33); + + writecommand(ST7789_GCTRL); // Voltages: VGH / VGL + writedata(0x75); + + //---------------------------------ST7789V Power setting--------------------------------------// + writecommand(ST7789_VCOMS); + writedata(0x28); // JLX240 display datasheet + + writecommand(ST7789_LCMCTRL); + writedata(0x2C); + + writecommand(ST7789_VDVVRHEN); + writedata(0x01); + + writecommand(ST7789_VRHS); // voltage VRHS + writedata(0x1F); + + writecommand(ST7789_FRCTR2); + writedata(0x13); + + writecommand(ST7789_PWCTRL1); + writedata(0xa7); + + writecommand(ST7789_PWCTRL1); + writedata(0xa4); + writedata(0xa1); + + writecommand(0xD6); + writedata(0xa1); + + //--------------------------------ST7789V gamma setting---------------------------------------// + writecommand(ST7789_PVGAMCTRL); + writedata(0xf0); + writedata(0x05); + writedata(0x0a); + writedata(0x06); + writedata(0x06); + writedata(0x03); + writedata(0x2b); + writedata(0x32); + writedata(0x43); + writedata(0x36); + writedata(0x11); + writedata(0x10); + writedata(0x2b); + writedata(0x32); + + writecommand(ST7789_NVGAMCTRL); + writedata(0xf0); + writedata(0x08); + writedata(0x0c); + writedata(0x0b); + writedata(0x09); + writedata(0x24); + writedata(0x2b); + writedata(0x22); + writedata(0x43); + writedata(0x38); + writedata(0x15); + writedata(0x16); + writedata(0x2f); + writedata(0x37); + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + end_tft_write(); + delay(120); + begin_tft_write(); + + writecommand(ST7789_DISPON); //Display on + delay(120); + +#ifdef TFT_BL + // Turn on the back-light LED + digitalWrite(TFT_BL, HIGH); + pinMode(TFT_BL, OUTPUT); +#endif +} +#endif \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Rotation.h similarity index 50% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Rotation.h index 5bb8131f..df5860c7 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7789_2_Rotation.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7789_Rotation.h @@ -138,143 +138,3 @@ _height = _init_width; break; } - // This is the command sequence that rotates the ST7789 driver coordinate frame - - writecommand(TFT_MADCTL); - rotation = m % 4; - switch (rotation) { - case 0: // Portrait -#ifdef CGRAM_OFFSET - if (_init_width == 135) - { - colstart = 52; - rowstart = 40; - } - else if(_init_height == 280) - { - colstart = 0; - rowstart = 20; - } - else if(_init_width == 172) - { - colstart = 34; - rowstart = 0; - } - else if(_init_width == 170) - { - colstart = 35; - rowstart = 0; - } - else - { - colstart = 0; - rowstart = 0; - } -#endif - writedata(TFT_MAD_COLOR_ORDER); - - _width = _init_width; - _height = _init_height; - break; - - case 1: // Landscape (Portrait + 90) -#ifdef CGRAM_OFFSET - if (_init_width == 135) - { - colstart = 40; - rowstart = 53; - } - else if(_init_height == 280) - { - colstart = 20; - rowstart = 0; - } - else if(_init_width == 172) - { - colstart = 0; - rowstart = 34; - } - else if(_init_width == 170) - { - colstart = 0; - rowstart = 35; - } - else - { - colstart = 0; - rowstart = 0; - } -#endif - writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_COLOR_ORDER); - - _width = _init_height; - _height = _init_width; - break; - - case 2: // Inverter portrait -#ifdef CGRAM_OFFSET - if (_init_width == 135) - { - colstart = 53; - rowstart = 40; - } - else if(_init_height == 280) - { - colstart = 0; - rowstart = 20; - } - else if(_init_width == 172) - { - colstart = 34; - rowstart = 0; - } - else if(_init_width == 170) - { - colstart = 35; - rowstart = 0; - } - else - { - colstart = 0; - rowstart = 80; - } -#endif - writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); - - _width = _init_width; - _height = _init_height; - break; - case 3: // Inverted landscape -#ifdef CGRAM_OFFSET - if (_init_width == 135) - { - colstart = 40; - rowstart = 52; - } - else if(_init_height == 280) - { - colstart = 20; - rowstart = 0; - } - else if(_init_width == 172) - { - colstart = 0; - rowstart = 34; - } - else if(_init_width == 170) - { - colstart = 0; - rowstart = 35; - } - else - { - colstart = 80; - rowstart = 0; - } -#endif - writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_COLOR_ORDER); - - _width = _init_height; - _height = _init_width; - break; - } diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Defines.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Defines.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Defines.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Defines.h index ab75c485..d7009ac8 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Defines.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Defines.h @@ -1,12 +1,23 @@ // Change the width and height if required (defined in portrait mode) // or use the constructor to over-ride defaults +#ifndef TFT_WIDTH #define TFT_WIDTH 320 +#endif + +#ifndef TFT_HEIGHT #define TFT_HEIGHT 480 +#endif // Generic commands used by TFT_eSPI.cpp #define TFT_NOP 0x00 #define TFT_SWRST 0x01 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 + #define TFT_CASET 0x2A #define TFT_PASET 0x2B #define TFT_RAMWR 0x2C @@ -31,10 +42,6 @@ #define TFT_MAD_COLOR_ORDER TFT_MAD_BGR #endif -#define TFT_INVOFF 0x20 -#define TFT_INVON 0x21 - - // ST7796 specific commands #define ST7796_NOP 0x00 #define ST7796_SWRESET 0x01 diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Init.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Init.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Init.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Init.h index a112815e..c1d84210 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Init.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Init.h @@ -1,7 +1,7 @@ // This is the command sequence that initialises the ST7796 driver // -// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// This setup information uses simple 8-bit SPI writecommand() and writedata() functions // // See ST7735_Setup.h file for an alternative format diff --git a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Rotation.h b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Rotation.h similarity index 74% rename from libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Rotation.h rename to libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Rotation.h index 4788538a..c5f6ad69 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_Drivers/ST7796_Rotation.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_Drivers/ST7796_Rotation.h @@ -9,21 +9,49 @@ writedata(TFT_MAD_MX | TFT_MAD_COLOR_ORDER); _width = _init_width; _height = _init_height; +#ifdef CGRAM_OFFSET + if (_init_width == 222) + { + colstart = 49; + rowstart = 0; + } +#endif break; case 1: writedata(TFT_MAD_MV | TFT_MAD_COLOR_ORDER); _width = _init_height; _height = _init_width; +#ifdef CGRAM_OFFSET + if (_init_width == 222) + { + colstart = 0; + rowstart = 49; + } +#endif break; case 2: writedata(TFT_MAD_MY | TFT_MAD_COLOR_ORDER); _width = _init_width; _height = _init_height; +#ifdef CGRAM_OFFSET + if (_init_width == 222) + { + colstart = 49; + rowstart = 0; + } +#endif break; case 3: writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_COLOR_ORDER); _width = _init_height; _height = _init_width; +#ifdef CGRAM_OFFSET + if (_init_width == 222) + { + colstart = 0; + rowstart = 49; + } +#endif break; // These next rotations are for bottom up BMP drawing case 4: diff --git a/libraries/TFT_eSPI-2.4.72/TFT_config.h b/libraries/TFT_eSPI-2.5.43/TFT_config.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/TFT_config.h rename to libraries/TFT_eSPI-2.5.43/TFT_config.h index 76aff1ee..a5c7090e 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_config.h +++ b/libraries/TFT_eSPI-2.5.43/TFT_config.h @@ -12,7 +12,7 @@ * @author Ricard Bitriá Ribes (https://github.com/dracir9) * Created Date: 22-01-2022 * ----- - * Last Modified: 14-04-2022 + * Last Modified: 25-02-2023 * Modified By: Ricard Bitriá Ribes * ----- * @copyright (c) 2022 Ricard Bitriá Ribes @@ -23,6 +23,14 @@ #include "sdkconfig.h" +/*************************************************************************************** +** Others +***************************************************************************************/ + +#ifdef CONFIG_DISABLE_WARNINGS + #define DISABLE_ALL_LIBRARY_WARNINGS +#endif + /*************************************************************************************** ** TFT_eSPI Configuration defines ***************************************************************************************/ @@ -78,7 +86,7 @@ #define TFT_RGB_ORDER TFT_RGB #endif -#ifdef CONFIG_TFT_RGB_ORDER +#ifdef CONFIG_TFT_BGR_ORDER #define TFT_RGB_ORDER TFT_BGR #endif @@ -137,7 +145,9 @@ #endif #if CONFIG_TFT_RST == -1 - #error "Invalid Reset pin. Check TFT_eSPI configuration" + #if !defined(DISABLE_ALL_LIBRARY_WARNINGS) + #warning "Invalid Reset pin. Check TFT_eSPI configuration" + #endif #else #define TFT_RST CONFIG_TFT_RST #endif @@ -161,6 +171,8 @@ // 8 BIT PARALLEL BUS #ifdef CONFIG_TFT_PARALLEL_8_BIT + #define TFT_PARALLEL_8_BIT + #if CONFIG_TFT_D0 == -1 #error "Invalid Data 0 pin. Check TFT_eSPI configuration" #else @@ -223,9 +235,11 @@ // SPI BUS #else - #if CONFIG_TFT_MISO == -1 - #error "Invalid MISO pin. Check TFT_eSPI configuration" - #else + #if CONFIG_TFT_HSPI_PORT + #define USE_HSPI_PORT + #endif + + #if CONFIG_TFT_MISO != -1 #define TFT_MISO CONFIG_TFT_MISO #endif diff --git a/libraries/TFT_eSPI-2.4.72/TFT_eSPI.cpp b/libraries/TFT_eSPI-2.5.43/TFT_eSPI.cpp similarity index 85% rename from libraries/TFT_eSPI-2.4.72/TFT_eSPI.cpp rename to libraries/TFT_eSPI-2.5.43/TFT_eSPI.cpp index 87356c2e..d537faeb 100644 --- a/libraries/TFT_eSPI-2.4.72/TFT_eSPI.cpp +++ b/libraries/TFT_eSPI-2.5.43/TFT_eSPI.cpp @@ -1,5 +1,5 @@ /*************************************************** - Arduino TFT graphics library targeted at 32 bit + Arduino TFT graphics library targeted at 32-bit processors such as ESP32, ESP8266 and STM32. This is a stand-alone library that contains the @@ -13,18 +13,17 @@ Last update by Bodmer 20/03/20 ****************************************************/ - #include "TFT_eSPI.h" #if defined (ESP32) #if defined(CONFIG_IDF_TARGET_ESP32S3) - #include "Processors/TFT_eSPI_ESP32_S3.c" // Tested with SPI and 8 bit parallel + #include "Processors/TFT_eSPI_ESP32_S3.c" // Tested with SPI and 8-bit parallel #elif defined(CONFIG_IDF_TARGET_ESP32C3) - #include "Processors/TFT_eSPI_ESP32_C3.c" // Tested with SPI (8 bit parallel will probably work too!) + #include "Processors/TFT_eSPI_ESP32_C3.c" // Tested with SPI (8-bit parallel will probably work too!) #else #include "Processors/TFT_eSPI_ESP32.c" #endif -#elif defined (ESP8266) +#elif defined (ARDUINO_ARCH_ESP8266) #include "Processors/TFT_eSPI_ESP8266.c" #elif defined (STM32) // (_VARIANT_ARDUINO_STM32_) stm32_def.h #include "Processors/TFT_eSPI_STM32.c" @@ -150,7 +149,6 @@ inline void TFT_eSPI::begin_tft_read(void){ SET_BUS_READ_MODE; } - /*************************************************************************************** ** Function name: end_tft_read (was called spi_end_read) ** Description: End transaction for reads and deselect TFT @@ -234,7 +232,6 @@ void TFT_eSPI::setViewport(int32_t x, int32_t y, int32_t w, int32_t h, bool vpDa //Serial.print(" _vpX=");Serial.print( _vpX);Serial.print(", _vpY=");Serial.print( _vpY); //Serial.print(", _vpW=");Serial.print(_vpW);Serial.print(", _vpH=");Serial.println(_vpH); - } /*************************************************************************************** @@ -470,7 +467,7 @@ TFT_eSPI::TFT_eSPI(int16_t w, int16_t h) lockTransaction = false; // start/endWrite lock flag to allow sketch to keep SPI bus access open _booted = true; // Default attributes - _cp437 = true; // Legacy GLCD font bug fix + _cp437 = false; // Legacy GLCD font bug fix disabled by default _utf8 = true; // UTF8 decoding enabled #if defined (FONT_FS_AVAILABLE) && defined (SMOOTH_FONT) @@ -536,25 +533,33 @@ TFT_eSPI::TFT_eSPI(int16_t w, int16_t h) void TFT_eSPI::initBus(void) { #ifdef TFT_CS - pinMode(TFT_CS, OUTPUT); - digitalWrite(TFT_CS, HIGH); // Chip select high (inactive) + if (TFT_CS >= 0) { + pinMode(TFT_CS, OUTPUT); + digitalWrite(TFT_CS, HIGH); // Chip select high (inactive) + } #endif // Configure chip select for touchscreen controller if present #ifdef TOUCH_CS - pinMode(TOUCH_CS, OUTPUT); - digitalWrite(TOUCH_CS, HIGH); // Chip select high (inactive) + if (TOUCH_CS >= 0) { + pinMode(TOUCH_CS, OUTPUT); + digitalWrite(TOUCH_CS, HIGH); // Chip select high (inactive) + } #endif // In parallel mode and with the RP2040 processor, the TFT_WR line is handled in the PIO #if defined (TFT_WR) && !defined (ARDUINO_ARCH_RP2040) && !defined (ARDUINO_ARCH_MBED) - pinMode(TFT_WR, OUTPUT); - digitalWrite(TFT_WR, HIGH); // Set write strobe high (inactive) + if (TFT_WR >= 0) { + pinMode(TFT_WR, OUTPUT); + digitalWrite(TFT_WR, HIGH); // Set write strobe high (inactive) + } #endif #ifdef TFT_DC - pinMode(TFT_DC, OUTPUT); - digitalWrite(TFT_DC, HIGH); // Data/Command high = data mode + if (TFT_DC >= 0) { + pinMode(TFT_DC, OUTPUT); + digitalWrite(TFT_DC, HIGH); // Data/Command high = data mode + } #endif #ifdef TFT_RST @@ -567,8 +572,10 @@ void TFT_eSPI::initBus(void) { #if defined (TFT_PARALLEL_8_BIT) // Make sure read is high before we set the bus to output - pinMode(TFT_RD, OUTPUT); - digitalWrite(TFT_RD, HIGH); + if (TFT_RD >= 0) { + pinMode(TFT_RD, OUTPUT); + digitalWrite(TFT_RD, HIGH); + } #if !defined (ARDUINO_ARCH_RP2040) && !defined (ARDUINO_ARCH_MBED)// PIO manages pins // Set TFT data bus lines to output @@ -625,7 +632,7 @@ void TFT_eSPI::init(uint8_t tc) sclkpinmask = (uint32_t) digitalPinToBitMask(TFT_SCLK); #endif - #if defined (TFT_SPI_OVERLAP) && defined (ESP8266) + #if defined (TFT_SPI_OVERLAP) && defined (ARDUINO_ARCH_ESP8266) // Overlap mode SD0=MISO, SD1=MOSI, CLK=SCLK must use D3 as CS // pins(int8_t sck, int8_t miso, int8_t mosi, int8_t ss); //spi.pins( 6, 7, 8, 0); @@ -652,17 +659,21 @@ void TFT_eSPI::init(uint8_t tc) #if defined (TFT_CS) && !defined(RP2040_PIO_INTERFACE) // Set to output once again in case MISO is used for CS - pinMode(TFT_CS, OUTPUT); - digitalWrite(TFT_CS, HIGH); // Chip select high (inactive) -#elif defined (ESP8266) && !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_SPI) + if (TFT_CS >= 0) { + pinMode(TFT_CS, OUTPUT); + digitalWrite(TFT_CS, HIGH); // Chip select high (inactive) + } +#elif defined (ARDUINO_ARCH_ESP8266) && !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_SPI) spi.setHwCs(1); // Use hardware SS toggling #endif // Set to output once again in case MISO is used for DC #if defined (TFT_DC) && !defined(RP2040_PIO_INTERFACE) + if (TFT_DC >= 0) { pinMode(TFT_DC, OUTPUT); digitalWrite(TFT_DC, HIGH); // Data/Command high = data mode + } #endif _booted = false; @@ -673,7 +684,9 @@ void TFT_eSPI::init(uint8_t tc) #ifdef TFT_RST #if !defined(RP2040_PIO_INTERFACE) // Set to output once again in case MISO is used for TFT_RST - pinMode(TFT_RST, OUTPUT); + if (TFT_RST >= 0) { + pinMode(TFT_RST, OUTPUT); + } #endif if (TFT_RST >= 0) { writecommand(0x00); // Put SPI bus in known state for TFT with CS tied low @@ -771,13 +784,17 @@ void TFT_eSPI::init(uint8_t tc) setRotation(rotation); #if defined (TFT_BL) && defined (TFT_BACKLIGHT_ON) - pinMode(TFT_BL, OUTPUT); - digitalWrite(TFT_BL, TFT_BACKLIGHT_ON); + if (TFT_BL >= 0) { + pinMode(TFT_BL, OUTPUT); + digitalWrite(TFT_BL, TFT_BACKLIGHT_ON); + } #else #if defined (TFT_BL) && defined (M5STACK) // Turn on the back-light LED - pinMode(TFT_BL, OUTPUT); - digitalWrite(TFT_BL, HIGH); + if (TFT_BL >= 0) { + pinMode(TFT_BL, OUTPUT); + digitalWrite(TFT_BL, HIGH); + } #endif #endif } @@ -867,6 +884,48 @@ void TFT_eSPI::setRotation(uint8_t m) } +/*************************************************************************************** +** Function name: getRotation +** Description: Return the rotation value (as used by setRotation()) +***************************************************************************************/ +uint8_t TFT_eSPI::getRotation(void) +{ + return rotation; +} + + +/*************************************************************************************** +** Function name: setOrigin +** Description: Set graphics origin to position x,y wrt to top left corner +***************************************************************************************/ +//Note: setRotation, setViewport and resetViewport will revert origin to top left +void TFT_eSPI::setOrigin(int32_t x, int32_t y) +{ + _xDatum = x; + _yDatum = y; +} + + +/*************************************************************************************** +** Function name: getOriginX +** Description: Set graphics origin to position x +***************************************************************************************/ +int32_t TFT_eSPI::getOriginX(void) +{ + return _xDatum; +} + + +/*************************************************************************************** +** Function name: getOriginY +** Description: Set graphics origin to position y +***************************************************************************************/ +int32_t TFT_eSPI::getOriginY(void) +{ + return _yDatum; +} + + /*************************************************************************************** ** Function name: commandList, used for FLASH based lists only (e.g. ST7735) ** Description: Get initialisation commands from FLASH and send to TFT @@ -883,7 +942,7 @@ void TFT_eSPI::commandList (const uint8_t *addr) { writecommand(pgm_read_byte(addr++)); // Read, issue command numArgs = pgm_read_byte(addr++); // Number of args to follow - ms = numArgs & TFT_INIT_DELAY; // If hibit set, delay follows args + ms = numArgs & TFT_INIT_DELAY; // If high bit set, delay follows args numArgs &= ~TFT_INIT_DELAY; // Mask out delay bit while (numArgs--) // For each argument... @@ -915,7 +974,7 @@ void TFT_eSPI::spiwrite(uint8_t c) /*************************************************************************************** ** Function name: writecommand -** Description: Send an 8 bit command to the TFT +** Description: Send an 8-bit command to the TFT ***************************************************************************************/ #ifndef RM68120_DRIVER void TFT_eSPI::writecommand(uint8_t c) @@ -929,7 +988,6 @@ void TFT_eSPI::writecommand(uint8_t c) DC_D; end_tft_write(); - } #else void TFT_eSPI::writecommand(uint16_t c) @@ -945,7 +1003,7 @@ void TFT_eSPI::writecommand(uint16_t c) end_tft_write(); } -void TFT_eSPI::writeRegister(uint16_t c, uint8_t d) +void TFT_eSPI::writeRegister8(uint16_t c, uint8_t d) { begin_tft_write(); @@ -960,11 +1018,27 @@ void TFT_eSPI::writeRegister(uint16_t c, uint8_t d) end_tft_write(); } +void TFT_eSPI::writeRegister16(uint16_t c, uint16_t d) +{ + begin_tft_write(); + + DC_C; + + tft_Write_16(c); + + DC_D; + + tft_Write_16(d); + + end_tft_write(); + +} + #endif /*************************************************************************************** ** Function name: writedata -** Description: Send a 8 bit data value to the TFT +** Description: Send a 8-bit data value to the TFT ***************************************************************************************/ void TFT_eSPI::writedata(uint8_t d) { @@ -982,7 +1056,7 @@ void TFT_eSPI::writedata(uint8_t d) /*************************************************************************************** ** Function name: readcommand8 -** Description: Read a 8 bit data value from an indexed command register +** Description: Read a 8-bit data value from an indexed command register ***************************************************************************************/ uint8_t TFT_eSPI::readcommand8(uint8_t cmd_function, uint8_t index) { @@ -991,14 +1065,14 @@ uint8_t TFT_eSPI::readcommand8(uint8_t cmd_function, uint8_t index) writecommand(cmd_function); // Sets DC and CS high - busDir(dir_mask, INPUT); + busDir(GPIO_DIR_MASK, INPUT); CS_L; // Read nth parameter (assumes caller discards 1st parameter or points index to 2nd) while(index--) reg = readByte(); - busDir(dir_mask, OUTPUT); + busDir(GPIO_DIR_MASK, OUTPUT); CS_H; @@ -1025,7 +1099,7 @@ uint8_t TFT_eSPI::readcommand8(uint8_t cmd_function, uint8_t index) /*************************************************************************************** ** Function name: readcommand16 -** Description: Read a 16 bit data value from an indexed command register +** Description: Read a 16-bit data value from an indexed command register ***************************************************************************************/ uint16_t TFT_eSPI::readcommand16(uint8_t cmd_function, uint8_t index) { @@ -1040,7 +1114,7 @@ uint16_t TFT_eSPI::readcommand16(uint8_t cmd_function, uint8_t index) /*************************************************************************************** ** Function name: readcommand32 -** Description: Read a 32 bit data value from an indexed command register +** Description: Read a 32-bit data value from an indexed command register ***************************************************************************************/ uint32_t TFT_eSPI::readcommand32(uint8_t cmd_function, uint8_t index) { @@ -1071,44 +1145,44 @@ uint16_t TFT_eSPI::readPixel(int32_t x0, int32_t y0) #if defined(TFT_PARALLEL_8_BIT) || defined(RP2040_PIO_INTERFACE) - CS_L; + if (!inTransaction) { CS_L; } // CS_L can be multi-statement readAddrWindow(x0, y0, 1, 1); // Set masked pins D0- D7 to input - busDir(dir_mask, INPUT); + busDir(GPIO_DIR_MASK, INPUT); #if !defined (SSD1963_DRIVER) // Dummy read to throw away don't care value readByte(); #endif - // Fetch the 16 bit BRG pixel + // Fetch the 16-bit BRG pixel //uint16_t rgb = (readByte() << 8) | readByte(); #if defined (ILI9341_DRIVER) || defined(ILI9341_2_DRIVER) || defined (ILI9488_DRIVER) || defined (SSD1963_DRIVER)// Read 3 bytes - // Read window pixel 24 bit RGB values and fill in LS bits + // Read window pixel 24-bit RGB values and fill in LS bits uint16_t rgb = ((readByte() & 0xF8) << 8) | ((readByte() & 0xFC) << 3) | (readByte() >> 3); - CS_H; + if (!inTransaction) { CS_H; } // CS_H can be multi-statement // Set masked pins D0- D7 to output - busDir(dir_mask, OUTPUT); + busDir(GPIO_DIR_MASK, OUTPUT); return rgb; - #else // ILI9481 or ILI9486 16 bit read + #else // ILI9481 or ILI9486 16-bit read - // Fetch the 16 bit BRG pixel + // Fetch the 16-bit BRG pixel uint16_t bgr = (readByte() << 8) | readByte(); - CS_H; + if (!inTransaction) { CS_H; } // CS_H can be multi-statement // Set masked pins D0- D7 to output - busDir(dir_mask, OUTPUT); + busDir(GPIO_DIR_MASK, OUTPUT); - #ifdef ILI9486_DRIVER + #if defined (ILI9486_DRIVER) || defined (ST7796_DRIVER) return bgr; #else // Swap Red and Blue (could check MADCTL setting to see if this is needed) @@ -1142,6 +1216,13 @@ uint16_t TFT_eSPI::readPixel(int32_t x0, int32_t y0) #if defined (ST7796_DRIVER) // Read the 2 bytes color = ((tft_Read_8()) << 8) | (tft_Read_8()); + #elif defined (ST7735_DRIVER) + // Read the 3 RGB bytes, colour is in LS 6 bits of the top 7 bits of each byte + // as the TFT stores colours as 18 bits + uint8_t r = tft_Read_8()<<1; + uint8_t g = tft_Read_8()<<1; + uint8_t b = tft_Read_8()<<1; + color = color565(r, g, b); #else // Read the 3 RGB bytes, colour is actually only in the top 6 bits of each byte // as the TFT stores colours as 18 bits @@ -1202,18 +1283,18 @@ void TFT_eSPI::readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da data += dx + dy * w; // Set masked pins D0- D7 to input - busDir(dir_mask, INPUT); + busDir(GPIO_DIR_MASK, INPUT); #if defined (ILI9341_DRIVER) || defined(ILI9341_2_DRIVER) || defined (ILI9488_DRIVER) // Read 3 bytes // Dummy read to throw away don't care value readByte(); - // Fetch the 24 bit RGB value + // Fetch the 24-bit RGB value while (dh--) { int32_t lw = dw; uint16_t* line = data; while (lw--) { - // Assemble the RGB 16 bit colour + // Assemble the RGB 16-bit colour uint16_t rgb = ((readByte() & 0xF8) << 8) | ((readByte() & 0xFC) << 3) | (readByte() >> 3); // Swapped byte order for compatibility with pushRect() @@ -1223,7 +1304,7 @@ void TFT_eSPI::readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da } #elif defined (SSD1963_DRIVER) - // Fetch the 18 bit BRG pixels + // Fetch the 18-bit BRG pixels while (dh--) { int32_t lw = dw; uint16_t* line = data; @@ -1243,16 +1324,16 @@ void TFT_eSPI::readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da // Dummy read to throw away don't care value readByte(); - // Fetch the 16 bit BRG pixels + // Fetch the 16-bit BRG pixels while (dh--) { int32_t lw = dw; uint16_t* line = data; while (lw--) { - #ifdef ILI9486_DRIVER - // Read the RGB 16 bit colour + #if defined (ILI9486_DRIVER) || defined (ST7796_DRIVER) + // Read the RGB 16-bit colour *line++ = readByte() | (readByte() << 8); #else - // Read the BRG 16 bit colour + // Read the BRG 16-bit colour uint16_t bgr = (readByte() << 8) | readByte(); // Swap Red and Blue (could check MADCTL setting to see if this is needed) uint16_t rgb = (bgr>>11) | (bgr<<11) | (bgr & 0x7E0); @@ -1267,7 +1348,7 @@ void TFT_eSPI::readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da CS_H; // Set masked pins D0- D7 to output - busDir(dir_mask, OUTPUT); + busDir(GPIO_DIR_MASK, OUTPUT); #else // SPI interface @@ -1291,7 +1372,7 @@ void TFT_eSPI::readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da // Dummy read to throw away don't care value tft_Read_8(); - // Read window pixel 24 bit RGB values + // Read window pixel 24-bit RGB values while (dh--) { int32_t lw = dw; uint16_t* line = data; @@ -1302,6 +1383,13 @@ void TFT_eSPI::readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da #if defined (ST7796_DRIVER) // Read the 2 bytes color = ((tft_Read_8()) << 8) | (tft_Read_8()); + #elif defined (ST7735_DRIVER) + // Read the 3 RGB bytes, colour is in LS 6 bits of the top 7 bits of each byte + // as the TFT stores colours as 18 bits + uint8_t r = tft_Read_8()<<1; + uint8_t g = tft_Read_8()<<1; + uint8_t b = tft_Read_8()<<1; + color = color565(r, g, b); #else // Read the 3 RGB bytes, colour is actually only in the top 6 bits of each byte // as the TFT stores colours as 18 bits @@ -1355,7 +1443,7 @@ void TFT_eSPI::pushRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *da /*************************************************************************************** ** Function name: pushImage -** Description: plot 16 bit colour sprite or image onto TFT +** Description: plot 16-bit colour sprite or image onto TFT ***************************************************************************************/ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data) { @@ -1385,7 +1473,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *d /*************************************************************************************** ** Function name: pushImage -** Description: plot 16 bit sprite or image with 1 colour being transparent +** Description: plot 16-bit sprite or image with 1 colour being transparent ***************************************************************************************/ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, uint16_t transp) { @@ -1444,11 +1532,11 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *d /*************************************************************************************** ** Function name: pushImage - for FLASH (PROGMEM) stored images -** Description: plot 16 bit image +** Description: plot 16-bit image ***************************************************************************************/ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data) { - // Requires 32 bit aligned access, so use PROGMEM 16 bit word functions + // Requires 32-bit aligned access, so use PROGMEM 16-bit word functions PI_CLIP; begin_tft_write(); @@ -1474,11 +1562,11 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint1 /*************************************************************************************** ** Function name: pushImage - for FLASH (PROGMEM) stored images -** Description: plot 16 bit image with 1 colour being transparent +** Description: plot 16-bit image with 1 colour being transparent ***************************************************************************************/ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data, uint16_t transp) { - // Requires 32 bit aligned access, so use PROGMEM 16 bit word functions + // Requires 32-bit aligned access, so use PROGMEM 16-bit word functions PI_CLIP; begin_tft_write(); @@ -1530,7 +1618,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint1 /*************************************************************************************** ** Function name: pushImage -** Description: plot 8 bit or 4 bit or 1 bit image or sprite using a line buffer +** Description: plot 8-bit or 4-bit or 1 bit image or sprite using a line buffer ***************************************************************************************/ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint8_t *data, bool bpp8, uint16_t *cmap) { @@ -1549,7 +1637,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint8 { _swapBytes = false; - uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table + uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5-bit colour lookup table _lastColor = -1; // Set to illegal value @@ -1663,7 +1751,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint8 /*************************************************************************************** ** Function name: pushImage -** Description: plot 8 bit or 4 bit or 1 bit image or sprite using a line buffer +** Description: plot 8-bit or 4-bit or 1 bit image or sprite using a line buffer ***************************************************************************************/ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, bool bpp8, uint16_t *cmap) { @@ -1682,7 +1770,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da { _swapBytes = false; - uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table + uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5-bit colour lookup table _lastColor = -1; // Set to illegal value @@ -1815,7 +1903,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da data += dx + dy * w; - uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table + uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5-bit colour lookup table _lastColor = -1; // Set to illegal value @@ -1999,10 +2087,95 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da end_tft_write(); } +/*************************************************************************************** +** Function name: pushMaskedImage +** Description: Render a 16-bit colour image to TFT with a 1bpp mask +***************************************************************************************/ +// Can be used with a 16bpp sprite and a 1bpp sprite for the mask +void TFT_eSPI::pushMaskedImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *img, uint8_t *mask) +{ + if (_vpOoB || w < 1 || h < 1) return; + + // To simplify mask handling the window clipping is done by the pushImage function + // Each mask image line assumed to be padded to an integer number of bytes & padding bits are 0 + + begin_tft_write(); + inTransaction = true; + + uint8_t *mptr = mask; + uint8_t *eptr = mask + ((w + 7) >> 3); + uint16_t *iptr = img; + uint32_t setCount = 0; + + // For each line in the image + while (h--) { + uint32_t xp = 0; + uint32_t clearCount = 0; + uint8_t mbyte= *mptr++; + uint32_t bits = 8; + // Scan through each byte of the bitmap and determine run lengths + do { + setCount = 0; + + //Get run length for clear bits to determine x offset + while ((mbyte & 0x80) == 0x00) { + // Check if remaining bits in byte are clear (reduce shifts) + if (mbyte == 0) { + clearCount += bits; // bits not always 8 here + if (mptr >= eptr) break; // end of line + mbyte = *mptr++; + bits = 8; + continue; + } + mbyte = mbyte << 1; // 0's shifted in + clearCount ++; + if (--bits) continue;; + if (mptr >= eptr) break; + mbyte = *mptr++; + bits = 8; + } + + //Get run length for set bits to determine render width + while ((mbyte & 0x80) == 0x80) { + // Check if all bits are set (reduces shifts) + if (mbyte == 0xFF) { + setCount += bits; + if (mptr >= eptr) break; + mbyte = *mptr++; + //bits = 8; // NR, bits always 8 here unless 1's shifted in + continue; + } + mbyte = mbyte << 1; //or mbyte += mbyte + 1 to shift in 1's + setCount ++; + if (--bits) continue; + if (mptr >= eptr) break; + mbyte = *mptr++; + bits = 8; + } + + // A mask boundary or mask end has been found, so render the pixel line + if (setCount) { + xp += clearCount; + clearCount = 0; + pushImage(x + xp, y, setCount, 1, iptr + xp); // pushImage handles clipping + if (mptr >= eptr) break; + xp += setCount; + } + } while (setCount || mptr < eptr); + + y++; + iptr += w; + eptr += ((w + 7) >> 3); + } + + inTransaction = lockTransaction; + end_tft_write(); +} + /*************************************************************************************** ** Function name: setSwapBytes -** Description: Used by 16 bit pushImage() to swap byte order in colours +** Description: Used by 16-bit pushImage() to swap byte order in colours ***************************************************************************************/ void TFT_eSPI::setSwapBytes(bool swap) { @@ -2058,7 +2231,7 @@ void TFT_eSPI::readRectRGB(int32_t x0, int32_t y0, int32_t w, int32_t h, uint8_ // Dummy read to throw away don't care value tft_Read_8(); - // Read window pixel 24 bit RGB values, buffer must be set in sketch to 3 * w * h + // Read window pixel 24-bit RGB values, buffer must be set in sketch to 3 * w * h uint32_t len = w * h; while (len--) { @@ -2180,7 +2353,7 @@ void TFT_eSPI::drawCircleHelper( int32_t x0, int32_t y0, int32_t rr, uint8_t cor //begin_tft_write(); // Sprite class can use this function, avoiding begin_tft_write() inTransaction = true; - while (xe < rr--) + do { while (f < 0) { ++xe; @@ -2226,7 +2399,8 @@ void TFT_eSPI::drawCircleHelper( int32_t x0, int32_t y0, int32_t rr, uint8_t cor } } xs = xe; - } + } while (xe < rr--); + inTransaction = lockTransaction; end_tft_write(); // Does nothing if Sprite class uses this function } @@ -2511,13 +2685,13 @@ void TFT_eSPI::fillTriangle ( int32_t x0, int32_t y0, int32_t x1, int32_t y1, in // Sort coordinates by Y order (y2 >= y1 >= y0) if (y0 > y1) { - swap_coord(y0, y1); swap_coord(x0, x1); + transpose(y0, y1); transpose(x0, x1); } if (y1 > y2) { - swap_coord(y2, y1); swap_coord(x2, x1); + transpose(y2, y1); transpose(x2, x1); } if (y0 > y1) { - swap_coord(y0, y1); swap_coord(x0, x1); + transpose(y0, y1); transpose(x0, x1); } if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing @@ -2558,7 +2732,7 @@ void TFT_eSPI::fillTriangle ( int32_t x0, int32_t y0, int32_t x1, int32_t y1, in sa += dx01; sb += dx02; - if (a > b) swap_coord(a, b); + if (a > b) transpose(a, b); drawFastHLine(a, y, b - a + 1, color); } @@ -2572,7 +2746,7 @@ void TFT_eSPI::fillTriangle ( int32_t x0, int32_t y0, int32_t x1, int32_t y1, in sa += dx12; sb += dx02; - if (a > b) swap_coord(a, b); + if (a > b) transpose(a, b); drawFastHLine(a, y, b - a + 1, color); } @@ -2693,7 +2867,7 @@ void TFT_eSPI::setCursor(int16_t x, int16_t y) ***************************************************************************************/ void TFT_eSPI::setCursor(int16_t x, int16_t y, uint8_t font) { - textfont = font; + setTextFont(font); cursor_x = x; cursor_y = y; } @@ -2838,15 +3012,6 @@ uint16_t TFT_eSPI::getTextPadding(void) return padX; } -/*************************************************************************************** -** Function name: getRotation -** Description: Return the rotation value (as used by setRotation()) -***************************************************************************************/ -uint8_t TFT_eSPI::getRotation(void) -{ - return rotation; -} - /*************************************************************************************** ** Function name: getTextDatum ** Description: Return the text datum value (as used by setTextDatum()) @@ -2975,7 +3140,7 @@ int16_t TFT_eSPI::textWidth(const char *string, uint8_t font) /*************************************************************************************** ** Function name: fontsLoaded -** Description: return an encoded 16 bit value showing the fonts loaded +** Description: return an encoded 16-bit value showing the fonts loaded ***************************************************************************************/ // Returns a value showing which fonts are loaded (bit N set = Font N loaded) uint16_t TFT_eSPI::fontsLoaded(void) @@ -2988,8 +3153,10 @@ uint16_t TFT_eSPI::fontsLoaded(void) ** Function name: fontHeight ** Description: return the height of a font (yAdvance for free fonts) ***************************************************************************************/ -int16_t TFT_eSPI::fontHeight(int16_t font) +int16_t TFT_eSPI::fontHeight(uint8_t font) { + if (font > 8) return 0; + #ifdef SMOOTH_FONT if(fontLoaded) return gFont.yAdvance; #endif @@ -3017,11 +3184,10 @@ void TFT_eSPI::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32 { if (_vpOoB) return; - if (c < 32) return; #ifdef LOAD_GLCD //>>>>>>>>>>>>>>>>>> #ifdef LOAD_GFXFF - if(!gfxFont) { // 'Classic' built-in font + if(!gfxFont) { // 'Classic' built-in GLCD font #endif //>>>>>>>>>>>>>>>>>> @@ -3034,6 +3200,9 @@ void TFT_eSPI::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32 ((yd + 8 * size - 1) < _vpY)) // Clip top return; + if (c > 255) return; + if (!_cp437 && c > 175) c++; + bool fillbg = (bg != color); bool clip = xd < _vpX || xd + 6 * textsize >= _vpW || yd < _vpY || yd + 8 * textsize >= _vpH; @@ -3044,7 +3213,7 @@ void TFT_eSPI::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32 setWindow(xd, yd, xd+5, yd+7); - for (int8_t i = 0; i < 5; i++ ) column[i] = pgm_read_byte(font + (c * 5) + i); + for (int8_t i = 0; i < 5; i++ ) column[i] = pgm_read_byte(&font[0] + (c * 5) + i); column[5] = 0; for (int8_t j = 0; j < 8; j++) { @@ -3067,7 +3236,7 @@ void TFT_eSPI::drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32 if (i == 5) line = 0x0; else - line = pgm_read_byte(font + (c * 5) + i); + line = pgm_read_byte(&font[0] + (c * 5) + i); if (size == 1 && !fillbg) { // default size for (int8_t j = 0; j < 8; j++) { @@ -3195,7 +3364,7 @@ void TFT_eSPI::setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1) addr_col = 0xFFFF; #if defined (ILI9225_DRIVER) - if (rotation & 0x01) { swap_coord(x0, y0); swap_coord(x1, y1); } + if (rotation & 0x01) { transpose(x0, y0); transpose(x1, y1); } SPI_BUSY_CHECK; DC_C; tft_Write_8(TFT_CASET1); DC_D; tft_Write_16(x0); @@ -3217,14 +3386,14 @@ void TFT_eSPI::setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1) DC_D; // Temporary solution is to include the RP2040 code here #if (defined(ARDUINO_ARCH_RP2040) || defined (ARDUINO_ARCH_MBED)) && !defined(RP2040_PIO_INTERFACE) - // For ILI9225 and RP2040 the slower Arduino SPI transfer calls were used, so need to swap back to 16 bit mode + // For ILI9225 and RP2040 the slower Arduino SPI transfer calls were used, so need to swap back to 16-bit mode while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); #endif #elif defined (SSD1351_DRIVER) if (rotation & 1) { - swap_coord(x0, y0); - swap_coord(x1, y1); + transpose(x0, y0); + transpose(x1, y1); } SPI_BUSY_CHECK; DC_C; tft_Write_8(TFT_CASET); @@ -3235,7 +3404,7 @@ void TFT_eSPI::setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1) DC_D; #else #if defined (SSD1963_DRIVER) - if ((rotation & 0x1) == 0) { swap_coord(x0, y0); swap_coord(x1, y1); } + if ((rotation & 0x1) == 0) { transpose(x0, y0); transpose(x1, y1); } #endif #ifdef CGRAM_OFFSET @@ -3248,12 +3417,12 @@ void TFT_eSPI::setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1) // Temporary solution is to include the RP2040 optimised code here #if (defined(ARDUINO_ARCH_RP2040) || defined (ARDUINO_ARCH_MBED)) #if !defined(RP2040_PIO_INTERFACE) - // Use hardware SPI port, this code does not swap from 8 to 16 bit + // Use hardware SPI port, this code does not swap from 8 to 16-bit // to avoid the spi_set_format() call overhead while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; DC_C; #if !defined (SPI_18BIT_DRIVER) - #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16 bit transfers + #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16-bit transfers hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); #else hw_write_masked(&spi_get_hw(SPI_X)->cr0, (8 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); @@ -3288,6 +3457,18 @@ void TFT_eSPI::setWindow(int32_t x0, int32_t y0, int32_t x1, int32_t y1) hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); #endif DC_D; + #elif defined (RM68120_DRIVER) + DC_C; tft_Write_16(TFT_CASET+0); DC_D; tft_Write_16(x0 >> 8); + DC_C; tft_Write_16(TFT_CASET+1); DC_D; tft_Write_16(x0 & 0xFF); + DC_C; tft_Write_16(TFT_CASET+2); DC_D; tft_Write_16(x1 >> 8); + DC_C; tft_Write_16(TFT_CASET+3); DC_D; tft_Write_16(x1 & 0xFF); + DC_C; tft_Write_16(TFT_PASET+0); DC_D; tft_Write_16(y0 >> 8); + DC_C; tft_Write_16(TFT_PASET+1); DC_D; tft_Write_16(y0 & 0xFF); + DC_C; tft_Write_16(TFT_PASET+2); DC_D; tft_Write_16(y1 >> 8); + DC_C; tft_Write_16(TFT_PASET+3); DC_D; tft_Write_16(y1 & 0xFF); + + DC_C; tft_Write_16(TFT_RAMWR); + DC_D; #else // This is for the RP2040 and PIO interface (SPI or parallel) WAIT_FOR_STALL; @@ -3327,7 +3508,7 @@ void TFT_eSPI::readAddrWindow(int32_t xs, int32_t ys, int32_t w, int32_t h) addr_row = 0xFFFF; #if defined (SSD1963_DRIVER) - if ((rotation & 0x1) == 0) { swap_coord(xs, ys); swap_coord(xe, ye); } + if ((rotation & 0x1) == 0) { transpose(xs, ys); transpose(xe, ye); } #endif #ifdef CGRAM_OFFSET @@ -3339,7 +3520,7 @@ void TFT_eSPI::readAddrWindow(int32_t xs, int32_t ys, int32_t w, int32_t h) // Temporary solution is to include the RP2040 optimised code here #if (defined(ARDUINO_ARCH_RP2040) || defined (ARDUINO_ARCH_MBED)) && !defined(RP2040_PIO_INTERFACE) - // Use hardware SPI port, this code does not swap from 8 to 16 bit + // Use hardware SPI port, this code does not swap from 8 to 16-bit // to avoid the spi_set_format() call overhead while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; DC_C; @@ -3421,7 +3602,7 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) begin_tft_write(); #if defined (ILI9225_DRIVER) - if (rotation & 0x01) { swap_coord(x, y); } + if (rotation & 0x01) { transpose(x, y); } SPI_BUSY_CHECK; // Set window to full screen to optimise sequential pixel rendering @@ -3456,13 +3637,13 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) #elif (defined (ARDUINO_ARCH_RP2040) || defined (ARDUINO_ARCH_MBED)) && !defined (SSD1351_DRIVER) #if defined (SSD1963_DRIVER) - if ((rotation & 0x1) == 0) { swap_coord(x, y); } + if ((rotation & 0x1) == 0) { transpose(x, y); } #endif #if !defined(RP2040_PIO_INTERFACE) while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; - #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16 bit transfers + #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16-bit transfers hw_write_masked(&spi_get_hw(SPI_X)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); #else hw_write_masked(&spi_get_hw(SPI_X)->cr0, (8 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); @@ -3497,7 +3678,7 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) DC_C; spi_get_hw(SPI_X)->dr = (uint32_t)TFT_RAMWR; - #if defined (SPI_18BIT_DRIVER) // SPI 18 bit colour + #if defined (SPI_18BIT_DRIVER) // SPI 18-bit colour uint8_t r = (color & 0xF800)>>8; uint8_t g = (color & 0x07E0)>>3; uint8_t b = (color & 0x001F)<<3; @@ -3507,7 +3688,7 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) #else while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; DC_D; - #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16 bit transfers + #if defined (RPI_DISPLAY_TYPE) // RPi TFT type always needs 16-bit transfers spi_get_hw(SPI_X)->dr = (uint32_t)color; #else spi_get_hw(SPI_X)->dr = (uint32_t)color>>8; @@ -3515,6 +3696,24 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) #endif #endif while (spi_get_hw(SPI_X)->sr & SPI_SSPSR_BSY_BITS) {}; + #elif defined (RM68120_DRIVER) + if (addr_col != x) { + DC_C; tft_Write_16(TFT_CASET+0); DC_D; tft_Write_16(x >> 8); + DC_C; tft_Write_16(TFT_CASET+1); DC_D; tft_Write_16(x & 0xFF); + DC_C; tft_Write_16(TFT_CASET+2); DC_D; tft_Write_16(x >> 8); + DC_C; tft_Write_16(TFT_CASET+3); DC_D; tft_Write_16(x & 0xFF); + addr_col = x; + } + if (addr_row != y) { + DC_C; tft_Write_16(TFT_PASET+0); DC_D; tft_Write_16(y >> 8); + DC_C; tft_Write_16(TFT_PASET+1); DC_D; tft_Write_16(y & 0xFF); + DC_C; tft_Write_16(TFT_PASET+2); DC_D; tft_Write_16(y >> 8); + DC_C; tft_Write_16(TFT_PASET+3); DC_D; tft_Write_16(y & 0xFF); + addr_row = y; + } + DC_C; tft_Write_16(TFT_RAMWR); DC_D; + + TX_FIFO = color; #else // This is for the RP2040 and PIO interface (SPI or parallel) WAIT_FOR_STALL; @@ -3525,7 +3724,7 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) TX_FIFO = (y<<16) | y; TX_FIFO = TFT_RAMWR; //DC set high by PIO - #if defined (SPI_18BIT_DRIVER) + #if defined (SPI_18BIT_DRIVER) || (defined (SSD1963_DRIVER) && defined (TFT_PARALLEL_8_BIT)) TX_FIFO = ((color & 0xF800)<<8) | ((color & 0x07E0)<<5) | ((color & 0x001F)<<3); #else TX_FIFO = color; @@ -3536,13 +3735,13 @@ void TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color) #else #if defined (SSD1963_DRIVER) - if ((rotation & 0x1) == 0) { swap_coord(x, y); } + if ((rotation & 0x1) == 0) { transpose(x, y); } #endif SPI_BUSY_CHECK; #if defined (SSD1351_DRIVER) - if (rotation & 0x1) { swap_coord(x, y); } + if (rotation & 0x1) { transpose(x, y); } // No need to send x if it has not changed (speeds things up) if (addr_col != x) { DC_C; tft_Write_8(TFT_CASET); @@ -3646,7 +3845,7 @@ void TFT_eSPI::writeColor(uint16_t color, uint32_t len) /*************************************************************************************** ** Function name: pushColors -** Description: push an array of pixels for 16 bit raw image drawing +** Description: push an array of pixels for 16-bit raw image drawing ***************************************************************************************/ // Assumed that setAddrWindow() has previously been called // len is number of bytes, not pixels @@ -3680,7 +3879,7 @@ void TFT_eSPI::pushColors(uint16_t *data, uint32_t len, bool swap) ** Function name: drawLine ** Description: draw a line between 2 arbitrary points ***************************************************************************************/ -// Bresenham's algorithm - thx wikipedia - speed enhanced by Bodmer to use +// Bresenham's algorithm - thx Wikipedia - speed enhanced by Bodmer to use // an efficient FastH/V Line draw routine for line segments of 2 pixels or more void TFT_eSPI::drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t color) { @@ -3694,13 +3893,13 @@ void TFT_eSPI::drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t bool steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { - swap_coord(x0, y0); - swap_coord(x1, y1); + transpose(x0, y0); + transpose(x1, y1); } if (x0 > x1) { - swap_coord(x0, x1); - swap_coord(y0, y1); + transpose(x0, x1); + transpose(y0, y1); } int32_t dx = x1 - x0, dy = abs(y1 - y0);; @@ -3751,19 +3950,295 @@ void TFT_eSPI::drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t constexpr float PixelAlphaGain = 255.0; constexpr float LoAlphaTheshold = 1.0/32.0; constexpr float HiAlphaTheshold = 1.0 - LoAlphaTheshold; +constexpr float deg2rad = 3.14159265359/180.0; /*************************************************************************************** -** Function name: drawPixel (aplha blended) +** Function name: drawPixel (alpha blended) ** Description: Draw a pixel blended with the screen or bg pixel colour ***************************************************************************************/ uint16_t TFT_eSPI::drawPixel(int32_t x, int32_t y, uint32_t color, uint8_t alpha, uint32_t bg_color) { if (bg_color == 0x00FFFFFF) bg_color = readPixel(x, y); - color = alphaBlend(alpha, color, bg_color); + color = fastBlend(alpha, color, bg_color); drawPixel(x, y, color); return color; } + +/*************************************************************************************** +** Function name: drawSmoothArc +** Description: Draw a smooth arc clockwise from 6 o'clock +***************************************************************************************/ +void TFT_eSPI::drawSmoothArc(int32_t x, int32_t y, int32_t r, int32_t ir, uint32_t startAngle, uint32_t endAngle, uint32_t fg_color, uint32_t bg_color, bool roundEnds) +// Centre at x,y +// r = arc outer radius, ir = arc inner radius. Inclusive so arc thickness = r - ir + 1 +// Angles in range 0-360 +// Arc foreground colour anti-aliased with background colour at edges +// anti-aliased roundEnd is optional, default is anti-aliased straight end +// Note: rounded ends extend the arc angle so can overlap, user sketch to manage this. +{ + inTransaction = true; + + if (endAngle != startAngle && (startAngle != 0 || endAngle != 360)) + { + float sx = -sinf(startAngle * deg2rad); + float sy = +cosf(startAngle * deg2rad); + float ex = -sinf( endAngle * deg2rad); + float ey = +cosf( endAngle * deg2rad); + + if (roundEnds) + { // Round ends + sx = sx * (r + ir)/2.0 + x; + sy = sy * (r + ir)/2.0 + y; + drawSpot(sx, sy, (r - ir)/2.0, fg_color, bg_color); + + ex = ex * (r + ir)/2.0 + x; + ey = ey * (r + ir)/2.0 + y; + drawSpot(ex, ey, (r - ir)/2.0, fg_color, bg_color); + } + else + { // Square ends + float asx = sx * ir + x; + float asy = sy * ir + y; + float aex = sx * r + x; + float aey = sy * r + y; + drawWedgeLine(asx, asy, aex, aey, 0.3, 0.3, fg_color, bg_color); + + asx = ex * ir + x; + asy = ey * ir + y; + aex = ex * r + x; + aey = ey * r + y; + drawWedgeLine(asx, asy, aex, aey, 0.3, 0.3, fg_color, bg_color); + } + + // Draw arc + drawArc(x, y, r, ir, startAngle, endAngle, fg_color, bg_color); + + } + else // Draw full 360 + { + drawArc(x, y, r, ir, 0, 360, fg_color, bg_color); + } + + inTransaction = lockTransaction; + end_tft_write(); +} + +/*************************************************************************************** +** Function name: sqrt_fraction (private function) +** Description: Smooth graphics support function for alpha derivation +***************************************************************************************/ +// Compute the fixed point square root of an integer and +// return the 8 MS bits of fractional part. +// Quicker than sqrt() for processors that do not have an FPU (e.g. RP2040) +inline uint8_t TFT_eSPI::sqrt_fraction(uint32_t num) { + if (num > (0x40000000)) return 0; + uint32_t bsh = 0x00004000; + uint32_t fpr = 0; + uint32_t osh = 0; + + // Auto adjust from U8:8 up to U15:16 + while (num>bsh) {bsh <<= 2; osh++;} + + do { + uint32_t bod = bsh + fpr; + if(num >= bod) + { + num -= bod; + fpr = bsh + bod; + } + num <<= 1; + } while(bsh >>= 1); + + return fpr>>osh; +} + +/*************************************************************************************** +** Function name: drawArc +** Description: Draw an arc clockwise from 6 o'clock position +***************************************************************************************/ +// Centre at x,y +// r = arc outer radius, ir = arc inner radius. Inclusive, so arc thickness = r-ir+1 +// Angles MUST be in range 0-360 +// Arc foreground fg_color anti-aliased with background colour along sides +// smooth is optional, default is true, smooth=false means no antialiasing +// Note: Arc ends are not anti-aliased (use drawSmoothArc instead for that) +void TFT_eSPI::drawArc(int32_t x, int32_t y, int32_t r, int32_t ir, + uint32_t startAngle, uint32_t endAngle, + uint32_t fg_color, uint32_t bg_color, + bool smooth) +{ + if (endAngle > 360) endAngle = 360; + if (startAngle > 360) startAngle = 360; + if (_vpOoB || startAngle == endAngle) return; + if (r < ir) transpose(r, ir); // Required that r > ir + if (r <= 0 || ir < 0) return; // Invalid r, ir can be zero (circle sector) + + if (endAngle < startAngle) { + // Arc sweeps through 6 o'clock so draw in two parts + if (startAngle < 360) drawArc(x, y, r, ir, startAngle, 360, fg_color, bg_color, smooth); + if (endAngle == 0) return; + startAngle = 0; + } + inTransaction = true; + + int32_t xs = 0; // x start position for quadrant scan + uint8_t alpha = 0; // alpha value for blending pixels + + uint32_t r2 = r * r; // Outer arc radius^2 + if (smooth) r++; // Outer AA zone radius + uint32_t r1 = r * r; // Outer AA radius^2 + int16_t w = r - ir; // Width of arc (r - ir + 1) + uint32_t r3 = ir * ir; // Inner arc radius^2 + if (smooth) ir--; // Inner AA zone radius + uint32_t r4 = ir * ir; // Inner AA radius^2 + + // 1 | 2 + // ---¦--- Arc quadrant index + // 0 | 3 + // Fixed point U16.16 slope table for arc start/end in each quadrant + uint32_t startSlope[4] = {0, 0, 0xFFFFFFFF, 0}; + uint32_t endSlope[4] = {0, 0xFFFFFFFF, 0, 0}; + + // Ensure maximum U16.16 slope of arc ends is ~ 0x8000 0000 + constexpr float minDivisor = 1.0f/0x8000; + + // Fill in start slope table and empty quadrants + float fabscos = fabsf(cosf(startAngle * deg2rad)); + float fabssin = fabsf(sinf(startAngle * deg2rad)); + + // U16.16 slope of arc start + uint32_t slope = (fabscos/(fabssin + minDivisor)) * (float)(1UL<<16); + + // Update slope table, add slope for arc start + if (startAngle <= 90) { + startSlope[0] = slope; + } + else if (startAngle <= 180) { + startSlope[1] = slope; + } + else if (startAngle <= 270) { + startSlope[1] = 0xFFFFFFFF; + startSlope[2] = slope; + } + else { + startSlope[1] = 0xFFFFFFFF; + startSlope[2] = 0; + startSlope[3] = slope; + } + + // Fill in end slope table and empty quadrants + fabscos = fabsf(cosf(endAngle * deg2rad)); + fabssin = fabsf(sinf(endAngle * deg2rad)); + + // U16.16 slope of arc end + slope = (uint32_t)((fabscos/(fabssin + minDivisor)) * (float)(1UL<<16)); + + // Work out which quadrants will need to be drawn and add slope for arc end + if (endAngle <= 90) { + endSlope[0] = slope; + endSlope[1] = 0; + startSlope[2] = 0; + } + else if (endAngle <= 180) { + endSlope[1] = slope; + startSlope[2] = 0; + } + else if (endAngle <= 270) { + endSlope[2] = slope; + } + else { + endSlope[3] = slope; + } + + // Scan quadrant + for (int32_t cy = r - 1; cy > 0; cy--) + { + uint32_t len[4] = { 0, 0, 0, 0}; // Pixel run length + int32_t xst[4] = {-1, -1, -1, -1}; // Pixel run x start + uint32_t dy2 = (r - cy) * (r - cy); + + // Find and track arc zone start point + while ((r - xs) * (r - xs) + dy2 >= r1) xs++; + + for (int32_t cx = xs; cx < r; cx++) + { + // Calculate radius^2 + uint32_t hyp = (r - cx) * (r - cx) + dy2; + + // If in outer zone calculate alpha + if (hyp > r2) { + alpha = ~sqrt_fraction(hyp); // Outer AA zone + } + // If within arc fill zone, get line start and lengths for each quadrant + else if (hyp >= r3) { + // Calculate U16.16 slope + slope = ((r - cy) << 16)/(r - cx); + if (slope <= startSlope[0] && slope >= endSlope[0]) { // slope hi -> lo + xst[0] = cx; // Bottom left line end + len[0]++; + } + if (slope >= startSlope[1] && slope <= endSlope[1]) { // slope lo -> hi + xst[1] = cx; // Top left line end + len[1]++; + } + if (slope <= startSlope[2] && slope >= endSlope[2]) { // slope hi -> lo + xst[2] = cx; // Bottom right line start + len[2]++; + } + if (slope <= endSlope[3] && slope >= startSlope[3]) { // slope lo -> hi + xst[3] = cx; // Top right line start + len[3]++; + } + continue; // Next x + } + else { + if (hyp <= r4) break; // Skip inner pixels + alpha = sqrt_fraction(hyp); // Inner AA zone + } + + if (alpha < 16) continue; // Skip low alpha pixels + + // If background is read it must be done in each quadrant + uint16_t pcol = fastBlend(alpha, fg_color, bg_color); + // Check if an AA pixels need to be drawn + slope = ((r - cy)<<16)/(r - cx); + if (slope <= startSlope[0] && slope >= endSlope[0]) // BL + drawPixel(x + cx - r, y - cy + r, pcol); + if (slope >= startSlope[1] && slope <= endSlope[1]) // TL + drawPixel(x + cx - r, y + cy - r, pcol); + if (slope <= startSlope[2] && slope >= endSlope[2]) // TR + drawPixel(x - cx + r, y + cy - r, pcol); + if (slope <= endSlope[3] && slope >= startSlope[3]) // BR + drawPixel(x - cx + r, y - cy + r, pcol); + } + // Add line in inner zone + if (len[0]) drawFastHLine(x + xst[0] - len[0] + 1 - r, y - cy + r, len[0], fg_color); // BL + if (len[1]) drawFastHLine(x + xst[1] - len[1] + 1 - r, y + cy - r, len[1], fg_color); // TL + if (len[2]) drawFastHLine(x - xst[2] + r, y + cy - r, len[2], fg_color); // TR + if (len[3]) drawFastHLine(x - xst[3] + r, y - cy + r, len[3], fg_color); // BR + } + + // Fill in centre lines + if (startAngle == 0 || endAngle == 360) drawFastVLine(x, y + r - w, w, fg_color); // Bottom + if (startAngle <= 90 && endAngle >= 90) drawFastHLine(x - r + 1, y, w, fg_color); // Left + if (startAngle <= 180 && endAngle >= 180) drawFastVLine(x, y - r + 1, w, fg_color); // Top + if (startAngle <= 270 && endAngle >= 270) drawFastHLine(x + r - w, y, w, fg_color); // Right + + inTransaction = lockTransaction; + end_tft_write(); +} + +/*************************************************************************************** +** Function name: drawSmoothCircle +** Description: Draw a smooth circle +***************************************************************************************/ +// To have effective anti-aliasing the circle will be 3 pixels thick +void TFT_eSPI::drawSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t fg_color, uint32_t bg_color) +{ + drawSmoothRoundRect(x-r, y-r, r, r-1, 0, 0, fg_color, bg_color); +} + /*************************************************************************************** ** Function name: fillSmoothCircle ** Description: Draw a filled anti-aliased circle @@ -3790,11 +4265,11 @@ void TFT_eSPI::fillSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t color, int32_t hyp2 = (r - cx) * (r - cx) + dy2; if (hyp2 <= r1) break; if (hyp2 >= r2) continue; - float alphaf = (float)r - sqrtf(hyp2); - if (alphaf > HiAlphaTheshold) break; + + uint8_t alpha = ~sqrt_fraction(hyp2); + if (alpha > 246) break; xs = cx; - if (alphaf < LoAlphaTheshold) continue; - uint8_t alpha = alphaf * 255; + if (alpha < 9) continue; if (bg_color == 0x00FFFFFF) { drawPixel(x + cx - r, y + cy - r, color, alpha, bg_color); @@ -3817,6 +4292,109 @@ void TFT_eSPI::fillSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t color, } +/*************************************************************************************** +** Function name: drawSmoothRoundRect +** Description: Draw a rounded rectangle +***************************************************************************************/ +// x,y is top left corner of bounding box for a complete rounded rectangle +// r = arc outer corner radius, ir = arc inner radius. Arc thickness = r-ir+1 +// w and h are width and height of the bounding rectangle +// If w and h are < radius (e.g. 0,0) a circle will be drawn with centre at x+r,y+r +// Arc foreground fg_color anti-aliased with background colour at edges +// A subset of corners can be drawn by specifying a quadrants mask. A bit set in the +// mask means draw that quadrant (all are drawn if parameter missing): +// 0x1 | 0x2 +// ---¦--- Arc quadrant mask select bits (as in drawCircleHelper fn) +// 0x8 | 0x4 +void TFT_eSPI::drawSmoothRoundRect(int32_t x, int32_t y, int32_t r, int32_t ir, int32_t w, int32_t h, uint32_t fg_color, uint32_t bg_color, uint8_t quadrants) +{ + if (_vpOoB) return; + if (r < ir) transpose(r, ir); // Required that r > ir + if (r <= 0 || ir < 0) return; // Invalid + + w -= 2*r; + h -= 2*r; + + if (w < 0) w = 0; + if (h < 0) h = 0; + + inTransaction = true; + + x += r; + y += r; + + uint16_t t = r - ir + 1; + int32_t xs = 0; + int32_t cx = 0; + + int32_t r2 = r * r; // Outer arc radius^2 + r++; + int32_t r1 = r * r; // Outer AA zone radius^2 + + int32_t r3 = ir * ir; // Inner arc radius^2 + ir--; + int32_t r4 = ir * ir; // Inner AA zone radius^2 + + uint8_t alpha = 0; + + // Scan top left quadrant x y r ir fg_color bg_color + for (int32_t cy = r - 1; cy > 0; cy--) + { + int32_t len = 0; // Pixel run length + int32_t lxst = 0; // Left side run x start + int32_t rxst = 0; // Right side run x start + int32_t dy2 = (r - cy) * (r - cy); + + // Find and track arc zone start point + while ((r - xs) * (r - xs) + dy2 >= r1) xs++; + + for (cx = xs; cx < r; cx++) + { + // Calculate radius^2 + int32_t hyp = (r - cx) * (r - cx) + dy2; + + // If in outer zone calculate alpha + if (hyp > r2) { + alpha = ~sqrt_fraction(hyp); // Outer AA zone + } + // If within arc fill zone, get line lengths for each quadrant + else if (hyp >= r3) { + rxst = cx; // Right side start + len++; // Line segment length + continue; // Next x + } + else { + if (hyp <= r4) break; // Skip inner pixels + alpha = sqrt_fraction(hyp); // Inner AA zone + } + + if (alpha < 16) continue; // Skip low alpha pixels + + // If background is read it must be done in each quadrant - TODO + uint16_t pcol = fastBlend(alpha, fg_color, bg_color); + if (quadrants & 0x8) drawPixel(x + cx - r, y - cy + r + h, pcol); // BL + if (quadrants & 0x1) drawPixel(x + cx - r, y + cy - r, pcol); // TL + if (quadrants & 0x2) drawPixel(x - cx + r + w, y + cy - r, pcol); // TR + if (quadrants & 0x4) drawPixel(x - cx + r + w, y - cy + r + h, pcol); // BR + } + // Fill arc inner zone in each quadrant + lxst = rxst - len + 1; // Calculate line segment start for left side + if (quadrants & 0x8) drawFastHLine(x + lxst - r, y - cy + r + h, len, fg_color); // BL + if (quadrants & 0x1) drawFastHLine(x + lxst - r, y + cy - r, len, fg_color); // TL + if (quadrants & 0x2) drawFastHLine(x - rxst + r + w, y + cy - r, len, fg_color); // TR + if (quadrants & 0x4) drawFastHLine(x - rxst + r + w, y - cy + r + h, len, fg_color); // BR + } + + // Draw sides + if ((quadrants & 0xC) == 0xC) fillRect(x, y + r - t + h, w + 1, t, fg_color); // Bottom + if ((quadrants & 0x9) == 0x9) fillRect(x - r + 1, y, t, h + 1, fg_color); // Left + if ((quadrants & 0x3) == 0x3) fillRect(x, y - r + 1, w + 1, t, fg_color); // Top + if ((quadrants & 0x6) == 0x6) fillRect(x + r - t + w, y, t, h + 1, fg_color); // Right + + inTransaction = lockTransaction; + end_tft_write(); +} + /*************************************************************************************** ** Function name: fillSmoothRoundRect ** Description: Draw a filled anti-aliased rounded corner rectangle @@ -3824,19 +4402,23 @@ void TFT_eSPI::fillSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t color, void TFT_eSPI::fillSmoothRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t color, uint32_t bg_color) { inTransaction = true; + int32_t xs = 0; int32_t cx = 0; // Limit radius to half width or height + if (r < 0) r = 0; if (r > w/2) r = w/2; if (r > h/2) r = h/2; y += r; h -= 2*r; fillRect(x, y, w, h, color); + h--; x += r; w -= 2*r+1; + int32_t r1 = r * r; r++; int32_t r2 = r * r; @@ -3849,11 +4431,11 @@ void TFT_eSPI::fillSmoothRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, i int32_t hyp2 = (r - cx) * (r - cx) + dy2; if (hyp2 <= r1) break; if (hyp2 >= r2) continue; - float alphaf = (float)r - sqrtf(hyp2); - if (alphaf > HiAlphaTheshold) break; + + uint8_t alpha = ~sqrt_fraction(hyp2); + if (alpha > 246) break; xs = cx; - if (alphaf < LoAlphaTheshold) continue; - uint8_t alpha = alphaf * 255; + if (alpha < 9) continue; drawPixel(x + cx - r, y + cy - r, color, alpha, bg_color); drawPixel(x - cx + r + w, y + cy - r, color, alpha, bg_color); @@ -3871,6 +4453,7 @@ void TFT_eSPI::fillSmoothRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, i ** Function name: drawSpot - maths intensive, so for small filled circles ** Description: Draw an anti-aliased filled circle at ax,ay with radius r ***************************************************************************************/ +// Coordinates are floating point to achieve sub-pixel positioning void TFT_eSPI::drawSpot(float ax, float ay, float r, uint32_t fg_color, uint32_t bg_color) { // Filled circle can be created by the wide line function with zero line length @@ -3887,12 +4470,13 @@ void TFT_eSPI::drawWideLine(float ax, float ay, float bx, float by, float wd, ui } /*************************************************************************************** -** Function name: drawWedgeLine +** Function name: drawWedgeLine - background colour specified or pixel read ** Description: draw an anti-aliased line with different width radiused ends ***************************************************************************************/ void TFT_eSPI::drawWedgeLine(float ax, float ay, float bx, float by, float ar, float br, uint32_t fg_color, uint32_t bg_color) { - if ( (abs(ax - bx) < 0.01f) && (abs(ay - by) < 0.01f) ) bx += 0.01f; // Avoid divide by zero + if ( (ar < 0.0) || (br < 0.0) )return; + if ( (fabsf(ax - bx) < 0.01f) && (fabsf(ay - by) < 0.01f) ) bx += 0.01f; // Avoid divide by zero // Find line bounding box int32_t x0 = (int32_t)floorf(fminf(ax-ar, bx-br)); @@ -3930,16 +4514,26 @@ void TFT_eSPI::drawWedgeLine(float ax, float ay, float bx, float by, float ar, f // Track edge to minimise calculations if (!endX) { endX = true; xs = xp; } if (alpha > HiAlphaTheshold) { - if (swin) { setWindow(xp, yp, width()-1, yp); swin = false; } - pushColor(fg_color); + #ifdef GC9A01_DRIVER + drawPixel(xp, yp, fg_color); + #else + if (swin) { setWindow(xp, yp, x1, yp); swin = false; } + pushColor(fg_color); + #endif continue; } //Blend color with background and plot if (bg_color == 0x00FFFFFF) { bg = readPixel(xp, yp); swin = true; } - if (swin) { setWindow(xp, yp, width()-1, yp); swin = false; } - pushColor(alphaBlend((uint8_t)(alpha * PixelAlphaGain), fg_color, bg)); + #ifdef GC9A01_DRIVER + uint16_t pcol = fastBlend((uint8_t)(alpha * PixelAlphaGain), fg_color, bg); + drawPixel(xp, yp, pcol); + swin = swin; + #else + if (swin) { setWindow(xp, yp, x1, yp); swin = false; } + pushColor(fastBlend((uint8_t)(alpha * PixelAlphaGain), fg_color, bg)); + #endif } } @@ -3958,16 +4552,26 @@ void TFT_eSPI::drawWedgeLine(float ax, float ay, float bx, float by, float ar, f // Track line boundary if (!endX) { endX = true; xs = xp; } if (alpha > HiAlphaTheshold) { - if (swin) { setWindow(xp, yp, width()-1, yp); swin = false; } - pushColor(fg_color); + #ifdef GC9A01_DRIVER + drawPixel(xp, yp, fg_color); + #else + if (swin) { setWindow(xp, yp, x1, yp); swin = false; } + pushColor(fg_color); + #endif continue; } - //Blend color with background and plot + //Blend colour with background and plot if (bg_color == 0x00FFFFFF) { bg = readPixel(xp, yp); swin = true; } - if (swin) { setWindow(xp, yp, width()-1, yp); swin = false; } - pushColor(alphaBlend((uint8_t)(alpha * PixelAlphaGain), fg_color, bg)); + #ifdef GC9A01_DRIVER + uint16_t pcol = fastBlend((uint8_t)(alpha * PixelAlphaGain), fg_color, bg); + drawPixel(xp, yp, pcol); + swin = swin; + #else + if (swin) { setWindow(xp, yp, x1, yp); swin = false; } + pushColor(fastBlend((uint8_t)(alpha * PixelAlphaGain), fg_color, bg)); + #endif } } @@ -3975,7 +4579,7 @@ void TFT_eSPI::drawWedgeLine(float ax, float ay, float bx, float by, float ar, f end_nin_write(); } -// Calculate distance of px,py to closest part of line + /*************************************************************************************** ** Function name: lineDistance - private helper function for drawWedgeLine ** Description: returns distance of px,py to closest part of a to b wedge @@ -4111,21 +4715,19 @@ void TFT_eSPI::fillRectVGradient(int16_t x, int16_t y, int16_t w, int16_t h, uin if ((w < 1) || (h < 1)) return; - begin_tft_write(); - - setWindow(x, y, x + w - 1, y + h - 1); + begin_nin_write(); float delta = -255.0/h; float alpha = 255.0; uint32_t color = color1; while (h--) { - pushBlock(color, w); + drawFastHLine(x, y++, w, color); alpha += delta; - color = alphaBlend((uint8_t)alpha, color1, color2); + color = fastBlend((uint8_t)alpha, color1, color2); } - end_tft_write(); + end_nin_write(); } @@ -4151,7 +4753,7 @@ void TFT_eSPI::fillRectHGradient(int16_t x, int16_t y, int16_t w, int16_t h, uin if ((w < 1) || (h < 1)) return; - begin_tft_write(); + begin_nin_write(); float delta = -255.0/w; float alpha = 255.0; @@ -4160,16 +4762,16 @@ void TFT_eSPI::fillRectHGradient(int16_t x, int16_t y, int16_t w, int16_t h, uin while (w--) { drawFastVLine(x++, y, h, color); alpha += delta; - color = alphaBlend((uint8_t)alpha, color1, color2); + color = fastBlend((uint8_t)alpha, color1, color2); } - end_tft_write(); + end_nin_write(); } /*************************************************************************************** ** Function name: color565 -** Description: convert three 8 bit RGB levels to a 16 bit colour value +** Description: convert three 8-bit RGB levels to a 16-bit colour value ***************************************************************************************/ uint16_t TFT_eSPI::color565(uint8_t r, uint8_t g, uint8_t b) { @@ -4179,7 +4781,7 @@ uint16_t TFT_eSPI::color565(uint8_t r, uint8_t g, uint8_t b) /*************************************************************************************** ** Function name: color16to8 -** Description: convert 16 bit colour to an 8 bit 332 RGB colour value +** Description: convert 16-bit colour to an 8-bit 332 RGB colour value ***************************************************************************************/ uint8_t TFT_eSPI::color16to8(uint16_t c) { @@ -4189,11 +4791,11 @@ uint8_t TFT_eSPI::color16to8(uint16_t c) /*************************************************************************************** ** Function name: color8to16 -** Description: convert 8 bit colour to a 16 bit 565 colour value +** Description: convert 8-bit colour to a 16-bit 565 colour value ***************************************************************************************/ uint16_t TFT_eSPI::color8to16(uint8_t color) { - uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table + uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5-bit colour lookup table uint16_t color16 = 0; // =====Green===== ===============Red============== @@ -4206,7 +4808,7 @@ uint16_t TFT_eSPI::color8to16(uint8_t color) /*************************************************************************************** ** Function name: color16to24 -** Description: convert 16 bit colour to a 24 bit 888 colour value +** Description: convert 16-bit colour to a 24-bit 888 colour value ***************************************************************************************/ uint32_t TFT_eSPI::color16to24(uint16_t color565) { @@ -4219,7 +4821,7 @@ uint32_t TFT_eSPI::color16to24(uint16_t color565) /*************************************************************************************** ** Function name: color24to16 -** Description: convert 24 bit colour to a 16 bit 565 colour value +** Description: convert 24-bit colour to a 16-bit 565 colour value ***************************************************************************************/ uint32_t TFT_eSPI::color24to16(uint32_t color888) { @@ -4300,26 +4902,26 @@ uint16_t TFT_eSPI::decodeUTF8(uint8_t c) { if (!_utf8) return c; - // 7 bit Unicode Code Point + // 7-bit Unicode Code Point if ((c & 0x80) == 0x00) { decoderState = 0; return c; } if (decoderState == 0) { - // 11 bit Unicode Code Point + // 11-bit Unicode Code Point if ((c & 0xE0) == 0xC0) { decoderBuffer = ((c & 0x1F)<<6); decoderState = 1; return 0; } - // 16 bit Unicode Code Point + // 16-bit Unicode Code Point if ((c & 0xF0) == 0xE0) { decoderBuffer = ((c & 0x0F)<<12); decoderState = 2; return 0; } - // 21 bit Unicode Code Point not supported so fall-back to extended ASCII + // 21-bit Unicode Code Point not supported so fall-back to extended ASCII // if ((c & 0xF8) == 0xF0) return c; } else { @@ -4352,21 +4954,24 @@ uint16_t TFT_eSPI::decodeUTF8(uint8_t *buf, uint16_t *index, uint16_t remaining) if (!_utf8) return c; - // 7 bit Unicode + // 7-bit Unicode if ((c & 0x80) == 0x00) return c; - // 11 bit Unicode + // 11-bit Unicode if (((c & 0xE0) == 0xC0) && (remaining > 1)) return ((c & 0x1F)<<6) | (buf[(*index)++]&0x3F); - // 16 bit Unicode + // 16-bit Unicode if (((c & 0xF0) == 0xE0) && (remaining > 2)) { c = ((c & 0x0F)<<12) | ((buf[(*index)++]&0x3F)<<6); return c | ((buf[(*index)++]&0x3F)); } - // 21 bit Unicode not supported so fall-back to extended ASCII - // if ((c & 0xF8) == 0xF0) return c; + // 21-bit Unicode not supported so fall-back to extended ASCII + // if (((c & 0xF8) == 0xF0) && (remaining > 3)) { + // c = ((c & 0x07) << 18) | ((buf[(*index)++] & 0x03F) << 12); + // c |= ((buf[(*index)++] & 0x3F) << 6); + // return c | ((buf[(*index)++] & 0x3F)); return c; // fall-back to extended ASCII } @@ -4378,24 +4983,14 @@ uint16_t TFT_eSPI::decodeUTF8(uint8_t *buf, uint16_t *index, uint16_t remaining) *************************************************************************************x*/ uint16_t TFT_eSPI::alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc) { - // For speed use fixed point maths and rounding to permit a power of 2 division - uint16_t fgR = ((fgc >> 10) & 0x3E) + 1; - uint16_t fgG = ((fgc >> 4) & 0x7E) + 1; - uint16_t fgB = ((fgc << 1) & 0x3E) + 1; - - uint16_t bgR = ((bgc >> 10) & 0x3E) + 1; - uint16_t bgG = ((bgc >> 4) & 0x7E) + 1; - uint16_t bgB = ((bgc << 1) & 0x3E) + 1; - - // Shift right 1 to drop rounding bit and shift right 8 to divide by 256 - uint16_t r = (((fgR * alpha) + (bgR * (255 - alpha))) >> 9); - uint16_t g = (((fgG * alpha) + (bgG * (255 - alpha))) >> 9); - uint16_t b = (((fgB * alpha) + (bgB * (255 - alpha))) >> 9); - - // Combine RGB565 colours into 16 bits - //return ((r&0x18) << 11) | ((g&0x30) << 5) | ((b&0x18) << 0); // 2 bit greyscale - //return ((r&0x1E) << 11) | ((g&0x3C) << 5) | ((b&0x1E) << 0); // 4 bit greyscale - return (r << 11) | (g << 5) | (b << 0); + // Split out and blend 5-bit red and blue channels + uint32_t rxb = bgc & 0xF81F; + rxb += ((fgc & 0xF81F) - rxb) * (alpha >> 2) >> 6; + // Split out and blend 6-bit green channel + uint32_t xgx = bgc & 0x07E0; + xgx += ((fgc & 0x07E0) - xgx) * alpha >> 8; + // Recombine channels + return (rxb & 0xF81F) | (xgx & 0x07E0); } /*************************************************************************************** @@ -4428,22 +5023,13 @@ uint32_t TFT_eSPI::alphaBlend24(uint8_t alpha, uint32_t fgc, uint32_t bgc, uint8 if (alphaDither >255) alpha = 255; } - // For speed use fixed point maths and rounding to permit a power of 2 division - uint16_t fgR = ((fgc >> 15) & 0x1FE) + 1; - uint16_t fgG = ((fgc >> 7) & 0x1FE) + 1; - uint16_t fgB = ((fgc << 1) & 0x1FE) + 1; - - uint16_t bgR = ((bgc >> 15) & 0x1FE) + 1; - uint16_t bgG = ((bgc >> 7) & 0x1FE) + 1; - uint16_t bgB = ((bgc << 1) & 0x1FE) + 1; - - // Shift right 1 to drop rounding bit and shift right 8 to divide by 256 - uint16_t r = (((fgR * alpha) + (bgR * (255 - alpha))) >> 9); - uint16_t g = (((fgG * alpha) + (bgG * (255 - alpha))) >> 9); - uint16_t b = (((fgB * alpha) + (bgB * (255 - alpha))) >> 9); - - // Combine RGB colours into 24 bits - return (r << 16) | (g << 8) | (b << 0); + uint32_t rxx = bgc & 0xFF0000; + rxx += ((fgc & 0xFF0000) - rxx) * alpha >> 8; + uint32_t xgx = bgc & 0x00FF00; + xgx += ((fgc & 0x00FF00) - xgx) * alpha >> 8; + uint32_t xxb = bgc & 0x0000FF; + xxb += ((fgc & 0x0000FF) - xxb) * alpha >> 8; + return (rxx & 0xFF0000) | (xgx & 0x00FF00) | (xxb & 0x0000FF); } /*************************************************************************************** @@ -4451,7 +5037,7 @@ uint32_t TFT_eSPI::alphaBlend24(uint8_t alpha, uint32_t fgc, uint32_t bgc, uint8 ** Description: draw characters piped through serial stream ***************************************************************************************/ /* // Not all processors support buffered write -#ifndef ESP8266 // Avoid ESP8266 board package bug +#ifndef ARDUINO_ARCH_ESP8266 // Avoid ESP8266 board package bug size_t TFT_eSPI::write(const uint8_t *buf, size_t len) { inTransaction = true; @@ -4490,7 +5076,6 @@ size_t TFT_eSPI::write(uint8_t utf8) #endif if (uniCode == '\n') uniCode+=22; // Make it a valid space character to stop errors - else if (uniCode < 32) return 1; uint16_t cwidth = 0; uint16_t cheight = 0; @@ -4509,7 +5094,7 @@ size_t TFT_eSPI::write(uint8_t utf8) #ifdef LOAD_FONT2 if (textfont == 2) { - if (uniCode > 127) return 1; + if (uniCode < 32 || uniCode > 127) return 1; cwidth = pgm_read_byte(widtbl_f16 + uniCode-32); cheight = chr_hgt_f16; @@ -4525,7 +5110,7 @@ size_t TFT_eSPI::write(uint8_t utf8) #ifdef LOAD_RLE { if ((textfont>2) && (textfont<9)) { - if (uniCode > 127) return 1; + if (uniCode < 32 || uniCode > 127) return 1; // Uses the fontinfo struct array to avoid lots of 'if' or 'switch' statements cwidth = pgm_read_byte( (uint8_t *)pgm_read_dword( &(fontdata[textfont].widthtbl ) ) + uniCode-32 ); cheight= pgm_read_byte( &fontdata[textfont].height ); @@ -4772,7 +5357,7 @@ int16_t TFT_eSPI::drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t font) uint8_t tnp = 0; // Temporary copy of np for while loop uint8_t ts = textsize - 1; // Temporary copy of textsize - // 16 bit pixel count so maximum font size is equivalent to 180x180 pixels in area + // 16-bit pixel count so maximum font size is equivalent to 180x180 pixels in area // w is total number of pixels to plot to fill character block while (pc < w) { line = pgm_read_byte((uint8_t *)flash_address); @@ -4918,6 +5503,8 @@ int16_t TFT_eSPI::drawString(const char *string, int32_t poX, int32_t poY) // With font number. Note: font number is over-ridden if a smooth font is loaded int16_t TFT_eSPI::drawString(const char *string, int32_t poX, int32_t poY, uint8_t font) { + if (font > 8) return 0; + int16_t sumX = 0; uint8_t padding = 1, baseline = 0; uint16_t cwidth = textWidth(string, font); // Find the pixel width of the string in the font @@ -5323,6 +5910,7 @@ void TFT_eSPI::setFreeFont(const GFXfont *f) void TFT_eSPI::setTextFont(uint8_t f) { textfont = (f > 0) ? f : 1; // Don't allow font 0 + textfont = (f > 8) ? 1 : f; // Don't allow font > 8 gfxFont = NULL; } @@ -5348,6 +5936,7 @@ void TFT_eSPI::setFreeFont(uint8_t font) void TFT_eSPI::setTextFont(uint8_t f) { textfont = (f > 0) ? f : 1; // Don't allow font 0 + textfont = (f > 8) ? 1 : f; // Don't allow font > 8 } #endif @@ -5356,7 +5945,7 @@ void TFT_eSPI::setTextFont(uint8_t f) ** Function name: getSPIinstance ** Description: Get the instance of the SPI class ***************************************************************************************/ -#if !defined (TFT_PARALLEL_8_BIT) && ! defined (RP2040_PIO_INTERFACE) +#if !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_INTERFACE) SPIClass& TFT_eSPI::getSPIinstance(void) { return spi; @@ -5419,10 +6008,12 @@ void TFT_eSPI::getSetup(setup_t &tft_settings) #ifdef SPI_READ_FREQUENCY tft_settings.tft_rd_freq = SPI_READ_FREQUENCY/100000; #endif - #ifdef TFT_SPI_PORT - tft_settings.port = TFT_SPI_PORT; - #else - tft_settings.port = 255; + #ifndef GENERIC_PROCESSOR + #ifdef TFT_SPI_PORT + tft_settings.port = TFT_SPI_PORT; + #else + tft_settings.port = 255; + #endif #endif #ifdef RP2040_PIO_SPI tft_settings.interface = 0x10; diff --git a/libraries/TFT_eSPI-2.5.43/TFT_eSPI.h b/libraries/TFT_eSPI-2.5.43/TFT_eSPI.h new file mode 100644 index 00000000..8ae23427 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/TFT_eSPI.h @@ -0,0 +1,1011 @@ +/*************************************************** + Arduino TFT graphics library targeted at ESP8266 + and ESP32 based boards. + + This is a stand-alone library that contains the + hardware driver, the graphics functions and the + proportional fonts. + + The built-in fonts 4, 6, 7 and 8 are Run Length + Encoded (RLE) to reduce the FLASH footprint. + + Last review/edit by Bodmer: 04/02/22 + ****************************************************/ + +// Stop fonts etc. being loaded multiple times +#ifndef _TFT_eSPIH_ +#define _TFT_eSPIH_ + +#define TFT_ESPI_VERSION "2.5.43" + +// Bit level feature flags +// Bit 0 set: viewport capability +#define TFT_ESPI_FEATURES 1 + +/*************************************************************************************** +** Section 1: Load required header files +***************************************************************************************/ + +//Standard support +#include +#include +#if !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_INTERFACE) + #include +#endif +/*************************************************************************************** +** Section 2: Load library and processor specific header files +***************************************************************************************/ +// Include header file that defines the fonts loaded, the TFT drivers +// available and the pins to be used, etc. etc. +#ifdef CONFIG_TFT_eSPI_ESPIDF + #include "TFT_config.h" +#endif + +// New ESP8266 board package uses ARDUINO_ARCH_ESP8266 +// old package defined ESP8266 +#if defined (ESP8266) + #ifndef ARDUINO_ARCH_ESP8266 + #define ARDUINO_ARCH_ESP8266 + #endif +#endif + +// The following lines allow the user setup to be included in the sketch folder, see +// "Sketch_with_tft_setup" generic example. +#if !defined __has_include + #if !defined(DISABLE_ALL_LIBRARY_WARNINGS) + #warning Compiler does not support __has_include, so sketches cannot define the setup + #endif +#else + #if __has_include() + // Include the sketch setup file + #include + #ifndef USER_SETUP_LOADED + // Prevent loading further setups + #define USER_SETUP_LOADED + #endif + #endif +#endif + +#include + +// Handle FLASH based storage e.g. PROGMEM +#if defined(ARDUINO_ARCH_RP2040) + #undef pgm_read_byte + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) + #undef pgm_read_word + #define pgm_read_word(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const unsigned short *)(_addr); \ + }) + #undef pgm_read_dword + #define pgm_read_dword(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const unsigned long *)(_addr); \ + }) +#elif defined(__AVR__) + #include +#elif defined(ARDUINO_ARCH_ESP8266) || defined(ESP32) + #include +#else + #ifndef PROGMEM + #define PROGMEM + #endif +#endif + +// Include the processor specific drivers +#if defined(CONFIG_IDF_TARGET_ESP32S3) + #include "Processors/TFT_eSPI_ESP32_S3.h" +#elif defined(CONFIG_IDF_TARGET_ESP32C3) + #include "Processors/TFT_eSPI_ESP32_C3.h" +#elif defined (ESP32) + #include "Processors/TFT_eSPI_ESP32.h" +#elif defined (ARDUINO_ARCH_ESP8266) + #include "Processors/TFT_eSPI_ESP8266.h" +#elif defined (STM32) + #include "Processors/TFT_eSPI_STM32.h" +#elif defined(ARDUINO_ARCH_RP2040) + #include "Processors/TFT_eSPI_RP2040.h" +#else + #include "Processors/TFT_eSPI_Generic.h" + #define GENERIC_PROCESSOR +#endif + +/*************************************************************************************** +** Section 3: Interface setup +***************************************************************************************/ +#ifndef TAB_COLOUR + #define TAB_COLOUR 0 +#endif + +// If the SPI frequency is not defined, set a default +#ifndef SPI_FREQUENCY + #define SPI_FREQUENCY 20000000 +#endif + +// If the SPI read frequency is not defined, set a default +#ifndef SPI_READ_FREQUENCY + #define SPI_READ_FREQUENCY 10000000 +#endif + +// Some ST7789 boards do not work with Mode 0 +#ifndef TFT_SPI_MODE + #if defined(ST7789_DRIVER) || defined(ST7789_2_DRIVER) + #define TFT_SPI_MODE SPI_MODE3 + #else + #define TFT_SPI_MODE SPI_MODE0 + #endif +#endif + +// If the XPT2046 SPI frequency is not defined, set a default +#ifndef SPI_TOUCH_FREQUENCY + #define SPI_TOUCH_FREQUENCY 2500000 +#endif + +#ifndef SPI_BUSY_CHECK + #define SPI_BUSY_CHECK +#endif + +// If half duplex SDA mode is defined then MISO pin should be -1 +#ifdef TFT_SDA_READ + #ifdef TFT_MISO + #if TFT_MISO != -1 + #undef TFT_MISO + #define TFT_MISO -1 + #warning TFT_MISO set to -1 + #endif + #endif +#endif + +/*************************************************************************************** +** Section 4: Setup fonts +***************************************************************************************/ +// Use GLCD font in error case where user requests a smooth font file +// that does not exist (this is a temporary fix to stop ESP32 reboot) +#ifdef SMOOTH_FONT + #ifndef LOAD_GLCD + #define LOAD_GLCD + #endif +#endif + +// Only load the fonts defined in User_Setup.h (to save space) +// Set flag so RLE rendering code is optionally compiled +#ifdef LOAD_GLCD + #include +#endif + +#ifdef LOAD_FONT2 + #include +#endif + +#ifdef LOAD_FONT4 + #include + #define LOAD_RLE +#endif + +#ifdef LOAD_FONT6 + #include + #ifndef LOAD_RLE + #define LOAD_RLE + #endif +#endif + +#ifdef LOAD_FONT7 + #include + #ifndef LOAD_RLE + #define LOAD_RLE + #endif +#endif + +#ifdef LOAD_FONT8 + #include + #ifndef LOAD_RLE + #define LOAD_RLE + #endif +#elif defined LOAD_FONT8N // Optional narrower version + #define LOAD_FONT8 + #include + #ifndef LOAD_RLE + #define LOAD_RLE + #endif +#endif + +#ifdef LOAD_GFXFF + // We can include all the free fonts and they will only be built into + // the sketch if they are used + #include + // Call up any user custom fonts + #include +#endif // #ifdef LOAD_GFXFF + +// Create a null default font in case some fonts not used (to prevent crash) +const uint8_t widtbl_null[1] = {0}; +PROGMEM const uint8_t chr_null[1] = {0}; +PROGMEM const uint8_t* const chrtbl_null[1] = {chr_null}; + +// This is a structure to conveniently hold information on the default fonts +// Stores pointer to font character image address table, width table and height +typedef struct { + const uint8_t *chartbl; + const uint8_t *widthtbl; + uint8_t height; + uint8_t baseline; + } fontinfo; + +// Now fill the structure +const PROGMEM fontinfo fontdata [] = { + #ifdef LOAD_GLCD + { (const uint8_t *)font, widtbl_null, 0, 0 }, + #else + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + #endif + // GLCD font (Font 1) does not have all parameters + { (const uint8_t *)chrtbl_null, widtbl_null, 8, 7 }, + + #ifdef LOAD_FONT2 + { (const uint8_t *)chrtbl_f16, widtbl_f16, chr_hgt_f16, baseline_f16}, + #else + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + #endif + + // Font 3 current unused + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + + #ifdef LOAD_FONT4 + { (const uint8_t *)chrtbl_f32, widtbl_f32, chr_hgt_f32, baseline_f32}, + #else + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + #endif + + // Font 5 current unused + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + + #ifdef LOAD_FONT6 + { (const uint8_t *)chrtbl_f64, widtbl_f64, chr_hgt_f64, baseline_f64}, + #else + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + #endif + + #ifdef LOAD_FONT7 + { (const uint8_t *)chrtbl_f7s, widtbl_f7s, chr_hgt_f7s, baseline_f7s}, + #else + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 }, + #endif + + #ifdef LOAD_FONT8 + { (const uint8_t *)chrtbl_f72, widtbl_f72, chr_hgt_f72, baseline_f72} + #else + { (const uint8_t *)chrtbl_null, widtbl_null, 0, 0 } + #endif +}; + +/*************************************************************************************** +** Section 5: Font datum enumeration +***************************************************************************************/ +//These enumerate the text plotting alignment (reference datum point) +#define TL_DATUM 0 // Top left (default) +#define TC_DATUM 1 // Top centre +#define TR_DATUM 2 // Top right +#define ML_DATUM 3 // Middle left +#define CL_DATUM 3 // Centre left, same as above +#define MC_DATUM 4 // Middle centre +#define CC_DATUM 4 // Centre centre, same as above +#define MR_DATUM 5 // Middle right +#define CR_DATUM 5 // Centre right, same as above +#define BL_DATUM 6 // Bottom left +#define BC_DATUM 7 // Bottom centre +#define BR_DATUM 8 // Bottom right +#define L_BASELINE 9 // Left character baseline (Line the 'A' character would sit on) +#define C_BASELINE 10 // Centre character baseline +#define R_BASELINE 11 // Right character baseline + +/*************************************************************************************** +** Section 6: Colour enumeration +***************************************************************************************/ +// Default color definitions +#define TFT_BLACK 0x0000 /* 0, 0, 0 */ +#define TFT_NAVY 0x000F /* 0, 0, 128 */ +#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */ +#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */ +#define TFT_MAROON 0x7800 /* 128, 0, 0 */ +#define TFT_PURPLE 0x780F /* 128, 0, 128 */ +#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */ +#define TFT_LIGHTGREY 0xD69A /* 211, 211, 211 */ +#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */ +#define TFT_BLUE 0x001F /* 0, 0, 255 */ +#define TFT_GREEN 0x07E0 /* 0, 255, 0 */ +#define TFT_CYAN 0x07FF /* 0, 255, 255 */ +#define TFT_RED 0xF800 /* 255, 0, 0 */ +#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */ +#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */ +#define TFT_WHITE 0xFFFF /* 255, 255, 255 */ +#define TFT_ORANGE 0xFDA0 /* 255, 180, 0 */ +#define TFT_GREENYELLOW 0xB7E0 /* 180, 255, 0 */ +#define TFT_PINK 0xFE19 /* 255, 192, 203 */ //Lighter pink, was 0xFC9F +#define TFT_BROWN 0x9A60 /* 150, 75, 0 */ +#define TFT_GOLD 0xFEA0 /* 255, 215, 0 */ +#define TFT_SILVER 0xC618 /* 192, 192, 192 */ +#define TFT_SKYBLUE 0x867D /* 135, 206, 235 */ +#define TFT_VIOLET 0x915C /* 180, 46, 226 */ + +// Next is a special 16-bit colour value that encodes to 8 bits +// and will then decode back to the same 16-bit value. +// Convenient for 8-bit and 16-bit transparent sprites. +#define TFT_TRANSPARENT 0x0120 // This is actually a dark green + +// Default palette for 4-bit colour sprites +static const uint16_t default_4bit_palette[] PROGMEM = { + TFT_BLACK, // 0 ^ + TFT_BROWN, // 1 | + TFT_RED, // 2 | + TFT_ORANGE, // 3 | + TFT_YELLOW, // 4 Colours 0-9 follow the resistor colour code! + TFT_GREEN, // 5 | + TFT_BLUE, // 6 | + TFT_PURPLE, // 7 | + TFT_DARKGREY, // 8 | + TFT_WHITE, // 9 v + TFT_CYAN, // 10 Blue+green mix + TFT_MAGENTA, // 11 Blue+red mix + TFT_MAROON, // 12 Darker red colour + TFT_DARKGREEN,// 13 Darker green colour + TFT_NAVY, // 14 Darker blue colour + TFT_PINK // 15 +}; + +/*************************************************************************************** +** Section 7: Diagnostic support +***************************************************************************************/ +// #define TFT_eSPI_DEBUG // Switch on debug support serial messages (not used yet) +// #define TFT_eSPI_FNx_DEBUG // Switch on debug support for function "x" (not used yet) + +// This structure allows sketches to retrieve the user setup parameters at runtime +// by calling getSetup(), zero impact on code size unless used, mainly for diagnostics +typedef struct +{ +String version = TFT_ESPI_VERSION; +String setup_info; // Setup reference name available to use in a user setup +uint32_t setup_id; // ID available to use in a user setup +int32_t esp; // Processor code +uint8_t trans; // SPI transaction support +uint8_t serial; // Serial (SPI) or parallel +#ifndef GENERIC_PROCESSOR +uint8_t port; // SPI port +#endif +uint8_t overlap; // ESP8266 overlap mode +uint8_t interface; // Interface type + +uint16_t tft_driver; // Hexadecimal code +uint16_t tft_width; // Rotation 0 width and height +uint16_t tft_height; + +uint8_t r0_x_offset; // Display offsets, not all used yet +uint8_t r0_y_offset; +uint8_t r1_x_offset; +uint8_t r1_y_offset; +uint8_t r2_x_offset; +uint8_t r2_y_offset; +uint8_t r3_x_offset; +uint8_t r3_y_offset; + +int8_t pin_tft_mosi; // SPI pins +int8_t pin_tft_miso; +int8_t pin_tft_clk; +int8_t pin_tft_cs; + +int8_t pin_tft_dc; // Control pins +int8_t pin_tft_rd; +int8_t pin_tft_wr; +int8_t pin_tft_rst; + +int8_t pin_tft_d0; // Parallel port pins +int8_t pin_tft_d1; +int8_t pin_tft_d2; +int8_t pin_tft_d3; +int8_t pin_tft_d4; +int8_t pin_tft_d5; +int8_t pin_tft_d6; +int8_t pin_tft_d7; + +int8_t pin_tft_led; +int8_t pin_tft_led_on; + +int8_t pin_tch_cs; // Touch chip select pin + +int16_t tft_spi_freq;// TFT write SPI frequency +int16_t tft_rd_freq; // TFT read SPI frequency +int16_t tch_spi_freq;// Touch controller read/write SPI frequency +} setup_t; + +/*************************************************************************************** +** Section 8: Class member and support functions +***************************************************************************************/ + +// Callback prototype for smooth font pixel colour read +typedef uint16_t (*getColorCallback)(uint16_t x, uint16_t y); + +// Class functions and variables +class TFT_eSPI : public Print { friend class TFT_eSprite; // Sprite class has access to protected members + + //--------------------------------------- public ------------------------------------// + public: + + TFT_eSPI(int16_t _W = TFT_WIDTH, int16_t _H = TFT_HEIGHT); + + // init() and begin() are equivalent, begin() included for backwards compatibility + // Sketch defined tab colour option is for ST7735 displays only + void init(uint8_t tc = TAB_COLOUR), begin(uint8_t tc = TAB_COLOUR); + + // These are virtual so the TFT_eSprite class can override them with sprite specific functions + virtual void drawPixel(int32_t x, int32_t y, uint32_t color), + drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32_t bg, uint8_t size), + drawLine(int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color), + drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color), + drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color), + fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color); + + virtual int16_t drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t font), + drawChar(uint16_t uniCode, int32_t x, int32_t y), + height(void), + width(void); + + // Read the colour of a pixel at x,y and return value in 565 format + virtual uint16_t readPixel(int32_t x, int32_t y); + + virtual void setWindow(int32_t xs, int32_t ys, int32_t xe, int32_t ye); // Note: start + end coordinates + + // Push (aka write pixel) colours to the set window + virtual void pushColor(uint16_t color); + + // These are non-inlined to enable override + virtual void begin_nin_write(); + virtual void end_nin_write(); + + void setRotation(uint8_t r); // Set the display image orientation to 0, 1, 2 or 3 + uint8_t getRotation(void); // Read the current rotation + + // Change the origin position from the default top left + // Note: setRotation, setViewport and resetViewport will revert origin to top left corner of screen/sprite + void setOrigin(int32_t x, int32_t y); + int32_t getOriginX(void); + int32_t getOriginY(void); + + void invertDisplay(bool i); // Tell TFT to invert all displayed colours + + + // The TFT_eSprite class inherits the following functions (not all are useful to Sprite class + void setAddrWindow(int32_t xs, int32_t ys, int32_t w, int32_t h); // Note: start coordinates + width and height + + // Viewport commands, see "Viewport_Demo" sketch + void setViewport(int32_t x, int32_t y, int32_t w, int32_t h, bool vpDatum = true); + bool checkViewport(int32_t x, int32_t y, int32_t w, int32_t h); + int32_t getViewportX(void); + int32_t getViewportY(void); + int32_t getViewportWidth(void); + int32_t getViewportHeight(void); + bool getViewportDatum(void); + void frameViewport(uint16_t color, int32_t w); + void resetViewport(void); + + // Clip input window to viewport bounds, return false if whole area is out of bounds + bool clipAddrWindow(int32_t* x, int32_t* y, int32_t* w, int32_t* h); + // Clip input window area to viewport bounds, return false if whole area is out of bounds + bool clipWindow(int32_t* xs, int32_t* ys, int32_t* xe, int32_t* ye); + + // Push (aka write pixel) colours to the TFT (use setAddrWindow() first) + void pushColor(uint16_t color, uint32_t len), // Deprecated, use pushBlock() + pushColors(uint16_t *data, uint32_t len, bool swap = true), // With byte swap option + pushColors(uint8_t *data, uint32_t len); // Deprecated, use pushPixels() + + // Write a solid block of a single colour + void pushBlock(uint16_t color, uint32_t len); + + // Write a set of pixels stored in memory, use setSwapBytes(true/false) function to correct endianess + void pushPixels(const void * data_in, uint32_t len); + + // Support for half duplex (bi-directional SDA) SPI bus where MOSI must be switched to input + #ifdef TFT_SDA_READ + #if defined (TFT_eSPI_ENABLE_8_BIT_READ) + uint8_t tft_Read_8(void); // Read 8-bit value from TFT command register + #endif + void begin_SDA_Read(void); // Begin a read on a half duplex (bi-directional SDA) SPI bus - sets MOSI to input + void end_SDA_Read(void); // Restore MOSI to output + #endif + + + // Graphics drawing + void fillScreen(uint32_t color), + drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color), + drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color), + fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color); + + void fillRectVGradient(int16_t x, int16_t y, int16_t w, int16_t h, uint32_t color1, uint32_t color2); + void fillRectHGradient(int16_t x, int16_t y, int16_t w, int16_t h, uint32_t color1, uint32_t color2); + + void drawCircle(int32_t x, int32_t y, int32_t r, uint32_t color), + drawCircleHelper(int32_t x, int32_t y, int32_t r, uint8_t cornername, uint32_t color), + fillCircle(int32_t x, int32_t y, int32_t r, uint32_t color), + fillCircleHelper(int32_t x, int32_t y, int32_t r, uint8_t cornername, int32_t delta, uint32_t color), + + drawEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color), + fillEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color), + + // Corner 1 Corner 2 Corner 3 + drawTriangle(int32_t x1,int32_t y1, int32_t x2,int32_t y2, int32_t x3,int32_t y3, uint32_t color), + fillTriangle(int32_t x1,int32_t y1, int32_t x2,int32_t y2, int32_t x3,int32_t y3, uint32_t color); + + + // Smooth (anti-aliased) graphics drawing + // Draw a pixel blended with the background pixel colour (bg_color) specified, return blended colour + // If the bg_color is not specified, the background pixel colour will be read from TFT or sprite + uint16_t drawPixel(int32_t x, int32_t y, uint32_t color, uint8_t alpha, uint32_t bg_color = 0x00FFFFFF); + + // Draw an anti-aliased (smooth) arc between start and end angles. Arc ends are anti-aliased. + // By default the arc is drawn with square ends unless the "roundEnds" parameter is included and set true + // Angle = 0 is at 6 o'clock position, 90 at 9 o'clock etc. The angles must be in range 0-360 or they will be clipped to these limits + // The start angle may be larger than the end angle. Arcs are always drawn clockwise from the start angle. + void drawSmoothArc(int32_t x, int32_t y, int32_t r, int32_t ir, uint32_t startAngle, uint32_t endAngle, uint32_t fg_color, uint32_t bg_color, bool roundEnds = false); + + // As per "drawSmoothArc" except the ends of the arc are NOT anti-aliased, this facilitates dynamic arc length changes with + // arc segments and ensures clean segment joints. + // The sides of the arc are anti-aliased by default. If smoothArc is false sides will NOT be anti-aliased + void drawArc(int32_t x, int32_t y, int32_t r, int32_t ir, uint32_t startAngle, uint32_t endAngle, uint32_t fg_color, uint32_t bg_color, bool smoothArc = true); + + // Draw an anti-aliased filled circle at x, y with radius r + // Note: The thickness of line is 3 pixels to reduce the visible "braiding" effect of anti-aliasing narrow lines + // this means the inner anti-alias zone is always at r-1 and the outer zone at r+1 + void drawSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t fg_color, uint32_t bg_color); + + // Draw an anti-aliased filled circle at x, y with radius r + // If bg_color is not included the background pixel colour will be read from TFT or sprite + void fillSmoothCircle(int32_t x, int32_t y, int32_t r, uint32_t color, uint32_t bg_color = 0x00FFFFFF); + + // Draw a rounded rectangle that has a line thickness of r-ir+1 and bounding box defined by x,y and w,h + // The outer corner radius is r, inner corner radius is ir + // The inside and outside of the border are anti-aliased + void drawSmoothRoundRect(int32_t x, int32_t y, int32_t r, int32_t ir, int32_t w, int32_t h, uint32_t fg_color, uint32_t bg_color = 0x00FFFFFF, uint8_t quadrants = 0xF); + + // Draw a filled rounded rectangle , corner radius r and bounding box defined by x,y and w,h + void fillSmoothRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color, uint32_t bg_color = 0x00FFFFFF); + + // Draw a small anti-aliased filled circle at ax,ay with radius r (uses drawWideLine) + // If bg_color is not included the background pixel colour will be read from TFT or sprite + void drawSpot(float ax, float ay, float r, uint32_t fg_color, uint32_t bg_color = 0x00FFFFFF); + + // Draw an anti-aliased wide line from ax,ay to bx,by width wd with radiused ends (radius is wd/2) + // If bg_color is not included the background pixel colour will be read from TFT or sprite + void drawWideLine(float ax, float ay, float bx, float by, float wd, uint32_t fg_color, uint32_t bg_color = 0x00FFFFFF); + + // Draw an anti-aliased wide line from ax,ay to bx,by with different width at each end aw, bw and with radiused ends + // If bg_color is not included the background pixel colour will be read from TFT or sprite + void drawWedgeLine(float ax, float ay, float bx, float by, float aw, float bw, uint32_t fg_color, uint32_t bg_color = 0x00FFFFFF); + + + // Image rendering + // Swap the byte order for pushImage() and pushPixels() - corrects endianness + void setSwapBytes(bool swap); + bool getSwapBytes(void); + + // Draw bitmap + void drawBitmap( int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor), + drawBitmap( int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor, uint16_t bgcolor), + drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor), + drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor, uint16_t bgcolor), + setBitmapColor(uint16_t fgcolor, uint16_t bgcolor); // Define the 2 colours for 1bpp sprites + + // Set TFT pivot point (use when rendering rotated sprites) + void setPivot(int16_t x, int16_t y); + int16_t getPivotX(void), // Get pivot x + getPivotY(void); // Get pivot y + + // The next functions can be used as a pair to copy screen blocks (or horizontal/vertical lines) to another location + // Read a block of pixels to a data buffer, buffer is 16-bit and the size must be at least w * h + void readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data); + // Write a block of pixels to the screen which have been read by readRect() + void pushRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data); + + // These are used to render images or sprites stored in RAM arrays (used by Sprite class for 16bpp Sprites) + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data); + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, uint16_t transparent); + + // These are used to render images stored in FLASH (PROGMEM) + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data, uint16_t transparent); + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data); + + // These are used by Sprite class pushSprite() member function for 1, 4 and 8 bits per pixel (bpp) colours + // They are not intended to be used with user sketches (but could be) + // Set bpp8 true for 8bpp sprites, false otherwise. The cmap pointer must be specified for 4bpp + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, bool bpp8 = true, uint16_t *cmap = nullptr); + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, uint8_t transparent, bool bpp8 = true, uint16_t *cmap = nullptr); + // FLASH version + void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint8_t *data, bool bpp8, uint16_t *cmap = nullptr); + + // Render a 16-bit colour image with a 1bpp mask + void pushMaskedImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *img, uint8_t *mask); + + // This next function has been used successfully to dump the TFT screen to a PC for documentation purposes + // It reads a screen area and returns the 3 RGB 8-bit colour values of each pixel in the buffer + // Set w and h to 1 to read 1 pixel's colour. The data buffer must be at least w * h * 3 bytes + void readRectRGB(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data); + + + // Text rendering - value returned is the pixel width of the rendered text + int16_t drawNumber(long intNumber, int32_t x, int32_t y, uint8_t font), // Draw integer using specified font number + drawNumber(long intNumber, int32_t x, int32_t y), // Draw integer using current font + + // Decimal is the number of decimal places to render + // Use with setTextDatum() to position values on TFT, and setTextPadding() to blank old displayed values + drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y, uint8_t font), // Draw float using specified font number + drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y), // Draw float using current font + + // Handle char arrays + // Use with setTextDatum() to position string on TFT, and setTextPadding() to blank old displayed strings + drawString(const char *string, int32_t x, int32_t y, uint8_t font), // Draw string using specified font number + drawString(const char *string, int32_t x, int32_t y), // Draw string using current font + drawString(const String& string, int32_t x, int32_t y, uint8_t font),// Draw string using specified font number + drawString(const String& string, int32_t x, int32_t y), // Draw string using current font + + drawCentreString(const char *string, int32_t x, int32_t y, uint8_t font), // Deprecated, use setTextDatum() and drawString() + drawRightString(const char *string, int32_t x, int32_t y, uint8_t font), // Deprecated, use setTextDatum() and drawString() + drawCentreString(const String& string, int32_t x, int32_t y, uint8_t font),// Deprecated, use setTextDatum() and drawString() + drawRightString(const String& string, int32_t x, int32_t y, uint8_t font); // Deprecated, use setTextDatum() and drawString() + + + // Text rendering and font handling support functions + void setCursor(int16_t x, int16_t y), // Set cursor for tft.print() + setCursor(int16_t x, int16_t y, uint8_t font); // Set cursor and font number for tft.print() + + int16_t getCursorX(void), // Read current cursor x position (moves with tft.print()) + getCursorY(void); // Read current cursor y position + + void setTextColor(uint16_t color), // Set character (glyph) color only (background not over-written) + setTextColor(uint16_t fgcolor, uint16_t bgcolor, bool bgfill = false), // Set character (glyph) foreground and background colour, optional background fill for smooth fonts + setTextSize(uint8_t size); // Set character size multiplier (this increases pixel size) + + void setTextWrap(bool wrapX, bool wrapY = false); // Turn on/off wrapping of text in TFT width and/or height + + void setTextDatum(uint8_t datum); // Set text datum position (default is top left), see Section 5 above + uint8_t getTextDatum(void); + + void setTextPadding(uint16_t x_width); // Set text padding (background blanking/over-write) width in pixels + uint16_t getTextPadding(void); // Get text padding + +#ifdef LOAD_GFXFF + void setFreeFont(const GFXfont *f = NULL), // Select the GFX Free Font + setTextFont(uint8_t font); // Set the font number to use in future +#else + void setFreeFont(uint8_t font), // Not used, historical fix to prevent an error + setTextFont(uint8_t font); // Set the font number to use in future +#endif + + int16_t textWidth(const char *string, uint8_t font), // Returns pixel width of string in specified font + textWidth(const char *string), // Returns pixel width of string in current font + textWidth(const String& string, uint8_t font), // As above for String types + textWidth(const String& string), + fontHeight(uint8_t font), // Returns pixel height of specified font + fontHeight(void); // Returns pixel height of current font + + // Used by library and Smooth font class to extract Unicode point codes from a UTF8 encoded string + uint16_t decodeUTF8(uint8_t *buf, uint16_t *index, uint16_t remaining), + decodeUTF8(uint8_t c); + + // Support function to UTF8 decode and draw characters piped through print stream + size_t write(uint8_t); + // size_t write(const uint8_t *buf, size_t len); + + // Used by Smooth font class to fetch a pixel colour for the anti-aliasing + void setCallback(getColorCallback getCol); + + uint16_t fontsLoaded(void); // Each bit in returned value represents a font type that is loaded - used for debug/error handling only + + + // Low level read/write + void spiwrite(uint8_t); // legacy support only +#ifdef RM68120_DRIVER + void writecommand(uint16_t c); // Send a 16-bit command, function resets DC/RS high ready for data + void writeRegister8(uint16_t c, uint8_t d); // Write 8-bit data data to 16-bit command register + void writeRegister16(uint16_t c, uint16_t d); // Write 16-bit data data to 16-bit command register +#else + void writecommand(uint8_t c); // Send an 8-bit command, function resets DC/RS high ready for data +#endif + void writedata(uint8_t d); // Send data with DC/RS set high + + void commandList(const uint8_t *addr); // Send a initialisation sequence to TFT stored in FLASH + + uint8_t readcommand8( uint8_t cmd_function, uint8_t index = 0); // read 8 bits from TFT + uint16_t readcommand16(uint8_t cmd_function, uint8_t index = 0); // read 16 bits from TFT + uint32_t readcommand32(uint8_t cmd_function, uint8_t index = 0); // read 32 bits from TFT + + + // Colour conversion + // Convert 8-bit red, green and blue to 16 bits + uint16_t color565(uint8_t red, uint8_t green, uint8_t blue); + + // Convert 8-bit colour to 16 bits + uint16_t color8to16(uint8_t color332); + // Convert 16-bit colour to 8 bits + uint8_t color16to8(uint16_t color565); + + // Convert 16-bit colour to/from 24-bit, R+G+B concatenated into LS 24 bits + uint32_t color16to24(uint16_t color565); + uint32_t color24to16(uint32_t color888); + + // Alpha blend 2 colours, see generic "alphaBlend_Test" example + // alpha = 0 = 100% background colour + // alpha = 255 = 100% foreground colour + uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc); + + // 16-bit colour alphaBlend with alpha dither (dither reduces colour banding) + uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc, uint8_t dither); + // 24-bit colour alphaBlend with optional alpha dither + uint32_t alphaBlend24(uint8_t alpha, uint32_t fgc, uint32_t bgc, uint8_t dither = 0); + + // Direct Memory Access (DMA) support functions + // These can be used for SPI writes when using the ESP32 (original) or STM32 processors. + // DMA also works on a RP2040 processor with PIO based SPI and parallel (8 and 16-bit) interfaces + // Bear in mind DMA will only be of benefit in particular circumstances and can be tricky + // to manage by noobs. The functions have however been designed to be noob friendly and + // avoid a few DMA behaviour "gotchas". + // + // At best you will get a 2x TFT rendering performance improvement when using DMA because + // this library handles the SPI bus so efficiently during normal (non DMA) transfers. The best + // performance improvement scenario is the DMA transfer time is exactly the same as the time it + // takes for the processor to prepare the next image buffer and initiate another DMA transfer. + // + // DMA transfer to the TFT is done while the processor moves on to handle other tasks. Bear + // this in mind and watch out for "gotchas" like the image buffer going out of scope as the + // processor leaves a function or its content being changed while the DMA engine is reading it. + // + // The compiler MAY change the implied scope of a buffer which has been set aside by creating + // an array. For example a buffer defined before a "for-next" loop may get de-allocated when + // the loop ends. To avoid this use, for example, malloc() and free() to take control of when + // the buffer space is available and ensure it is not released until DMA is complete. + // + // Clearly you should not modify a buffer that is being DMA'ed to the TFT until the DMA is over. + // Use the dmaBusy() function to check this. Use tft.startWrite() before invoking DMA so the + // TFT chip select stays low. If you use tft.endWrite() before DMA is complete then the endWrite + // function will wait for the DMA to complete, so this may defeat any DMA performance benefit. + // + + bool initDMA(bool ctrl_cs = false); // Initialise the DMA engine and attach to SPI bus - typically used in setup() + // Parameter "true" enables DMA engine control of TFT chip select (ESP32 only) + // For ESP32 only, TFT reads will not work if parameter is true + void deInitDMA(void); // De-initialise the DMA engine and detach from SPI bus - typically not used + + // Push an image to the TFT using DMA, buffer is optional and grabs (double buffers) a copy of the image + // Use the buffer if the image data will get over-written or destroyed while DMA is in progress + // + // Note 1: If swapping colour bytes is defined, and the double buffer option is NOT used, then the bytes + // in the original image buffer content will be byte swapped by the function before DMA is initiated. + // + // Note 2: If part of the image will be off screen or outside of a set viewport, then the the original + // image buffer content will be altered to a correctly clipped image before DMA is initiated. + // + // The function will wait for the last DMA to complete if it is called while a previous DMA is still + // in progress, this simplifies the sketch and helps avoid "gotchas". + void pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t* data, uint16_t* buffer = nullptr); + +#if defined (ESP32) // ESP32 only at the moment + // For case where pointer is a const and the image data must not be modified (clipped or byte swapped) + void pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t const* data); +#endif + // Push a block of pixels into a window set up using setAddrWindow() + void pushPixelsDMA(uint16_t* image, uint32_t len); + + // Check if the DMA is complete - use while(tft.dmaBusy); for a blocking wait + bool dmaBusy(void); // returns true if DMA is still in progress + void dmaWait(void); // wait until DMA is complete + + bool DMA_Enabled = false; // Flag for DMA enabled state + uint8_t spiBusyCheck = 0; // Number of ESP32 transfer buffers to check + + // Bare metal functions + void startWrite(void); // Begin SPI transaction + void writeColor(uint16_t color, uint32_t len); // Deprecated, use pushBlock() + void endWrite(void); // End SPI transaction + + // Set/get an arbitrary library configuration attribute or option + // Use to switch ON/OFF capabilities such as UTF8 decoding - each attribute has a unique ID + // id = 0: reserved - may be used in future to reset all attributes to a default state + // id = 1: Turn on (a=true) or off (a=false) GLCD cp437 font character error correction + // id = 2: Turn on (a=true) or off (a=false) UTF8 decoding + // id = 3: Enable or disable use of ESP32 PSRAM (if available) + #define CP437_SWITCH 1 + #define UTF8_SWITCH 2 + #define PSRAM_ENABLE 3 + void setAttribute(uint8_t id = 0, uint8_t a = 0); // Set attribute value + uint8_t getAttribute(uint8_t id = 0); // Get attribute value + + // Used for diagnostic sketch to see library setup adopted by compiler, see Section 7 above + void getSetup(setup_t& tft_settings); // Sketch provides the instance to populate + bool verifySetupID(uint32_t id); + + // Global variables +#if !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_INTERFACE) + static SPIClass& getSPIinstance(void); // Get SPI class handle +#endif + uint32_t textcolor, textbgcolor; // Text foreground and background colours + + uint32_t bitmap_fg, bitmap_bg; // Bitmap foreground (bit=1) and background (bit=0) colours + + uint8_t textfont, // Current selected font number + textsize, // Current font size multiplier + textdatum, // Text reference datum + rotation; // Display rotation (0-3) + + uint8_t decoderState = 0; // UTF8 decoder state - not for user access + uint16_t decoderBuffer; // Unicode code-point buffer - not for user access + + //--------------------------------------- private ------------------------------------// + private: + // Legacy begin and end prototypes - deprecated TODO: delete + void spi_begin(); + void spi_end(); + + void spi_begin_read(); + void spi_end_read(); + + // New begin and end prototypes + // begin/end a TFT write transaction + // For SPI bus the transmit clock rate is set + inline void begin_tft_write() __attribute__((always_inline)); + inline void end_tft_write() __attribute__((always_inline)); + + // begin/end a TFT read transaction + // For SPI bus: begin lowers SPI clock rate, end reinstates transmit clock rate + inline void begin_tft_read() __attribute__((always_inline)); + inline void end_tft_read() __attribute__((always_inline)); + + // Initialise the data bus GPIO and hardware interfaces + void initBus(void); + + // Temporary library development function TODO: remove need for this + void pushSwapBytePixels(const void* data_in, uint32_t len); + + // Same as setAddrWindow but exits with CGRAM in read mode + void readAddrWindow(int32_t xs, int32_t ys, int32_t w, int32_t h); + + // Byte read prototype + uint8_t readByte(void); + + // GPIO parallel bus input/output direction control + void busDir(uint32_t mask, uint8_t mode); + + // Single GPIO input/output direction control + void gpioMode(uint8_t gpio, uint8_t mode); + + // Smooth graphics helper + uint8_t sqrt_fraction(uint32_t num); + + // Helper function: calculate distance of a point from a finite length line between two points + float wedgeLineDistance(float pax, float pay, float bax, float bay, float dr); + + // Display variant settings + uint8_t tabcolor, // ST7735 screen protector "tab" colour (now invalid) + colstart = 0, rowstart = 0; // Screen display area to CGRAM area coordinate offsets + + // Port and pin masks for control signals (ESP826 only) - TODO: remove need for this + volatile uint32_t *dcport, *csport; + uint32_t cspinmask, dcpinmask, wrpinmask, sclkpinmask; + + #if defined(ESP32_PARALLEL) + // Bit masks for ESP32 parallel bus interface + uint32_t xclr_mask, xdir_mask; // Port set/clear and direction control masks + + // Lookup table for ESP32 parallel bus interface uses 1kbyte RAM, + uint32_t xset_mask[256]; // Makes Sprite rendering test 33% faster, for slower macro equivalent + // see commented out #define set_mask(C) within TFT_eSPI_ESP32.h + #endif + + //uint32_t lastColor = 0xFFFF; // Last colour - used to minimise bit shifting overhead + + getColorCallback getColor = nullptr; // Smooth font callback function pointer + + bool locked, inTransaction, lockTransaction; // SPI transaction and mutex lock flags + + //-------------------------------------- protected ----------------------------------// + protected: + + //int32_t win_xe, win_ye; // Window end coords - not needed + + int32_t _init_width, _init_height; // Display w/h as input, used by setRotation() + int32_t _width, _height; // Display w/h as modified by current rotation + int32_t addr_row, addr_col; // Window position - used to minimise window commands + + int16_t _xPivot; // TFT x pivot point coordinate for rotated Sprites + int16_t _yPivot; // TFT x pivot point coordinate for rotated Sprites + + // Viewport variables + int32_t _vpX, _vpY, _vpW, _vpH; // Note: x start, y start, x end + 1, y end + 1 + int32_t _xDatum; + int32_t _yDatum; + int32_t _xWidth; + int32_t _yHeight; + bool _vpDatum; + bool _vpOoB; + + int32_t cursor_x, cursor_y, padX; // Text cursor x,y and padding setting + int32_t bg_cursor_x; // Background fill cursor + int32_t last_cursor_x; // Previous text cursor position when fill used + + uint32_t fontsloaded; // Bit field of fonts loaded + + uint8_t glyph_ab, // Smooth font glyph delta Y (height) above baseline + glyph_bb; // Smooth font glyph delta Y (height) below baseline + + bool isDigits; // adjust bounding box for numbers to reduce visual jiggling + bool textwrapX, textwrapY; // If set, 'wrap' text at right and optionally bottom edge of display + bool _swapBytes; // Swap the byte order for TFT pushImage() + + bool _booted; // init() or begin() has already run once + + // User sketch manages these via set/getAttribute() + bool _cp437; // If set, use correct CP437 charset (default is OFF) + bool _utf8; // If set, use UTF-8 decoder in print stream 'write()' function (default ON) + bool _psram_enable; // Enable PSRAM use for library functions (TBD) and Sprites + + uint32_t _lastColor; // Buffered value of last colour used + + bool _fillbg; // Fill background flag (just for for smooth fonts at the moment) + +#if defined (SSD1963_DRIVER) + uint16_t Cswap; // Swap buffer for SSD1963 + uint8_t r6, g6, b6; // RGB buffer for SSD1963 +#endif + +#ifdef LOAD_GFXFF + GFXfont *gfxFont; +#endif + +/*************************************************************************************** +** Section 9: TFT_eSPI class conditional extensions +***************************************************************************************/ +// Load the Touch extension +#ifdef TOUCH_CS + #if defined (TFT_PARALLEL_8_BIT) || defined (RP2040_PIO_INTERFACE) + #if !defined(DISABLE_ALL_LIBRARY_WARNINGS) + #error >>>>------>> Touch functions not supported in 8/16-bit parallel mode or with RP2040 PIO. + #endif + #else + #include "Extensions/Touch.h" // Loaded if TOUCH_CS is defined by user + #endif +#else + #if !defined(DISABLE_ALL_LIBRARY_WARNINGS) + #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! + #endif +#endif + +// Load the Anti-aliased font extension +#ifdef SMOOTH_FONT + #include "Extensions/Smooth_font.h" // Loaded if SMOOTH_FONT is defined by user +#endif + +}; // End of class TFT_eSPI + +// Swap any type +template static inline void +transpose(T& a, T& b) { T t = a; a = b; b = t; } + +// Fast alphaBlend +template static inline uint16_t +fastBlend(A alpha, F fgc, B bgc) +{ + // Split out and blend 5-bit red and blue channels + uint32_t rxb = bgc & 0xF81F; + rxb += ((fgc & 0xF81F) - rxb) * (alpha >> 2) >> 6; + // Split out and blend 6-bit green channel + uint32_t xgx = bgc & 0x07E0; + xgx += ((fgc & 0x07E0) - xgx) * alpha >> 8; + // Recombine channels + return (rxb & 0xF81F) | (xgx & 0x07E0); +} + +/*************************************************************************************** +** Section 10: Additional extension classes +***************************************************************************************/ +// Load the Button Class +#include "Extensions/Button.h" + +// Load the Sprite Class +#include "Extensions/Sprite.h" + +#endif // ends #ifndef _TFT_eSPIH_ diff --git a/libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/Create_font.pde b/libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/Create_font.pde similarity index 93% rename from libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/Create_font.pde rename to libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/Create_font.pde index c8e55609..1a07c5cb 100644 --- a/libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/Create_font.pde +++ b/libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/Create_font.pde @@ -48,13 +48,13 @@ Software License Agreement (FreeBSD License) // >>>>>>>>>>>>>>>>>>>> INSTRUCTIONS <<<<<<<<<<<<<<<<<<<< // See comments below in code for specifying the font parameters (point size, -// unicode blocks to include etc). Ranges of characters (glyphs) and specific +// unicode blocks to include etc.). Ranges of characters (glyphs) and specific // individual glyphs can be included in the created "*.vlw" font file. // Created fonts are saved in the sketches "FontFiles" folder. Press Ctrl+K to // see that folder location. -// 16 bit Unicode point codes in the range 0x0000 - 0xFFFF are supported. +// 16-bit Unicode point codes in the range 0x0000 - 0xFFFF are supported. // Codes 0-31 are control codes such as "tab" and "carraige return" etc. // and 32 is a "space", these should NOT be included. @@ -134,11 +134,17 @@ String fontType = ".ttf"; // Define the font size in points for the TFT_eSPI font file -int fontSize = 20; +int fontSize = 28; // Font size to use in the Processing sketch display window that pops up (can be different to above) int displayFontSize = 28; +// Create a C header (.h file) ready to be used or copied in your sketch folder +boolean createHeaderFile = true; + +// Automaticely open the folder with created files when done +boolean openFolder = true; + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Next we specify which unicode blocks from the the Basic Multilingual Plane (BMP) are included in the final font file. // // Note: The ttf/otf font file MAY NOT contain all possible Unicode characters, refer to the fonts online documentation. // @@ -363,7 +369,7 @@ static final int[] specificUnicodes = { //////////////////////////////////////////////////////////////////////////////////////////////// -// Variable to hold the inclusive Unicode range (16 bit values only for this sketch) +// Variable to hold the inclusive Unicode range (16-bit values only for this sketch) int firstUnicode = 0; int lastUnicode = 0; @@ -392,7 +398,7 @@ void setup() { // Set the fontName from the array number or the defined fontName if (fontNumber >= 0) { - fontName = fontList[fontNumber]; +// fontName = fontList[fontNumber]; fontType = ""; } @@ -499,11 +505,13 @@ void setup() { println("Created font " + fontName + str(fontSize) + ".vlw"); + String fontFileName = "FontFiles/" + fontName + str(fontSize) + ".vlw"; + // creating file try { print("Saving to sketch FontFiles folder... "); - OutputStream output = createOutput("FontFiles/" + fontName + str(fontSize) + ".vlw"); + OutputStream output = createOutput(fontFileName); font.save(output); output.close(); @@ -513,11 +521,50 @@ void setup() { // Open up the FontFiles folder to access the saved file String path = sketchPath(); - Desktop.getDesktop().open(new File(path+"/FontFiles")); + if(openFolder){ + Desktop.getDesktop().open(new File(path+"/FontFiles")); + } System.err.println("All done! Note: Rectangles are displayed for non-existant characters."); } catch(IOException e) { println("Doh! Failed to create the file"); } + + if(!createHeaderFile) return; + // Now creating header file if the option was specified. + try{ + print("saving header file to FontFile folder..."); + + InputStream input = createInputRaw(fontFileName); + PrintWriter output = createWriter("FontFiles/" + fontName + str(fontSize) + ".h"); + + output.println("#include "); + output.println(); + output.println("const uint8_t " + fontName + str(fontSize) + "[] PROGMEM = {"); + + int i = 0; + int data = input.read(); + while(data != -1){ + output.print("0x"); + output.print(hex(data, 2)); + if(i++ < 15){ + output.print(", "); + } else { + output.println(","); + i = 0; + } + data = input.read(); + } +// font.save(output); + output.println("\n};"); + + output.close(); + input.close(); + + println("C header file created."); + + } catch(IOException e){ + println("Failed to create C header file"); + } } diff --git a/libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.h b/libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.h new file mode 100644 index 00000000..b45e6236 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.h @@ -0,0 +1,1588 @@ +#include + +const uint8_t Final-Frontier28[] PROGMEM = { +0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, +0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x15, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, +0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x15, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, +0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x11, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x15, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, +0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1D, +0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x17, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x05, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x15, +0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x10, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0D, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0D, +0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, +0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x15, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x17, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0E, +0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x78, 0x90, 0x90, 0x90, 0x76, 0x44, 0xFF, 0xFF, 0xFF, 0x3C, 0x2E, 0xFF, 0xFF, 0xFF, 0x27, 0x21, +0xFF, 0xFF, 0xFF, 0x1C, 0x14, 0xFF, 0xFF, 0xFF, 0x11, 0x07, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0xFA, +0xFF, 0xFB, 0x00, 0x00, 0xED, 0xFF, 0xF0, 0x00, 0x00, 0xE0, 0xFF, 0xE4, 0x00, 0x00, 0xD3, 0xFF, +0xD9, 0x00, 0x00, 0xC6, 0xFF, 0xCE, 0x00, 0x00, 0xB9, 0xFF, 0xC3, 0x00, 0x00, 0xAC, 0xFF, 0xB8, +0x00, 0x00, 0x9F, 0xFF, 0xAD, 0x00, 0x00, 0x33, 0x58, 0x38, 0x00, 0x00, 0x1E, 0x4D, 0x1B, 0x00, +0x43, 0xF9, 0xFF, 0xF7, 0x39, 0x86, 0xFF, 0xFF, 0xFF, 0x7A, 0x18, 0xBF, 0xF6, 0xBB, 0x13, 0xFF, +0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, +0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +0xFF, 0xDD, 0x01, 0x00, 0x00, 0x49, 0xFF, 0xF0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xCE, 0xFF, 0x76, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, 0xF8, 0x15, 0x00, 0x00, 0x1E, 0xFD, 0xFF, 0x2B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xC3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xF7, 0xFF, 0x3C, 0x00, 0x00, 0x06, +0xE9, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x0B, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x29, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x0B, 0xF6, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x55, 0xFF, 0xE4, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFF, 0x79, 0x00, 0x00, 0x00, 0xA9, 0xFF, 0x91, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x08, +0xF3, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, +0xF8, 0xF8, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x0E, 0x00, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3F, 0xFF, 0xFD, 0x17, 0x00, 0x00, 0x1A, 0xFD, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xBD, 0x00, 0x00, 0x00, 0x6F, 0xFF, 0xD2, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE4, 0xFF, 0x66, 0x00, 0x00, 0x00, 0xC7, 0xFF, 0x7C, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0xFB, 0x14, 0x00, 0x00, 0x1E, +0xFE, 0xFF, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xB9, 0x00, +0x00, 0x00, 0x75, 0xFF, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, +0xFF, 0x63, 0x00, 0x00, 0x00, 0xCC, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xAE, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x19, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x04, +0x00, 0x00, 0x8A, 0xFF, 0xF1, 0x4C, 0x0A, 0x00, 0x00, 0x32, 0x24, 0x00, 0x00, 0x00, 0xC0, 0xFF, +0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0xE6, 0x19, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xD7, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x15, 0xEB, 0xFF, 0xFF, 0xEF, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, +0xF5, 0xFF, 0xFF, 0xFC, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xFF, 0xFF, +0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0xFF, 0xFF, 0xFE, 0x38, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0x02, 0xC8, 0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, +0x47, 0xFF, 0xFF, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x0C, 0xFF, 0xFF, 0xF9, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x13, 0xFF, 0xFF, 0xDB, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0x00, 0x5B, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, +0xEC, 0xFF, 0xE4, 0x14, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x27, 0x00, +0x23, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x6A, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xBC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x74, 0xCF, 0xF6, 0xF5, 0xCD, 0x71, 0x06, 0x00, 0x00, 0x00, +0x00, 0x1E, 0xDB, 0xFF, 0xFF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x12, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xCA, 0x11, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x9F, 0xFF, 0xFF, 0xB4, 0x1B, 0x1B, 0xB6, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x4B, 0xFF, 0xF7, +0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xF0, +0x00, 0x00, 0x03, 0xD5, 0xFF, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1A, +0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x68, 0xFF, 0xE8, 0x0D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x9E, 0xFF, 0xFF, 0xB3, 0x1B, 0x1B, 0xB6, 0xFF, 0xFF, 0x9A, 0x00, 0x0D, 0xE8, 0xFF, +0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xC8, 0x0F, 0x00, 0x85, 0xFF, 0xD1, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x75, 0xCF, 0xF7, 0xF6, 0xCD, 0x70, 0x05, 0x00, 0x1C, 0xF6, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, +0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x31, 0xFE, 0xFB, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xFF, 0x91, 0x00, 0x01, 0x61, 0xC7, +0xF4, 0xF5, 0xC9, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, +0xEE, 0x12, 0x04, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0xD6, 0xFF, 0x70, 0x00, 0x77, 0xFF, 0xFF, 0xCB, 0x22, 0x23, 0xCD, 0xFF, +0xFF, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xDA, 0x05, 0x00, 0xDC, 0xFF, +0xFF, 0x34, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xE9, +0xFF, 0x4F, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x0A, 0xFF, 0xFF, 0xF9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xDA, 0xFF, 0xFF, 0x33, 0x00, 0x00, +0x35, 0xFF, 0xFF, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xF6, 0xFD, 0x31, 0x00, 0x00, 0x00, +0x74, 0xFF, 0xFF, 0xC9, 0x21, 0x22, 0xCB, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, +0xFF, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x04, +0x00, 0x00, 0x00, 0x00, 0x32, 0xFE, 0xFF, 0xCE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xC7, +0xF5, 0xF6, 0xC9, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x5F, 0xC2, 0xF1, 0xFF, 0xFF, 0xFF, +0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xB5, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xF3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xFF, +0xFF, 0xD2, 0x3A, 0x07, 0x00, 0x04, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xE6, 0xFF, 0xFF, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xD3, 0x0C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xF3, 0xFF, 0xFF, +0xFB, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x18, 0x21, 0xF1, +0xFF, 0xFF, 0x96, 0x12, 0x00, 0x00, 0x00, 0x26, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, +0x00, 0x93, 0xFF, 0xFF, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xF4, 0x1E, 0x00, 0xDB, 0xFF, 0xFF, 0x32, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1C, 0x00, 0x0E, +0xFF, 0xFF, 0xF9, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x05, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xFF, 0x0E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFF, 0xFF, +0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x00, 0x00, +0x51, 0xFF, 0xFF, 0xD6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xEA, 0xFF, 0xFC, 0x2B, 0x00, +0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xDD, 0x5E, 0x19, 0x04, 0x17, 0x62, 0xE6, 0xFF, 0xFF, +0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x8A, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xF5, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x8E, 0xCF, 0xF0, +0xFB, 0xEB, 0xC3, 0x7C, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, +0xFC, 0x00, 0x00, 0x00, 0x64, 0xFF, 0xFF, 0xF5, 0x4F, 0x00, 0x00, 0x3A, 0xF9, 0xFF, 0xF3, 0x3B, +0x00, 0x00, 0x07, 0xE1, 0xFF, 0xFE, 0x4E, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0x9A, 0x00, 0x00, +0x00, 0x0A, 0xED, 0xFF, 0xF8, 0x17, 0x00, 0x00, 0x00, 0x59, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, +0x00, 0xA1, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xFF, 0xFF, 0x26, 0x00, 0x00, 0x00, +0x00, 0xF3, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, +0x00, 0xF2, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, +0x00, 0xA2, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0xAB, 0x00, 0x00, 0x00, +0x00, 0x0B, 0xF0, 0xFF, 0xFA, 0x19, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0x9D, 0x00, 0x00, +0x00, 0x00, 0x09, 0xE3, 0xFF, 0xFE, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFA, 0xFF, 0xF3, 0x3A, +0x00, 0x00, 0x00, 0x00, 0x65, 0xFF, 0xFF, 0xF5, 0x4F, 0x4D, 0xF4, 0xFF, 0xFF, 0x6A, 0x00, 0x00, +0x00, 0x00, 0x39, 0xF2, 0xFF, 0xFA, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFE, 0xFF, 0xE3, 0x09, +0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF8, 0xFF, 0xEF, +0x0B, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFF, 0xFF, +0xA4, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFF, 0xFF, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, +0xF4, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xFF, 0xFF, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0xFF, +0xA0, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x19, 0xFA, 0xFF, 0xEE, +0x0A, 0x00, 0x00, 0x00, 0x9C, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x4C, 0xFE, 0xFF, 0xE4, 0x09, +0x00, 0x00, 0x38, 0xF2, 0xFF, 0xFA, 0x3E, 0x00, 0x00, 0x4C, 0xF4, 0xFF, 0xFF, 0x6B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x2A, 0x97, 0x02, 0x41, 0xFF, 0x3F, +0x02, 0x99, 0x28, 0xB4, 0xFF, 0xA2, 0x0A, 0xF4, 0x0A, 0xA4, 0xFF, 0xB2, 0x28, 0x63, 0xA1, 0xE1, +0xFF, 0xE0, 0x9F, 0x62, 0x29, 0x00, 0x00, 0x17, 0xE8, 0xFF, 0xE3, 0x14, 0x00, 0x00, 0x8B, 0xD7, +0xF3, 0x75, 0xF5, 0x74, 0xF2, 0xD5, 0x8A, 0x75, 0xF2, 0x3D, 0x11, 0xFC, 0x10, 0x3D, 0xF3, 0x72, +0x08, 0x33, 0x00, 0x4D, 0xFF, 0x4A, 0x00, 0x34, 0x07, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0x86, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xB0, 0xB0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xF1, 0xFF, 0xFF, 0x8E, 0x27, 0xFF, 0xFF, 0xAC, 0x02, 0x7E, 0xFF, 0xC4, +0x08, 0x00, 0xD5, 0xD9, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x59, +0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x37, 0x34, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x89, 0x00, 0x5E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x78, +0xF8, 0xF8, 0x75, 0xF0, 0xFF, 0xFF, 0xEF, 0x67, 0xEA, 0xEA, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2E, 0xF6, 0xFF, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xFB, 0xFF, 0x7B, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, +0xFF, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xFD, 0xFF, 0x72, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x6F, 0xFF, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xC2, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, +0xFF, 0xFC, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xB9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x29, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xF9, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, +0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xF5, 0x0B, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0xE3, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0xFF, 0x50, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +0xEA, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x9F, 0xFF, 0xF9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x98, 0x98, +0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x87, 0xC9, 0xEC, 0xFB, 0xED, +0xCB, 0x89, 0x21, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7B, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFB, 0x7C, 0x01, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xDE, 0x5D, 0x18, 0x05, 0x19, 0x5F, 0xE0, +0xFF, 0xFF, 0x8A, 0x00, 0x39, 0xFF, 0xFF, 0xDF, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE1, +0xFF, 0xFF, 0x39, 0xA5, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xFF, +0xFF, 0xA4, 0xE3, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xFF, 0xFF, +0xE1, 0xFA, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF9, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x02, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF9, 0xE2, 0xFF, 0xFF, 0x19, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xE1, 0xA4, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xA4, 0x38, 0xFF, 0xFF, 0xDD, 0x12, 0x00, 0x00, 0x00, +0x00, 0x00, 0x12, 0xDE, 0xFF, 0xFF, 0x39, 0x00, 0x8A, 0xFF, 0xFF, 0xDC, 0x5B, 0x17, 0x04, 0x17, +0x5B, 0xDC, 0xFF, 0xFF, 0x8C, 0x00, 0x00, 0x01, 0x7C, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFC, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0xCA, 0xEE, 0xFB, 0xEF, 0xCC, 0x8B, +0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, 0x00, +0x00, 0x00, 0x5E, 0xFE, 0xFF, 0x00, 0x00, 0x4A, 0xFB, 0xFF, 0xFF, 0x00, 0x0F, 0xB9, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x01, 0x56, +0xB0, 0xE3, 0xF8, 0xE7, 0xC2, 0x6A, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x16, 0xC4, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x1D, 0x00, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0x97, 0x28, 0x08, 0x2F, +0xB2, 0xFF, 0xFF, 0xCC, 0x06, 0x00, 0x00, 0x5D, 0xFF, 0x9B, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB4, +0xFF, 0xFF, 0x69, 0x00, 0x00, 0x01, 0xCD, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xFF, 0xFF, +0xC8, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xF1, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF2, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0xFF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x28, 0xF4, 0xFF, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0D, 0xD4, 0xFF, 0xFF, 0xE7, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB3, +0xFF, 0xFF, 0xFE, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xFF, +0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xF8, 0xFF, 0xFF, 0xBA, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1D, 0xE8, 0xFF, 0xFF, 0xD4, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0B, 0xCF, 0xFF, 0xFF, 0xE8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xAD, 0xFF, +0xFF, 0xF6, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3D, 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x19, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x07, 0x69, 0xBD, 0xEB, 0xFB, 0xEA, 0xB3, 0x4A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x01, +0x00, 0x00, 0x00, 0x33, 0xFD, 0xFF, 0x9B, 0x22, 0x0E, 0x52, 0xEA, 0xFF, 0xFF, 0x6A, 0x00, 0x00, +0x00, 0x00, 0x98, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0xFF, 0xD3, 0x00, 0x00, 0x00, 0x00, +0x12, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x84, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x75, +0xFE, 0xFF, 0xF1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x44, 0xA7, 0xFF, +0xFF, 0xF2, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFB, 0xFF, +0xF7, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xFF, 0xFF, 0xDE, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0A, 0xCD, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x2B, 0x68, 0xD9, +0xFF, 0xFF, 0x8F, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8C, +0x03, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xF0, 0xD5, 0x9E, 0x38, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0xFF, 0xAD, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xFA, 0xFF, 0xE5, 0x12, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xD5, 0xFF, 0xFE, 0x44, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFE, 0xFF, 0xD1, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE1, 0xFF, 0xF7, 0x2B, 0x00, 0x15, 0xDA, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xFF, 0xFF, 0x6D, 0x00, 0x0C, 0xCA, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x53, 0xFF, 0xFF, 0xB7, 0x01, 0x00, 0xB9, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x18, 0xEB, 0xFF, 0xEA, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x66, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x23, 0xF3, 0xFF, 0xD9, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x02, 0xC4, 0xFF, 0xFA, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x31, 0x05, +0x0F, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x00, +0x00, 0x1E, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x27, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x4B, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x08, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0x4D, +0x00, 0x00, 0x00, 0x3B, 0x42, 0x00, 0x00, 0x00, 0x00, 0x84, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xBD, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xD9, 0xFF, 0xFF, 0xFF, 0xFA, 0xE7, 0xB5, 0x5E, 0x04, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x4C, +0xCA, 0xFF, 0xFF, 0xD1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCA, 0xFF, +0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xC3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xDF, 0xFF, 0xFF, 0x41, +0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x24, 0x6B, 0xE4, 0xFF, 0xFF, 0x96, 0x00, 0x0C, 0xE6, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x86, 0x02, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, +0xED, 0xC8, 0x88, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xBA, 0xFF, 0xFF, +0xE5, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xD5, 0xFF, 0xFF, 0x4E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xA7, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xEB, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0E, 0xE0, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xA0, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xFF, 0xFF, +0xF1, 0x1C, 0x60, 0xDF, 0xA1, 0x40, 0x00, 0x00, 0x00, 0x00, 0x16, 0xEA, 0xFF, 0xFF, 0x68, 0x1F, +0xF1, 0xFF, 0xFF, 0xFF, 0xAD, 0x0D, 0x00, 0x00, 0xAA, 0xFF, 0xFF, 0xC0, 0x01, 0x45, 0x85, 0xBF, +0xFF, 0xFF, 0xFF, 0xBF, 0x04, 0x3A, 0xFF, 0xFF, 0xFA, 0x26, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xF8, +0xFF, 0xFF, 0x64, 0xA2, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, +0xC2, 0xE3, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xF0, 0xFA, +0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xF8, 0xE9, 0xFF, 0xFF, +0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xE0, 0xAF, 0xFF, 0xFF, 0x46, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xA1, 0x43, 0xFF, 0xFF, 0xCA, 0x07, 0x00, 0x00, +0x00, 0x00, 0x0B, 0xD5, 0xFF, 0xFF, 0x35, 0x00, 0x95, 0xFF, 0xFF, 0xCB, 0x48, 0x0D, 0x09, 0x41, +0xCC, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x02, 0x89, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, +0x88, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x99, 0xDB, 0xF6, 0xF6, 0xDA, 0x99, 0x2E, 0x00, 0x00, +0x00, 0x00, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x3E, 0xFD, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x4E, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1F, 0xFD, 0xFF, 0xEE, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x85, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE8, 0xFF, 0xFE, +0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x28, 0xFF, 0xFF, 0xE5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, +0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xEF, 0xFF, 0xFB, 0x1B, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xFF, 0xFF, 0xAD, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x33, 0xFF, 0xFF, 0xD9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xFF, +0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF5, 0xFF, 0xF6, 0x11, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xD5, 0xFF, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3F, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, +0xCD, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xC6, 0xF4, 0xF5, +0xC9, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xA6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xFF, 0xFF, 0xC2, 0x1F, 0x1F, 0xC4, 0xFF, 0xFF, 0x6C, +0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x2E, 0xFF, 0xFF, 0xD2, 0x00, 0x00, +0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x0A, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, +0xE5, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, +0xFF, 0xEA, 0x5C, 0x5C, 0xEB, 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x00, 0x00, 0x21, 0xF3, 0xFF, 0xFF, +0xD8, 0xD8, 0xFF, 0xFF, 0xF6, 0x21, 0x00, 0x00, 0x00, 0x3B, 0xEE, 0xFF, 0xFF, 0xFF, 0xB7, 0xB9, +0xFF, 0xFF, 0xFF, 0xE8, 0x34, 0x00, 0x1B, 0xEA, 0xFF, 0xFF, 0xBB, 0x1F, 0x00, 0x00, 0x25, 0xC2, +0xFF, 0xFF, 0xE6, 0x18, 0x8D, 0xFF, 0xFF, 0xBB, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, +0xFF, 0x8D, 0xDA, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xDC, +0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF7, 0xE7, 0xFF, +0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xE6, 0xA9, 0xFF, 0xFF, 0x52, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xFF, 0xFF, 0xA6, 0x38, 0xFE, 0xFF, 0xD8, 0x0F, 0x00, +0x00, 0x00, 0x00, 0x0F, 0xD8, 0xFF, 0xFE, 0x36, 0x00, 0x81, 0xFF, 0xFF, 0xD6, 0x4D, 0x0C, 0x0B, +0x4B, 0xD5, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x73, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x8D, 0xD3, 0xF4, 0xF5, 0xD4, 0x8D, 0x20, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x99, 0xD8, 0xF4, 0xF6, 0xDA, 0x9A, 0x2F, 0x00, 0x00, 0x00, +0x00, 0x04, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x89, 0x02, 0x00, 0x00, 0x9A, +0xFF, 0xFF, 0xC9, 0x41, 0x09, 0x0E, 0x4C, 0xD0, 0xFF, 0xFF, 0x95, 0x00, 0x44, 0xFF, 0xFF, 0xCE, +0x08, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xCC, 0xFF, 0xFF, 0x44, 0xAE, 0xFF, 0xFF, 0x4B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xB0, 0xE7, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0A, 0xFF, 0xFF, 0xE9, 0xFA, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0B, 0xFF, 0xFF, 0xF9, 0xE9, 0xFF, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, +0xFF, 0xE0, 0xAD, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xFF, 0x9D, +0x3B, 0xFE, 0xFF, 0xFF, 0xAE, 0x2E, 0x00, 0x00, 0x00, 0x22, 0xF8, 0xFF, 0xFF, 0x35, 0x00, 0x74, +0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x69, 0x00, 0xBB, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x4B, 0xD5, +0xFF, 0xFF, 0xC1, 0x02, 0x63, 0xFF, 0xFF, 0xE7, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x6D, +0x1F, 0x1A, 0xEF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, +0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0xDE, +0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xEA, 0xFF, 0xFD, 0x3C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0xFF, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0xFF, 0xD4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0F, 0xE4, 0xFF, 0xFF, 0xBD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, +0x6D, 0xFB, 0xFA, 0x6B, 0xF0, 0xFF, 0xFF, 0xEF, 0xBB, 0xFF, 0xFF, 0xB7, 0x0C, 0x6B, 0x69, 0x0A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, +0x78, 0xF8, 0xF8, 0x75, 0xF0, 0xFF, 0xFF, 0xEF, 0x67, 0xEA, 0xEA, 0x65, 0x00, 0x00, 0x11, 0x0B, +0x00, 0x00, 0x8A, 0xFE, 0xF9, 0x68, 0x14, 0xFF, 0xFF, 0xFF, 0xEF, 0x03, 0xDA, 0xFF, 0xFF, 0xB5, +0x00, 0x14, 0x70, 0x66, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xF1, 0xFF, 0xFF, 0x84, 0x27, 0xFF, +0xFF, 0xA5, 0x01, 0x7E, 0xFF, 0xC1, 0x06, 0x00, 0xD5, 0xD8, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x25, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x33, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x9E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x05, 0xCA, 0xCC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x28, 0xDC, 0xDD, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0x97, 0xB0, 0xFF, 0xFF, 0xBC, +0xA1, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC3, 0xB3, 0x2E, +0xAF, 0xFF, 0xFF, 0xB0, 0x31, 0xE5, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, +0xE9, 0xA4, 0x0A, 0x0E, 0xF4, 0xFF, 0xFF, 0xF4, 0x0F, 0x06, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x1D, 0xEF, 0xDD, 0x0C, 0x00, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x11, 0xFF, +0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFF, 0x6F, 0x00, 0x00, 0x63, 0xFD, 0xFF, 0xFF, 0xFE, +0x63, 0x00, 0x00, 0xD4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xFF, 0x24, 0x00, 0x29, 0x14, +0xB9, 0xFF, 0xFF, 0xBA, 0x14, 0x23, 0x00, 0x46, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, +0x05, 0x20, 0xDD, 0x4E, 0x3E, 0xF2, 0xF3, 0x3F, 0x4B, 0xCF, 0x05, 0x0B, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0xC2, 0xE3, 0x46, 0xE5, 0xFF, 0xCF, 0x20, 0x95, 0x99, 0x1B, 0xCF, 0xFF, 0xC4, 0x09, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x1D, 0x20, 0x8C, +0xFF, 0xFF, 0xFF, 0xF2, 0xC0, 0x6B, 0x3E, 0x28, 0x0F, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xE4, 0x44, 0x42, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xB1, 0x3A, 0xBE, 0xFF, 0xFF, +0xFF, 0xD7, 0x6C, 0x01, 0x2B, 0x17, 0x10, 0x13, 0x18, 0x85, 0xD3, 0xD2, 0xD3, 0xD1, 0xCD, 0x7A, +0x01, 0xF1, 0xFF, 0xDC, 0xC5, 0xDD, 0xF6, 0x8B, 0x32, 0x09, 0x0A, 0x32, 0x8C, 0xD1, 0x37, 0xC2, +0xEE, 0xC0, 0x52, 0x00, 0x00, 0xEA, 0xD4, 0x8D, 0x29, 0x01, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0F, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x76, 0xC8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x9F, 0x04, 0x53, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x61, 0x44, 0x15, 0x2E, 0xC5, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x99, +0x00, 0x33, 0x4F, 0x44, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x48, 0x00, 0x51, +0x6F, 0x00, 0xD1, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x6F, 0x8F, 0x00, +0x66, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x76, 0x00, 0x00, 0x8D, 0xB0, 0x00, 0x0A, 0xE0, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x76, 0x1C, 0x00, 0x2F, 0xC7, 0xDE, 0x2F, 0x00, 0x92, 0x5B, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x0D, 0x81, 0xF5, 0xFE, 0x9D, 0x1C, 0x3B, 0xB9, 0x00, 0x00, 0x00, +0x13, 0x7C, 0x00, 0x00, 0x00, 0x9B, 0x8B, 0x11, 0x00, 0x01, 0xDC, 0x10, 0x00, 0x00, 0x58, 0x3B, +0x00, 0x00, 0x01, 0x20, 0x05, 0x12, 0x00, 0x00, 0x8C, 0x5A, 0x00, 0x00, 0x8C, 0x06, 0x00, 0x00, +0x00, 0x00, 0x13, 0x81, 0xAE, 0x39, 0x47, 0xA3, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x5A, +0xDD, 0x7E, 0x58, 0xD9, 0x40, 0xDD, 0x00, 0x08, 0x8C, 0x00, 0x00, 0x07, 0x9D, 0xC1, 0x1C, 0x00, +0x00, 0x2A, 0xD1, 0xD2, 0x21, 0x31, 0x61, 0x00, 0x12, 0xC4, 0x98, 0x04, 0x00, 0x00, 0x00, 0x00, +0x6B, 0xFC, 0x54, 0x59, 0x35, 0x16, 0xD3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xCD, +0x83, 0x81, 0x23, 0xD4, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xAF, 0x9A, +0xC6, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xC2, 0xB7, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xBD, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xFF, 0xFF, 0xF3, 0xD1, 0x84, 0x13, 0x00, +0x00, 0x29, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x31, 0x00, 0x46, 0x07, 0x00, 0x01, 0x1C, +0x88, 0xFF, 0xFF, 0xE3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0xFF, 0x7A, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, +0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFA, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2E, 0xFF, 0xFF, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xFF, 0xFF, +0xA9, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x6F, 0xFC, 0xFF, 0xFD, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x72, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFA, 0xBA, 0x40, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, +0x4D, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFA, 0xFF, 0xF3, 0x2D, 0x00, 0x00, 0x00, +0x00, 0x00, 0x8A, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC2, 0xF5, 0xB3, +0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAE, 0x0A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x73, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xF4, 0xFF, 0xFA, 0x2C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xC4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0D, 0xE4, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0xED, 0x15, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xFF, 0xFF, 0xAF, +0x00, 0xAF, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x34, 0xFD, 0xFF, 0xF1, 0x1B, 0x00, 0x24, 0xF9, 0xFF, 0xFF, 0x41, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xCE, 0xFF, 0xFF, +0x6A, 0x00, 0x00, 0x00, 0x8D, 0xFF, 0xFF, 0xD8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xC6, 0x02, 0x00, 0x00, 0x00, 0x10, 0xEC, 0xFF, +0xFF, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xF3, 0xFF, +0xFA, 0x2B, 0x1C, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x24, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0x83, 0x04, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, +0xFF, 0xD9, 0x07, 0x1A, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0x59, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xE3, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x26, 0xF9, 0xFF, 0xE8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, +0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xFF, +0xFF, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFC, 0xFF, 0xE8, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xE0, 0xFF, 0xFD, 0x37, 0x00, 0x00, 0x00, 0x03, +0xCD, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4F, 0xFF, 0xFF, 0xD0, 0x04, 0x00, 0x00, 0x71, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0x73, 0x00, +0x1C, 0xF3, 0xFF, 0xF4, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x22, 0xF7, 0xFF, 0xF4, 0x1D, 0xB0, 0xFF, 0xFF, 0xC8, 0x0C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xD2, 0xFF, +0xFF, 0xB0, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF1, 0xCC, 0x85, +0x17, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xEB, 0x32, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x26, +0xA8, 0xFF, 0xFF, 0xDD, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0xEE, 0xFF, 0xFF, 0x3D, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0D, 0xF2, 0xF2, 0x55, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0E, 0xBB, 0xD3, 0x26, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x21, 0xD4, 0xA1, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3C, 0xEA, 0xFF, 0xE4, 0xA5, 0x36, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x5E, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x4E, 0xB1, 0xA7, 0xAE, 0xD9, 0xFF, 0xFF, 0xFF, 0xFC, 0x32, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF1, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFF, 0xFF, 0xDD, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xF7, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xF6, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFF, 0xFF, +0xDA, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xFF, +0xFF, 0x96, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1C, 0x6D, 0xF4, +0xFF, 0xF6, 0x24, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xF4, 0x4E, 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, +0xD3, 0x8E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x85, 0xCD, 0xEC, 0xF8, 0xFE, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x16, 0x00, 0x00, 0x00, 0x0F, 0x97, 0xFE, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x00, 0x00, +0x00, 0x17, 0xD8, 0xFF, 0xFF, 0xC9, 0x64, 0x2A, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4D, 0x00, 0x00, 0x00, 0x0F, 0xD4, 0xFF, 0xFF, 0x7F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0x97, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFD, +0xFF, 0xE9, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0xFF, +0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0x33, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x98, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xDC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x82, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x27, 0xF0, 0xFF, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xEE, 0xFF, 0xFF, 0xC4, 0x5C, 0x25, 0x0C, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x33, 0x00, 0x00, 0x00, 0x21, 0xBC, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x02, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3A, 0x97, 0xCB, 0xE9, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xF4, 0x23, 0x00, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xE6, +0xC1, 0x8B, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x1F, 0x53, 0xB2, 0xFF, 0xFF, 0xE7, 0x26, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xFE, +0xFF, 0xE4, 0x14, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE6, 0xFF, 0xFD, 0x23, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0x76, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3C, 0xFF, 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x17, 0xFF, 0xFF, 0xDF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xF7, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xED, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x33, 0xFF, 0xFF, 0xD4, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0x9B, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD8, 0xFF, 0xFF, 0x48, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xC7, 0x01, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFD, +0xFF, 0xF5, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x1B, +0x4D, 0xB2, 0xFF, 0xFF, 0xF5, 0x41, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x2B, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xEE, 0xD2, 0xA0, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x85, 0xCD, 0xEC, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xEA, 0x16, 0x00, 0x00, 0x00, 0x0F, 0x97, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x00, 0x00, 0x00, 0x17, 0xD8, 0xFF, 0xFF, +0xC9, 0x64, 0x2A, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, +0x0F, 0xD4, 0xFF, 0xFF, 0x7F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFD, 0xFF, 0xE9, 0x0E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, +0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x3B, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x3C, 0x00, 0x00, 0xE9, 0xFF, 0xFF, 0x29, 0xEC, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, +0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x09, 0x00, +0x00, 0x00, 0xED, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xFF, 0xFF, 0x79, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x44, 0xFF, 0xFF, 0xDC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF0, 0xFF, 0xFF, +0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x34, 0xEE, 0xFF, 0xFF, 0xC4, 0x5C, 0x25, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1B, 0x33, 0x00, 0x00, 0x00, 0x21, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, +0x97, 0xCB, 0xE9, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x23, 0x00, 0x32, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x41, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x09, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x12, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, +0xFF, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x36, 0x8D, 0xD2, 0xEF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x61, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xDE, 0xFF, 0xFF, 0xC0, 0x5C, 0x24, 0x0C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x44, 0x12, 0x00, 0x00, 0x00, 0x10, 0xD7, 0xFF, 0xFF, 0x72, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0x8D, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFD, +0xFF, 0xE6, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x81, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x10, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x00, 0xC1, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE9, 0xFF, 0xFF, 0x16, 0x00, 0x00, 0x00, 0x14, 0x27, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0xFF, 0x05, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xED, 0xFF, 0xFF, +0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0xD3, 0xFF, 0xFF, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x98, 0xFF, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x44, 0xFF, 0xFF, 0xD9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x79, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x29, 0xF1, 0xFF, +0xFE, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x38, 0xF1, 0xFF, 0xFF, 0xBA, 0x54, 0x20, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9C, 0xCE, 0xEB, 0xFA, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x35, 0x41, 0xFF, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x13, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x36, 0x08, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x41, 0xFF, 0xFF, 0xFF, +0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x3C, 0x40, 0xFF, +0xFF, 0xFF, 0x3D, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x41, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, +0xFF, 0xF6, 0x00, 0x18, 0xAE, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xD8, 0x00, +0x71, 0xFF, 0xFF, 0x66, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0x92, 0x00, 0x0A, 0xE3, 0xFF, +0xF6, 0x6F, 0x17, 0x13, 0x5D, 0xEE, 0xFF, 0xF3, 0x1F, 0x00, 0x00, 0x24, 0xE1, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xF4, 0x49, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x7E, 0xCF, 0xF5, 0xF9, 0xDD, 0x97, +0x22, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, +0xFF, 0xEA, 0x27, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFD, +0xFF, 0xF2, 0x33, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x23, 0xEE, +0xFF, 0xF8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x0B, 0xD2, +0xFF, 0xFC, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xA8, +0xFF, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x76, +0xFF, 0xFF, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x44, +0xFC, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0xA4, 0xFF, 0xF1, 0x79, 0x49, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0x7F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x54, 0x79, 0x8D, 0xC2, 0xFC, 0xFF, 0xFF, 0xD3, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xB0, 0xFF, 0xFF, 0xDA, 0x13, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x91, 0xFF, 0xFF, 0xA8, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC1, 0xFF, 0xFF, 0x3A, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, 0xFF, +0xA6, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, +0xFF, 0xEF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x9C, 0xFF, 0xFF, 0x2A, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0xFF, 0xFF, 0x47, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x71, 0xFF, 0xFF, 0x59, 0x3E, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0x60, 0x3E, 0xFF, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x12, 0x38, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xF8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3A, 0xFF, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, +0xFF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x34, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF9, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xC5, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x8B, 0xFF, 0xFF, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFB, 0xFF, 0xFF, 0xFE, +0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF2, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7A, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xCA, +0xD5, 0xFF, 0xFC, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xE8, 0xFF, 0xA2, 0xFD, 0xFF, 0xA2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0x8B, 0x56, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, +0x00, 0x00, 0x68, 0xFF, 0xF9, 0x1C, 0xCC, 0xFF, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xFF, +0xFF, 0x4E, 0x01, 0xD2, 0xFF, 0xF9, 0x1B, 0x00, 0x00, 0x00, 0x03, 0xDC, 0xFF, 0x99, 0x00, 0x89, +0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xFE, 0x12, 0x00, 0x52, 0xFF, 0xFF, 0x8E, +0x00, 0x00, 0x00, 0x56, 0xFF, 0xFB, 0x21, 0x00, 0x46, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, +0xAF, 0xFF, 0xD3, 0x00, 0x00, 0x01, 0xCE, 0xFF, 0xF5, 0x14, 0x00, 0x00, 0xCD, 0xFF, 0xA0, 0x00, +0x00, 0x0A, 0xF9, 0xFF, 0xB6, 0x00, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x4E, +0xFF, 0xFF, 0x84, 0x00, 0x45, 0xFF, 0xFD, 0x26, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF4, 0x06, 0x00, +0x00, 0x3A, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xF0, 0x0E, 0xBC, 0xFF, 0xA7, +0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1A, 0x00, 0x00, +0x00, 0x00, 0x4B, 0xFF, 0xFF, 0xA9, 0xFF, 0xFE, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0xFF, +0x84, 0x00, 0x00, 0xC6, 0xFF, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xFF, +0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xF3, 0xFF, 0xC9, 0x00, 0x0F, 0xFC, 0xFF, 0x9F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xB5, 0xFF, 0xFD, 0x11, 0x52, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, +0xFF, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0x53, 0x98, 0xFF, 0xFF, +0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xFF, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x30, 0xFF, 0xFF, 0x98, 0xDD, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xDD, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x8D, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3C, 0xF1, 0xFF, 0xFF, 0x81, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x33, +0xEC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x2B, 0xE6, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x23, 0xE0, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xD9, 0xFF, 0xFF, 0x76, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0xD1, 0xFF, 0xFF, 0x74, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0xC9, 0xFF, 0xFF, 0x71, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xB5, 0xFF, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, +0xAB, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x9F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x93, 0xFF, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x3F, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x42, 0x8C, 0xC5, 0xE5, 0xF6, 0xF7, 0xE5, 0xC4, 0x8B, 0x41, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9D, 0xFF, 0xFF, +0xFD, 0xAB, 0x58, 0x20, 0x0A, 0x0A, 0x20, 0x58, 0xAC, 0xFE, 0xFF, 0xFF, 0x9D, 0x03, 0x00, 0x00, +0x00, 0x01, 0xA6, 0xFF, 0xFF, 0xD7, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +0xDA, 0xFF, 0xFF, 0xA7, 0x02, 0x00, 0x00, 0x6C, 0xFF, 0xFF, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xD5, 0xFF, 0xFF, 0x6E, 0x00, 0x17, 0xF3, 0xFF, 0xF9, +0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF9, 0xFF, +0xF4, 0x17, 0x71, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0x71, 0xC1, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xC2, 0xE4, 0xFF, +0xFF, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x17, 0xFF, 0xFF, 0xE4, 0xF9, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xF8, 0xE5, 0xFF, 0xFF, 0x16, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFF, 0xFF, 0xE2, +0xC2, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x44, 0xFF, 0xFF, 0xBF, 0x72, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0x6C, 0x18, 0xF4, 0xFF, 0xF8, +0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xF9, 0xFF, +0xF0, 0x13, 0x00, 0x6D, 0xFF, 0xFF, 0xD0, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0F, 0xD3, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x01, 0xA2, 0xFF, 0xFF, 0xD5, 0x2B, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xD7, 0xFF, 0xFF, 0x9D, 0x01, 0x00, 0x00, 0x00, +0x01, 0x92, 0xFF, 0xFF, 0xFD, 0xA9, 0x56, 0x1F, 0x09, 0x09, 0x1F, 0x56, 0xAB, 0xFD, 0xFF, 0xFF, +0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x40, 0x8C, 0xC4, 0xE6, 0xF7, 0xF7, 0xE6, 0xC4, 0x8B, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE2, 0xA2, 0x2F, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, +0x67, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1D, 0x71, 0xF5, +0xFF, 0xFE, 0x40, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x6C, 0xFF, 0xFF, 0xB9, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x19, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF6, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4A, 0xFF, 0xFF, 0xCE, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x05, 0x3E, 0xDE, 0xFF, 0xFF, 0x68, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0xBA, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x16, +0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xBF, 0x5A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x8C, 0xC5, 0xE5, 0xF6, 0xF6, 0xE4, +0xC3, 0x88, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xDB, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0x9D, 0xFF, 0xFF, 0xFD, 0xAB, 0x58, 0x20, 0x0A, 0x0A, 0x20, 0x58, 0xAC, 0xFE, 0xFF, +0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA7, 0xFF, 0xFF, 0xD7, 0x2E, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x30, 0xDA, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0xFF, 0xD2, +0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xD5, 0xFF, 0xFF, 0x54, +0x00, 0x18, 0xF4, 0xFF, 0xF9, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x25, 0xF9, 0xFF, 0xE6, 0x0B, 0x72, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0x5D, 0xC2, 0xFF, 0xFF, +0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, +0xFF, 0xFF, 0xB3, 0xE5, 0xFF, 0xFF, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFF, 0xFF, 0xDD, 0xF9, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xF7, 0xE5, +0xFF, 0xFF, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x13, 0xFF, 0xFF, 0xEE, 0xC2, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x60, 0x70, 0x70, 0x49, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xD5, 0x72, 0xFF, 0xFF, 0x95, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFE, 0xFF, 0xFB, 0x3D, 0x00, 0x94, 0xFF, 0xFF, +0x96, 0x18, 0xF4, 0xFF, 0xF8, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, +0xFF, 0xE8, 0x40, 0xF5, 0xFF, 0xFF, 0x42, 0x00, 0x6D, 0xFF, 0xFF, 0xD0, 0x0D, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x02, 0xB7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xBE, 0x00, 0x00, 0x01, 0xA2, +0xFF, 0xFF, 0xD5, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE1, 0xFF, 0xFF, 0xFF, +0xE9, 0x21, 0x00, 0x00, 0x00, 0x01, 0x92, 0xFF, 0xFF, 0xFD, 0xA9, 0x55, 0x1E, 0x09, 0x07, 0x20, +0x55, 0xAC, 0xFC, 0xFF, 0xFF, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD4, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xFF, 0xFD, 0x58, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x8A, 0xC3, 0xE5, 0xF7, 0xFB, 0xEE, 0xD2, 0xA7, 0x68, 0x17, +0x44, 0xF5, 0xFF, 0xFB, 0x4C, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFB, 0xDF, 0x94, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1C, 0x8B, 0xFF, 0xFF, 0xD8, 0x03, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xFF, +0xFF, 0x49, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0xF5, 0xFF, 0xBE, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x22, 0xD4, 0xF9, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xEE, 0xD5, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7D, 0xFD, 0xDB, 0x2C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xB2, 0xFF, 0xFF, +0xFF, 0xFF, 0xD4, 0x5F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, +0x5D, 0x70, 0x7C, 0x9C, 0xE3, 0xFF, 0xFF, 0xFF, 0xB6, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x5B, 0xE7, 0xFF, 0xFF, 0xC4, 0x09, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xD7, +0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x24, 0xF0, 0xFF, 0xFC, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFB, 0xFF, 0xE1, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xC7, 0xFF, 0xFF, 0x19, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0xFF, 0x38, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, 0x49, 0x3F, 0xFF, 0xFF, +0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xD0, 0xFF, 0xFF, +0x50, 0x00, 0x00, 0x0F, 0x81, 0xCF, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xF2, 0x21, 0x00, 0x00, 0x1A, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0x89, +0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, +0x00, 0xEC, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xD6, +0x6F, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x95, 0x52, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, +0xCA, 0x86, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x8A, 0xD5, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x6D, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x17, 0x57, 0x98, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, +0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x5A, 0x9B, +0xE2, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x45, 0xC9, 0xFF, 0xFF, 0xFF, 0xD5, 0x05, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x94, 0xFF, 0xFF, +0xFF, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x02, 0xC3, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xFF, 0xFF, 0xE9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, +0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0x00, 0xAD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x89, 0x3A, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x09, 0x4A, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x46, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, +0xFF, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xFF, +0x40, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0xDA, 0xFF, +0xFF, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xD9, 0x00, 0x00, +0x6D, 0xFF, 0xFF, 0xF1, 0x75, 0x2F, 0x0F, 0x03, 0x03, 0x10, 0x30, 0x74, 0xF0, 0xFF, 0xFF, 0x6D, +0x00, 0x00, 0x00, 0x82, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, +0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x75, 0xB3, 0xD9, 0xF1, 0xFB, 0xFB, 0xF1, 0xD9, 0xB4, +0x76, 0x1C, 0x00, 0x00, 0x00, 0xB9, 0xFF, 0xFF, 0xEE, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xD1, 0xFF, 0xFF, 0xB8, 0x2E, 0xFD, 0xFF, 0xFA, 0x1C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE2, 0xFF, 0xFD, 0x2E, 0x00, +0x9F, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, +0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x1B, 0xF5, 0xFF, 0xFB, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0D, 0xEA, 0xFF, 0xF5, 0x1B, 0x00, 0x00, 0x00, 0x84, 0xFF, 0xFF, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, +0x0D, 0xE9, 0xFF, 0xFE, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xF4, 0xFF, 0xE8, +0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x98, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD7, 0xFF, 0xFF, 0x3E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xFB, 0xFF, 0xD6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4E, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xFF, 0xFF, 0x4D, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x38, 0xFF, +0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xFE, 0xFF, 0xD2, +0x02, 0x00, 0x00, 0xC1, 0xFF, 0xFE, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xA5, 0xFF, 0xFF, 0x5B, 0x00, 0x4D, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0xFF, 0xDD, 0x08, 0xD4, 0xFF, 0xF8, 0x1F, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0xFF, +0xBF, 0xFF, 0xFF, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x10, 0xEC, 0xFF, 0xFF, 0xFF, 0xEC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xDC, 0xFF, +0xDB, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFF, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xCA, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x7C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, +0xCA, 0x5F, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xFC, +0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0x61, 0x07, 0xEB, +0xFF, 0xDC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xFF, 0xD9, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xFF, 0xEF, 0x09, 0x00, 0x88, 0xFF, 0xFF, 0x46, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFB, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x1F, 0xFD, 0xFF, 0xAF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x99, 0xFF, 0xFF, 0xFF, 0xDA, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x99, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1D, 0xF9, 0xFF, 0x98, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF3, 0xFF, 0xBC, +0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xDD, +0x03, 0xC6, 0xFF, 0xDA, 0x03, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0x53, 0x00, 0x00, 0x00, +0x00, 0x01, 0xD8, 0xFF, 0xE6, 0x04, 0x00, 0x00, 0x00, 0x19, 0xF7, 0xFF, 0x67, 0x00, 0x4D, 0xFF, +0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFF, 0xE5, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, +0xFF, 0xFF, 0x54, 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xE7, 0x07, 0x00, 0x01, 0xD1, 0xFF, 0xDB, 0x04, +0x00, 0x00, 0x36, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xF3, 0xFF, 0xBD, +0x00, 0x00, 0x16, 0xF5, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x9D, +0xFF, 0xFC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0x27, 0x00, 0x8B, +0xFF, 0xEF, 0x0E, 0x00, 0x00, 0x00, 0x03, 0xDB, 0xFF, 0xDC, 0x04, 0x0E, 0xF5, 0xFF, 0xAE, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xFF, 0xFF, 0x8F, 0x13, 0xF4, 0xFF, 0x84, 0x00, +0x00, 0x00, 0x00, 0x00, 0x64, 0xFF, 0xFF, 0x61, 0x6B, 0xFF, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xEE, 0x8F, 0xFF, 0xF6, 0x15, 0x00, 0x00, 0x00, 0x00, +0x00, 0x06, 0xE3, 0xFF, 0xDC, 0xD3, 0xFF, 0xDA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x54, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +0xE4, 0xFF, 0xFF, 0xFB, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xEB, 0xFF, 0xFF, +0xF7, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0xFF, +0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF9, 0xFE, 0x2B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF1, 0xFF, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x16, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xC2, 0xFF, 0xFF, 0xFF, +0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFE, 0x48, 0x00, 0x00, 0x17, +0xE4, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC3, 0xFF, 0xFF, 0x82, 0x00, +0x00, 0x00, 0x00, 0x38, 0xF9, 0xFF, 0xF8, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, +0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0xE6, 0x1A, 0x00, 0x00, 0x00, 0x44, +0xFD, 0xFF, 0xE5, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xFF, 0xFF, 0xCA, 0x08, +0x00, 0x19, 0xE9, 0xFF, 0xFB, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC9, +0xFF, 0xFF, 0xA2, 0x03, 0xC0, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x1C, 0xEA, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFB, 0xFF, 0xFF, 0xFF, 0xDD, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xFF, 0xFF, 0xFF, 0x35, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xFF, 0xFF, +0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, +0xFF, 0xFF, 0xD4, 0xFF, 0xFE, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4B, 0xFE, 0xFF, 0x98, 0x14, 0xE4, 0xFF, 0xF1, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1F, 0xED, 0xFF, 0xD8, 0x0A, 0x00, 0x3C, 0xFC, 0xFF, 0xD4, 0x0C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xC9, 0xFF, 0xFA, 0x33, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFF, +0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, +0x01, 0xB8, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xBF, 0x02, 0x00, +0x00, 0x00, 0x00, 0x00, 0x15, 0xE5, 0xFF, 0xFC, 0x41, 0x00, 0x00, 0x00, 0x26, 0xF2, 0xFF, 0xEE, +0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0xFF, 0xEA, 0x1D, 0x00, 0x09, 0xD2, +0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xFF, 0xFF, 0xC9, +0x07, 0x9F, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, +0xFF, 0xFF, 0xFF, 0x9B, 0x41, 0xFB, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x6E, 0xFF, 0xFF, 0xE2, 0x16, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x9F, 0xFF, +0xFF, 0xC6, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xCF, 0x07, 0x00, +0x00, 0x00, 0x07, 0xC9, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, +0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE7, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, +0x20, 0xEF, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xF9, 0xFF, 0xFE, +0x57, 0x00, 0x00, 0x05, 0xC8, 0xFF, 0xFF, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x64, 0xFF, 0xFF, 0xF7, 0x36, 0x00, 0x8C, 0xFF, 0xFF, 0xDA, 0x0C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xE7, 0x67, 0xFE, 0xFF, 0xF8, 0x31, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0xE2, 0xFF, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x07, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x57, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x12, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x22, 0xF2, 0xFF, 0xFF, 0xD8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0xC8, 0xFF, 0xFF, 0xF9, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFD, 0xFF, 0xFF, 0xB6, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xE4, 0xFF, 0xFF, 0xE8, 0x16, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, +0xFE, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, +0xFF, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2C, 0xF7, 0xFF, 0xFF, 0xCC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0xD3, 0xFF, 0xFF, 0xF3, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xEC, 0xFF, 0xFF, 0xDE, 0x0E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xBD, 0xFF, 0xFF, +0xFB, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, +0xFF, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x36, 0xFB, 0xFF, 0xFF, 0xBE, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x44, 0x0D, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x20, 0x25, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x21, 0x25, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x53, 0xD4, 0xFF, +0xF5, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFA, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x23, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xBD, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFD, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1B, 0xFE, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0xC7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x14, 0xFB, 0xFF, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, +0xF8, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xDA, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x57, 0xFF, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF4, +0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0xE2, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4D, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xEE, 0xFF, +0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xFF, 0xE9, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x44, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF7, 0xFF, 0x9E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x98, 0x98, 0x88, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x04, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x3B, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x3C, 0x04, 0x00, 0xFF, 0xFF, +0xFF, 0x04, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x8E, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3F, 0x76, 0xC8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9F, 0x04, +0x53, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x44, 0x15, 0x2E, 0xC5, +0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x99, 0x00, 0x33, 0x4F, 0x44, 0xB2, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x48, 0x00, 0x51, 0x6F, 0x00, 0xD1, 0x26, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x6F, 0x8F, 0x00, 0x66, 0x95, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1D, 0x76, 0x00, 0x00, 0x8D, 0xB0, 0x00, 0x0A, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x76, +0x1C, 0x00, 0x2F, 0xC7, 0xDE, 0x2F, 0x00, 0x92, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x0D, +0x81, 0xF5, 0xFE, 0x9D, 0x1C, 0x3B, 0xB9, 0x00, 0x00, 0x00, 0x13, 0x7C, 0x00, 0x00, 0x00, 0x9B, +0x8B, 0x11, 0x00, 0x01, 0xDC, 0x10, 0x00, 0x00, 0x58, 0x3B, 0x00, 0x00, 0x01, 0x20, 0x05, 0x12, +0x00, 0x00, 0x8C, 0x5A, 0x00, 0x00, 0x8C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x13, 0x81, 0xAE, 0x39, +0x47, 0xA3, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xDD, 0x7E, 0x58, 0xD9, 0x40, 0xDD, +0x00, 0x08, 0x8C, 0x00, 0x00, 0x07, 0x9D, 0xC1, 0x1C, 0x00, 0x00, 0x2A, 0xD1, 0xD2, 0x21, 0x31, +0x61, 0x00, 0x12, 0xC4, 0x98, 0x04, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFC, 0x54, 0x59, 0x35, 0x16, +0xD3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xCD, 0x83, 0x81, 0x23, 0xD4, 0x7E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xAF, 0x9A, 0xC6, 0x91, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xC2, 0xB7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2F, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2D, 0xF5, 0xFF, 0xFF, 0xFF, 0xF9, 0xD9, 0x75, 0x01, 0x00, 0x00, 0x0E, 0xDA, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x3D, 0x09, 0x00, 0x00, 0x00, 0x04, +0x57, 0xFF, 0xFF, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x10, 0x0A, 0x05, 0xFF, 0xFF, 0xF4, +0x00, 0x00, 0x20, 0xA6, 0xF1, 0xFF, 0xFF, 0x7C, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xEA, 0xFF, +0xFF, 0xFF, 0xFF, 0x22, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xA0, 0xFF, 0xFF, 0xF9, 0xA5, 0xA4, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE7, 0xFF, 0xFF, 0x59, 0x00, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0xFB, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE7, 0xFF, 0xFF, +0x1C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x9F, 0xFF, 0xFF, 0xA9, 0x1A, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x1E, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x18, 0x93, 0xDC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x3F, 0x98, 0x98, +0x98, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xFF, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x24, 0xFE, 0xF3, 0xCF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x91, 0xFF, 0xFF, +0xFF, 0xFF, 0xE1, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x26, 0x02, 0x20, 0x98, 0xFF, 0xFF, +0xDD, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0x74, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0xC5, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xEF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x05, 0xFF, 0xFF, 0xFA, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0xFF, 0xFF, 0xE7, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xB2, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0xBC, 0xFF, 0xFF, 0x55, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x04, 0x2C, 0xAB, 0xFF, 0xFF, 0xB9, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x0E, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE1, 0xAA, +0x4C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xA4, 0xDD, 0xF5, 0xFF, 0xFF, 0xFF, 0x83, 0x00, +0x0B, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x11, 0x00, 0xB2, 0xFF, 0xFF, 0xCA, 0x4A, +0x10, 0x00, 0x00, 0x40, 0x00, 0x51, 0xFF, 0xFF, 0xCE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xB1, 0xFF, 0xFF, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xFF, 0xFF, 0x15, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xEF, 0xFF, 0xFF, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xFF, 0xFF, 0x4D, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xC7, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0C, 0xDC, 0xFF, 0xFF, 0xC0, 0x3F, 0x0A, 0x00, 0x00, 0x04, 0x45, 0x00, 0x26, 0xD9, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x36, 0x00, 0x00, 0x0A, 0x6D, 0xBF, 0xEC, 0xFD, 0xFF, +0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x98, 0x98, 0x98, +0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0x05, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9E, 0xD9, 0xF3, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0A, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xD1, 0x50, 0x12, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x51, 0xFF, 0xFF, 0xD4, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xB2, +0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE8, 0xFF, 0xFF, +0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0xFF, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xEC, 0xFF, 0xFF, 0x14, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xBA, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x59, 0xFF, 0xFF, 0xC8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x01, 0xB8, 0xFF, 0xFF, 0xBE, 0x3B, 0x08, 0x00, 0x38, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x0D, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x01, 0x4E, 0xB0, 0xE7, 0xFB, 0xD6, 0x03, 0x42, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, +0x3C, 0x9A, 0xD1, 0xEE, 0xFD, 0xFF, 0xFF, 0xFF, 0xD4, 0x01, 0x00, 0x0F, 0xAF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x00, 0x02, 0xBE, 0xFF, 0xFF, 0xB2, 0x31, 0x06, 0x00, 0xD5, +0xFF, 0xE6, 0x06, 0x00, 0x5B, 0xFF, 0xFF, 0xC9, 0x02, 0x00, 0x00, 0x39, 0xFF, 0xFF, 0x79, 0x00, +0x00, 0xB7, 0xFF, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0x9C, 0xFF, 0xF4, 0x11, 0x00, 0x00, 0xE9, 0xFF, +0xFF, 0x1E, 0x00, 0x00, 0x0B, 0xF3, 0xFF, 0x91, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x05, 0x00, +0x00, 0x62, 0xFF, 0xFC, 0x20, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xFF, 0x16, 0x00, 0x00, 0xC5, 0xFF, +0xA9, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0xFF, 0x52, 0x00, 0x1D, 0xDB, 0xDC, 0x34, 0x00, 0x00, +0x00, 0x00, 0x6B, 0xFF, 0xFF, 0xCD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, +0xCF, 0xFF, 0xFF, 0xC6, 0x46, 0x0D, 0x00, 0x00, 0x00, 0x02, 0x3F, 0x00, 0x00, 0x19, 0xC7, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3D, 0x00, 0x00, 0x00, 0x04, 0x59, 0xB2, 0xE5, 0xF9, +0xFF, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x73, 0x8E, 0x90, 0x21, 0x00, +0x00, 0x16, 0xC6, 0xFF, 0xFF, 0xFF, 0xE6, 0x04, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xE3, 0xBD, 0x85, +0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0x18, 0x00, 0x14, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x6C, 0x00, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x0D, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2A, 0x8F, 0xCC, 0xED, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x00, +0x04, 0x8F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xA0, 0xFF, +0xFF, 0xD1, 0x4F, 0x12, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x48, 0xFF, 0xFF, 0xD4, 0x0B, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xAD, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE6, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0xED, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0xBF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x65, +0xFF, 0xFF, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0xC8, 0xFF, +0xFF, 0xAC, 0x33, 0x07, 0x03, 0x43, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x16, 0xC4, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x65, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x5A, 0xB5, 0xE8, 0xFC, +0xD6, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, +0xFF, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0xFF, 0xC1, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2D, 0xC9, 0xFF, 0xFF, 0x6A, 0x00, 0x00, +0x00, 0x00, 0x9E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x05, 0x00, 0x00, 0x00, 0x56, +0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE2, 0xB3, 0x5E, 0x02, 0x00, 0x00, 0x3E, 0x90, 0x90, 0x90, 0x3B, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xA2, 0xFF, 0xFE, +0xEE, 0xBD, 0x54, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x8E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x4B, 0xED, 0xFF, 0xFF, 0x44, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFF, 0xFF, 0xAB, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x06, 0xFF, 0xFF, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, +0xFF, 0x46, 0x00, 0x0A, 0x31, 0x0A, 0x00, 0x19, 0xE5, 0xFF, 0xE1, 0x16, 0x45, 0xFF, 0xFF, 0xFF, +0x41, 0x02, 0x87, 0xCA, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x47, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0B, 0x31, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xE5, 0xFF, 0xDF, 0x14, 0x00, 0x00, +0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0xC9, 0x83, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF, +0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xEF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4B, 0xFF, 0xFF, 0xC4, 0x00, 0x00, 0x00, 0x01, 0x2D, 0xD6, 0xFF, 0xFF, +0x67, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x02, 0x00, 0x1A, 0xF5, 0xFE, 0xEE, 0xC1, +0x64, 0x02, 0x00, 0x00, 0x3E, 0x90, 0x90, 0x90, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x65, +0xFF, 0xFF, 0xFF, 0x9F, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x56, 0xF5, 0xFF, 0xEF, +0x56, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0x86, 0xFF, 0xFF, 0xC3, 0x1E, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x2B, 0xFF, 0xFF, 0xFF, 0xC8, 0x78, 0x13, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x50, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x01, 0x18, 0x68, 0xED, 0xFF, 0xFC, 0x4D, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF8, 0xFF, 0xEA, 0x10, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x73, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3B, 0xFF, 0xFF, 0xBE, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0xFF, 0xFF, 0xEA, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, +0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, +0x45, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xFF, 0xFF, 0xFF, 0x3E, 0x90, +0x90, 0x90, 0x3E, 0x07, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x44, 0x3F, 0xFF, 0xFF, +0xF3, 0xAF, 0xFF, 0xF9, 0xD8, 0x77, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xDB, 0xA3, 0x3D, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x45, 0xE7, +0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x17, 0x5D, 0xEE, 0xFF, 0xFF, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x62, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0xFF, 0xAC, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xFF, 0xFF, 0xED, 0x00, 0x00, 0x00, +0x00, 0x19, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, +0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, +0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x46, 0x3F, 0xFF, +0xFF, 0xF3, 0xAF, 0xFF, 0xFE, 0xEC, 0xBA, 0x52, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x49, +0xEC, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xFF, 0xFF, +0xAC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xE3, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xF9, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x00, +0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x35, 0x9D, 0xDA, 0xF5, 0xF5, 0xDA, +0x9D, 0x33, 0x00, 0x00, 0x00, 0x00, 0x05, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x93, 0x04, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xD1, 0x48, 0x0B, 0x0C, 0x49, 0xD3, 0xFF, 0xFF, 0x9D, +0x00, 0x4A, 0xFF, 0xFF, 0xD9, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xDB, 0xFF, 0xFF, 0x47, 0xB1, +0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xAF, 0xE8, 0xFF, 0xFF, +0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xFA, 0xE9, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xE7, 0xB2, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x5C, 0xFF, 0xFF, 0xAF, 0x4D, 0xFF, 0xFF, 0xD7, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xDB, +0xFF, 0xFF, 0x48, 0x00, 0xA7, 0xFF, 0xFF, 0xCF, 0x46, 0x0B, 0x0B, 0x48, 0xD2, 0xFF, 0xFF, 0xA0, +0x00, 0x00, 0x07, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x05, 0x00, 0x00, +0x00, 0x00, 0x3A, 0xA0, 0xDC, 0xF6, 0xF6, 0xDC, 0x9E, 0x36, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xF6, 0xE0, 0xA8, 0x48, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x0D, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x2D, 0xAE, +0xFF, 0xFF, 0xB7, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0xBE, 0xFF, 0xFF, +0x54, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xB2, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xE7, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xFA, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1C, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xFF, +0xFF, 0xBE, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x66, 0x00, +0xFF, 0xFF, 0xFF, 0x01, 0x29, 0x01, 0x21, 0x9E, 0xFF, 0xFF, 0xCE, 0x06, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x1D, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x25, 0xFE, +0xF4, 0xCC, 0x74, 0x09, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x90, 0xCD, 0xED, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x40, 0x00, 0x05, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xA3, 0xFF, 0xFF, 0xD1, 0x50, 0x12, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x49, 0xFF, +0xFF, 0xD4, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xAE, 0xFF, 0xFF, 0x55, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE6, 0xFF, 0xFF, 0x15, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xEC, 0xFF, 0xFF, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0xBA, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x59, 0xFF, 0xFF, 0xC8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x01, 0xB8, 0xFF, 0xFF, 0xBE, 0x3B, 0x08, 0x00, 0x38, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0D, +0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x4E, +0xB0, 0xE7, 0xFB, 0xD6, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xFF, 0xFF, 0xFF, 0x43, 0x3D, 0xFF, +0xFF, 0xFF, 0xFF, 0xFE, 0xE2, 0x76, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x35, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x32, 0xB6, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x14, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x49, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xB4, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, +0x00, 0x4A, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0xC2, 0xFF, +0xB9, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x35, 0x00, 0x00, 0xD5, 0xFF, 0xF1, 0x66, 0x0B, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xFF, 0xFF, 0xFF, 0xF7, 0xB4, 0x68, 0x17, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xB0, 0x2F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2D, 0x7C, 0xC1, 0xFA, 0xFF, 0xFF, 0xFF, 0xFA, 0x61, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0C, 0x52, 0xB0, 0xFF, 0xFF, 0xFD, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xD4, 0xFF, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, +0xFF, 0xFD, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xE4, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0xD2, 0xFF, 0xFF, 0xA0, 0xA0, 0x36, 0x1B, 0xD8, 0xFF, 0xFF, +0xFF, 0xFF, 0xEE, 0x0B, 0x80, 0xA4, 0xFF, 0xFF, 0xFF, 0xB1, 0x86, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x01, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, +0x49, 0x00, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x47, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE5, 0xFF, 0xFF, 0x13, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0xB2, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x53, +0xFF, 0xFF, 0xDD, 0x3B, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x63, 0xC4, 0xF0, 0xFF, 0xFF, +0xAA, 0xF2, 0xFF, 0xFF, 0x3D, 0xD6, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFF, +0xFF, 0xD6, 0x58, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x56, 0x02, +0xD5, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xD2, 0x01, 0x00, 0x56, 0xFF, 0xFF, +0x3F, 0x00, 0x00, 0x00, 0x34, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x01, 0xD2, 0xFF, 0xBA, 0x00, 0x00, +0x00, 0xAF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x53, 0xFF, 0xFF, 0x36, 0x00, 0x2B, 0xFE, 0xFF, +0x4B, 0x00, 0x00, 0x00, 0x00, 0x01, 0xD0, 0xFF, 0xB1, 0x00, 0xA4, 0xFF, 0xC8, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x50, 0xFF, 0xFE, 0x50, 0xFC, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xCD, 0xFF, 0xF9, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, +0xFF, 0xFF, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xBE, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xFF, 0x3C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xFF, +0xFF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, +0xFF, 0xFF, 0xD6, 0x57, 0xFF, 0xFF, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xFF, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0xFF, 0x56, 0x01, 0xD3, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, +0x00, 0xA3, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xD2, 0x01, 0x00, 0x53, 0xFF, +0xFF, 0x37, 0x00, 0x00, 0x00, 0x1C, 0xFA, 0xFF, 0xFD, 0x24, 0x00, 0x00, 0x00, 0x26, 0xFE, 0xFF, +0x52, 0x00, 0x00, 0x01, 0xCF, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xFF, 0x99, 0x00, +0x00, 0x00, 0x99, 0xFF, 0xCE, 0x01, 0x00, 0x00, 0x00, 0x4E, 0xFF, 0xFC, 0x1F, 0x00, 0x0D, 0xF0, +0xFF, 0xA6, 0xFF, 0xF8, 0x18, 0x00, 0x15, 0xF7, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, +0xFF, 0x8E, 0x00, 0x73, 0xFF, 0xC8, 0x03, 0xD9, 0xFF, 0x88, 0x00, 0x81, 0xFF, 0xCA, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x49, 0xFF, 0xF1, 0x12, 0xE2, 0xFF, 0x47, 0x00, 0x59, 0xFF, 0xF0, 0x17, +0xEB, 0xFF, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xFF, 0xC4, 0xFF, 0xC7, 0x00, +0x00, 0x02, 0xD3, 0xFF, 0xCF, 0xFF, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, +0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xC1, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x44, 0x00, 0x00, 0x00, +0x00, 0x00, 0x4A, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0xDF, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xDC, 0x15, 0x00, 0x29, +0xEF, 0xFF, 0xE6, 0x17, 0x00, 0x00, 0x00, 0x18, 0xE8, 0xFF, 0xEA, 0x24, 0x00, 0x00, 0x00, 0x42, +0xFA, 0xFF, 0xC4, 0x05, 0x00, 0x03, 0xC0, 0xFF, 0xF4, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, +0xFF, 0xFF, 0x97, 0x00, 0x8A, 0xFF, 0xFB, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +0xFF, 0xFF, 0xA1, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, +0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, +0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xED, 0xFF, 0xFF, +0xFF, 0xF9, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xE0, 0xFF, 0xE8, 0x56, 0xF5, +0xFF, 0xEE, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xD0, 0xFF, 0xF6, 0x37, 0x00, 0x4B, 0xFB, +0xFF, 0xDE, 0x16, 0x00, 0x00, 0x00, 0x06, 0xBD, 0xFF, 0xFE, 0x54, 0x00, 0x00, 0x00, 0x62, 0xFF, +0xFF, 0xC9, 0x0A, 0x00, 0x01, 0xA7, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, +0xFF, 0xAF, 0x02, 0x8E, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xFF, 0xFF, +0xFF, 0x90, 0xD7, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0xD7, 0x5B, +0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0xFF, 0x5A, 0x02, 0xD7, 0xFF, 0xBD, +0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xFF, 0xD8, 0x02, 0x00, 0x5B, 0xFF, 0xFF, 0x3B, 0x00, 0x00, +0x00, 0x27, 0xFD, 0xFF, 0x5B, 0x00, 0x00, 0x02, 0xD7, 0xFF, 0xB9, 0x00, 0x00, 0x00, 0xA0, 0xFF, +0xD9, 0x03, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0x37, 0x00, 0x1E, 0xFA, 0xFF, 0x5D, 0x00, 0x00, +0x00, 0x00, 0x02, 0xD7, 0xFF, 0xB5, 0x00, 0x94, 0xFF, 0xDA, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5B, 0xFF, 0xFF, 0x4A, 0xF7, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xD7, 0xFF, +0xF7, 0xFF, 0xDC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0xFF, 0x60, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE5, 0xFF, 0xDC, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xFE, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xAD, 0xFF, 0xDD, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xFE, +0xFF, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xFF, 0xDE, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFE, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xAA, 0xFF, 0xDF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x2B, 0xFE, 0xFF, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, +0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xD4, 0x05, 0x00, 0x00, 0xA7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, +0x38, 0x00, 0x00, 0x16, 0x31, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xDF, 0xFF, 0xE2, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x8F, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xFC, +0xFF, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD1, 0xFF, 0xED, 0x16, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x26, 0xF7, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0xC1, 0xFF, 0xF6, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0x75, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x45, 0x19, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8C, 0xA9, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x26, 0xDF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x16, 0x7B, 0x00, 0x00, 0x9D, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x79, 0x13, 0x00, 0x00, 0x20, 0xE8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, +0x84, 0x03, 0x2E, 0x2F, 0x03, 0xAF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x4E, +0x7D, 0x44, 0x4E, 0x80, 0x5B, 0xDE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x6F, 0x2E, +0x88, 0x6F, 0x76, 0x96, 0xD4, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x7A, 0x8A, 0x88, 0x01, +0x00, 0x23, 0xCA, 0x78, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x37, 0xE0, 0x96, 0x3D, 0x5B, +0x77, 0x8C, 0x22, 0xFA, 0x15, 0x00, 0x00, 0x00, 0x00, 0x86, 0x02, 0x84, 0xB7, 0x3E, 0x26, 0x74, +0x82, 0x00, 0xCB, 0x64, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x05, 0x88, 0xE7, 0xE7, 0x8A, 0x05, +0x00, 0x78, 0xB5, 0x00, 0x00, 0x00, 0x16, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x75, 0x27, +0x35, 0xF7, 0x08, 0x00, 0x00, 0x49, 0x42, 0x00, 0x00, 0x00, 0x11, 0xA2, 0xE7, 0x8F, 0xC4, 0x36, +0xF1, 0x41, 0x00, 0x00, 0x7C, 0x14, 0x00, 0x00, 0x34, 0xE2, 0x9A, 0x0B, 0x00, 0x0C, 0xAE, 0xC5, +0x81, 0x00, 0x00, 0x91, 0x00, 0x00, 0x52, 0xF0, 0x61, 0x00, 0x00, 0x00, 0x00, 0x22, 0xF1, 0xB5, +0x00, 0x00, 0x90, 0x00, 0x5E, 0xF0, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xE5, 0x00, +0x00, 0x93, 0x58, 0xF0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xDC, 0x12, 0x16, +0xBF, 0xF3, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x33, 0x30, 0xFF, +0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x2C, 0x48, 0x8D, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, +0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6F, 0xCE, 0x2B, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x99, 0x02, 0x4F, 0xB2, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3C, 0x00, 0x00, 0xC7, 0x36, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x44, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x51, 0x42, 0x11, 0x89, 0x98, 0x1B, 0xD0, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x92, 0x5B, 0x84, 0x0B, 0x0A, 0xAF, 0x7A, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x72, 0x89, +0x04, 0x00, 0x00, 0x54, 0x1C, 0xDE, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x75, 0x1A, 0x70, 0x17, 0x3B, +0x0B, 0x83, 0x07, 0x8B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x56, 0xC1, 0x1D, 0x5B, 0x35, +0x00, 0x32, 0xBD, 0x00, 0x00, 0x00, 0x12, 0x7A, 0x00, 0x08, 0x4E, 0x86, 0x5F, 0x18, 0x00, 0x00, +0xD4, 0x12, 0x00, 0x00, 0x57, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x0E, 0x00, 0x81, 0x5D, +0x00, 0x00, 0x8B, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xC0, 0xEE, 0x72, 0x3C, 0xA4, 0x00, 0x00, +0x8F, 0x00, 0x00, 0x00, 0x06, 0x90, 0xC9, 0x3E, 0x18, 0xC0, 0x67, 0xD8, 0x00, 0x08, 0x8C, 0x00, +0x00, 0x15, 0xC4, 0x8C, 0x04, 0x00, 0x00, 0x11, 0xD6, 0xD9, 0x22, 0x31, 0x61, 0x00, 0x1F, 0xD8, +0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0x54, 0x59, 0x36, 0x1F, 0xDD, 0x5A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x83, 0x81, 0x28, 0xDB, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x34, 0xAE, 0x9A, 0xCB, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x85, 0xC2, 0xAC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x2C, 0xB8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x8E, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x76, +0xC8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9F, 0x04, 0x53, 0xB0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x44, 0x15, 0x2E, 0xC5, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x99, 0x00, 0x33, 0x4F, 0x44, 0xB2, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x52, 0x48, 0x00, 0x51, 0x6F, 0x00, 0xD1, 0x26, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x97, 0x00, 0x00, 0x6F, 0x8F, 0x00, 0x66, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, +0x76, 0x00, 0x00, 0x8D, 0xB0, 0x00, 0x0A, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x76, 0x1C, 0x00, +0x2F, 0xC7, 0xDE, 0x2F, 0x00, 0x92, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x0D, 0x81, 0xF5, +0xFE, 0x9D, 0x1C, 0x3B, 0xB9, 0x00, 0x00, 0x00, 0x13, 0x7C, 0x00, 0x00, 0x00, 0x9B, 0x8B, 0x11, +0x00, 0x01, 0xDC, 0x10, 0x00, 0x00, 0x58, 0x3B, 0x00, 0x00, 0x01, 0x20, 0x05, 0x12, 0x00, 0x00, +0x8C, 0x5A, 0x00, 0x00, 0x8C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x13, 0x81, 0xAE, 0x39, 0x47, 0xA3, +0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xDD, 0x7E, 0x58, 0xD9, 0x40, 0xDD, 0x00, 0x08, +0x8C, 0x00, 0x00, 0x07, 0x9D, 0xC1, 0x1C, 0x00, 0x00, 0x2A, 0xD1, 0xD2, 0x21, 0x31, 0x61, 0x00, +0x12, 0xC4, 0x98, 0x04, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFC, 0x54, 0x59, 0x35, 0x16, 0xD3, 0x81, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xCD, 0x83, 0x81, 0x23, 0xD4, 0x7E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xAF, 0x9A, 0xC6, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x8D, 0xC2, 0xB7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x2F, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0A, 0x54, 0x72, 0x65, 0x6B, 0x20, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x00, 0x0D, 0x46, 0x69, 0x6E, +0x61, 0x6C, 0x46, 0x72, 0x6F, 0x6E, 0x74, 0x69, 0x65, 0x72, 0x01, +}; diff --git a/libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/data/Final-Frontier.ttf b/libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/data/Final-Frontier.ttf similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Tools/Create_Smooth_Font/Create_font/data/Final-Frontier.ttf rename to libraries/TFT_eSPI-2.5.43/Tools/Create_Smooth_Font/Create_font/data/Final-Frontier.ttf diff --git a/libraries/TFT_eSPI-2.4.72/Tools/Screenshot_client/Screenshot_client.pde b/libraries/TFT_eSPI-2.5.43/Tools/Screenshot_client/Screenshot_client.pde similarity index 99% rename from libraries/TFT_eSPI-2.4.72/Tools/Screenshot_client/Screenshot_client.pde rename to libraries/TFT_eSPI-2.5.43/Tools/Screenshot_client/Screenshot_client.pde index 537b108c..03c9eefd 100644 --- a/libraries/TFT_eSPI-2.4.72/Tools/Screenshot_client/Screenshot_client.pde +++ b/libraries/TFT_eSPI-2.5.43/Tools/Screenshot_client/Screenshot_client.pde @@ -55,7 +55,7 @@ int max_allowed = 1000; // Maximum number of save images allowed before a resta // These are default values, this sketch obtains the actual values from the Arduino board int tft_width = 480; // default TFT width (automatic - sent by Arduino) int tft_height = 480; // default TFT height (automatic - sent by Arduino) -int color_bytes = 2; // 2 for 16 bit, 3 for three RGB bytes (automatic - sent by Arduino) +int color_bytes = 2; // 2 for 16-bit, 3 for three RGB bytes (automatic - sent by Arduino) import processing.serial.*; diff --git a/libraries/TFT_eSPI-2.4.72/Tools/bmp2array4bit/README.md b/libraries/TFT_eSPI-2.5.43/Tools/bmp2array4bit/README.md similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Tools/bmp2array4bit/README.md rename to libraries/TFT_eSPI-2.5.43/Tools/bmp2array4bit/README.md diff --git a/libraries/TFT_eSPI-2.4.72/Tools/bmp2array4bit/bmp2array4bit.py b/libraries/TFT_eSPI-2.5.43/Tools/bmp2array4bit/bmp2array4bit.py similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Tools/bmp2array4bit/bmp2array4bit.py rename to libraries/TFT_eSPI-2.5.43/Tools/bmp2array4bit/bmp2array4bit.py diff --git a/libraries/TFT_eSPI-2.4.72/Tools/bmp2array4bit/star.bmp b/libraries/TFT_eSPI-2.5.43/Tools/bmp2array4bit/star.bmp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/Tools/bmp2array4bit/star.bmp rename to libraries/TFT_eSPI-2.5.43/Tools/bmp2array4bit/star.bmp diff --git a/libraries/TFT_eSPI-2.4.72/User_Setup.h b/libraries/TFT_eSPI-2.5.43/User_Setup.h similarity index 89% rename from libraries/TFT_eSPI-2.4.72/User_Setup.h rename to libraries/TFT_eSPI-2.5.43/User_Setup.h index 49d2ac73..a0123318 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setup.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setup.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. @@ -28,15 +28,15 @@ //#define NUCLEO_64_TFT //#define NUCLEO_144_TFT -// STM32 8 bit parallel only: -// If STN32 Port A or B pins 0-7 are used for 8 bit parallel data bus bits 0-7 +// STM32 8-bit parallel only: +// If STN32 Port A or B pins 0-7 are used for 8-bit parallel data bus bits 0-7 // then this will improve rendering performance by a factor of ~8x //#define STM_PORTA_DATA_BUS //#define STM_PORTB_DATA_BUS // Tell the library to use parallel mode (otherwise SPI is assumed) //#define TFT_PARALLEL_8_BIT -//#defined TFT_PARALLEL_16_BIT // **** 16 bit parallel ONLY for RP2040 processor **** +//#defined TFT_PARALLEL_16_BIT // **** 16-bit parallel ONLY for RP2040 processor **** // Display type - only define if RPi display //#define RPI_DISPLAY_TYPE // 20MHz maximum SPI @@ -84,6 +84,7 @@ // #define TFT_WIDTH 80 // #define TFT_WIDTH 128 // #define TFT_WIDTH 172 // ST7789 172 x 320 +// #define TFT_WIDTH 170 // ST7789 170 x 320 // #define TFT_WIDTH 240 // ST7789 240 x 240 and 240 x 320 // #define TFT_HEIGHT 160 // #define TFT_HEIGHT 128 @@ -104,6 +105,7 @@ // #define ST7735_GREENTAB3 // #define ST7735_GREENTAB128 // For 128 x 128 display // #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset) +// #define ST7735_ROBOTLCD // For some RobotLCD Arduino shields (128x160, BGR, https://docs.arduino.cc/retired/getting-started-guides/TFT) // #define ST7735_REDTAB // #define ST7735_BLACKTAB // #define ST7735_REDTAB160x80 // For 160 x 80 display with 24 pixel offset @@ -165,10 +167,15 @@ // ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ###### // For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation -#define TFT_CS PIN_D8 // Chip select control pin D8 -#define TFT_DC PIN_D3 // Data Command control pin -#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) -//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V +#define TFT_MISO PIN_D6 // Automatically assigned with ESP8266 if not defined +#define TFT_MOSI PIN_D7 // Automatically assigned with ESP8266 if not defined +#define TFT_SCLK PIN_D5 // Automatically assigned with ESP8266 if not defined + +#define TFT_CS PIN_D8 // Chip select control pin D8 +#define TFT_DC PIN_D3 // Data Command control pin +#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) +//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V + //#define TFT_BL PIN_D1 // LED back-light (only for ST7789 with backlight control pin) @@ -235,7 +242,7 @@ // ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ###### -// The library supports 8 bit parallel TFTs with the ESP32, the pin +// The library supports 8-bit parallel TFTs with the ESP32, the pin // selection below is compatible with ESP32 boards in UNO format. // Wemos D32 boards need to be modified, see diagram in Tools folder. // Only ILI9481 and ILI9341 based displays have been tested! @@ -243,7 +250,7 @@ // Parallel bus is only supported for the STM32 and ESP32 // Example below is for ESP32 Parallel interface with UNO displays -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) //#define TFT_PARALLEL_8_BIT // The ESP32 and TFT the pins used for testing are: @@ -323,6 +330,20 @@ // For RP2040 processor and SPI displays, uncomment the following line to use the PIO interface. //#define RP2040_PIO_SPI // Leave commented out to use standard RP2040 SPI port interface +// For RP2040 processor and 8 or 16-bit parallel displays: +// The parallel interface write cycle period is derived from a division of the CPU clock +// speed so scales with the processor clock. This means that the divider ratio may need +// to be increased when overclocking. It may also need to be adjusted dependant on the +// display controller type (ILI94341, HX8357C etc.). If RP2040_PIO_CLK_DIV is not defined +// the library will set default values which may not suit your display. +// The display controller data sheet will specify the minimum write cycle period. The +// controllers often work reliably for shorter periods, however if the period is too short +// the display may not initialise or graphics will become corrupted. +// PIO write cycle frequency = (CPU clock/(4 * RP2040_PIO_CLK_DIV)) +//#define RP2040_PIO_CLK_DIV 1 // 32ns write cycle at 125MHz CPU clock +//#define RP2040_PIO_CLK_DIV 2 // 64ns write cycle at 125MHz CPU clock +//#define RP2040_PIO_CLK_DIV 3 // 96ns write cycle at 125MHz CPU clock + // For the RP2040 processor define the SPI port channel used (default 0 if undefined) //#define TFT_SPI_PORT 1 // Set to 0 if SPI0 pins are used, or 1 if spi1 pins used diff --git a/libraries/TFT_eSPI-2.4.72/User_Setup_Select.h b/libraries/TFT_eSPI-2.5.43/User_Setup_Select.h similarity index 76% rename from libraries/TFT_eSPI-2.4.72/User_Setup_Select.h rename to libraries/TFT_eSPI-2.5.43/User_Setup_Select.h index 999a2883..6a516399 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setup_Select.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setup_Select.h @@ -1,23 +1,28 @@ // This header file contains a list of user setup files and defines which one the // compiler uses when the IDE performs a Verify/Compile or Upload. // -// Users can create configurations for different Espressif boards and TFT displays. +// Users can create configurations for different boards and TFT displays. // This makes selecting between hardware setups easy by "uncommenting" one line. // The advantage of this hardware configuration method is that the examples provided -// with the library should work with different setups immediately without any other -// changes being needed. It also improves the portability of users sketches to other -// hardware configurations and compatible libraries. +// with the library should work with immediately without any other changes being +// needed. It also improves the portability of users sketches to other hardware +// configurations and compatible libraries. // // Create a shortcut to this file on your desktop to permit quick access for editing. // Re-compile and upload after making and saving any changes to this file. -// Customised User_Setup files are stored in the "User_Setups" folder. +// Example User_Setup files are stored in the "User_Setups" folder. These can be used +// unmodified or adapted for a particular hardware configuration. #ifndef USER_SETUP_LOADED // Lets PlatformIO users define settings in // platformio.ini, see notes in "Tools" folder. -// Only ONE line below should be uncommented. Add extra lines and files as needed. +/////////////////////////////////////////////////////// +// User configuration selection lines are below // +/////////////////////////////////////////////////////// + +// Only ONE line below should be uncommented to define your setup. Add extra lines and files as needed. #include // Default setup is root library folder @@ -81,9 +86,11 @@ //#include // Setup file for LilyGo LilyPi with ILI9481 display //#include // Setup file for LilyGo LilyPi with ST7796 display -//#include // Setup file for RP2040 with SPI ILI9341 -//#include // Setup file for RP2040 with PIO SPI ILI9341 -//#include // Setup file for RP2040 with SPI ILI9341 +//#include // Setup file for RP2040 with SPI ILI9341 +//#include // Setup file for RP2040 with PIO SPI ILI9341 +//#include // Setup file for RP2040 with SPI ILI9341 + +//#include // Setup file for Seeed XIAO with GC9A01 240x240 //#include // Setup file for ESP32 S2 with SPI ILI9341 //#include // Setup file for ESP32 S3 with SPI ILI9341 @@ -93,21 +100,24 @@ //#include // Setup file for ESP32 S2 with ST7789 //#include // Setup file for ESP32 with ST7789 1.47" 172x320 -//#include // Setup file for Pico/RP2040 with 8 bit parallel ILI9488 -//#include // Setup file for Pico/RP2040 with 8 bit parallel ILI9481 -//#include // Setup file for Pico/RP2040 with 8 bit parallel ILI9341 -//#include // Setup file for Pico/RP2040 with 8 bit parallel ILI9486 -//#include // Setup file for Pico/RP2040 with 8 bit parallel ST7796 +//#include // Setup file for Pico/RP2040 with 8-bit parallel ILI9488 +//#include // Setup file for Pico/RP2040 with 8-bit parallel ILI9481 +//#include // Setup file for Pico/RP2040 with 8-bit parallel ILI9341 +//#include // Setup file for Pico/RP2040 with 8-bit parallel ILI9486 +//#include // Setup file for Pico/RP2040 with 8-bit parallel ST7796 -//#include // Setup file for RP2040 16 bit parallel display -//#include // Setup file for RP2040 16 bit parallel display -//#include // Setup file for RP2040 16 bit parallel display +//#include // Setup file for RP2040 16-bit parallel display +//#include // Setup file for RP2040 16-bit parallel display +//#include // Setup file for RP2040 16-bit parallel display +//#include // Setup file for Waveshare RP2040 board with onboard ST7735 0.96" 160x80 display //#include // Setup file for ESP8266 and ST7789 135 x 240 TFT //#include // Setup file for ESP32 and Lilygo TTV ST7789 SPI bus TFT 135x240 //#include // Setup file for Lilygo T-Display RP2040 (ST7789 on SPI bus with 135x240 TFT) +//#include // Setup file for Pico Explorer Base by Pimoroni for RP2040 (ST7789 on SPI bus with 240x240 TFT) + //#include // Setup file for ESP32 and GC9A01 240 x 240 TFT //#include // Setup file for ESP32 based WT32_SC01 from Seeed @@ -120,17 +130,31 @@ //#include // Setup file for the ESP32 TouchDown S3 based on ILI9488 480 x 320 TFT +//#include // For the LilyGo T-Display S3 based ESP32S3 with ST7789 170 x 320 TFT +//#include // For the LilyGo T-HMI S3 based ESP32S3 with ST7789 240 x 320 TFT +//#include // For the LilyGo T-Dongle S3 based ESP32 with ST7735 80 x 160 TFT +//#include // For the LilyGo T-Embed S3 based ESP32S3 with ST7789 170 x 320 TFT +//#include // For the LilyGo T-QT Pro S3 based ESP32S3 with GC9A01 128 x 128 TFT +// #include // For the LilyGo T-PICO-Pro with ST7796 222 x 480 TFT +// #include // For the LilyGo T-BEAM V1.x with ST7796 222 x 480 TFT + +//#include // For the ESP32 S3 Box Lite +//#include // For the ESP32 S3 Box + +//#include // Setup file for Bw16-based boards with ST7735 160 x 80 TFT +//#include // Setup file for Waveshare ESP32-S3-Touch-LCD-1.28 board with GC9A01 240*240 TFT + //#include // Template file for a setup -//#include // Setup file for Dustin Watts PCB with ILI9488 +//#include // Setup file for Dustin Watts PCB with ILI9488 //#include // Setup file for Dustin Watts PCB with ST7796 -//#include // Setup file for Dustin Watts Pico PCB with ST7796 -//#include // Setup file for Dustin Watts PCB with ST7789 240 x 240 on 3.3V adapter board -//#include // Setup file for Dustin Watts PCB with GC9A01 240 x 240 on 3.3V adapter board -//#include // Setup file for Dustin Watts PCB with GC9A01 240 x 240 on 3.3V adapter board -//#include // Setup file for Dustin Watts PCB with ST7789 240 x 240 on 3.3V adapter board -//#include // Setup file for Dustin Watts PCB with ILI9341 +//#include // Setup file for Dustin Watts Pico PCB with ST7796 +//#include // Setup file for Dustin Watts PCB with ST7789 240 x 240 on 3.3V adapter board +//#include // Setup file for Dustin Watts PCB with GC9A01 240 x 240 on 3.3V adapter board +//#include // Setup file for Dustin Watts PCB with GC9A01 240 x 240 on 3.3V adapter board +//#include // Setup file for Dustin Watts PCB with ST7789 240 x 240 on 3.3V adapter board +//#include // Setup file for Dustin Watts PCB with ILI9341 //#include #endif // USER_SETUP_LOADED @@ -145,7 +169,7 @@ ///////////////////////////////////////////////////////////////////////////////////// -// Identical looking TFT displays may have a different colour ordering in the 16 bit colour +// Identical looking TFT displays may have a different colour ordering in the 16-bit colour #define TFT_BGR 0 // Colour order Blue-Green-Red #define TFT_RGB 1 // Colour order Red-Green-Blue @@ -167,7 +191,7 @@ #endif #endif -// Invoke 18 bit colour for selected displays +// Invoke 18-bit colour for selected displays #if !defined (RPI_DISPLAY_TYPE) && !defined (TFT_PARALLEL_8_BIT) && !defined (TFT_PARALLEL_16_BIT) && !defined (ESP32_PARALLEL) #if defined (ILI9481_DRIVER) || defined (ILI9486_DRIVER) || defined (ILI9488_DRIVER) #define SPI_18BIT_DRIVER diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup0_Sprite.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup0_Sprite.h new file mode 100644 index 00000000..a7692913 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup0_Sprite.h @@ -0,0 +1,47 @@ +// For sprite only functionality (untested) +#define USER_SETUP_ID 0 + +#define TFT_WIDTH 1000 +#define TFT_HEIGHT 1000 + +#define TFT_INIT_DELAY 0 + +#define TFT_NOP 0x00 +#define TFT_SWRST 0x00 + +#define TFT_CASET 0x00 +#define TFT_PASET 0x00 +#define TFT_RAMWR 0x00 + +#define TFT_RAMRD 0x00 +#define TFT_IDXRD 0x00 + +/* +#define TFT_MADCTL 0x00 +#define TFT_MAD_MY 0x00 +#define TFT_MAD_MX 0x00 +#define TFT_MAD_MV 0x00 +#define TFT_MAD_ML 0x00 +#define TFT_MAD_BGR 0x00 +#define TFT_MAD_MH 0x00 +#define TFT_MAD_RGB 0x00 +*/ +#define TFT_INVOFF 0x00 +#define TFT_INVON 0x00 + + +#define TFT_MISO -1 +#define TFT_MOSI -1 +#define TFT_SCLK -1 + + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup100_RP2040_ILI9488_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup100_RP2040_ILI9488_parallel.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup100_RP2040_ILI9488_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup100_RP2040_ILI9488_parallel.h index a28fa70e..dcec30ee 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup100_RP2040_ILI9488_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup100_RP2040_ILI9488_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 100 @@ -25,8 +25,6 @@ //#define TFT_RD -1 // Do not define, read pin permanently connected to 3V3 // Note: All the following pins are PIO hardware configured and driven -// The pins are hard-coded at the moment and must not be changed here -// Connections MUST use the pins below #define TFT_WR 22 // PIO requires these to be sequentially increasing - do not change diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup101_RP2040_ILI9481_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup101_RP2040_ILI9481_parallel.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup101_RP2040_ILI9481_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup101_RP2040_ILI9481_parallel.h index f80fdefd..714e5e14 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup101_RP2040_ILI9481_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup101_RP2040_ILI9481_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 101 @@ -25,8 +25,6 @@ //#define TFT_RD -1 // Do not define, read pin permanently connected to 3V3 // Note: All the following pins are PIO hardware configured and driven -// The pins are hard-coded at the moment and must not be changed here -// Connections MUST use the pins below #define TFT_WR 22 // PIO requires these to be sequentially increasing - do not change diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup102_RP2040_ILI9341_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup102_RP2040_ILI9341_parallel.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup102_RP2040_ILI9341_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup102_RP2040_ILI9341_parallel.h index 844d2376..ce133c80 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup102_RP2040_ILI9341_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup102_RP2040_ILI9341_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 102 @@ -25,8 +25,6 @@ //#define TFT_RD -1 // Do not define, read pin permanently connected to 3V3 // Note: All the following pins are PIO hardware configured and driven -// The pins are hard-coded at the moment and must not be changed here -// Connections MUST use the pins below #define TFT_WR 22 // PIO requires these to be sequentially increasing - do not change diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup103_RP2040_ILI9486_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup103_RP2040_ILI9486_parallel.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup103_RP2040_ILI9486_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup103_RP2040_ILI9486_parallel.h index ca2084cb..34bb7024 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup103_RP2040_ILI9486_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup103_RP2040_ILI9486_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 103 @@ -25,8 +25,6 @@ //#define TFT_RD -1 // Do not define, read pin permanently connected to 3V3 // Note: All the following pins are PIO hardware configured and driven -// The pins are hard-coded at the moment and must not be changed here -// Connections MUST use the pins below #define TFT_WR 22 // PIO requires these to be sequentially increasing - do not change diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup104_RP2040_ST7796_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup104_RP2040_ST7796_parallel.h similarity index 93% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup104_RP2040_ST7796_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup104_RP2040_ST7796_parallel.h index 0a69d9da..a76e4fcd 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup104_RP2040_ST7796_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup104_RP2040_ST7796_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 104 @@ -25,8 +25,6 @@ //#define TFT_RD -1 // Do not define, read pin permanently connected to 3V3 // Note: All the following pins are PIO hardware configured and driven -// The pins are hard-coded at the moment and must not be changed here -// Connections MUST use the pins below #define TFT_WR 22 // PIO requires these to be sequentially increasing - do not change diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h index e53afa66..82b506cf 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 105 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h similarity index 71% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h index fce71204..7273ba3d 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor when used with 8 bit parallel displays +// This setup is for the RP2040 processor when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 106 @@ -8,6 +8,19 @@ //#define TFT_PARALLEL_8_BIT #define TFT_PARALLEL_16_BIT +// The parallel interface write cycle period is derived from a division of the CPU clock +// speed so scales with the processor clock. This means that the divider ratio may need +// to be increased when overclocking. I may also need to be adjusted dependant on the +// display controller type (ILI94341, HX8357C etc.). If RP2040_PIO_CLK_DIV is not defined +// the library will set default values which may not suit your display. +// The display controller data sheet will specify the minimum write cycle period. The +// controllers often work reliably for shorter periods, however if the period is too short +// the display may not initialise or graphics will become corrupted. +// PIO write cycle frequency = (CPU clock/(4 * RP2040_PIO_CLK_DIV)) +//#define RP2040_PIO_CLK_DIV 1 // 32ns write cycle at 125MHz CPU clock +//#define RP2040_PIO_CLK_DIV 2 // 64ns write cycle at 125MHz CPU clock +//#define RP2040_PIO_CLK_DIV 3 // 96ns write cycle at 125MHz CPU clock +//#define RP2040_PIO_CLK_DIV 4 // 96ns write cycle at 125MHz CPU clock //////////////////////////////////////////////////////////////////////////////////////////// // Display driver type diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h index 6b0d0f98..384dc1cc 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h @@ -1,4 +1,4 @@ -// This setup is for the RP2040 processor only when used with 8 bit parallel displays +// This setup is for the RP2040 processor only when used with 8-bit parallel displays // See SetupX_Template.h for all options available #define USER_SETUP_ID 107 diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup108_RP2040_ST7735.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup108_RP2040_ST7735.h new file mode 100644 index 00000000..dc6ac31a --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup108_RP2040_ST7735.h @@ -0,0 +1,44 @@ +// This setup is for the Waveshare RP2040-LCD-0.96 board +// See SetupX_Template.h for all options available +#define USER_SETUP_ID 108 + +//////////////////////////////////////////////////////////////////////////////////////////// +// Display driver type +//////////////////////////////////////////////////////////////////////////////////////////// +#define ST7735_DRIVER +#define ST7735_GREENTAB160x80 + +//////////////////////////////////////////////////////////////////////////////////////////// +// Display params +//////////////////////////////////////////////////////////////////////////////////////////// +#define TFT_WIDTH 80 +#define TFT_HEIGHT 160 +#define TFT_INVERSION_ON + +//////////////////////////////////////////////////////////////////////////////////////////// +// RP2040 config and pins +//////////////////////////////////////////////////////////////////////////////////////////// +#define SPI_FREQUENCY 27000000 +#define RP2040_PIO_CLK_DIV 1 +#define TFT_SPI_PORT 1 + +#define TFT_MOSI 11 +#define TFT_SCLK 10 +#define TFT_CS 9 +#define TFT_DC 8 +#define TFT_RST 12 + +//////////////////////////////////////////////////////////////////////////////////////////// +// Fonts to be available +//////////////////////////////////////////////////////////////////////////////////////////// +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + +//////////////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup10_RPi_touch_ILI9486.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup10_RPi_touch_ILI9486.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup10_RPi_touch_ILI9486.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup10_RPi_touch_ILI9486.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup11_RPi_touch_ILI9486.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup11_RPi_touch_ILI9486.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup11_RPi_touch_ILI9486.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup11_RPi_touch_ILI9486.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup12_M5Stack_Basic_Core.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup12_M5Stack_Basic_Core.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup12_M5Stack_Basic_Core.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup12_M5Stack_Basic_Core.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup135_ST7789.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup135_ST7789.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup135_ST7789.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup135_ST7789.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup136_LilyGo_TTV.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup136_LilyGo_TTV.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup136_LilyGo_TTV.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup136_LilyGo_TTV.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup137_LilyGo_TDisplay_RP2040.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup137_LilyGo_TDisplay_RP2040.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup137_LilyGo_TDisplay_RP2040.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup137_LilyGo_TDisplay_RP2040.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup138_Pico_Explorer_Base_RP2040_ST7789.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup138_Pico_Explorer_Base_RP2040_ST7789.h new file mode 100644 index 00000000..ca3bcfd5 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup138_Pico_Explorer_Base_RP2040_ST7789.h @@ -0,0 +1,32 @@ +// Pico Explorer Base by Pimoroni (RP2040) (ST7789 on SPI bus with 240x240 TFT) +#define USER_SETUP_ID 138 + +#define ST7789_DRIVER // Configure all registers + +#define TFT_WIDTH 240 +#define TFT_HEIGHT 240 + +#define CGRAM_OFFSET // Library will add offsets required + +// For Pico Explorer Base (PR2040) +#define TFT_CS 17 // Chip Select pin +#define TFT_DC 16 // Data Command control pin +#define TFT_RST -1 // No Reset pin +#define TFT_MOSI 19 +#define TFT_SCLK 18 + + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +// #define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + +#define SPI_FREQUENCY 40000000 +#define SPI_READ_FREQUENCY 20000000 +#define SPI_TOUCH_FREQUENCY 2500000 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup13_ILI9481_Parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup13_ILI9481_Parallel.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup13_ILI9481_Parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup13_ILI9481_Parallel.h index cf3e412f..f8881ea2 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup13_ILI9481_Parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup13_ILI9481_Parallel.h @@ -1,7 +1,7 @@ // See SetupX_Template.h for all options available #define USER_SETUP_ID 13 -#define ESP32_PARALLEL +#define TFT_PARALLEL_8_BIT #define ILI9481_DRIVER diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup14_ILI9341_Parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup14_ILI9341_Parallel.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup14_ILI9341_Parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup14_ILI9341_Parallel.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup15_HX8357D.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup15_HX8357D.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup15_HX8357D.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup15_HX8357D.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup16_ILI9488_Parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup16_ILI9488_Parallel.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup16_ILI9488_Parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup16_ILI9488_Parallel.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup17_ePaper.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup17_ePaper.h new file mode 100644 index 00000000..5671a151 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup17_ePaper.h @@ -0,0 +1,16 @@ +#define EPD_DRIVER // ePaper driver + +#define TFT_MISO -1 +#define TFT_MOSI -1 +#define TFT_SCLK -1 +#define TFT_RST -1 + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup18_ST7789.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup18_ST7789.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup18_ST7789.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup18_ST7789.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup19_RM68140_Parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup19_RM68140_Parallel.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup19_RM68140_Parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup19_RM68140_Parallel.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup1_ILI9341.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup1_ILI9341.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup1_ILI9341.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup1_ILI9341.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup200_GC9A01.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup200_GC9A01.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup200_GC9A01.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup200_GC9A01.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup201_WT32_SC01.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup201_WT32_SC01.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup201_WT32_SC01.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup201_WT32_SC01.h index 7f034978..08f59533 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup201_WT32_SC01.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup201_WT32_SC01.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup202_SSD1351_128.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup202_SSD1351_128.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup202_SSD1351_128.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup202_SSD1351_128.h index 793de6ca..8cbc4bfa 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup202_SSD1351_128.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup202_SSD1351_128.h @@ -28,7 +28,7 @@ #define TFT_DC 2 #define TFT_RST 4 #define TFT_CS 15 -#elif defined(ESP8266) +#elif defined (ARDUINO_ARCH_ESP8266) //#define TFT_MOSI PIN_D5 // Can't change //#define TFT_SCLK PIN_D7 // Can't change #define TFT_DC PIN_D3 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup203_ST7789.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup203_ST7789.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup203_ST7789.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup203_ST7789.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup204_ESP32_TouchDown.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup204_ESP32_TouchDown.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup204_ESP32_TouchDown.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup204_ESP32_TouchDown.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup205_ESP32_TouchDown_S3.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup205_ESP32_TouchDown_S3.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup205_ESP32_TouchDown_S3.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup205_ESP32_TouchDown_S3.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup206_LilyGo_T_Display_S3.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup206_LilyGo_T_Display_S3.h new file mode 100644 index 00000000..7a58eca6 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup206_LilyGo_T_Display_S3.h @@ -0,0 +1,47 @@ +// ST7789 using 8-bit Parallel + +#define USER_SETUP_ID 206 + +#define ST7789_DRIVER +#define INIT_SEQUENCE_3 // Using this initialisation sequence improves the display image + +#define CGRAM_OFFSET +#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +//#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +#define TFT_INVERSION_ON +// #define TFT_INVERSION_OFF + +#define TFT_PARALLEL_8_BIT + +#define TFT_WIDTH 170 +#define TFT_HEIGHT 320 + +#define TFT_CS 6 +#define TFT_DC 7 +#define TFT_RST 5 + +#define TFT_WR 8 +#define TFT_RD 9 + +#define TFT_D0 39 +#define TFT_D1 40 +#define TFT_D2 41 +#define TFT_D3 42 +#define TFT_D4 45 +#define TFT_D5 46 +#define TFT_D6 47 +#define TFT_D7 48 + +#define TFT_BL 38 +#define TFT_BACKLIGHT_ON HIGH + +#define LOAD_GLCD +#define LOAD_FONT2 +#define LOAD_FONT4 +#define LOAD_FONT6 +#define LOAD_FONT7 +#define LOAD_FONT8 +#define LOAD_GFXFF + +#define SMOOTH_FONT diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup207_LilyGo_T_HMI.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup207_LilyGo_T_HMI.h new file mode 100644 index 00000000..8606ef3d --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup207_LilyGo_T_HMI.h @@ -0,0 +1,48 @@ +// ST7789 240 x 240 display with no chip select line +#define USER_SETUP_ID 207 + +#define ST7789_DRIVER // Configure all registers + +// #define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +#define TFT_WIDTH 240 +#define TFT_HEIGHT 320 + +#define CGRAM_OFFSET +// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +// #define TFT_INVERSION_ON +#define TFT_INVERSION_OFF + +#define TFT_PARALLEL_8_BIT + +// The ESP32 and TFT the pins used for testing are: +#define TFT_CS 6 // Chip select control pin (library pulls permanently low +#define TFT_DC 7 // Data Command control pin +#define TFT_RST -1 // Reset pin, toggles on startup + +#define TFT_WR 8 // Write strobe control pin +#define TFT_RD -1 // Read strobe control pin + +#define TFT_D0 48 // Must use pins in the range 0-31 or alternatively 32-48 +#define TFT_D1 47 // so a single register write sets/clears all bits. +#define TFT_D2 39 // Pins can be randomly assigned, this does not affect +#define TFT_D3 40 // TFT screen update performance. +#define TFT_D4 41 +#define TFT_D5 42 +#define TFT_D6 45 +#define TFT_D7 46 + +#define TFT_BL 38 // LED back-light + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup209_LilyGo_T_Dongle_S3.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup209_LilyGo_T_Dongle_S3.h new file mode 100644 index 00000000..1a28a82e --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup209_LilyGo_T_Dongle_S3.h @@ -0,0 +1,52 @@ +// Config for LilyGo T-Dongle S3 w ESP32 and ST7735 80 x 160 display +#define USER_SETUP_ID 209 + +#define ST7735_DRIVER // Configure all registers + +#define TFT_WIDTH 80 +#define TFT_HEIGHT 160 + +// #define ST7735_INITB +// #define ST7735_GREENTAB +// #define ST7735_GREENTAB2 +// #define ST7735_GREENTAB3 +// #define ST7735_GREENTAB128 // For 128 x 128 display +#define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset) +// #define ST7735_REDTAB +//#define ST7735_BLACKTAB +// #define ST7735_REDTAB160x80 // For 160 x 80 display with 24 pixel offset + +//#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +//#define TFT_INVERSION_ON +//#define TFT_INVERSION_OFF + +// Generic ESP32 setup +#define TFT_MISO -1 +#define TFT_MOSI 3 +#define TFT_SCLK 5 +#define TFT_CS 4 +#define TFT_DC 2 +#define TFT_RST 1 // Connect reset to ensure display initialises + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + + +#define SPI_FREQUENCY 27000000 +//#define SPI_FREQUENCY 40000000 + +#define SPI_READ_FREQUENCY 20000000 + +#define SPI_TOUCH_FREQUENCY 2500000 + +// #define SUPPORT_TRANSACTIONS \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup20_ILI9488.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup20_ILI9488.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup20_ILI9488.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup20_ILI9488.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup210_LilyGo_T_Embed_S3.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup210_LilyGo_T_Embed_S3.h new file mode 100644 index 00000000..d3b815a0 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup210_LilyGo_T_Embed_S3.h @@ -0,0 +1,43 @@ +// ST7789 170 x 320 display with no chip select line +#define USER_SETUP_ID 210 + +#define ST7789_DRIVER // Configure all registers + +#define TFT_WIDTH 170 +#define TFT_HEIGHT 320 + +//#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +//#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +#define TFT_INVERSION_ON +//#define TFT_INVERSION_OFF +#define TFT_BACKLIGHT_ON 1 + +#define TFT_BL 15 // LED back-light +#define TFT_MISO -1 // Not connected +#define TFT_MOSI 11 +#define TFT_SCLK 12 +#define TFT_CS 10 +#define TFT_DC 13 +#define TFT_RST 9 // Connect reset to ensure display initialises + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + + +// #define SPI_FREQUENCY 27000000 +#define SPI_FREQUENCY 40000000 + +#define SPI_READ_FREQUENCY 20000000 + +#define SPI_TOUCH_FREQUENCY 2500000 + +// #define SUPPORT_TRANSACTIONS \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h new file mode 100644 index 00000000..3f41df05 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h @@ -0,0 +1,45 @@ +// GC9A01 128 x 128 display with no chip select line +#define USER_SETUP_ID 211 + +#define GC9A01_DRIVER // Configure all registers + +#define TFT_WIDTH 128 +#define TFT_HEIGHT 128 + +// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +//#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +// #define TFT_INVERSION_ON +//#define TFT_INVERSION_OFF +#define TFT_BACKLIGHT_ON 0 +#define CGRAM_OFFSET + + +#define TFT_BL 10 // LED back-light +#define TFT_MISO -1 // Not connected +#define TFT_MOSI 2 +#define TFT_SCLK 3 +#define TFT_CS 5 +#define TFT_DC 6 +#define TFT_RST 1 // Connect reset to ensure display initialises + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + + +// #define SPI_FREQUENCY 27000000 +#define SPI_FREQUENCY 40000000 + +#define SPI_READ_FREQUENCY 20000000 + +#define SPI_TOUCH_FREQUENCY 2500000 + +// #define SUPPORT_TRANSACTIONS \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup212_LilyGo_T_PicoPro.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup212_LilyGo_T_PicoPro.h new file mode 100644 index 00000000..6be1f3b7 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup212_LilyGo_T_PicoPro.h @@ -0,0 +1,45 @@ +// ST7796 222 x 480 display with no chip select line +#define USER_SETUP_ID 212 + +#define ST7796_DRIVER // Configure all registers + +#define TFT_WIDTH 222 +#define TFT_HEIGHT 480 + +#define CGRAM_OFFSET // Library will add offsets required + +// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +#define TFT_INVERSION_ON + +#define TFT_MISO 4 +#define TFT_MOSI 7 +#define TFT_SCLK 6 +#define TFT_CS 8 +#define TFT_DC 9 +#define TFT_RST 16 +#define TFT_BACKLIGHT_ON 1 +#define TFT_BL 10 + + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + + +// #define SPI_FREQUENCY 27000000 +#define SPI_FREQUENCY 40000000 + +#define SPI_READ_FREQUENCY 20000000 + +#define SPI_TOUCH_FREQUENCY 2500000 + +// #define SUPPORT_TRANSACTIONS \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup213_LilyGo_T_Beam_Shield.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup213_LilyGo_T_Beam_Shield.h new file mode 100644 index 00000000..d9ebc87d --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup213_LilyGo_T_Beam_Shield.h @@ -0,0 +1,36 @@ +// ST7796 222 x 480 display with no chip select line +#define USER_SETUP_ID 213 + +#define ST7796_DRIVER // Configure all registers + +#define TFT_WIDTH 222 +#define TFT_HEIGHT 480 + +#define CGRAM_OFFSET // Library will add offsets required + +// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +#define TFT_INVERSION_ON + +#define TFT_MISO -1 +#define TFT_MOSI 14 +#define TFT_SCLK 15 +#define TFT_CS 25 +#define TFT_DC 13 +#define TFT_RST 2 +#define TFT_BL 4 +#define TFT_BACKLIGHT_ON HIGH + + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT +#define SPI_FREQUENCY 40000000 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup21_ILI9488.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup21_ILI9488.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup21_ILI9488.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup21_ILI9488.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup22_TTGO_T4.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup22_TTGO_T4.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup22_TTGO_T4.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup22_TTGO_T4.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup22_TTGO_T4_v1.3.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup22_TTGO_T4_v1.3.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup22_TTGO_T4_v1.3.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup22_TTGO_T4_v1.3.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup23_TTGO_TM.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup23_TTGO_TM.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup23_TTGO_TM.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup23_TTGO_TM.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup24_ST7789.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup24_ST7789.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup24_ST7789.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup24_ST7789.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup250_ESP32_S3_Box_Lite.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup250_ESP32_S3_Box_Lite.h new file mode 100644 index 00000000..8a211d1a --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup250_ESP32_S3_Box_Lite.h @@ -0,0 +1,32 @@ +// Display configuration for ST7789-based ESP32-S3-Box-Lite + +#define USER_SETUP_ID 250 +#define USER_SETUP_INFO "ESP32-S3-BOX-LITE" + +#define ST7789_DRIVER +#define TFT_RGB_ORDER TFT_BGR + +#define TFT_WIDTH 240 +#define TFT_HEIGHT 320 + +#define TFT_BL 45 +#define TFT_BACKLIGHT_ON LOW + +#define TFT_CS 5 +#define TFT_DC 4 +#define TFT_RST 48 + +#define TFT_MOSI 6 +#define TFT_SCLK 7 + +#define LOAD_GLCD +#define LOAD_FONT2 +#define LOAD_FONT4 +#define LOAD_FONT6 +#define LOAD_FONT7 +#define LOAD_FONT8 +#define LOAD_GFXFF + +#define SMOOTH_FONT + +#define SPI_FREQUENCY 40000000 diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup251_ESP32_S3_Box.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup251_ESP32_S3_Box.h new file mode 100644 index 00000000..5458aaf9 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup251_ESP32_S3_Box.h @@ -0,0 +1,28 @@ +// Display configuration for ILI9342-based ESP32-S3-Box + +#define USER_SETUP_ID 251 +#define USER_SETUP_INFO "ESP32-S3-BOX" + +#define M5STACK // S3-Box uses the same ILI9342 display, don't remove + +#define ILI9341_DRIVER + +#define TFT_MISO 0 +#define TFT_MOSI 6 +#define TFT_SCLK 7 +#define TFT_CS 5 // Chip select control pin +#define TFT_DC 4 // Data Command control pin +#define TFT_RST 48 // Reset pin (could connect to Arduino RESET pin) +#define TFT_BL 45 // LED back-light + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + +#define SPI_FREQUENCY 27000000 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup25_TTGO_T_Display.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup25_TTGO_T_Display.h similarity index 96% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup25_TTGO_T_Display.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup25_TTGO_T_Display.h index e0367c5a..455c8518 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup25_TTGO_T_Display.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup25_TTGO_T_Display.h @@ -19,8 +19,6 @@ #define TFT_DC 16 #define TFT_RST 23 -#define TOUCH_CS -1 - #define TFT_BL 4 // Display backlight control pin #define TFT_BACKLIGHT_ON HIGH // HIGH or LOW are options diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup26_TTGO_T_Wristband.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup26_TTGO_T_Wristband.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup26_TTGO_T_Wristband.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup26_TTGO_T_Wristband.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup27_RPi_ST7796_ESP32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup27_RPi_ST7796_ESP32.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup27_RPi_ST7796_ESP32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup27_RPi_ST7796_ESP32.h index 8d2f54b5..ed053a41 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup27_RPi_ST7796_ESP32.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup27_RPi_ST7796_ESP32.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup28_RPi_ST7796_ESP8266.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup28_RPi_ST7796_ESP8266.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup28_RPi_ST7796_ESP8266.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup28_RPi_ST7796_ESP8266.h index 4be82743..e4ba57c6 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup28_RPi_ST7796_ESP8266.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup28_RPi_ST7796_ESP8266.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup29_ILI9341_STM32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup29_ILI9341_STM32.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup29_ILI9341_STM32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup29_ILI9341_STM32.h index bb78e8e9..61043a94 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup29_ILI9341_STM32.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup29_ILI9341_STM32.h @@ -83,7 +83,7 @@ #define SMOOTH_FONT -// Nucleo-F767ZI has a ~216MHZ CPU clock, this is divided by 4, 8, 16 etc +// Nucleo-F767ZI has a ~216MHZ CPU clock, this is divided by 4, 8, 16 etc. #define SPI_FREQUENCY 27000000 // 27MHz SPI clock //#define SPI_FREQUENCY 55000000 // 55MHz is over-clocking ILI9341 but seems to work reliably! diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup29b_ILI9341_STM32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup29b_ILI9341_STM32.h new file mode 100644 index 00000000..fac38460 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup29b_ILI9341_STM32.h @@ -0,0 +1,141 @@ + +#define STM32 + +#define NUCLEO_64_TFT +//#define TFT_INVERSION_OFF + +#define TFT_WIDTH 240 +#define TFT_HEIGHT 320 + +#define ST7789_DRIVER +#define TFT_RGB_ORDER TFT_BGR + +#define TFT_SPI_PORT 1 // SPI 1 maximum clock rate is 55MHz +#define TFT_MOSI D11 +#define TFT_MISO D12 +#define TFT_SCLK D13 + + +// Can use Ardiuno pin references, arbitrary allocation, TFT_eSPI controls chip select +#define TFT_CS D5 // Chip select control pin to TFT CS +#define TFT_DC D6 // Data Command control pin to TFT DC (may be labelled RS = Register Select) +#define TFT_RST D7 // Reset pin to TFT RST (or RESET) + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +// STM32 support for smooth fonts via program memory (FLASH) arrays +#define SMOOTH_FONT + +#define SPI_FREQUENCY 55000000 // 27MHz SPI clock +//#define SPI_FREQUENCY 55000000 // 55MHz is over-clocking ILI9341 but seems to work reliably! + +#define SPI_READ_FREQUENCY 15000000 // Reads need a slower SPI clock, probably ends up at 13.75MHz (CPU clock/16) + +// This has no effect, transactions for STM32 are automatically enabled +#define SUPPORT_TRANSACTIONS + +/* + /////////////////////////////////////////////////// + // Setup for STM32 Nucleo and ILI9341 display // + /////////////////////////////////////////////////// +#define USER_SETUP_ID 29 + +// Last update by Bodmer: 28/11/19 + +// STM32 optimised functions are not yet compatible with STM32H743 processor. +// The STM32H743 does work with the slower generic processor drivers +// +// REMINDER - Nucleo-F743ZI and Nucleo-F743ZI2 have different pin port allocations +// and require appropriate selection in IDE. ^---- Note the extra 2 in part number! + + +// Define STM32 to invoke STM32 optimised driver +#define STM32 + +// Define the TFT display driver +//#define ILI9341_DRIVER +//#define ILI9481_DRIVER +#define ST7789_DRIVER +#define TFT_RGB_ORDER TFT_BGR +// MOSI and SCK do not need to be defined, connect: +// - Arduino SCK to TFT SCK +// - Arduino MOSI to TFT SDI(may be marked SDA or MOSI) +// Typical Arduino SPI port 1 pins are (SCK=D13, MISO=D12, MOSI=D11) this is port pins PA5, PA6 and PA7 on Nucleo-F767ZI +// SPI port 2 pins are (SCK=D18, MISO=A7, MOSI=D17) this is port pins PB13, PC2 and PB15 on Nucleo-F767ZI + +//* +#define TFT_SPI_PORT 1 // SPI 1 maximum clock rate is 55MHz +#define TFT_MOSI PA7 +#define TFT_MISO PA6 +#define TFT_SCLK PA5 +//*/ + +/* +#define TFT_SPI_PORT 2 // SPI 2 maximum clock rate is 27MHz +#define TFT_MOSI D17 +#define TFT_MISO A7 +#define TFT_SCLK D18 +//*/ + +/* +#define TFT_SPI_PORT 2 // SPI 2 maximum clock rate is 27MHz +#define TFT_MOSI PB15 +#define TFT_MISO PC2 +#define TFT_SCLK PB13 +//*/ + +/* +#define TFT_SPI_PORT 2 // SPI 2 maximum clock rate is 27MHz +#define TFT_MOSI PB15 +#define TFT_MISO PB14 +#define TFT_SCLK PB13 +//*/ + +/* +// Can use Ardiuno pin references, arbitrary allocation, TFT_eSPI controls chip select +#define TFT_CS D5 // Chip select control pin to TFT CS +#define TFT_DC D6 // Data Command control pin to TFT DC (may be labelled RS = Register Select) +#define TFT_RST D7 // Reset pin to TFT RST (or RESET) + +// Alternatively, we can use STM32 port reference names PXnn +//#define TFT_CS PE11 // Nucleo-F767ZI equivalent of D5 +//#define TFT_DC PE9 // Nucleo-F767ZI equivalent of D6 +//#define TFT_RST PF13 // Nucleo-F767ZI equivalent of D7 + +//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to processor reset + // Use an Arduino pin for initial testing as connecting to processor reset + // may not work (pulse too short at power up?) + +// Chip select for XPT2046 touch controller +#define TOUCH_CS D4 + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +// STM32 support for smooth fonts via program memory (FLASH) arrays +#define SMOOTH_FONT + + +// Nucleo-F767ZI has a ~216MHZ CPU clock, this is divided by 4, 8, 16 etc. + +#define SPI_FREQUENCY 27000000 // 27MHz SPI clock +//#define SPI_FREQUENCY 55000000 // 55MHz is over-clocking ILI9341 but seems to work reliably! + +#define SPI_READ_FREQUENCY 15000000 // Reads need a slower SPI clock, probably ends up at 13.75MHz (CPU clock/16) + +#define SPI_TOUCH_FREQUENCY 2500000 // Must be very slow + +// This has no effect, transactions for STM32 are automatically enabled +#define SUPPORT_TRANSACTIONS +*/ \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup2_ST7735.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup2_ST7735.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup2_ST7735.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup2_ST7735.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup301_BW16_ST7735.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup301_BW16_ST7735.h new file mode 100644 index 00000000..75ba3fb8 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup301_BW16_ST7735.h @@ -0,0 +1,47 @@ +#include "itoa.h" +#include + + +// Setup for BW16 and ST7735 80 x 160 TFT +#define USER_SETUP_ID 301 +// See SetupX_Template.h for all options available + +#define ST7735_DRIVER + + +#define TFT_WIDTH 80 +#define TFT_HEIGHT 160 + + +#define ST7735_GREENTAB160x80 + +// For ST7735, ST7789 and ILI9341 ONLY, define the colour order IF the blue and red are swapped on your display +// Try ONE option at a time to find the correct colour order for your display + +// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +// #define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +// Pin Mappings for BW16 board +#define TFT_MISO 11 +#define TFT_MOSI 12 +#define TFT_SCLK 10 +#define TFT_CS 9 // Chip select control pin +#define TFT_DC 8 // Data Command control pin +#define TFT_RST 6 // Reset pin (could connect to RST pin) + + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + + +#define SPI_FREQUENCY 20000000 +//#define SPI_FREQUENCY 27000000 // Actually sets it to 26.67MHz = 80/3 + diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup302_Waveshare_ESP32S3_GC9A01.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup302_Waveshare_ESP32S3_GC9A01.h new file mode 100644 index 00000000..5e3127f5 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup302_Waveshare_ESP32S3_GC9A01.h @@ -0,0 +1,33 @@ +// See SetupX_Template.h for all options available +#define USER_SETUP_ID 302 + +#define GC9A01_DRIVER + +#define TFT_MISO 12 +#define TFT_MOSI 11 +#define TFT_SCLK 10 +#define TFT_CS 9 // Chip select control pin +#define TFT_DC 8 // Data Command control pin +#define TFT_RST 14 // Reset pin (could connect to RST pin) +#define TFT_BL 2 +#define TFT_BACKLIGHT_ON HIGH + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts +#define SMOOTH_FONT + +#define TFT_WIDTH 240 +#define TFT_HEIGHT 240 + +#define SPI_FREQUENCY 40000000 + +#define SPI_READ_FREQUENCY 20000000 + +#define SPI_TOUCH_FREQUENCY 2500000 + +// #define SUPPORT_TRANSACTIONS \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup30_ILI9341_Parallel_STM32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup30_ILI9341_Parallel_STM32.h similarity index 94% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup30_ILI9341_Parallel_STM32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup30_ILI9341_Parallel_STM32.h index e9a42214..5b1b26df 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup30_ILI9341_Parallel_STM32.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup30_ILI9341_Parallel_STM32.h @@ -14,7 +14,7 @@ #define NUCLEO_64_TFT //#define NUCLEO_144_TFT -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) #define TFT_PARALLEL_8_BIT // Define the display driver chip type @@ -31,7 +31,7 @@ #define TFT_WR A1 // Write strobe control pin #define TFT_RD A0 // Read pin -#define TFT_D0 D8 // 8 bit parallel bus to TFT +#define TFT_D0 D8 // 8-bit parallel bus to TFT #define TFT_D1 D9 #define TFT_D2 D2 #define TFT_D3 D3 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup31_ST7796_Parallel_STM32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup31_ST7796_Parallel_STM32.h similarity index 94% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup31_ST7796_Parallel_STM32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup31_ST7796_Parallel_STM32.h index 0063e763..0e26eaa3 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup31_ST7796_Parallel_STM32.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup31_ST7796_Parallel_STM32.h @@ -13,7 +13,7 @@ #define NUCLEO_64_TFT //#define NUCLEO_144_TFT -// Tell the library to use 8 bit parallel mode(otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode(otherwise SPI is assumed) #define TFT_PARALLEL_8_BIT // Define the display driver chip type @@ -30,7 +30,7 @@ #define TFT_WR A1 // Write strobe control pin #define TFT_RD A0 // Read pin -#define TFT_D0 D8 // 8 bit parallel bus to TFT +#define TFT_D0 D8 // 8-bit parallel bus to TFT #define TFT_D1 D9 #define TFT_D2 D2 #define TFT_D3 D3 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup32_ILI9341_STM32F103.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup32_ILI9341_STM32F103.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup32_ILI9341_STM32F103.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup32_ILI9341_STM32F103.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup33_RPi_ILI9486_STM32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup33_RPi_ILI9486_STM32.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup33_RPi_ILI9486_STM32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup33_RPi_ILI9486_STM32.h index 6def91d7..5a1a8c8b 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup33_RPi_ILI9486_STM32.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup33_RPi_ILI9486_STM32.h @@ -54,7 +54,7 @@ #define SMOOTH_FONT -// Nucleo-F767ZI has a ~216MHZ CPU clock, this is divided by 4, 8, 16 etc +// Nucleo-F767ZI has a ~216MHZ CPU clock, this is divided by 4, 8, 16 etc. #define SPI_FREQUENCY 20000000 // 27MHz SPI clock //#define SPI_FREQUENCY 55000000 // 55MHz is over-clocking ILI9341 but seems to work reliably! diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup34_ILI9481_Parallel_STM32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup34_ILI9481_Parallel_STM32.h similarity index 94% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup34_ILI9481_Parallel_STM32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup34_ILI9481_Parallel_STM32.h index 9585a4fe..467a001c 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup34_ILI9481_Parallel_STM32.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup34_ILI9481_Parallel_STM32.h @@ -12,7 +12,7 @@ #define NUCLEO_64_TFT //#define NUCLEO_144_TFT -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) #define TFT_PARALLEL_8_BIT // Define the display driver chip type @@ -29,7 +29,7 @@ #define TFT_WR A1 // Write strobe control pin #define TFT_RD A0 // Read pin -#define TFT_D0 D8 // 8 bit parallel bus to TFT +#define TFT_D0 D8 // 8-bit parallel bus to TFT #define TFT_D1 D9 #define TFT_D2 D2 #define TFT_D3 D3 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h similarity index 95% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h index eadec6ed..894948cb 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h @@ -14,7 +14,7 @@ //#define STM_PORTC_DATA_BUS // Pins below must re re-allocated to use this option //#define STM_PORTD_DATA_BUS // Pins below must re re-allocated to use this option -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) #define TFT_PARALLEL_8_BIT // Define ONE of the the TFT display drivers @@ -30,7 +30,7 @@ #define TFT_WR PB9 // Write strobe control pin #define TFT_RD PB1 // Read pin -#define TFT_D0 PA0 // 8 bit Port A parallel bus to TFT +#define TFT_D0 PA0 // 8-bit Port A parallel bus to TFT #define TFT_D1 PA1 #define TFT_D2 PA2 #define TFT_D3 PA3 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup36_RPi_touch_ST7796.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup36_RPi_touch_ST7796.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup36_RPi_touch_ST7796.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup36_RPi_touch_ST7796.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup3_ILI9163.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup3_ILI9163.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup3_ILI9163.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup3_ILI9163.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup42_ILI9341_ESP32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup42_ILI9341_ESP32.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup42_ILI9341_ESP32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup42_ILI9341_ESP32.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup43_ST7735.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup43_ST7735.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup43_ST7735.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup43_ST7735.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup44_TTGO_CameraPlus.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup44_TTGO_CameraPlus.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup44_TTGO_CameraPlus.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup44_TTGO_CameraPlus.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup45_TTGO_T_Watch.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup45_TTGO_T_Watch.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup45_TTGO_T_Watch.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup45_TTGO_T_Watch.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup46_GC9A01_ESP32.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup46_GC9A01_ESP32.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup46_GC9A01_ESP32.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup46_GC9A01_ESP32.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup47_ST7735.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup47_ST7735.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup47_ST7735.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup47_ST7735.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup4_S6D02A1.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup4_S6D02A1.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup4_S6D02A1.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup4_S6D02A1.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup50_SSD1963_Parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup50_SSD1963_Parallel.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup50_SSD1963_Parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup50_SSD1963_Parallel.h index 011fbd1d..d7265d7a 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup50_SSD1963_Parallel.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup50_SSD1963_Parallel.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup51_LilyPi_ILI9481.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup51_LilyPi_ILI9481.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup51_LilyPi_ILI9481.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup51_LilyPi_ILI9481.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup52_LilyPi_ST7796.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup52_LilyPi_ST7796.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup52_LilyPi_ST7796.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup52_LilyPi_ST7796.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup5_RPi_ILI9486.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup5_RPi_ILI9486.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup5_RPi_ILI9486.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup5_RPi_ILI9486.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup60_RP2040_ILI9341.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_ILI9341.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup60_RP2040_ILI9341.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_ILI9341.h index 49522e16..c795e0e4 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup60_RP2040_ILI9341.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_ILI9341.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. @@ -15,7 +15,7 @@ // // ################################################################################## -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) //#define TFT_PARALLEL_8_BIT // Display type - only define if RPi display diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_RPI_MHS.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_RPI_MHS.h new file mode 100644 index 00000000..804541cc --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup60_RP2040_RPI_MHS.h @@ -0,0 +1,29 @@ +#define USER_SETUP_ID 162 +#define ST7796_DRIVER + +#define MHS_DISPLAY_TYPE +//#define RP2040_PIO_SPI +#define TFT_MISO 16 +#define TFT_MOSI 19 +#define TFT_SCLK 18 +#define TFT_CS 17 // Chip select control pin +#define TFT_DC 20 // Data Command control pin +#define TFT_RST 21 // Reset pin (could connect to Arduino RESET pin) +//#define TFT_BL // LED back-light + +#define TOUCH_CS 22 // Chip select pin (T_CS) of touch screen + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + +#define SPI_FREQUENCY 125000000 +#define SPI_READ_FREQUENCY 20000000 +#define SPI_TOUCH_FREQUENCY 2500000 \ No newline at end of file diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h similarity index 99% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h index 6548062d..0e8a4a9c 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. @@ -15,7 +15,7 @@ // // ################################################################################## -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) //#define TFT_PARALLEL_8_BIT // Display type - only define if RPi display diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup66_Seeed_XIAO_Round.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup66_Seeed_XIAO_Round.h new file mode 100644 index 00000000..79df77b7 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup66_Seeed_XIAO_Round.h @@ -0,0 +1,29 @@ +#define USER_SETUP_ID 66 + +#define GC9A01_DRIVER // Full configuration option, define additional parameters below for this display + +#define TFT_RGB_ORDER TFT_RGB // Colour order Blue-Green-Red +#define TFT_HEIGHT 240 // GC9A01 240 x 240 + +#define TFT_SCLK D8 +#define TFT_MISO D9 +#define TFT_MOSI D10 +#define TFT_CS D1 // Chip select control pin +#define TFT_DC D3 // Data Command control pin +#define TFT_BL D6 +#define TFT_RST -1 // Reset pin (could connect to RST pin) + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +#define SMOOTH_FONT + +#define SPI_FREQUENCY 40000000 +#define SPI_READ_FREQUENCY 20000000 +// #define USE_HSPI_PORT diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup6_RPi_Wr_ILI9486.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup6_RPi_Wr_ILI9486.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup6_RPi_Wr_ILI9486.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup6_RPi_Wr_ILI9486.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup70_ESP32_S2_ILI9341.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70_ESP32_S2_ILI9341.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup70_ESP32_S2_ILI9341.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup70_ESP32_S2_ILI9341.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup70b_ESP32_S3_ILI9341.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70b_ESP32_S3_ILI9341.h similarity index 91% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup70b_ESP32_S3_ILI9341.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup70b_ESP32_S3_ILI9341.h index 42810718..4576ae90 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup70b_ESP32_S3_ILI9341.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70b_ESP32_S3_ILI9341.h @@ -26,7 +26,7 @@ #define SMOOTH_FONT -// FSPI port (SPI2) used unless following defined. HSPI port (SPI3) NOT TESTED YET +// FSPI (or VSPI) port (SPI2) used unless following defined. HSPI port is (SPI3) on S3. //#define USE_HSPI_PORT //#define SPI_FREQUENCY 27000000 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup70c_ESP32_C3_ILI9341.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70c_ESP32_C3_ILI9341.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup70c_ESP32_C3_ILI9341.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup70c_ESP32_C3_ILI9341.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup70d_ILI9488_S3_Parallel.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70d_ILI9488_S3_Parallel.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup70d_ILI9488_S3_Parallel.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup70d_ILI9488_S3_Parallel.h diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70f_ESP32_S2_ST7735.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70f_ESP32_S2_ST7735.h new file mode 100644 index 00000000..f0cc51df --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70f_ESP32_S2_ST7735.h @@ -0,0 +1,44 @@ +// Setup for the ESP32 S2 with ST7735 80x160 display +// See SetupX_Template.h for all options available + +#define USER_SETUP_ID 70 + +#define ST7735_DRIVER + +#define TFT_SDA_READ // Display has a bidirectional SDA pin (no MISO) + +#define TFT_WIDTH 80 +#define TFT_HEIGHT 160 + +#define ST7735_GREENTAB160x80 +//#define ST7735_REDTAB160x80 + +//#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue +#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red + +#define TFT_INVERSION_ON +// #define TFT_INVERSION_OFF + + // Typical board default pins +#define TFT_CS 10 // 10 or 34 + +#define TFT_MOSI 11 // 11 or 35 +#define TFT_SCLK 12 // 12 or 36 + +#define TFT_DC 14 +#define TFT_RST 15 + +#define LOAD_GLCD +#define LOAD_FONT2 +#define LOAD_FONT4 +#define LOAD_FONT6 +#define LOAD_FONT7 +#define LOAD_FONT8 +#define LOAD_GFXFF + +#define SMOOTH_FONT + +// FSPI port must be used for SDA reads. Do not use #define USE_HSPI_PORT + +#define SPI_FREQUENCY 27000000 +#define SPI_READ_FREQUENCY 16000000 diff --git a/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70h_ESP32_S3_GC9A01.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70h_ESP32_S3_GC9A01.h new file mode 100644 index 00000000..847a2ee7 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup70h_ESP32_S3_GC9A01.h @@ -0,0 +1,31 @@ +// Setup for the ESP32 S3 with GC9A01 display +#define USER_SETUP_ID 70 + +#define GC9A01_DRIVER + +#define TFT_WIDTH 240 +#define TFT_HEIGHT 240 + // Typical board default pins - change to match your board +#define TFT_CS 10 //34 // 10 or 34 (FSPI CS0) +#define TFT_MOSI 11 //35 // 11 or 35 (FSPI D) +#define TFT_SCLK 12 //36 // 12 or 36 (FSPI CLK) +#define TFT_MISO 13 //37 // 13 or 37 (FSPI Q) + +// Use pins in range 0-31 +#define TFT_DC 7 +#define TFT_RST 6 + +#define LOAD_GLCD +#define LOAD_FONT2 +#define LOAD_FONT4 +#define LOAD_FONT6 +#define LOAD_FONT7 +#define LOAD_FONT8 +#define LOAD_GFXFF + +#define SMOOTH_FONT + +// FSPI port (SPI2) used unless following defined +#define USE_HSPI_PORT + +#define SPI_FREQUENCY 80000000 // Maximum for ILI9341 diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup71_ESP32_S2_ST7789.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup71_ESP32_S2_ST7789.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup71_ESP32_S2_ST7789.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup71_ESP32_S2_ST7789.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup72_ESP32_ST7789_172x320.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup72_ESP32_ST7789_172x320.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup72_ESP32_ST7789_172x320.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup72_ESP32_ST7789_172x320.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup7_ST7735_128x128.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup7_ST7735_128x128.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup7_ST7735_128x128.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup7_ST7735_128x128.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup8_ILI9163_128x128.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup8_ILI9163_128x128.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup8_ILI9163_128x128.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup8_ILI9163_128x128.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/Setup9_ST7735_Overlap.h b/libraries/TFT_eSPI-2.5.43/User_Setups/Setup9_ST7735_Overlap.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/User_Setups/Setup9_ST7735_Overlap.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/Setup9_ST7735_Overlap.h diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/SetupX_Template.h b/libraries/TFT_eSPI-2.5.43/User_Setups/SetupX_Template.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/User_Setups/SetupX_Template.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/SetupX_Template.h index 4a42c840..00bf9a5d 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/SetupX_Template.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/SetupX_Template.h @@ -1,5 +1,5 @@ // USER DEFINED SETTINGS -// Set driver type, fonts to be loaded, pins used and SPI control method etc +// Set driver type, fonts to be loaded, pins used and SPI control method etc. // // See the User_Setup_Select.h file if you wish to be able to define multiple // setups and then easily select which setup file is used by the compiler. @@ -27,15 +27,15 @@ //#define NUCLEO_64_TFT //#define NUCLEO_144_TFT -// STM32 8 bit parallel only: -// If STN32 Port A or B pins 0-7 are used for 8 bit parallel data bus bits 0-7 +// STM32 8-bit parallel only: +// If STN32 Port A or B pins 0-7 are used for 8-bit parallel data bus bits 0-7 // then this will improve rendering performance by a factor of ~8x //#define STM_PORTA_DATA_BUS //#define STM_PORTB_DATA_BUS -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) //#define TFT_PARALLEL_8_BIT -//#define TFT_PARALLEL_16_BIT // **** 16 bit parallel ONLY with RP2040 processor **** +//#define TFT_PARALLEL_16_BIT // **** 16-bit parallel ONLY with RP2040 processor **** // Display type - only define if RPi display //#define RPI_DISPLAY_TYPE // 20MHz maximum SPI @@ -236,7 +236,7 @@ // ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ###### -// The library supports 8 bit parallel TFTs with the ESP32, the pin +// The library supports 8-bit parallel TFTs with the ESP32, the pin // selection below is compatible with ESP32 boards in UNO format. // Wemos D32 boards need to be modified, see diagram in Tools folder. // Only ILI9481 and ILI9341 based displays have been tested! @@ -244,7 +244,7 @@ // Parallel bus is only supported for the STM32 and ESP32 // Example below is for ESP32 Parallel interface with UNO displays -// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed) +// Tell the library to use 8-bit parallel mode (otherwise SPI is assumed) //#define TFT_PARALLEL_8_BIT // The ESP32 and TFT the pins used for testing are: diff --git a/libraries/TFT_eSPI-2.4.72/User_Setups/User_Custom_Fonts.h b/libraries/TFT_eSPI-2.5.43/User_Setups/User_Custom_Fonts.h similarity index 91% rename from libraries/TFT_eSPI-2.4.72/User_Setups/User_Custom_Fonts.h rename to libraries/TFT_eSPI-2.5.43/User_Setups/User_Custom_Fonts.h index f2dc3d35..004ac54e 100644 --- a/libraries/TFT_eSPI-2.4.72/User_Setups/User_Custom_Fonts.h +++ b/libraries/TFT_eSPI-2.5.43/User_Setups/User_Custom_Fonts.h @@ -6,7 +6,7 @@ */ // Note: At the time of writing there is a last character code definition bug in the -// Squix font file format so do NOT try and print the tilda (~) symbol (ASCII 0x7E) +// Squix font file format so do NOT try and print the tilde (~) symbol (ASCII 0x7E) // Alternatively look at the end of the font header file and edit: 0x7E to read 0x7D /* e.g. vvvv (uint8_t *)Orbitron_Light_32Bitmaps,(GFXglyph *)Orbitron_Light_32Glyphs,0x20, 0x7D, 32}; @@ -16,7 +16,7 @@ // When font files are placed in the Custom folder (TFT_eSPI\Fonts\Custom) then they must // also be #included here: -// The CF_OL24 etc are a shorthand reference, but this is not essential to use the fonts +// The CF_OL24 etc. are a shorthand reference, but this is not essential to use the fonts #ifdef LOAD_GFXFF diff --git a/libraries/TFT_eSPI-2.5.43/docs/ESP-IDF/Using ESP-IDF.txt b/libraries/TFT_eSPI-2.5.43/docs/ESP-IDF/Using ESP-IDF.txt new file mode 100644 index 00000000..a23a651c --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/docs/ESP-IDF/Using ESP-IDF.txt @@ -0,0 +1,70 @@ +The TFT_eSPI library has been updated by a user (dracir9) in pull request #1770 to enable +use with the ESP-IDF. + +https://github.com/Bodmer/TFT_eSPI/pull/1770 + +The library author (Bodmer) does not use the ESP-IDF so will not be able to provide support! + +There are two ways to configure the library either: + + manually enter the setup in menuconfig + OR + delete the KConfig file, select your LCD/board in the User_Setup_Select.h file, and run "idf.py reconfigure" + +The following menuconfig instructions were posted by dracir9 as part of the pull request #1770: + +https://github.com/Bodmer/TFT_eSPI/pull/1770#issuecomment-1096478997 + +In the above link the instructions include useful hyperlinks. The bare text of the +instructions is included below. + +Steps to use: + + 1. Install ESP-IDF toolchain. The easiest way is to use VS Code and the ESP-IDF extension + which handles most of the work automatically. Make sure to install version V4.4. From + now on I'll assume that VS Code is being used. + + 2. Once ESP-IDF is installed open VS Code and press F1. Type ESP-IDF: New Project. Hit enter. + + 3. Enter your project name, directory and board (if not sure choose ESP32 chip (via ESP-PROG)). + If your board is connected choose serial port. Leave ESP-IDF component directory blank and + press Choose Template. + + 4. In the drop-down choose Extension and select Arduino-as-component. (This is not mandatory. + You can try other templates if you want). This will create a blank project with a simple + main source file in the "main" folder. + + 5. Now we have to add Arduino to your project. You can find the complete documentation here: + https://github.com/espressif/arduino-esp32 + + and here: + https://docs.espressif.com/projects/arduino-esp32/en/latest/esp-idf_component.html + + I'll list two methods that I use most of the time: + + 5.1. Press F1 and type ESP-IDF: Add Arduino ESP32 as ESP-IDF Component. This will + automatically download and install the latest code from the arduino esp-32 repository. + This is the easiest method but as it uses the latest code it may introduce compilation errors. + + 5.2. Go to the Arduino esp-32 repository release page. Choose a version and find its "Assets" + section. Download the source code file into "project directory/components". Extract the + compressed file. This will create a folder called arduino-esp32-2.x.x. Rename it to arduino. + This method is slightly more complex but ensures you choose a stable version. + + 6. Download the TFT_eSPI library into the components folder + + 7. Now open VS Code and load your project folder. Press F1 and type ESP-IDF: SDK Configuration + editor (menuconfig). Alternatively press Ctrl+E, G or press the gear button in the bottom left + corner. + + 8. This will open the project configuration menu. Navigate to the TFT_eSPI section and configure + the library (TFT driver, pins, fonts, etc.). + + 9. Press F1 and type ESP-IDF: Build your project. Alternatively press Ctrl+E, B or click the + build button in the bottom left corner. + + 10. Choose your port by typing ESP-IDF: Select port to use or with the button in the bottom left. + + 11. Upload your code with the lightning button in the bottom toolbar. + + 12. Enjoy! diff --git a/libraries/TFT_eSPI-2.4.72/docs/ESP32 UNO board mod/ESP32 UNO board mod.jpg b/libraries/TFT_eSPI-2.5.43/docs/ESP32 UNO board mod/ESP32 UNO board mod.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/docs/ESP32 UNO board mod/ESP32 UNO board mod.jpg rename to libraries/TFT_eSPI-2.5.43/docs/ESP32 UNO board mod/ESP32 UNO board mod.jpg diff --git a/libraries/TFT_eSPI-2.4.72/docs/ESP32 UNO board mod/ESP32 UNO board pinout.jpg b/libraries/TFT_eSPI-2.5.43/docs/ESP32 UNO board mod/ESP32 UNO board pinout.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/docs/ESP32 UNO board mod/ESP32 UNO board pinout.jpg rename to libraries/TFT_eSPI-2.5.43/docs/ESP32 UNO board mod/ESP32 UNO board pinout.jpg diff --git a/libraries/TFT_eSPI-2.4.72/docs/PlatformIO/Configuring options.txt b/libraries/TFT_eSPI-2.5.43/docs/PlatformIO/Configuring options.txt similarity index 96% rename from libraries/TFT_eSPI-2.4.72/docs/PlatformIO/Configuring options.txt rename to libraries/TFT_eSPI-2.5.43/docs/PlatformIO/Configuring options.txt index c80259fd..26caeacd 100644 --- a/libraries/TFT_eSPI-2.4.72/docs/PlatformIO/Configuring options.txt +++ b/libraries/TFT_eSPI-2.5.43/docs/PlatformIO/Configuring options.txt @@ -29,7 +29,7 @@ build_flags = -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG -DUSER_SETUP_LOADED=1 - ; Define the TFT driver, pins etc here: + ; Define the TFT driver, pins etc. here: -DST7789_DRIVER=1 -DTFT_WIDTH=128 -DTFT_HEIGHT=160 diff --git a/libraries/TFT_eSPI-2.5.43/docs/PlatformIO/rp2040.txt b/libraries/TFT_eSPI-2.5.43/docs/PlatformIO/rp2040.txt new file mode 100644 index 00000000..f4208bd5 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/docs/PlatformIO/rp2040.txt @@ -0,0 +1,63 @@ +;PlatformIO User notes: + +;It is possible to load settings from the calling program rather than modifying +;the library for each project by modifying the "platformio.ini" file. + +;The User_Setup_Select.h file will not load the user setting header files if +;USER_SETUP_LOADED is defined. + +;Instead of using #define, use the -D prefix, for example: + +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter, extra scripting +; Upload options: custom port, speed and extra flags +; Library options: dependencies, extra library storages +; +; Please visit documentation for the other options and examples +; http://docs.platformio.org/page/projectconf.html + +[env:pico] +platform = https://github.com/maxgerhardt/platform-raspberrypi.git +board = pico +framework = arduino +board_build.core = earlephilhower +board_build.filesystem_size = 0.5m +lib_deps = bodmer/TFT_eSPI@^2.5.21 +; change microcontroller +board_build.mcu = rp2040 + +; change MCU frequency +board_build.f_cpu = 133000000L + +build_flags = + -Os + -DUSER_SETUP_LOADED=1 + ; Define the TFT driver, pins etc. here: + -DTFT_PARALLEL_8_BIT=1 + -DRM68120_DRIVER=1 + -DRP2040_PIO_CLK_DIV=1 + -DTFT_DC=28 + -DTFT_WR=22 + -DTFT_RST=2 + + -DTFT_D0=6 + -DTFT_D1=7 + -DTFT_D2=8 + -DTFT_D3=9 + -DTFT_D4=10 + -DTFT_D5=11 + -DTFT_D6=12 + -DTFT_D7=13 + + -DTFT_BL=16 + -DTFT_BACKLIGHT_ON=HIGH + + -DLOAD_GLCD=1 + -DLOAD_FONT2=1 + -DLOAD_FONT4=1 + -DLOAD_FONT6=1 + -DLOAD_FONT7=1 + -DLOAD_FONT8=1 + -DLOAD_GFXFF=1 + -DSMOOTH_FONT=1 diff --git a/libraries/TFT_eSPI-2.4.72/docs/RPi_TFT_connections/RPi_TFT_Connections.png b/libraries/TFT_eSPI-2.5.43/docs/RPi_TFT_connections/RPi_TFT_Connections.png similarity index 100% rename from libraries/TFT_eSPI-2.4.72/docs/RPi_TFT_connections/RPi_TFT_Connections.png rename to libraries/TFT_eSPI-2.5.43/docs/RPi_TFT_connections/RPi_TFT_Connections.png diff --git a/libraries/TFT_eSPI-2.4.72/docs/RPi_TFT_connections/RPi_TFT_mod.png b/libraries/TFT_eSPI-2.5.43/docs/RPi_TFT_connections/RPi_TFT_mod.png similarity index 100% rename from libraries/TFT_eSPI-2.4.72/docs/RPi_TFT_connections/RPi_TFT_mod.png rename to libraries/TFT_eSPI-2.5.43/docs/RPi_TFT_connections/RPi_TFT_mod.png diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/Arduino_Life/Arduino_Life.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/Arduino_Life/Arduino_Life.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/Arduino_Life/Arduino_Life.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/Arduino_Life/Arduino_Life.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/Pong_v3/Pong_v3.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/Pong_v3/Pong_v3.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/Pong_v3/Pong_v3.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/Pong_v3/Pong_v3.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/RLE_Font_test/RLE_Font_test.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/RLE_Font_test/RLE_Font_test.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/RLE_Font_test/RLE_Font_test.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/RLE_Font_test/RLE_Font_test.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Char_times/TFT_Char_times.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Char_times/TFT_Char_times.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Char_times/TFT_Char_times.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Char_times/TFT_Char_times.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Clock/TFT_Clock.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Clock/TFT_Clock.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Clock/TFT_Clock.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Clock/TFT_Clock.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Clock_Digital/TFT_Clock_Digital.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Clock_Digital/TFT_Clock_Digital.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Clock_Digital/TFT_Clock_Digital.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Clock_Digital/TFT_Clock_Digital.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino similarity index 91% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino index 1e8b86c3..f28bab94 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino @@ -20,7 +20,7 @@ void loop() { tft.fillScreen(TFT_BLACK); - // Draw some random filled elipses + // Draw some random filled ellipses for (int i = 0; i < 20; i++) { int rx = random(40); @@ -33,7 +33,7 @@ void loop() { delay(2000); tft.fillScreen(TFT_BLACK); - // Draw some random outline elipses + // Draw some random outline ellipses for (int i = 0; i < 20; i++) { int rx = random(40); diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino index 1f9c8eb3..0d4541ae 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino @@ -73,7 +73,7 @@ void analogMeter() // Long scale tick length int tl = 15; - // Coodinates of tick to draw + // Coordinates of tick to draw float sx = cos((i - 90) * 0.0174532925); float sy = sin((i - 90) * 0.0174532925); uint16_t x0 = sx * (M_SIZE*100 + tl) + M_SIZE*120; diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino index 8563c0d3..f6974587 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino @@ -1,5 +1,5 @@ /* - Test the tft.print() viz embedded tft.write() function + Test the tft.print() viz. embedded tft.write() function This sketch used font 2, 4, 7 diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino index ce2bb161..3ac49770 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino @@ -96,7 +96,7 @@ void loop() { // The new larger fonts do not use the .setCursor call, coords are embedded tft.setTextColor(TFT_BLACK, TFT_BLACK); // Do not plot the background colour - // Overlay the black text on top of the rainbow plot (the advantage of not drawing the backgorund colour!) + // Overlay the black text on top of the rainbow plot (the advantage of not drawing the background colour!) tft.drawCentreString("Font size 2", 80, 14, 2); // Draw text centre at position 80, 12 using font 2 //tft.drawCentreString("Font size 2",81,12,2); // Draw text centre at position 80, 12 using font 2 diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino index 7179945d..d4482d61 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino @@ -1,7 +1,7 @@ // Sketch to display images on a 160 x 128 TFT // Renders images stored in an array in program (FLASH) -// The JPEG images are stored in header files (see jpeg1.h etc) +// The JPEG images are stored in header files (see jpeg1.h etc.) // As well as the TFT_eSPI library: // https://github.com/Bodmer/TFT_eSPI @@ -95,7 +95,7 @@ void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int // fit totally on the screen are cropped to the nearest MCU size and may leave right/bottom borders. void renderJPEG(int xpos, int ypos) { - // retrieve infomration about the image + // retrieve information about the image uint16_t *pImg; uint16_t mcu_w = JpegDec.MCUWidth; uint16_t mcu_h = JpegDec.MCUHeight; @@ -193,7 +193,7 @@ void jpegInfo() { // Show the execution time (optional) //#################################################################################################### // WARNING: for UNO/AVR legacy reasons printing text to the screen with the Mega might not work for -// sketch sizes greater than ~70KBytes because 16 bit address pointers are used in some libraries. +// sketch sizes greater than ~70KBytes because 16-bit address pointers are used in some libraries. // The Due will work fine with the HX8357_Due library. diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg1.h b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg1.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg1.h rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg1.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg2.h b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg2.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg2.h rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg2.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg3.h b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg3.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg3.h rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg3.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg4.h b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg4.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_flash_jpg/jpeg4.h rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_flash_jpg/jpeg4.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_graphicstest_PDQ3/TFT_graphicstest_PDQ3.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_graphicstest_PDQ3/TFT_graphicstest_PDQ3.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_graphicstest_PDQ3/TFT_graphicstest_PDQ3.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_graphicstest_PDQ3/TFT_graphicstest_PDQ3.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_graphicstest_small/TFT_graphicstest_small.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_graphicstest_small/TFT_graphicstest_small.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/TFT_graphicstest_small/TFT_graphicstest_small.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/TFT_graphicstest_small/TFT_graphicstest_small.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/160 x 128/UTFT_demo_fast/UTFT_demo_fast.ino b/libraries/TFT_eSPI-2.5.43/examples/160 x 128/UTFT_demo_fast/UTFT_demo_fast.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/160 x 128/UTFT_demo_fast/UTFT_demo_fast.ino rename to libraries/TFT_eSPI-2.5.43/examples/160 x 128/UTFT_demo_fast/UTFT_demo_fast.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino index dbbd6d45..7bb38589 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino @@ -376,7 +376,7 @@ void loop() { } // There follows a crude way of flagging that this example sketch needs fonts which -// have not been enbabled in the User_Setup.h file inside the TFT_HX8357 library. +// have not been enabled in the User_Setup.h file inside the TFT_HX8357 library. // // These lines produce errors during compile time if settings in User_Setup are not correct // diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/All_Free_Fonts_Demo/Free_Fonts.h b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/All_Free_Fonts_Demo/Free_Fonts.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/All_Free_Fonts_Demo/Free_Fonts.h rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/All_Free_Fonts_Demo/Free_Fonts.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Cellular_Automata/Cellular_Automata.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Cellular_Automata/Cellular_Automata.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/Cellular_Automata/Cellular_Automata.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/Cellular_Automata/Cellular_Automata.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino index 2a4c63af..c0c3c083 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino @@ -280,7 +280,7 @@ void drawDatumMarker(int x, int y) // There follows a crude way of flagging that this example sketch needs fonts which -// have not been enbabled in the User_Setup.h file inside the TFT_HX8357 library. +// have not been enabled in the User_Setup.h file inside the TFT_HX8357 library. // // These lines produce errors during compile time if settings in User_Setup are not correct // diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Free_Font_Demo/Free_Fonts.h b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Free_Font_Demo/Free_Fonts.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/Free_Font_Demo/Free_Fonts.h rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/Free_Font_Demo/Free_Fonts.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino index e38e6f4a..0866844c 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino @@ -3,8 +3,8 @@ button handling class, this sketch is based on the Arduin-o-phone example. - This example diplays a keypad where numbers can be entered and - send to the Serial Monitor window. + This example displays a keypad where numbers can be entered and + sent to the Serial Monitor window. The sketch has been tested on the ESP8266 (which supports SPIFFS) @@ -164,7 +164,7 @@ void loop(void) { // Update the number display field tft.setTextDatum(TL_DATUM); // Use top left corner as text coord datum - tft.setFreeFont(&FreeSans18pt7b); // Choose a nicefont that fits box + tft.setFreeFont(&FreeSans18pt7b); // Choose a nice font that fits box tft.setTextColor(DISP_TCOLOR); // Set the font colour // Draw the string, the value returned is the width in pixels @@ -209,7 +209,7 @@ void touch_calibrate() // check file system exists if (!SPIFFS.begin()) { - Serial.println("Formating file system"); + Serial.println("formatting file system"); SPIFFS.format(); SPIFFS.begin(); } diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/RLE_Font_test/RLE_Font_test.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/RLE_Font_test/RLE_Font_test.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/RLE_Font_test/RLE_Font_test.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/RLE_Font_test/RLE_Font_test.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino index 599d3546..51f4ea2f 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino @@ -11,7 +11,7 @@ // Change the pin settings to suit your hardware -// UNO etc +// UNO etc. //#define TFT_MOSI 11 //#define TFT_SCK 13 //#define TFT_CS 9 @@ -116,7 +116,7 @@ void setup() { uint32_t ID = 0; Serial.begin(115200); - delay(4000); // Delay to allow USB to connect to a Leonardo etc + delay(4000); // Delay to allow USB to connect to a Leonardo etc. Serial.println("TFT driver register values:"); Serial.println("==========================="); diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino similarity index 94% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino index 4ad06caf..cfeeab02 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino @@ -11,7 +11,7 @@ TFT_eSPI tft = TFT_eSPI(); // Invoke custom library byte inc = 0; unsigned int col = 0; -byte red = 31; // Red is the top 5 bits of a 16 bit colour value +byte red = 31; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits byte state = 0; @@ -56,7 +56,7 @@ void loop() { // rx = x axis outer radius // ry = y axis outer radius // w = width (thickness) of arc in pixels -// colour = 16 bit colour value +// colour = 16-bit colour value // Note if rx and ry are the same then an arc of a circle is drawn void fillArc(int x, int y, int start_angle, int seg_count, int rx, int ry, int w, unsigned int colour) @@ -87,7 +87,7 @@ void fillArc(int x, int y, int start_angle, int seg_count, int rx, int ry, int w tft.fillTriangle(x0, y0, x1, y1, x2, y2, colour); tft.fillTriangle(x1, y1, x2, y2, x3, y3, colour); - // Copy segment end to sgement start for next segment + // Copy segment end to segment start for next segment x0 = x2; y0 = y2; x1 = x3; @@ -96,7 +96,7 @@ void fillArc(int x, int y, int start_angle, int seg_count, int rx, int ry, int w } // ######################################################################### -// Return the 16 bit colour with brightness 0-100% +// Return the 16-bit colour with brightness 0-100% // ######################################################################### unsigned int brightness(unsigned int colour, int brightness) { @@ -112,7 +112,7 @@ unsigned int brightness(unsigned int colour, int brightness) } // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow(byte value) { diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Char_times/TFT_Char_times.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Char_times/TFT_Char_times.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Char_times/TFT_Char_times.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Char_times/TFT_Char_times.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Clock/TFT_Clock.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Clock/TFT_Clock.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Clock/TFT_Clock.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Clock/TFT_Clock.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Clock_Digital/TFT_Clock_Digital.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Clock_Digital/TFT_Clock_Digital.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Clock_Digital/TFT_Clock_Digital.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Clock_Digital/TFT_Clock_Digital.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino index 6485e755..b6051234 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino @@ -19,7 +19,7 @@ ######################################################################### */ -// Note the the tilda symbol ~ does not exist in some fonts at the moment +// Note the the tilde symbol ~ does not exist in some fonts at the moment #define TEXT "abc MWy 123 |" // Text that will be printed on screen in any font #include "SPI.h" diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Ellipse/TFT_Ellipse.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Ellipse/TFT_Ellipse.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Ellipse/TFT_Ellipse.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Ellipse/TFT_Ellipse.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino similarity index 95% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino index 83b8f609..9ea0d7cb 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino @@ -13,7 +13,7 @@ int segment = 0; unsigned int col = 0; int delta = -1; - byte red = 31; // Red is the top 5 bits of a 16 bit colour value + byte red = 31; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits byte state = 0; @@ -48,7 +48,7 @@ void loop() { // rx = x axis radius // yx = y axis radius // w = width (thickness) of arc in pixels -// colour = 16 bit colour value +// colour = 16-bit colour value // Note if rx and ry are the same an arc of a circle is drawn void fillArc(int x, int y, int start_angle, int seg_count, int rx, int ry, int w, unsigned int colour) @@ -82,7 +82,7 @@ void fillArc(int x, int y, int start_angle, int seg_count, int rx, int ry, int w } // ######################################################################### -// Return a 16 bit colour with brightness 0 - 100% +// Return a 16-bit colour with brightness 0 - 100% // ######################################################################### unsigned int brightness(unsigned int colour, int brightness) { @@ -98,7 +98,7 @@ unsigned int brightness(unsigned int colour, int brightness) } // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow(byte value) { diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Float_Test/TFT_Float_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Float_Test/TFT_Float_Test.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Float_Test/TFT_Float_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Float_Test/TFT_Float_Test.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino index 2a04556b..c4911922 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino @@ -62,7 +62,7 @@ unsigned int rainbow(int value) // Value is expected to be in range 0-127 // The value is converted to a spectrum colour from 0 = blue through to red = blue - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Matrix/TFT_Matrix.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Matrix/TFT_Matrix.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Matrix/TFT_Matrix.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Matrix/TFT_Matrix.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino index 9d624855..aa9521da 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino @@ -47,7 +47,7 @@ void setup(void) { void loop() { if (updateTime <= millis()) { - updateTime = millis() + 35; // Update emter every 35 milliseconds + updateTime = millis() + 35; // Update meter every 35 milliseconds // Create a Sine wave for testing d += 4; if (d >= 360) d = 0; @@ -75,7 +75,7 @@ void analogMeter() // Long scale tick length int tl = 15; - // Coodinates of tick to draw + // Coordinates of tick to draw float sx = cos((i - 90) * 0.0174532925); float sy = sin((i - 90) * 0.0174532925); uint16_t x0 = sx * (M_SIZE*100 + tl) + M_SIZE*120; @@ -175,7 +175,7 @@ void plotNeedle(int value, byte ms_delay) if (ms_delay == 0) old_analog = value; // Update immediately if delay is 0 float sdeg = map(old_analog, -10, 110, -150, -30); // Map value to angle - // Calcualte tip of needle coords + // Calculate tip of needle coords float sx = cos(sdeg * 0.0174532925); float sy = sin(sdeg * 0.0174532925); diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Meters/TFT_Meters.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Meters/TFT_Meters.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Meters/TFT_Meters.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Meters/TFT_Meters.ino index 419b1f5c..094f476e 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Meters/TFT_Meters.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Meters/TFT_Meters.ino @@ -95,7 +95,7 @@ void analogMeter() // Long scale tick length int tl = 15; - // Coodinates of tick to draw + // Coordinates of tick to draw float sx = cos((i - 90) * 0.0174532925); float sy = sin((i - 90) * 0.0174532925); uint16_t x0 = sx * (100 + tl) + 120; @@ -195,7 +195,7 @@ void plotNeedle(int value, byte ms_delay) if (ms_delay == 0) old_analog = value; // Update immediately id delay is 0 float sdeg = map(old_analog, -10, 110, -150, -30); // Map value to angle - // Calcualte tip of needle coords + // Calculate tip of needle coords float sx = cos(sdeg * 0.0174532925); float sy = sin(sdeg * 0.0174532925); diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino similarity index 93% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino index b2390494..cd4fdb2c 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino @@ -44,7 +44,7 @@ void loop() { // start_angle = 0 - 359 // sub_angle = 0 - 360 = subtended angle // r = radius -// colour = 16 bit colour value +// colour = 16-bit colour value int fillSegment(int x, int y, int start_angle, int sub_angle, int r, unsigned int colour) { @@ -63,7 +63,7 @@ int fillSegment(int x, int y, int start_angle, int sub_angle, int r, unsigned in tft.fillTriangle(x1, y1, x2, y2, x, y, colour); - // Copy segment end to sgement start for next segment + // Copy segment end to segment start for next segment x1 = x2; y1 = y2; } @@ -71,7 +71,7 @@ int fillSegment(int x, int y, int start_angle, int sub_angle, int r, unsigned in // ######################################################################### -// Return the 16 bit colour with brightness 0-100% +// Return the 16-bit colour with brightness 0-100% // ######################################################################### unsigned int brightness(unsigned int colour, int brightness) { diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Pong/TFT_Pong.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Pong/TFT_Pong.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Pong/TFT_Pong.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Pong/TFT_Pong.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino index 9caecbb1..03af064d 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino @@ -1,5 +1,5 @@ /* - Test the tft.print() viz embedded tft.write() function + Test the tft.print() viz. embedded tft.write() function This sketch used font 2, 4, 7 diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino index 88180fd3..55cc3656 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino @@ -53,7 +53,7 @@ void loop() { // The new larger fonts do not need to use the .setCursor call, coords are embedded tft.setTextColor(TFT_BLACK); // Do not plot the background colour - // Overlay the black text on top of the rainbow plot (the advantage of not drawing the backgorund colour!) + // Overlay the black text on top of the rainbow plot (the advantage of not drawing the background colour!) tft.drawCentreString("Font size 2", 120, 14, 2); // Draw text centre at position 120, 14 using font 2 tft.drawCentreString("Font size 4", 120, 30, 4); // Draw text centre at position 120, 30 using font 4 tft.drawCentreString("12.34", 120, 54, 6); // Draw text centre at position 120, 54 using font 6 @@ -98,7 +98,7 @@ void loop() { // Fill screen with a rainbow pattern void rainbow_fill() { - // The colours and state are not initialised so the start colour changes each time the funtion is called + // The colours and state are not initialised so the start colour changes each time the function is called for (int i = 319; i > 0; i--) { // Draw a vertical line 1 pixel wide in the selected colour diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino similarity index 96% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino index d622e44e..4a433d6c 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino @@ -56,7 +56,7 @@ void loop() { printSubset(); // Print a useful subset of the readable registers - readTest(); // Test 8, 16 and 32 bit reads and index on the ID register + readTest(); // Test 8, 16 and 32-bit reads and index on the ID register //printRange32(0x00, 0xFF); // Print a range of registers (32 bits, index = 0) @@ -70,8 +70,8 @@ void loop() { void readTest(void) { - Serial.println(); Serial.println("Test 8, 16 and 32 bit reads and the index..."); - // Test 8, 16 and 32 bit reads and index + Serial.println(); Serial.println("Test 8, 16 and 32-bit reads and the index..."); + // Test 8, 16 and 32-bit reads and index // Note at index 0 the register values are typically undefined (Bxxxxxxxx) Serial.println(tft.readcommand8(ILI9341_RDID4, 2), HEX); Serial.println(tft.readcommand16(ILI9341_RDID4, 2), HEX); diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino similarity index 95% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino index 3e7f8d7d..fddf0af5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino @@ -1,5 +1,5 @@ // Spiro -// Rainbow patern generator +// Rainbow pattern generator #include // Hardware-specific library #include @@ -67,7 +67,7 @@ unsigned int rainbow(int value) // Value is expected to be in range 0-127 // The value is converted to a spectrum colour from 0 = blue through to red = blue //int value = random (128); - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino similarity index 93% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino index 1e721979..f8891f2c 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino @@ -59,7 +59,7 @@ void loop() int old_screen_x = ((int)sx[i] - 160) * 256 / sz[i] + 160; int old_screen_y = ((int)sy[i] - 120) * 256 / sz[i] + 120; - // This is a faster pixel drawing function for occassions where many single pixels must be drawn + // This is a faster pixel drawing function for occasions where many single pixels must be drawn tft.drawPixel(old_screen_x, old_screen_y,TFT_BLACK); sz[i] -= 2; @@ -82,7 +82,7 @@ void loop() unsigned long t1 = micros(); //static char timeMicros[8] = {}; - // Calcualte frames per second + // Calculate frames per second Serial.println(1.0/((t1 - t0)/1000000.0)); } diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_String_Align/TFT_String_Align.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_String_Align/TFT_String_Align.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_String_Align/TFT_String_Align.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_String_Align/TFT_String_Align.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino index 27fb4f16..bd6b69ea 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino @@ -7,7 +7,7 @@ Connect GND to target board GND Connect RX line to TX line of target board Make sure the target and terminal have the same baud rate - and serial stettings! + and serial settings! The sketch works with the ILI9341 TFT 240x320 display and the called up libraries. diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_graphicstest_PDQ/TFT_graphicstest_PDQ.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_graphicstest_PDQ/TFT_graphicstest_PDQ.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_graphicstest_PDQ/TFT_graphicstest_PDQ.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_graphicstest_PDQ/TFT_graphicstest_PDQ.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/320 x 240/UTFT_demo/UTFT_demo.ino b/libraries/TFT_eSPI-2.5.43/examples/320 x 240/UTFT_demo/UTFT_demo.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/320 x 240/UTFT_demo/UTFT_demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/320 x 240/UTFT_demo/UTFT_demo.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Cellular_Automata/Cellular_Automata.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Cellular_Automata/Cellular_Automata.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Cellular_Automata/Cellular_Automata.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Cellular_Automata/Cellular_Automata.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Demo_3D_cube/Demo_3D_cube.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Demo_3D_cube/Demo_3D_cube.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Demo_3D_cube/Demo_3D_cube.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Demo_3D_cube/Demo_3D_cube.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino index 50c09c13..569d4844 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino @@ -249,7 +249,7 @@ void drawDatum(int x, int y) // There follows a crude way of flagging that this example sketch needs fonts which -// have not been enbabled in the User_Setup.h file inside the TFT_HX8357 library. +// have not been enabled in the User_Setup.h file inside the TFT_HX8357 library. // // These lines produce errors during compile time if settings in User_Setup are not correct // diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Free_Font_Demo/Free_Fonts.h b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Free_Font_Demo/Free_Fonts.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Free_Font_Demo/Free_Fonts.h rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Free_Font_Demo/Free_Fonts.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Graph_2/Graph_2.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Graph_2/Graph_2.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Graph_2/Graph_2.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Graph_2/Graph_2.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino index 9614d6a7..b2844aaa 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino @@ -3,8 +3,8 @@ button handling class, this sketch is based on the Arduin-o-phone example. - This example diplays a keypad where numbers can be entered and - send to the Serial Monitor window. + This example displays a keypad where numbers can be entered and + sent to the Serial Monitor window. The sketch has been tested on the ESP8266 (which supports SPIFFS) @@ -167,7 +167,7 @@ void loop(void) { // Update the number display field tft.setTextDatum(TL_DATUM); // Use top left corner as text coord datum - tft.setFreeFont(&FreeSans18pt7b); // Choose a nicefont that fits box + tft.setFreeFont(&FreeSans18pt7b); // Choose a nice font that fits box tft.setTextColor(DISP_TCOLOR); // Set the font colour // Draw the string, the value returned is the width in pixels @@ -212,7 +212,7 @@ void touch_calibrate() // check file system exists if (!SPIFFS.begin()) { - Serial.println("Formating file system"); + Serial.println("formatting file system"); SPIFFS.format(); SPIFFS.begin(); } diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Char_times/TFT_Char_times.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Char_times/TFT_Char_times.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Char_times/TFT_Char_times.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Char_times/TFT_Char_times.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Ellipse/TFT_Ellipse.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Ellipse/TFT_Ellipse.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Ellipse/TFT_Ellipse.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Ellipse/TFT_Ellipse.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino index 11d00d21..77a82cb5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino @@ -49,7 +49,7 @@ void setup(void) { void loop() { if (updateTime <= millis()) { - updateTime = millis() + 35; // Update emter every 35 milliseconds + updateTime = millis() + 35; // Update meter every 35 milliseconds // Create a Sine wave for testing d += 4; if (d >= 360) d = 0; @@ -77,7 +77,7 @@ void analogMeter() // Long scale tick length int tl = 15; - // Coodinates of tick to draw + // Coordinates of tick to draw float sx = cos((i - 90) * 0.0174532925); float sy = sin((i - 90) * 0.0174532925); uint16_t x0 = sx * (M_SIZE*100 + tl) + M_SIZE*120; @@ -177,7 +177,7 @@ void plotNeedle(int value, byte ms_delay) if (ms_delay == 0) old_analog = value; // Update immediately if delay is 0 float sdeg = map(old_analog, -10, 110, -150, -30); // Map value to angle - // Calcualte tip of needle coords + // Calculate tip of needle coords float sx = cos(sdeg * 0.0174532925); float sy = sin(sdeg * 0.0174532925); diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Meters/TFT_Meters.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Meters/TFT_Meters.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Meters/TFT_Meters.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Meters/TFT_Meters.ino index 339fc329..007e9548 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Meters/TFT_Meters.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Meters/TFT_Meters.ino @@ -97,7 +97,7 @@ void analogMeter() // Long scale tick length int tl = 15; - // Coodinates of tick to draw + // Coordinates of tick to draw float sx = cos((i - 90) * 0.0174532925); float sy = sin((i - 90) * 0.0174532925); uint16_t x0 = sx * (100 + tl) + 120; @@ -197,7 +197,7 @@ void plotNeedle(int value, byte ms_delay) if (ms_delay == 0) old_analog = value; // Update immediately id delay is 0 float sdeg = map(old_analog, -10, 110, -150, -30); // Map value to angle - // Calcualte tip of needle coords + // Calculate tip of needle coords float sx = cos(sdeg * 0.0174532925); float sy = sin(sdeg * 0.0174532925); diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Padding_demo/TFT_Padding_demo.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Padding_demo/TFT_Padding_demo.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Padding_demo/TFT_Padding_demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Padding_demo/TFT_Padding_demo.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino index 14f75b32..f1ee3f99 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino @@ -1,5 +1,5 @@ /* - Test the tft.print() viz the libraries embedded write() function + Test the tft.print() viz. the libraries embedded write() function This sketch used font 2, 4, 7 diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino index a2e1aa1c..e1d5f4c3 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino @@ -50,7 +50,7 @@ void loop() { // The new larger fonts do not need to use the .setCursor call, coords are embedded tft.setTextColor(TFT_BLACK); // Do not plot the background colour - // Overlay the black text on top of the rainbow plot (the advantage of not drawing the backgorund colour!) + // Overlay the black text on top of the rainbow plot (the advantage of not drawing the background colour!) tft.drawCentreString("Font size 2", 160, 14, 2); // Draw text centre at position 120, 14 using font 2 tft.drawCentreString("Font size 4", 160, 30, 4); // Draw text centre at position 120, 30 using font 4 tft.drawCentreString("12.34", 160, 54, 6); // Draw text centre at position 120, 54 using font 6 @@ -100,7 +100,7 @@ void loop() { // Fill screen with a rainbow pattern void rainbow_fill() { - // The colours and state are not initialised so the start colour changes each time the funtion is called + // The colours and state are not initialised so the start colour changes each time the function is called for (int i = 479; i > 0; i--) { // Draw a vertical line 1 pixel wide in the selected colour diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_String_Align/TFT_String_Align.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_String_Align/TFT_String_Align.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_String_Align/TFT_String_Align.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_String_Align/TFT_String_Align.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino index f8ebcb14..c00611b4 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino @@ -1,8 +1,8 @@ // Sketch to display images on a 480 x 320 ILI9486 Raspberry Pi 3.5" TFT (Waveshare design) -// which has a 16 bit serial interface based on 74HC04, 74HC4040 and 2 x 74HC4094 logic chips +// which has a 16-bit serial interface based on 74HC04, 74HC4040 and 2 x 74HC4094 logic chips // Renders images stored in an array in program (FLASH)JPEG images are stored in header files -// (see jpeg1.h etc) +// (see jpeg1.h etc.) // The sketch does not need the SD or sdFat libraries since it does not access an SD Card. @@ -108,7 +108,7 @@ void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int // fit totally on the screen are cropped to the nearest MCU size and may leave right/bottom borders. void renderJPEG(int xpos, int ypos) { - // retrieve infomration about the image + // retrieve information about the image uint16_t *pImg; uint16_t mcu_w = JpegDec.MCUWidth; uint16_t mcu_h = JpegDec.MCUHeight; @@ -222,7 +222,7 @@ void jpegInfo() { // Show the execution time (optional) //#################################################################################################### // WARNING: for UNO/AVR legacy reasons printing text to the screen with the Mega might not work for -// sketch sizes greater than ~70KBytes because 16 bit address pointers are used in some libraries. +// sketch sizes greater than ~70KBytes because 16-bit address pointers are used in some libraries. // The Due will work fine with the HX8357_Due library. diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg1.h b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg1.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg1.h rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg1.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg2.h b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg2.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg2.h rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg2.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg3.h b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg3.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg3.h rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg3.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg4.h b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg4.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_flash_jpg/jpeg4.h rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_flash_jpg/jpeg4.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_ring_meter/Alert.h b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_ring_meter/Alert.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_ring_meter/Alert.h rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_ring_meter/Alert.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino similarity index 96% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino index 923cb39e..bdd9bb37 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino @@ -13,9 +13,9 @@ #define GREEN2RED 4 #define RED2GREEN 5 -#define TFT_GREY 0x2104 // Dark grey 16 bit colour +#define TFT_GREY 0x2104 // Dark grey 16-bit colour -#include "alert.h" // Out of range alert icon +#include "Alert.h" // Out of range alert icon #include // Hardware-specific library #include @@ -127,8 +127,8 @@ int ringMeter(int value, int vmin, int vmax, int x, int y, int r, const char *un case 1: colour = TFT_GREEN; break; // Fixed colour case 2: colour = TFT_BLUE; break; // Fixed colour case 3: colour = rainbow(map(i, -angle, angle, 0, 127)); break; // Full spectrum blue to red - case 4: colour = rainbow(map(i, -angle, angle, 70, 127)); break; // Green to red (high temperature etc) - case 5: colour = rainbow(map(i, -angle, angle, 127, 63)); break; // Red to green (low battery etc) + case 4: colour = rainbow(map(i, -angle, angle, 70, 127)); break; // Green to red (high temperature etc.) + case 5: colour = rainbow(map(i, -angle, angle, 127, 63)); break; // Red to green (low battery etc.) default: colour = TFT_BLUE; break; // Fixed colour } tft.fillTriangle(x0, y0, x1, y1, x2, y2, colour); @@ -193,14 +193,14 @@ void drawAlert(int x, int y , int side, bool draw) } // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow(byte value) { // Value is expected to be in range 0-127 // The value is converted to a spectrum colour from 0 = blue through to 127 = red - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino similarity index 96% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino index f0b14d8a..e339a329 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino @@ -23,7 +23,7 @@ void setup(void) { // check file system if (!SPIFFS.begin()) { - Serial.println("formating file system"); + Serial.println("formatting file system"); SPIFFS.format(); SPIFFS.begin(); diff --git a/libraries/TFT_eSPI-2.4.72/examples/480 x 320/UTFT_Demo_480x320/UTFT_Demo_480x320.ino b/libraries/TFT_eSPI-2.5.43/examples/480 x 320/UTFT_Demo_480x320/UTFT_Demo_480x320.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/480 x 320/UTFT_Demo_480x320/UTFT_Demo_480x320.ino rename to libraries/TFT_eSPI-2.5.43/examples/480 x 320/UTFT_Demo_480x320/UTFT_Demo_480x320.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino b/libraries/TFT_eSPI-2.5.43/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino rename to libraries/TFT_eSPI-2.5.43/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino index 43d10bb5..e2a661ea 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino @@ -153,7 +153,7 @@ void drawUpdate (bool sel) { } // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### uint16_t rainbow(byte value) { @@ -163,7 +163,7 @@ uint16_t rainbow(byte value) value = value % 192; - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0; // Green is the middle 6 bits, but only top 5 bits used here byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino b/libraries/TFT_eSPI-2.5.43/examples/DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino rename to libraries/TFT_eSPI-2.5.43/examples/DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/DMA test/Flash_Jpg_DMA/panda.h b/libraries/TFT_eSPI-2.5.43/examples/DMA test/Flash_Jpg_DMA/panda.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/DMA test/Flash_Jpg_DMA/panda.h rename to libraries/TFT_eSPI-2.5.43/examples/DMA test/Flash_Jpg_DMA/panda.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino b/libraries/TFT_eSPI-2.5.43/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino rename to libraries/TFT_eSPI-2.5.43/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino index 0b9590fc..a57ed6bb 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino @@ -2,7 +2,7 @@ // https://en.wikipedia.org/wiki/Direct_memory_access // Tested with ESP32, Nucleo 64 STM32F446RE and Nucleo 144 STM32F767ZI -// TFT's with SPI can use DMA, the sketch also works with 8 bit +// TFT's with SPI can use DMA, the sketch also works with 8-bit // parallel TFT's (tested with ILI9341 and ILI9481) // The sketch will run on processors without DMA and also parallel @@ -36,7 +36,7 @@ // Color depth has to be 16 bits if DMA is used to render image #define COLOR_DEPTH 16 -// 128x128 for a 16 bit colour Sprite (32Kbytes RAM) +// 128x128 for a 16-bit colour Sprite (32Kbytes RAM) // Maximum is 181x181 (64Kbytes) for DMA - restricted by processor design #define IWIDTH 128 #define IHEIGHT 128 diff --git a/libraries/TFT_eSPI-2.4.72/examples/DMA test/boing_ball/boing_ball.ino b/libraries/TFT_eSPI-2.5.43/examples/DMA test/boing_ball/boing_ball.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/DMA test/boing_ball/boing_ball.ino rename to libraries/TFT_eSPI-2.5.43/examples/DMA test/boing_ball/boing_ball.ino index 36dbb777..a6e5e707 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/DMA test/boing_ball/boing_ball.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/DMA test/boing_ball/boing_ball.ino @@ -19,7 +19,7 @@ // Blue Pill overclocked to 128MHz *no* DMA - 32MHz SPI 64 fps // Blue Pill overclocked to 128MHz with DMA - 32MHz SPI 116 fps -// ESP32 - 8 bit parallel 110 fps (no DMA) +// ESP32 - 8-bit parallel 110 fps (no DMA) // ESP32 - 40MHz SPI *no* DMA 93 fps // ESP32 - 40MHz SPI with DMA 112 fps diff --git a/libraries/TFT_eSPI-2.4.72/examples/DMA test/boing_ball/graphic.h b/libraries/TFT_eSPI-2.5.43/examples/DMA test/boing_ball/graphic.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/DMA test/boing_ball/graphic.h rename to libraries/TFT_eSPI-2.5.43/examples/DMA test/boing_ball/graphic.h diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Button_demo.ino b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Button_demo.ino new file mode 100644 index 00000000..b8643385 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Button_demo.ino @@ -0,0 +1,191 @@ +// Button widget demo, requires SPI display with touch screen + +// Requires widget library here: +// https://github.com/Bodmer/TFT_eWidget + +#include +#include "Free_Fonts.h" // Include the header file attached to this sketch + +#include // Hardware-specific library +#include // Widget library + +TFT_eSPI tft = TFT_eSPI(); // Invoke custom library + +#define CALIBRATION_FILE "/TouchCalData1" +#define REPEAT_CAL false + +ButtonWidget btnL = ButtonWidget(&tft); +ButtonWidget btnR = ButtonWidget(&tft); + +#define BUTTON_W 100 +#define BUTTON_H 50 + +// Create an array of button instances to use in for() loops +// This is more useful where large numbers of buttons are employed +ButtonWidget* btn[] = {&btnL , &btnR};; +uint8_t buttonCount = sizeof(btn) / sizeof(btn[0]); + +void btnL_pressAction(void) +{ + if (btnL.justPressed()) { + Serial.println("Left button just pressed"); + btnL.drawSmoothButton(true); + } +} + +void btnL_releaseAction(void) +{ + static uint32_t waitTime = 1000; + if (btnL.justReleased()) { + Serial.println("Left button just released"); + btnL.drawSmoothButton(false); + btnL.setReleaseTime(millis()); + waitTime = 10000; + } + else { + if (millis() - btnL.getReleaseTime() >= waitTime) { + waitTime = 1000; + btnL.setReleaseTime(millis()); + btnL.drawSmoothButton(!btnL.getState()); + } + } +} + +void btnR_pressAction(void) +{ + if (btnR.justPressed()) { + btnR.drawSmoothButton(!btnR.getState(), 3, TFT_BLACK, btnR.getState() ? "OFF" : "ON"); + Serial.print("Button toggled: "); + if (btnR.getState()) Serial.println("ON"); + else Serial.println("OFF"); + btnR.setPressTime(millis()); + } + + // if button pressed for more than 1 sec... + if (millis() - btnR.getPressTime() >= 1000) { + Serial.println("Stop pressing my buttton......."); + } + else Serial.println("Right button is being pressed"); +} + +void btnR_releaseAction(void) +{ + // Not action +} + +void initButtons() { + uint16_t x = (tft.width() - BUTTON_W) / 2; + uint16_t y = tft.height() / 2 - BUTTON_H - 10; + btnL.initButtonUL(x, y, BUTTON_W, BUTTON_H, TFT_WHITE, TFT_RED, TFT_BLACK, "Button", 1); + btnL.setPressAction(btnL_pressAction); + btnL.setReleaseAction(btnL_releaseAction); + btnL.drawSmoothButton(false, 3, TFT_BLACK); // 3 is outline width, TFT_BLACK is the surrounding background colour for anti-aliasing + + y = tft.height() / 2 + 10; + btnR.initButtonUL(x, y, BUTTON_W, BUTTON_H, TFT_WHITE, TFT_BLACK, TFT_GREEN, "OFF", 1); + btnR.setPressAction(btnR_pressAction); + //btnR.setReleaseAction(btnR_releaseAction); + btnR.drawSmoothButton(false, 3, TFT_BLACK); // 3 is outline width, TFT_BLACK is the surrounding background colour for anti-aliasing +} + +void setup() { + Serial.begin(115200); + tft.begin(); + tft.setRotation(0); + tft.fillScreen(TFT_BLACK); + tft.setFreeFont(FF18); + + // Calibrate the touch screen and retrieve the scaling factors + touch_calibrate(); + initButtons(); +} + +void loop() { + static uint32_t scanTime = millis(); + uint16_t t_x = 9999, t_y = 9999; // To store the touch coordinates + + // Scan keys every 50ms at most + if (millis() - scanTime >= 50) { + // Pressed will be set true if there is a valid touch on the screen + bool pressed = tft.getTouch(&t_x, &t_y); + scanTime = millis(); + for (uint8_t b = 0; b < buttonCount; b++) { + if (pressed) { + if (btn[b]->contains(t_x, t_y)) { + btn[b]->press(true); + btn[b]->pressAction(); + } + } + else { + btn[b]->press(false); + btn[b]->releaseAction(); + } + } + } + +} + +void touch_calibrate() +{ + uint16_t calData[5]; + uint8_t calDataOK = 0; + + // check file system exists + if (!LittleFS.begin()) { + Serial.println("formatting file system"); + LittleFS.format(); + LittleFS.begin(); + } + + // check if calibration file exists and size is correct + if (LittleFS.exists(CALIBRATION_FILE)) { + if (REPEAT_CAL) + { + // Delete if we want to re-calibrate + LittleFS.remove(CALIBRATION_FILE); + } + else + { + File f = LittleFS.open(CALIBRATION_FILE, "r"); + if (f) { + if (f.readBytes((char *)calData, 14) == 14) + calDataOK = 1; + f.close(); + } + } + } + + if (calDataOK && !REPEAT_CAL) { + // calibration data valid + tft.setTouch(calData); + } else { + // data not valid so recalibrate + tft.fillScreen(TFT_BLACK); + tft.setCursor(20, 0); + tft.setTextFont(2); + tft.setTextSize(1); + tft.setTextColor(TFT_WHITE, TFT_BLACK); + + tft.println("Touch corners as indicated"); + + tft.setTextFont(1); + tft.println(); + + if (REPEAT_CAL) { + tft.setTextColor(TFT_RED, TFT_BLACK); + tft.println("Set REPEAT_CAL to false to stop this running again!"); + } + + tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15); + + tft.setTextColor(TFT_GREEN, TFT_BLACK); + tft.println("Calibration complete!"); + + // store data + File f = LittleFS.open(CALIBRATION_FILE, "w"); + if (f) { + f.write((const unsigned char *)calData, 14); + f.close(); + } + } +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Free_Fonts.h b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Free_Fonts.h new file mode 100644 index 00000000..77249efe --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Buttons/Button_demo/Free_Fonts.h @@ -0,0 +1,377 @@ +// Attach this header file to your sketch to use the GFX Free Fonts. You can write +// sketches without it, but it makes referencing them easier. + +// This calls up ALL the fonts but they only get loaded if you actually +// use them in your sketch. +// +// No changes are needed to this header file unless new fonts are added to the +// library "Fonts/GFXFF" folder. +// +// To save a lot of typing long names, each font can easily be referenced in the +// sketch in three ways, either with: +// +// 1. Font file name with the & in front such as &FreeSansBoldOblique24pt7b +// an example being: +// +// tft.setFreeFont(&FreeSansBoldOblique24pt7b); +// +// 2. FF# where # is a number determined by looking at the list below +// an example being: +// +// tft.setFreeFont(FF32); +// +// 3. An abbreviation of the file name. Look at the list below to see +// the abbreviations used, for example: +// +// tft.setFreeFont(FSSBO24) +// +// Where the letters mean: +// F = Free font +// M = Mono +// SS = Sans Serif (double S to distinguish is form serif fonts) +// S = Serif +// B = Bold +// O = Oblique (letter O not zero) +// I = Italic +// # = point size, either 9, 12, 18 or 24 +// +// Setting the font to NULL will select the GLCD font: +// +// tft.setFreeFont(NULL); // Set font to GLCD + +#define LOAD_tftFF + +#ifdef LOAD_tftFF // Only include the fonts if LOAD_tftFF is defined in User_Setup.h + +// Use these when printing or drawing text in GLCD and high rendering speed fonts +#define GFXFF 1 +#define GLCD 0 +#define FONT2 2 +#define FONT4 4 +#define FONT6 6 +#define FONT7 7 +#define FONT8 8 + +// Use the following when calling setFont() +// +// Reserved for GLCD font // FF0 +// + +#define TT1 &TomThumb + +#define FM9 &FreeMono9pt7b +#define FM12 &FreeMono12pt7b +#define FM18 &FreeMono18pt7b +#define FM24 &FreeMono24pt7b + +#define FMB9 &FreeMonoBold9pt7b +#define FMB12 &FreeMonoBold12pt7b +#define FMB18 &FreeMonoBold18pt7b +#define FMB24 &FreeMonoBold24pt7b + +#define FMO9 &FreeMonoOblique9pt7b +#define FMO12 &FreeMonoOblique12pt7b +#define FMO18 &FreeMonoOblique18pt7b +#define FMO24 &FreeMonoOblique24pt7b + +#define FMBO9 &FreeMonoBoldOblique9pt7b +#define FMBO12 &FreeMonoBoldOblique12pt7b +#define FMBO18 &FreeMonoBoldOblique18pt7b +#define FMBO24 &FreeMonoBoldOblique24pt7b + +#define FSS9 &FreeSans9pt7b +#define FSS12 &FreeSans12pt7b +#define FSS18 &FreeSans18pt7b +#define FSS24 &FreeSans24pt7b + +#define FSSB9 &FreeSansBold9pt7b +#define FSSB12 &FreeSansBold12pt7b +#define FSSB18 &FreeSansBold18pt7b +#define FSSB24 &FreeSansBold24pt7b + +#define FSSO9 &FreeSansOblique9pt7b +#define FSSO12 &FreeSansOblique12pt7b +#define FSSO18 &FreeSansOblique18pt7b +#define FSSO24 &FreeSansOblique24pt7b + +#define FSSBO9 &FreeSansBoldOblique9pt7b +#define FSSBO12 &FreeSansBoldOblique12pt7b +#define FSSBO18 &FreeSansBoldOblique18pt7b +#define FSSBO24 &FreeSansBoldOblique24pt7b + +#define FS9 &FreeSerif9pt7b +#define FS12 &FreeSerif12pt7b +#define FS18 &FreeSerif18pt7b +#define FS24 &FreeSerif24pt7b + +#define FSI9 &FreeSerifItalic9pt7b +#define FSI12 &FreeSerifItalic12pt7b +#define FSI19 &FreeSerifItalic18pt7b +#define FSI24 &FreeSerifItalic24pt7b + +#define FSB9 &FreeSerifBold9pt7b +#define FSB12 &FreeSerifBold12pt7b +#define FSB18 &FreeSerifBold18pt7b +#define FSB24 &FreeSerifBold24pt7b + +#define FSBI9 &FreeSerifBoldItalic9pt7b +#define FSBI12 &FreeSerifBoldItalic12pt7b +#define FSBI18 &FreeSerifBoldItalic18pt7b +#define FSBI24 &FreeSerifBoldItalic24pt7b + +#define FF0 NULL //ff0 reserved for GLCD +#define FF1 &FreeMono9pt7b +#define FF2 &FreeMono12pt7b +#define FF3 &FreeMono18pt7b +#define FF4 &FreeMono24pt7b + +#define FF5 &FreeMonoBold9pt7b +#define FF6 &FreeMonoBold12pt7b +#define FF7 &FreeMonoBold18pt7b +#define FF8 &FreeMonoBold24pt7b + +#define FF9 &FreeMonoOblique9pt7b +#define FF10 &FreeMonoOblique12pt7b +#define FF11 &FreeMonoOblique18pt7b +#define FF12 &FreeMonoOblique24pt7b + +#define FF13 &FreeMonoBoldOblique9pt7b +#define FF14 &FreeMonoBoldOblique12pt7b +#define FF15 &FreeMonoBoldOblique18pt7b +#define FF16 &FreeMonoBoldOblique24pt7b + +#define FF17 &FreeSans9pt7b +#define FF18 &FreeSans12pt7b +#define FF19 &FreeSans18pt7b +#define FF20 &FreeSans24pt7b + +#define FF21 &FreeSansBold9pt7b +#define FF22 &FreeSansBold12pt7b +#define FF23 &FreeSansBold18pt7b +#define FF24 &FreeSansBold24pt7b + +#define FF25 &FreeSansOblique9pt7b +#define FF26 &FreeSansOblique12pt7b +#define FF27 &FreeSansOblique18pt7b +#define FF28 &FreeSansOblique24pt7b + +#define FF29 &FreeSansBoldOblique9pt7b +#define FF30 &FreeSansBoldOblique12pt7b +#define FF31 &FreeSansBoldOblique18pt7b +#define FF32 &FreeSansBoldOblique24pt7b + +#define FF33 &FreeSerif9pt7b +#define FF34 &FreeSerif12pt7b +#define FF35 &FreeSerif18pt7b +#define FF36 &FreeSerif24pt7b + +#define FF37 &FreeSerifItalic9pt7b +#define FF38 &FreeSerifItalic12pt7b +#define FF39 &FreeSerifItalic18pt7b +#define FF40 &FreeSerifItalic24pt7b + +#define FF41 &FreeSerifBold9pt7b +#define FF42 &FreeSerifBold12pt7b +#define FF43 &FreeSerifBold18pt7b +#define FF44 &FreeSerifBold24pt7b + +#define FF45 &FreeSerifBoldItalic9pt7b +#define FF46 &FreeSerifBoldItalic12pt7b +#define FF47 &FreeSerifBoldItalic18pt7b +#define FF48 &FreeSerifBoldItalic24pt7b + +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +// Now we define "s"tring versions for easy printing of the font name so: +// tft.println(sFF5); +// will print +// Mono bold 9 +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +#define sFF0 "GLCD" +#define sTT1 "Tom Thumb" +#define sFF1 "Mono 9" +#define sFF2 "Mono 12" +#define sFF3 "Mono 18" +#define sFF4 "Mono 24" + +#define sFF5 "Mono bold 9" +#define sFF6 "Mono bold 12" +#define sFF7 "Mono bold 18" +#define sFF8 "Mono bold 24" + +#define sFF9 "Mono oblique 9" +#define sFF10 "Mono oblique 12" +#define sFF11 "Mono oblique 18" +#define sFF12 "Mono oblique 24" + +#define sFF13 "Mono bold oblique 9" +#define sFF14 "Mono bold oblique 12" +#define sFF15 "Mono bold oblique 18" +#define sFF16 "Mono bold oblique 24" // Full text line is too big for 480 pixel wide screen + +#define sFF17 "Sans 9" +#define sFF18 "Sans 12" +#define sFF19 "Sans 18" +#define sFF20 "Sans 24" + +#define sFF21 "Sans bold 9" +#define sFF22 "Sans bold 12" +#define sFF23 "Sans bold 18" +#define sFF24 "Sans bold 24" + +#define sFF25 "Sans oblique 9" +#define sFF26 "Sans oblique 12" +#define sFF27 "Sans oblique 18" +#define sFF28 "Sans oblique 24" + +#define sFF29 "Sans bold oblique 9" +#define sFF30 "Sans bold oblique 12" +#define sFF31 "Sans bold oblique 18" +#define sFF32 "Sans bold oblique 24" + +#define sFF33 "Serif 9" +#define sFF34 "Serif 12" +#define sFF35 "Serif 18" +#define sFF36 "Serif 24" + +#define sFF37 "Serif italic 9" +#define sFF38 "Serif italic 12" +#define sFF39 "Serif italic 18" +#define sFF40 "Serif italic 24" + +#define sFF41 "Serif bold 9" +#define sFF42 "Serif bold 12" +#define sFF43 "Serif bold 18" +#define sFF44 "Serif bold 24" + +#define sFF45 "Serif bold italic 9" +#define sFF46 "Serif bold italic 12" +#define sFF47 "Serif bold italic 18" +#define sFF48 "Serif bold italic 24" + +#else // LOAD_tftFF not defined so setup defaults to prevent error messages + +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +// Free fonts are not loaded in User_Setup.h so we must define all as font 1 +// to prevent compile error messages +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +#define GFXFF 1 +#define GLCD 1 +#define FONT2 2 +#define FONT4 4 +#define FONT6 6 +#define FONT7 7 +#define FONT8 8 + +#define FF0 1 +#define FF1 1 +#define FF2 1 +#define FF3 1 +#define FF4 1 +#define FF5 1 +#define FF6 1 +#define FF7 1 +#define FF8 1 +#define FF9 1 +#define FF10 1 +#define FF11 1 +#define FF12 1 +#define FF13 1 +#define FF14 1 +#define FF15 1 +#define FF16 1 +#define FF17 1 +#define FF18 1 +#define FF19 1 +#define FF20 1 +#define FF21 1 +#define FF22 1 +#define FF23 1 +#define FF24 1 +#define FF25 1 +#define FF26 1 +#define FF27 1 +#define FF28 1 +#define FF29 1 +#define FF30 1 +#define FF31 1 +#define FF32 1 +#define FF33 1 +#define FF34 1 +#define FF35 1 +#define FF36 1 +#define FF37 1 +#define FF38 1 +#define FF39 1 +#define FF40 1 +#define FF41 1 +#define FF42 1 +#define FF43 1 +#define FF44 1 +#define FF45 1 +#define FF46 1 +#define FF47 1 +#define FF48 1 + +#define FM9 1 +#define FM12 1 +#define FM18 1 +#define FM24 1 + +#define FMB9 1 +#define FMB12 1 +#define FMB18 1 +#define FMB24 1 + +#define FMO9 1 +#define FMO12 1 +#define FMO18 1 +#define FMO24 1 + +#define FMBO9 1 +#define FMBO12 1 +#define FMBO18 1 +#define FMBO24 1 + +#define FSS9 1 +#define FSS12 1 +#define FSS18 1 +#define FSS24 1 + +#define FSSB9 1 +#define FSSB12 1 +#define FSSB18 1 +#define FSSB24 1 + +#define FSSO9 1 +#define FSSO12 1 +#define FSSO18 1 +#define FSSO24 1 + +#define FSSBO9 1 +#define FSSBO12 1 +#define FSSBO18 1 +#define FSSBO24 1 + +#define FS9 1 +#define FS12 1 +#define FS18 1 +#define FS24 1 + +#define FSI9 1 +#define FSI12 1 +#define FSI19 1 +#define FSI24 1 + +#define FSB9 1 +#define FSB12 1 +#define FSB18 1 +#define FSB24 1 + +#define FSBI9 1 +#define FSBI12 1 +#define FSBI18 1 +#define FSBI24 1 + +#endif // LOAD_tftFF diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_1/Graph_demo_1.ino b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_1/Graph_demo_1.ino new file mode 100644 index 00000000..5e9f74f2 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_1/Graph_demo_1.ino @@ -0,0 +1,80 @@ +// Demonstrate graph widget functions with a single trace instance +// One trace can be drawn at a time with one trace instance + +// Requires widget library here: +// https://github.com/Bodmer/TFT_eWidget + +#include +TFT_eSPI tft = TFT_eSPI(); + +#include // Widget library + +GraphWidget gr = GraphWidget(&tft); // Graph widget gr instance with pointer to tft +TraceWidget tr = TraceWidget(&gr); // Graph trace tr with pointer to gr + +const float gxLow = 0.0; +const float gxHigh = 100.0; +const float gyLow = -512.0; +const float gyHigh = 512.0; + +void setup() { + Serial.begin(115200); + + tft.begin(); + tft.setRotation(3); + tft.fillScreen(TFT_BLACK); + + // Graph area is 200 pixels wide, 150 pixels high, dark grey background + gr.createGraph(200, 150, tft.color565(5, 5, 5)); + + // x scale units is from 0 to 100, y scale units is -512 to 512 + gr.setGraphScale(gxLow, gxHigh, gyLow, gyHigh); + + // X grid starts at 0 with lines every 20 x-scale units + // Y grid starts at -512 with lines every 64 y-scale units + // blue grid + gr.setGraphGrid(gxLow, 20.0, gyLow, 64.0, TFT_BLUE); + + // Draw empty graph, top left corner at pixel coordinate 40,10 on TFT + gr.drawGraph(40, 10); + + // Start a trace with using red, trace points are in x and y scale units + // In this example a horizontal line is drawn + tr.startTrace(TFT_RED); + // Add a trace point at 0.0,0.0 on graph + tr.addPoint(0.0, 0.0); + // Add another point at 100.0, 0.0 this will be joined via line to the last point added + tr.addPoint(100.0, 0.0); + + // Start a new trace with using white + tr.startTrace(TFT_WHITE); +} + +void loop() { + static uint32_t plotTime = millis(); + static float gx = 0.0, gy = 0.0; + static float delta = 10.0; + + // Create a new plot point every 100ms + if (millis() - plotTime >= 100) { + plotTime = millis(); + + // Add a plot, first point in a trace will be a single pixel (if within graph area) + tr.addPoint(gx, gy); + gx += 1.0; + if (gy > 500.0) delta = -10.0; + if (gy < -500.0) delta = 10.0; + gy += delta; + + // If the end of the graph x axis is reached start a new trace at 0.0,0.0 + if (gx > gxHigh) { + gx = 0.0; + gy = 0.0; + + // Draw empty graph at 40,10 on display to clear old one + gr.drawGraph(40, 10); + // Start new trace + tr.startTrace(TFT_GREEN); + } + } +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_2/Graph_demo_2.ino b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_2/Graph_demo_2.ino new file mode 100644 index 00000000..a7eb3cdd --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Graphs/Graph_demo_2/Graph_demo_2.ino @@ -0,0 +1,105 @@ +// Demonstrate graph widget functions with two independent trace instances +// Multiple traces can be drawn at a time with multiple trace instances +// Note: Traces are automatically clipped at graph boundaries by widget library + +// Requires widget library here: +// https://github.com/Bodmer/TFT_eWidget + +#include +TFT_eSPI tft = TFT_eSPI(); + +#include // Widget library + +GraphWidget gr = GraphWidget(&tft); // Graph widget + +// Traces are drawn on tft using graph instance +TraceWidget tr1 = TraceWidget(&gr); // Graph trace 1 +TraceWidget tr2 = TraceWidget(&gr); // Graph trace 2 + +void setup() { + Serial.begin(115200); + delay(5000); + tft.begin(); + tft.setRotation(3); + tft.fillScreen(TFT_BLACK); + + // Graph area is 200 pixels wide, 150 high, dark grey background + gr.createGraph(200, 150, tft.color565(5, 5, 5)); + + // x scale units is from 0 to 100, y scale units is -50 to 50 + gr.setGraphScale(0.0, 100.0, -50.0, 50.0); + + // X grid starts at 0 with lines every 10 x-scale units + // Y grid starts at -50 with lines every 25 y-scale units + // blue grid + gr.setGraphGrid(0.0, 10.0, -50.0, 25.0, TFT_BLUE); + + // Draw empty graph, top left corner at 40,10 on TFT + gr.drawGraph(40, 10); + + // Start a trace with using red and another with green + tr1.startTrace(TFT_RED); + tr2.startTrace(TFT_GREEN); + + // Add points on graph to trace 1 using graph scale factors + tr1.addPoint(0.0, 0.0); + tr1.addPoint(100.0, 0.0); + + // Add points on graph to trace 2 using graph scale factors + // Points are off graph so the plotted line is clipped to graph area + tr2.addPoint(0.0, -100.0); + tr2.addPoint(100.0, 100.0); + + // Get x,y pixel coordinates of any scaled point on graph + // and ring that point. + tft.drawCircle(gr.getPointX(50.0), gr.getPointY(0.0), 5, TFT_MAGENTA); + + // Draw the x axis scale + tft.setTextDatum(TC_DATUM); // Top centre text datum + tft.drawNumber(0, gr.getPointX(0.0), gr.getPointY(-50.0) + 3); + tft.drawNumber(50, gr.getPointX(50.0), gr.getPointY(-50.0) + 3); + tft.drawNumber(100, gr.getPointX(100.0), gr.getPointY(-50.0) + 3); + + // Draw the y axis scale + tft.setTextDatum(MR_DATUM); // Middle right text datum + tft.drawNumber(-50, gr.getPointX(0.0), gr.getPointY(-50.0)); + tft.drawNumber(0, gr.getPointX(0.0), gr.getPointY(0.0)); + tft.drawNumber(50, gr.getPointX(0.0), gr.getPointY(50.0)); + + // Restart traces with new colours + tr1.startTrace(TFT_WHITE); + tr2.startTrace(TFT_YELLOW); +} + +void loop() { + static uint32_t plotTime = millis(); + static float gx = 0.0, gy = 0.0; + static float delta = 7.0; + + // Sample periodically + if (millis() - plotTime >= 100) { + plotTime = millis(); + + // Add a new point on each trace + tr1.addPoint(gx, gy); + tr2.addPoint(gx, gy/2.0); // half y amplitude + + // Create next plot point + gx += 1.0; + gy += delta; + if (gy > 70.0) { delta = -7.0; gy = 70.0; } + if (gy < -70.0) { delta = 7.0; gy = -70.0; } + + // If the end of the graph is reached start 2 new traces + if (gx > 100.0) { + gx = 0.0; + gy = 0.0; + + // Draw empty graph at 40,10 on display + gr.drawGraph(40, 10); + // Start new trace + tr1.startTrace(TFT_GREEN); + tr2.startTrace(TFT_YELLOW); + } + } +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Meters/Analogue_meters/Analogue_meters.ino b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Meters/Analogue_meters/Analogue_meters.ino new file mode 100644 index 00000000..c944a92f --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Meters/Analogue_meters/Analogue_meters.ino @@ -0,0 +1,87 @@ +/* + Example animated analogue meters + + Needs Font 2 (also Font 4 if using large scale label) + + Make sure all the display driver and pin connections are correct by + editing the User_Setup.h file in the TFT_eSPI library folder. + + ######################################################################### + ###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ###### + ######################################################################### + + Requires widget library here: + https://github.com/Bodmer/TFT_eWidget +*/ + +#include // Hardware-specific library +#include // Widget library + +TFT_eSPI tft = TFT_eSPI(); // Invoke custom library + +MeterWidget amps = MeterWidget(&tft); +MeterWidget volts = MeterWidget(&tft); +MeterWidget ohms = MeterWidget(&tft); + +#define LOOP_PERIOD 35 // Display updates every 35 ms + +void setup(void) +{ + tft.init(); + tft.setRotation(0); + Serial.begin(115200); // For debug + + + // Colour zones are set as a start and end percentage of full scale (0-100) + // If start and end of a colour zone are the same then that colour is not used + // --Red-- -Org- -Yell- -Grn- + amps.setZones(75, 100, 50, 75, 25, 50, 0, 25); // Example here red starts at 75% and ends at 100% of full scale + // Meter is 239 pixels wide and 126 pixels high + amps.analogMeter(0, 0, 2.0, "mA", "0", "0.5", "1.0", "1.5", "2.0"); // Draw analogue meter at 0, 0 + + // Colour draw order is red, orange, yellow, green. So red can be full scale with green drawn + // last on top to indicate a "safe" zone. + // -Red- -Org- -Yell- -Grn- + volts.setZones(0, 100, 25, 75, 0, 0, 40, 60); + volts.analogMeter(0, 128, 10.0, "V", "0", "2.5", "5", "7.5", "10"); // Draw analogue meter at 0, 128 + + // No coloured zones if not defined + ohms.analogMeter(0, 256, 100, "R", "0", "", "50", "", "100"); // Draw analogue meter at 0, 128 +} + + +void loop() +{ + static int d = 0; + static uint32_t updateTime = 0; + + if (millis() - updateTime >= LOOP_PERIOD) + { + updateTime = millis(); + + d += 4; if (d > 360) d = 0; + + // Create a Sine wave for testing, value is in range 0 - 100 + float value = 50.0 + 50.0 * sin((d + 0) * 0.0174532925); + + float current; + current = mapValue(value, (float)0.0, (float)100.0, (float)0.0, (float)2.0); + //Serial.print("I = "); Serial.print(current); + amps.updateNeedle(current, 0); + + float voltage; + voltage = mapValue(value, (float)0.0, (float)100.0, (float)0.0, (float)10.0); + //Serial.print(", V = "); Serial.println(voltage); + volts.updateNeedle(voltage, 0); + + float resistance; + resistance = mapValue(value, (float)0.0, (float)100.0, (float)0.0, (float)100.0); + //Serial.print(", R = "); Serial.println(resistance); + ohms.updateNeedle(resistance, 0); + } +} + +float mapValue(float ip, float ipmin, float ipmax, float tomin, float tomax) +{ + return tomin + (((tomax - tomin) * (ip - ipmin))/ (ipmax - ipmin)); +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Free_Fonts.h b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Free_Fonts.h new file mode 100644 index 00000000..77249efe --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Free_Fonts.h @@ -0,0 +1,377 @@ +// Attach this header file to your sketch to use the GFX Free Fonts. You can write +// sketches without it, but it makes referencing them easier. + +// This calls up ALL the fonts but they only get loaded if you actually +// use them in your sketch. +// +// No changes are needed to this header file unless new fonts are added to the +// library "Fonts/GFXFF" folder. +// +// To save a lot of typing long names, each font can easily be referenced in the +// sketch in three ways, either with: +// +// 1. Font file name with the & in front such as &FreeSansBoldOblique24pt7b +// an example being: +// +// tft.setFreeFont(&FreeSansBoldOblique24pt7b); +// +// 2. FF# where # is a number determined by looking at the list below +// an example being: +// +// tft.setFreeFont(FF32); +// +// 3. An abbreviation of the file name. Look at the list below to see +// the abbreviations used, for example: +// +// tft.setFreeFont(FSSBO24) +// +// Where the letters mean: +// F = Free font +// M = Mono +// SS = Sans Serif (double S to distinguish is form serif fonts) +// S = Serif +// B = Bold +// O = Oblique (letter O not zero) +// I = Italic +// # = point size, either 9, 12, 18 or 24 +// +// Setting the font to NULL will select the GLCD font: +// +// tft.setFreeFont(NULL); // Set font to GLCD + +#define LOAD_tftFF + +#ifdef LOAD_tftFF // Only include the fonts if LOAD_tftFF is defined in User_Setup.h + +// Use these when printing or drawing text in GLCD and high rendering speed fonts +#define GFXFF 1 +#define GLCD 0 +#define FONT2 2 +#define FONT4 4 +#define FONT6 6 +#define FONT7 7 +#define FONT8 8 + +// Use the following when calling setFont() +// +// Reserved for GLCD font // FF0 +// + +#define TT1 &TomThumb + +#define FM9 &FreeMono9pt7b +#define FM12 &FreeMono12pt7b +#define FM18 &FreeMono18pt7b +#define FM24 &FreeMono24pt7b + +#define FMB9 &FreeMonoBold9pt7b +#define FMB12 &FreeMonoBold12pt7b +#define FMB18 &FreeMonoBold18pt7b +#define FMB24 &FreeMonoBold24pt7b + +#define FMO9 &FreeMonoOblique9pt7b +#define FMO12 &FreeMonoOblique12pt7b +#define FMO18 &FreeMonoOblique18pt7b +#define FMO24 &FreeMonoOblique24pt7b + +#define FMBO9 &FreeMonoBoldOblique9pt7b +#define FMBO12 &FreeMonoBoldOblique12pt7b +#define FMBO18 &FreeMonoBoldOblique18pt7b +#define FMBO24 &FreeMonoBoldOblique24pt7b + +#define FSS9 &FreeSans9pt7b +#define FSS12 &FreeSans12pt7b +#define FSS18 &FreeSans18pt7b +#define FSS24 &FreeSans24pt7b + +#define FSSB9 &FreeSansBold9pt7b +#define FSSB12 &FreeSansBold12pt7b +#define FSSB18 &FreeSansBold18pt7b +#define FSSB24 &FreeSansBold24pt7b + +#define FSSO9 &FreeSansOblique9pt7b +#define FSSO12 &FreeSansOblique12pt7b +#define FSSO18 &FreeSansOblique18pt7b +#define FSSO24 &FreeSansOblique24pt7b + +#define FSSBO9 &FreeSansBoldOblique9pt7b +#define FSSBO12 &FreeSansBoldOblique12pt7b +#define FSSBO18 &FreeSansBoldOblique18pt7b +#define FSSBO24 &FreeSansBoldOblique24pt7b + +#define FS9 &FreeSerif9pt7b +#define FS12 &FreeSerif12pt7b +#define FS18 &FreeSerif18pt7b +#define FS24 &FreeSerif24pt7b + +#define FSI9 &FreeSerifItalic9pt7b +#define FSI12 &FreeSerifItalic12pt7b +#define FSI19 &FreeSerifItalic18pt7b +#define FSI24 &FreeSerifItalic24pt7b + +#define FSB9 &FreeSerifBold9pt7b +#define FSB12 &FreeSerifBold12pt7b +#define FSB18 &FreeSerifBold18pt7b +#define FSB24 &FreeSerifBold24pt7b + +#define FSBI9 &FreeSerifBoldItalic9pt7b +#define FSBI12 &FreeSerifBoldItalic12pt7b +#define FSBI18 &FreeSerifBoldItalic18pt7b +#define FSBI24 &FreeSerifBoldItalic24pt7b + +#define FF0 NULL //ff0 reserved for GLCD +#define FF1 &FreeMono9pt7b +#define FF2 &FreeMono12pt7b +#define FF3 &FreeMono18pt7b +#define FF4 &FreeMono24pt7b + +#define FF5 &FreeMonoBold9pt7b +#define FF6 &FreeMonoBold12pt7b +#define FF7 &FreeMonoBold18pt7b +#define FF8 &FreeMonoBold24pt7b + +#define FF9 &FreeMonoOblique9pt7b +#define FF10 &FreeMonoOblique12pt7b +#define FF11 &FreeMonoOblique18pt7b +#define FF12 &FreeMonoOblique24pt7b + +#define FF13 &FreeMonoBoldOblique9pt7b +#define FF14 &FreeMonoBoldOblique12pt7b +#define FF15 &FreeMonoBoldOblique18pt7b +#define FF16 &FreeMonoBoldOblique24pt7b + +#define FF17 &FreeSans9pt7b +#define FF18 &FreeSans12pt7b +#define FF19 &FreeSans18pt7b +#define FF20 &FreeSans24pt7b + +#define FF21 &FreeSansBold9pt7b +#define FF22 &FreeSansBold12pt7b +#define FF23 &FreeSansBold18pt7b +#define FF24 &FreeSansBold24pt7b + +#define FF25 &FreeSansOblique9pt7b +#define FF26 &FreeSansOblique12pt7b +#define FF27 &FreeSansOblique18pt7b +#define FF28 &FreeSansOblique24pt7b + +#define FF29 &FreeSansBoldOblique9pt7b +#define FF30 &FreeSansBoldOblique12pt7b +#define FF31 &FreeSansBoldOblique18pt7b +#define FF32 &FreeSansBoldOblique24pt7b + +#define FF33 &FreeSerif9pt7b +#define FF34 &FreeSerif12pt7b +#define FF35 &FreeSerif18pt7b +#define FF36 &FreeSerif24pt7b + +#define FF37 &FreeSerifItalic9pt7b +#define FF38 &FreeSerifItalic12pt7b +#define FF39 &FreeSerifItalic18pt7b +#define FF40 &FreeSerifItalic24pt7b + +#define FF41 &FreeSerifBold9pt7b +#define FF42 &FreeSerifBold12pt7b +#define FF43 &FreeSerifBold18pt7b +#define FF44 &FreeSerifBold24pt7b + +#define FF45 &FreeSerifBoldItalic9pt7b +#define FF46 &FreeSerifBoldItalic12pt7b +#define FF47 &FreeSerifBoldItalic18pt7b +#define FF48 &FreeSerifBoldItalic24pt7b + +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +// Now we define "s"tring versions for easy printing of the font name so: +// tft.println(sFF5); +// will print +// Mono bold 9 +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +#define sFF0 "GLCD" +#define sTT1 "Tom Thumb" +#define sFF1 "Mono 9" +#define sFF2 "Mono 12" +#define sFF3 "Mono 18" +#define sFF4 "Mono 24" + +#define sFF5 "Mono bold 9" +#define sFF6 "Mono bold 12" +#define sFF7 "Mono bold 18" +#define sFF8 "Mono bold 24" + +#define sFF9 "Mono oblique 9" +#define sFF10 "Mono oblique 12" +#define sFF11 "Mono oblique 18" +#define sFF12 "Mono oblique 24" + +#define sFF13 "Mono bold oblique 9" +#define sFF14 "Mono bold oblique 12" +#define sFF15 "Mono bold oblique 18" +#define sFF16 "Mono bold oblique 24" // Full text line is too big for 480 pixel wide screen + +#define sFF17 "Sans 9" +#define sFF18 "Sans 12" +#define sFF19 "Sans 18" +#define sFF20 "Sans 24" + +#define sFF21 "Sans bold 9" +#define sFF22 "Sans bold 12" +#define sFF23 "Sans bold 18" +#define sFF24 "Sans bold 24" + +#define sFF25 "Sans oblique 9" +#define sFF26 "Sans oblique 12" +#define sFF27 "Sans oblique 18" +#define sFF28 "Sans oblique 24" + +#define sFF29 "Sans bold oblique 9" +#define sFF30 "Sans bold oblique 12" +#define sFF31 "Sans bold oblique 18" +#define sFF32 "Sans bold oblique 24" + +#define sFF33 "Serif 9" +#define sFF34 "Serif 12" +#define sFF35 "Serif 18" +#define sFF36 "Serif 24" + +#define sFF37 "Serif italic 9" +#define sFF38 "Serif italic 12" +#define sFF39 "Serif italic 18" +#define sFF40 "Serif italic 24" + +#define sFF41 "Serif bold 9" +#define sFF42 "Serif bold 12" +#define sFF43 "Serif bold 18" +#define sFF44 "Serif bold 24" + +#define sFF45 "Serif bold italic 9" +#define sFF46 "Serif bold italic 12" +#define sFF47 "Serif bold italic 18" +#define sFF48 "Serif bold italic 24" + +#else // LOAD_tftFF not defined so setup defaults to prevent error messages + +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +// Free fonts are not loaded in User_Setup.h so we must define all as font 1 +// to prevent compile error messages +// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +#define GFXFF 1 +#define GLCD 1 +#define FONT2 2 +#define FONT4 4 +#define FONT6 6 +#define FONT7 7 +#define FONT8 8 + +#define FF0 1 +#define FF1 1 +#define FF2 1 +#define FF3 1 +#define FF4 1 +#define FF5 1 +#define FF6 1 +#define FF7 1 +#define FF8 1 +#define FF9 1 +#define FF10 1 +#define FF11 1 +#define FF12 1 +#define FF13 1 +#define FF14 1 +#define FF15 1 +#define FF16 1 +#define FF17 1 +#define FF18 1 +#define FF19 1 +#define FF20 1 +#define FF21 1 +#define FF22 1 +#define FF23 1 +#define FF24 1 +#define FF25 1 +#define FF26 1 +#define FF27 1 +#define FF28 1 +#define FF29 1 +#define FF30 1 +#define FF31 1 +#define FF32 1 +#define FF33 1 +#define FF34 1 +#define FF35 1 +#define FF36 1 +#define FF37 1 +#define FF38 1 +#define FF39 1 +#define FF40 1 +#define FF41 1 +#define FF42 1 +#define FF43 1 +#define FF44 1 +#define FF45 1 +#define FF46 1 +#define FF47 1 +#define FF48 1 + +#define FM9 1 +#define FM12 1 +#define FM18 1 +#define FM24 1 + +#define FMB9 1 +#define FMB12 1 +#define FMB18 1 +#define FMB24 1 + +#define FMO9 1 +#define FMO12 1 +#define FMO18 1 +#define FMO24 1 + +#define FMBO9 1 +#define FMBO12 1 +#define FMBO18 1 +#define FMBO24 1 + +#define FSS9 1 +#define FSS12 1 +#define FSS18 1 +#define FSS24 1 + +#define FSSB9 1 +#define FSSB12 1 +#define FSSB18 1 +#define FSSB24 1 + +#define FSSO9 1 +#define FSSO12 1 +#define FSSO18 1 +#define FSSO24 1 + +#define FSSBO9 1 +#define FSSBO12 1 +#define FSSBO18 1 +#define FSSBO24 1 + +#define FS9 1 +#define FS12 1 +#define FS18 1 +#define FS24 1 + +#define FSI9 1 +#define FSI12 1 +#define FSI19 1 +#define FSI24 1 + +#define FSB9 1 +#define FSB12 1 +#define FSB18 1 +#define FSB24 1 + +#define FSBI9 1 +#define FSBI12 1 +#define FSBI18 1 +#define FSBI24 1 + +#endif // LOAD_tftFF diff --git a/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Slider_demo.ino b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Slider_demo.ino new file mode 100644 index 00000000..7e8e6ce0 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/GUI Widgets/Sliders/Slider_demo/Slider_demo.ino @@ -0,0 +1,201 @@ +// Slider widget demo, requires display with touch screen + +// Requires widget library here: +// https://github.com/Bodmer/TFT_eWidget + +#include "FS.h" + +#include "Free_Fonts.h" // Include the header file attached to this sketch + +#include +#include // Widget library + +TFT_eSPI tft = TFT_eSPI(); +TFT_eSprite knob = TFT_eSprite(&tft); // Sprite for the slide knob + +#define CALIBRATION_FILE "/TouchCalData1" +#define REPEAT_CAL false + +SliderWidget s1 = SliderWidget(&tft, &knob); // Slider 1 widget +SliderWidget s2 = SliderWidget(&tft, &knob); // Slider 2 widget + + +void setup() { + Serial.begin(115200); + tft.begin(); + tft.setRotation(0); + tft.fillScreen(TFT_BLACK); + tft.setFreeFont(FF18); + + // Calibrate the touch screen and retrieve the scaling factors + if (REPEAT_CAL) { + touch_calibrate(); + tft.fillScreen(TFT_BLACK); + } + + // Create a parameter set for the slider + slider_t param; + + // Slider slot parameters + param.slotWidth = 9; // Note: ends of slot will be rounded and anti-aliased + param.slotLength = 200; // Length includes rounded ends + param.slotColor = TFT_BLUE; // Slot colour + param.slotBgColor = TFT_BLACK; // Slot background colour for anti-aliasing + param.orientation = H_SLIDER; // sets it "true" for horizontal + + // Slider control knob parameters (smooth rounded rectangle) + param.knobWidth = 15; // Always along x axis + param.knobHeight = 25; // Always along y axis + param.knobRadius = 5; // Corner radius + param.knobColor = TFT_WHITE; // Anti-aliased with slot backgound colour + param.knobLineColor = TFT_RED; // Colour of marker line (set to same as knobColor for no line) + + // Slider range and movement speed + param.sliderLT = 0; // Left side for horizontal, top for vertical slider + param.sliderRB = 100; // Right side for horizontal, bottom for vertical slider + param.startPosition = 50; // Start position for control knob + param.sliderDelay = 0; // Microseconds per pixel movement delay (0 = no delay) + + // Create slider using parameters and plot at 0,0 + s1.drawSlider(0, 0, param); + + // Show bounding box (1 pixel outside slider working area) + int16_t x, y; // x and y can be negative + uint16_t w, h; // Width and height + s1.getBoundingRect(&x, &y, &w, &h); // Update x,y,w,h with bounding box + tft.drawRect(x, y, w, h, TFT_DARKGREY); // Draw rectangle outline +/* + // Alternative discrete fns to create/modify same slider - but fn sequence is important... + s1.createSlider(9, 200, TFT_BLUE, TFT_BLACK, H_SLIDER); + s1.createKnob(15, 25, 5, TFT_WHITE, TFT_RED); + s1.setSliderScale(0, 100); + s1.drawSlider(0, 0); +*/ + delay(1000); + s1.setSliderPosition(50); + delay(1000); + s1.setSliderPosition(100); + + // Update any parameters that are different for slider 2 + param.slotWidth = 4; + param.orientation = V_SLIDER; // sets it "false" for vertical + + param.knobWidth = 19; + param.knobHeight = 19; + param.knobRadius = 19/2; // Half w and h so creates a circle + + param.sliderLT = 200; // Top for vertical slider + param.sliderRB = 0; // Bottom for vertical slider + param.sliderDelay = 2000; // 2ms per pixel movement delay (movement is blocking until complete) + + s2.drawSlider(0, 50, param); + + s2.getBoundingRect(&x, &y, &w, &h); + tft.drawRect(x, y, w, h, TFT_DARKGREY); +/* + // Alternative discrete fns to create/modify same slider - but fn sequence is important... + s2.createSlider(4, 200, TFT_BLUE, TFT_BLACK, V_SLIDER); + s2.createKnob(19, 19, 9, TFT_WHITE, TFT_RED); + s2.setSliderScale(200, 0, 2000); + s2.drawSlider(0, 50); +*/ + // Move slider under software control + delay(1000); + s2.setSliderPosition(50); + delay(1000); + s2.setSliderPosition(100); + +} + +void loop() { + static uint32_t scanTime = millis(); + uint16_t t_x = 9999, t_y = 9999; // To store the touch coordinates + + // Scan for touch every 50ms + if (millis() - scanTime >= 20) { + // Pressed will be set true if there is a valid touch on the screen + if( tft.getTouch(&t_x, &t_y, 250) ) { + if (s1.checkTouch(t_x, t_y)) { + Serial.print("Slider 1 = "); Serial.println(s1.getSliderPosition()); + } + if (s2.checkTouch(t_x, t_y)) { + Serial.print("Slider 2 = "); Serial.println(s2.getSliderPosition()); + } + } + scanTime = millis(); + } + + //s1.moveTo(random(101)); + //delay(250); + //s2.moveTo(random(101)); + //delay(250); +} + + + + + +void touch_calibrate() +{ + uint16_t calData[5]; + uint8_t calDataOK = 0; + + // check file system exists + if (!LittleFS.begin()) { + Serial.println("formatting file system"); + LittleFS.format(); + LittleFS.begin(); + } + + // check if calibration file exists and size is correct + if (LittleFS.exists(CALIBRATION_FILE)) { + if (REPEAT_CAL) + { + // Delete if we want to re-calibrate + LittleFS.remove(CALIBRATION_FILE); + } + else + { + File f = LittleFS.open(CALIBRATION_FILE, "r"); + if (f) { + if (f.readBytes((char *)calData, 14) == 14) + calDataOK = 1; + f.close(); + } + } + } + + if (calDataOK && !REPEAT_CAL) { + // calibration data valid + tft.setTouch(calData); + } else { + // data not valid so recalibrate + tft.fillScreen(TFT_BLACK); + tft.setCursor(20, 0); + tft.setTextFont(2); + tft.setTextSize(1); + tft.setTextColor(TFT_WHITE, TFT_BLACK); + + tft.println("Touch corners as indicated"); + + tft.setTextFont(1); + tft.println(); + + if (REPEAT_CAL) { + tft.setTextColor(TFT_RED, TFT_BLACK); + tft.println("Set REPEAT_CAL to false to stop this running again!"); + } + + tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15); + + tft.setTextColor(TFT_GREEN, TFT_BLACK); + tft.println("Calibration complete!"); + + // store data + File f = LittleFS.open(CALIBRATION_FILE, "w"); + if (f) { + f.write((const unsigned char *)calData, 14); + f.close(); + } + } +} diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/Animated_Eyes_1.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/Animated_Eyes_1.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/Animated_Eyes_1.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/Animated_Eyes_1.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/config.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/config.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/config.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/config.h index b99db415..d601d648 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/config.h +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/config.h @@ -64,7 +64,7 @@ // JOYSTICK_X_PIN and JOYSTICK_Y_PIN specify analog input pins for manually // controlling the eye with an analog joystick. If set to -1 or if not // defined, the eye will move on its own. -// IRIS_PIN speficies an analog input pin for a photocell to make pupils +// IRIS_PIN specifies an analog input pin for a photocell to make pupils // react to light (or potentiometer for manual control). If set to -1 or // if not defined, the pupils will change on their own. // BLINK_PIN specifies an input pin for a button (to ground) that will diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/catEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/catEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/catEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/catEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/defaultEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/defaultEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/defaultEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/defaultEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/doeEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/doeEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/doeEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/doeEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/dragonEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/dragonEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/dragonEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/dragonEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/goatEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/goatEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/goatEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/goatEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/logo.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/logo.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/logo.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/logo.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/naugaEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/naugaEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/naugaEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/naugaEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/newtEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/newtEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/newtEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/newtEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/noScleraEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/noScleraEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/noScleraEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/noScleraEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/owlEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/owlEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/owlEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/owlEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/terminatorEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/terminatorEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/data/terminatorEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/data/terminatorEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/eye_functions.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/eye_functions.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/eye_functions.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/eye_functions.ino index 96a583ef..2db27dc0 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/eye_functions.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/eye_functions.ino @@ -11,7 +11,7 @@ // boards and WILL NOT work on normal Arduino or other boards! // // SEE FILE "config.h" FOR MOST CONFIGURATION (graphics, pins, display type, -// etc). Probably won't need to edit THIS file unless you're doing some +// etc.). Probably won't need to edit THIS file unless you're doing some // extremely custom modifications. // // Adafruit invests time and resources providing this open source code, @@ -91,7 +91,7 @@ void updateEye (void) // EYE-RENDERING FUNCTION -------------------------------------------------- void drawEye( // Renders one eye. Inputs must be pre-clipped & valid. - // Use native 32 bit variables where possible as this is 10% faster! + // Use native 32-bit variables where possible as this is 10% faster! uint8_t e, // Eye array index; 0 or 1 for left/right uint32_t iScale, // Scale factor for iris uint32_t scleraX, // First pixel X offset into sclera image diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/user.cpp b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/user.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/user.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/user.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/user_bat.cpp b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/user_bat.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/user_bat.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/user_bat.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/user_xmas.cpp b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/user_xmas.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/user_xmas.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_1/user_xmas.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/Animated_Eyes_2.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/Animated_Eyes_2.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/Animated_Eyes_2.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/Animated_Eyes_2.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/config.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/config.h similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/config.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/config.h index e7e29e26..d519c9ff 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/config.h +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/config.h @@ -64,7 +64,7 @@ // JOYSTICK_X_PIN and JOYSTICK_Y_PIN specify analog input pins for manually // controlling the eye with an analog joystick. If set to -1 or if not // defined, the eye will move on its own. -// IRIS_PIN speficies an analog input pin for a photocell to make pupils +// IRIS_PIN specifies an analog input pin for a photocell to make pupils // react to light (or potentiometer for manual control). If set to -1 or // if not defined, the pupils will change on their own. // BLINK_PIN specifies an input pin for a button (to ground) that will diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/catEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/catEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/catEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/catEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/defaultEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/defaultEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/defaultEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/defaultEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/doeEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/doeEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/doeEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/doeEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/dragonEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/dragonEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/dragonEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/dragonEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/goatEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/goatEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/goatEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/goatEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/logo.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/logo.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/logo.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/logo.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/naugaEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/naugaEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/naugaEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/naugaEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/newtEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/newtEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/newtEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/newtEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/noScleraEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/noScleraEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/noScleraEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/noScleraEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/owlEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/owlEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/owlEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/owlEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/terminatorEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/terminatorEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/data/terminatorEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/data/terminatorEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/eye_functions.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/eye_functions.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/eye_functions.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/eye_functions.ino index 96a583ef..2db27dc0 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_1/eye_functions.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/eye_functions.ino @@ -11,7 +11,7 @@ // boards and WILL NOT work on normal Arduino or other boards! // // SEE FILE "config.h" FOR MOST CONFIGURATION (graphics, pins, display type, -// etc). Probably won't need to edit THIS file unless you're doing some +// etc.). Probably won't need to edit THIS file unless you're doing some // extremely custom modifications. // // Adafruit invests time and resources providing this open source code, @@ -91,7 +91,7 @@ void updateEye (void) // EYE-RENDERING FUNCTION -------------------------------------------------- void drawEye( // Renders one eye. Inputs must be pre-clipped & valid. - // Use native 32 bit variables where possible as this is 10% faster! + // Use native 32-bit variables where possible as this is 10% faster! uint8_t e, // Eye array index; 0 or 1 for left/right uint32_t iScale, // Scale factor for iris uint32_t scleraX, // First pixel X offset into sclera image diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/user.cpp b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/user.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/user.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/user.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/user_bat.cpp b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/user_bat.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/user_bat.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/user_bat.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/user_xmas.cpp b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/user_xmas.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/user_xmas.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/user_xmas.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/wiring.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/wiring.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Animated_Eyes_2/wiring.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Animated_Eyes_2/wiring.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/Baboon40.jpg b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/Baboon40.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/Baboon40.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/Baboon40.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/EagleEye.jpg b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/EagleEye.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/EagleEye.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/EagleEye.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/Mouse480.jpg b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/Mouse480.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/Mouse480.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/Mouse480.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/lena20k.jpg b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/lena20k.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/Data/lena20k.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/Data/lena20k.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino index 3c30f1d7..d64775c8 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino @@ -36,7 +36,7 @@ void setup() { tft.begin(); - if (!SD.begin()) { + if (!SD.begin(5, tft.getSPIinstance())) { Serial.println("Card Mount Failed"); return; } @@ -249,7 +249,7 @@ void jpegInfo() { // Show the execution time (optional) //#################################################################################################### // WARNING: for UNO/AVR legacy reasons printing text to the screen with the Mega might not work for -// sketch sizes greater than ~70KBytes because 16 bit address pointers are used in some libraries. +// sketch sizes greater than ~70KBytes because 16-bit address pointers are used in some libraries. // The Due will work fine with the HX8357_Due library. diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino index c78e0bff..7cc3db2c 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino @@ -120,7 +120,7 @@ void setup(void) { // EYE-RENDERING FUNCTION -------------------------------------------------- #define BUFFER_SIZE 256 // 64 to 512 seems optimum = 30 fps for default eye void drawEye( // Renders one eye. Inputs must be pre-clipped & valid. - // Use native 32 bit variables where possible as this is 10% faster! + // Use native 32-bit variables where possible as this is 10% faster! uint8_t e, // Eye array index; 0 or 1 for left/right uint32_t iScale, // Scale factor for iris uint32_t scleraX, // First pixel X offset into sclera image @@ -134,7 +134,7 @@ void drawEye( // Renders one eye. Inputs must be pre-clipped & valid. uint32_t d; uint32_t pixels = 0; - uint16_t pbuffer[BUFFER_SIZE]; // This one needs to be 16 bit + uint16_t pbuffer[BUFFER_SIZE]; // This one needs to be 16-bit // Set up raw pixel dump to entire screen. Although such writes can wrap // around automatically from end of rect back to beginning, the region is diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/defaultEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/defaultEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/defaultEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/defaultEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/dragonEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/dragonEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/dragonEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/dragonEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/goatEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/goatEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/goatEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/goatEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/noScleraEye.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/noScleraEye.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/noScleraEye.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/noScleraEye.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino index daa60ac6..9dd98f3a 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino @@ -58,7 +58,7 @@ void screenshotToConsole() // Get first pixel to prime the Run Length Encoded // Function format is: tft.readRectRGB( x, y, width, height, buffer); - // color is a pointer to a buffer that the RGB 8 bit values are piped into + // color is a pointer to a buffer that the RGB 8-bit values are piped into // the buffer size must be >= (width * height * 3) bytes eye[e].tft.readRectRGB(0, 0, 1, 1, color); // 1 x 1 so reading 1 pixel at 0,0 diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Gradient_Fill/Gradient_Fill.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Gradient_Fill/Gradient_Fill.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Gradient_Fill/Gradient_Fill.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Gradient_Fill/Gradient_Fill.ino diff --git a/libraries/TFT_eSPI-2.5.43/examples/Generic/Julia_Set/Julia_Set.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Julia_Set/Julia_Set.ino new file mode 100644 index 00000000..01ac79ca --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/Julia_Set/Julia_Set.ino @@ -0,0 +1,83 @@ +// Based on sketch here: +// https://github.com/OpenHDZ/Arduino-experimentation +// Adapted for TFT_eSPI library + +// Note: a high number of floating point calculations are needed +// for each pixel so rendering will be quite slow. +// For best performance use a Teensy 4.x (600MHz CPU clock). + +#include // Hardware-specific library + +TFT_eSPI tft = TFT_eSPI(); // Invoke custom library + +const uint16_t MAX_ITERATION = 300; // Nombre de couleurs + +#define SCREEN_WIDTH tft.width() // +#define SCREEN_HEIGHT tft.height() // Taille de l'écran + +static float zoom = 0.5; + +/* Fonction setup */ +void setup() { +/* Initialise l'écran LCD */ + tft.begin(); + tft.setRotation(1); + tft.fillScreen(TFT_BLACK); + tft.setFreeFont(&FreeMono9pt7b); +} + +/* Fonction loop() */ +void loop() { + /* Dessine la fractale */ + draw_Julia(-0.8,+0.156,zoom); + tft.fillRect(0, 0, 150, 20, TFT_BLACK); + tft.setCursor(0,15); + tft.setTextColor(TFT_WHITE); + tft.print(" Zoom = "); + tft.println(zoom); + delay(2000); + zoom *= 1.5; + if (zoom > 100) zoom = 0.5; +} + +/* + Dessine une fractale de Julia + */ + +void draw_Julia(float c_r, float c_i, float zoom) { + + tft.setCursor(0,0); + float new_r = 0.0, new_i = 0.0, old_r = 0.0, old_i = 0.0; + + /* Pour chaque pixel en X */ + + for(int16_t x = SCREEN_WIDTH/2 - 1; x >= 0; x--) { // Rely on inverted symmetry + /* Pour chaque pixel en Y */ + for(uint16_t y = 0; y < SCREEN_HEIGHT; y++) { + old_r = 1.5 * (x - SCREEN_WIDTH / 2) / (0.5 * zoom * SCREEN_WIDTH); + old_i = (y - SCREEN_HEIGHT / 2) / (0.5 * zoom * SCREEN_HEIGHT); + uint16_t i = 0; + + while ((old_r * old_r + old_i * old_i) < 4.0 && i < MAX_ITERATION) { + new_r = old_r * old_r - old_i * old_i ; + new_i = 2.0 * old_r * old_i; + + old_r = new_r+c_r; + old_i = new_i+c_i; + + i++; + } + /* Affiche le pixel */ + if (i < 100){ + tft.drawPixel(x,y,tft.color565(255,255,map(i,0,100,255,0))); + tft.drawPixel(SCREEN_WIDTH - x - 1,SCREEN_HEIGHT - y - 1,tft.color565(255,255,map(i,0,100,255,0))); + }if(i<200){ + tft.drawPixel(x,y,tft.color565(255,map(i,100,200,255,0),0)); + tft.drawPixel(SCREEN_WIDTH - x - 1,SCREEN_HEIGHT - y - 1,tft.color565(255,map(i,100,200,255,0),0)); + }else{ + tft.drawPixel(x,y,tft.color565(map(i,200,300,255,0),0,0)); + tft.drawPixel(SCREEN_WIDTH - x - 1,SCREEN_HEIGHT - y - 1,tft.color565(map(i,200,300,255,0),0,0)); + } + } + } +} diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Local_Custom_Fonts/Local_Custom_Fonts.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Local_Custom_Fonts/Local_Custom_Fonts.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Local_Custom_Fonts/Local_Custom_Fonts.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Local_Custom_Fonts/Local_Custom_Fonts.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Local_Custom_Fonts/MyFont.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/Local_Custom_Fonts/MyFont.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Local_Custom_Fonts/MyFont.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Local_Custom_Fonts/MyFont.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/On_Off_Button/On_Off_Button.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/On_Off_Button/On_Off_Button.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/On_Off_Button/On_Off_Button.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/On_Off_Button/On_Off_Button.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Button_Label_Datum/TFT_Button_Label_Datum.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Button_Label_Datum/TFT_Button_Label_Datum.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Button_Label_Datum/TFT_Button_Label_Datum.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Button_Label_Datum/TFT_Button_Label_Datum.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/Alert.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/Alert.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/Alert.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/Alert.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/Close.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/Close.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/Close.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/Close.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/Info.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/Info.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/Info.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/Info.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino index cde4ecb9..14d52db9 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino @@ -1,4 +1,4 @@ -// Icon images are stored in tabs ^ e.g. Alert.h etc above this line +// Icon images are stored in tabs ^ e.g. Alert.h etc.above this line // more than one icon can be in a header file // Arrays containing FLASH images can be created with UTFT library tool: diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino index b3905e9d..1d9de1e8 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino @@ -46,7 +46,7 @@ void drawBmp(const char *filename, int16_t x, int16_t y) { bmpFS.read(lineBuffer, sizeof(lineBuffer)); uint8_t* bptr = lineBuffer; uint16_t* tptr = (uint16_t*)lineBuffer; - // Convert 24 to 16 bit colours + // Convert 24 to 16-bit colours for (uint16_t col = 0; col < w; col++) { b = *bptr++; diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/data/parrot.bmp b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/data/parrot.bmp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_SPIFFS_BMP/data/parrot.bmp rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_SPIFFS_BMP/data/parrot.bmp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/TFT_Screen_Capture.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/TFT_Screen_Capture.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/TFT_Screen_Capture.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/TFT_Screen_Capture.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/processing_sketch.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/processing_sketch.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/processing_sketch.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/processing_sketch.ino index 3e71f41f..d657a080 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/processing_sketch.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/processing_sketch.ino @@ -63,7 +63,7 @@ int max_allowed = 1000; // Maximum number of save images allowed before a resta // These are default values, this sketch obtains the actual values from the Arduino board int tft_width = 480; // default TFT width (automatic - sent by Arduino) int tft_height = 480; // default TFT height (automatic - sent by Arduino) -int color_bytes = 2; // 2 for 16 bit, 3 for three RGB bytes (automatic - sent by Arduino) +int color_bytes = 2; // 2 for 16-bit, 3 for three RGB bytes (automatic - sent by Arduino) import processing.serial.*; diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/screenServer.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/screenServer.ino similarity index 95% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/screenServer.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/screenServer.ino index 82bbbd7d..733c4ffc 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/TFT_Screen_Capture/screenServer.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/TFT_Screen_Capture/screenServer.ino @@ -2,8 +2,8 @@ // over the serial port. Use a high baud rate, e.g. for an ESP8266: // Serial.begin(921600); -// At 921600 baud a 320 x 240 image with 16 bit colour transfers can be sent to the -// PC client in ~1.67s and 24 bit colour in ~2.5s which is close to the theoretical +// At 921600 baud a 320 x 240 image with 16-bit colour transfers can be sent to the +// PC client in ~1.67s and 24-bit colour in ~2.5s which is close to the theoretical // minimum transfer time. // This sketch has been created to work with the TFT_eSPI library here: @@ -40,7 +40,7 @@ // Number of pixels to send in a burst (minimum of 1), no benefit above 8 // NPIXELS values and render times: -// NPIXELS 1 = use readPixel() = >5s and 16 bit pixels only +// NPIXELS 1 = use readPixel() = >5s and 16-bit pixels only // NPIXELS >1 using rectRead() 2 = 1.75s, 4 = 1.68s, 8 = 1.67s #define NPIXELS 8 // Must be integer division of both TFT width and TFT height @@ -104,7 +104,7 @@ bool serialScreenServer(String filename) wait = false; // No need to wait anymore lastCmdTime = millis(); // Set last received command time - // Send screen size etc using a simple header with delimiters for client checks + // Send screen size etc.using a simple header with delimiters for client checks sendParameters(filename); } } @@ -169,7 +169,7 @@ bool serialScreenServer(String filename) } //==================================================================================== -// Send screen size etc using a simple header with delimiters for client checks +// Send screen size etc.using a simple header with delimiters for client checks //==================================================================================== void sendParameters(String filename) { @@ -183,7 +183,7 @@ void sendParameters(String filename) Serial.write('Y'); // Bits per pixel (16 or 24) if (NPIXELS > 1) Serial.write(BITS_PER_PIXEL); - else Serial.write(16); // readPixel() only provides 16 bit values + else Serial.write(16); // readPixel() only provides 16-bit values Serial.write('?'); // Filename next Serial.print(filename); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Touch_calibrate/Touch_calibrate.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Touch_calibrate/Touch_calibrate.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Touch_calibrate/Touch_calibrate.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Touch_calibrate/Touch_calibrate.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_Demo/Viewport_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_Demo/Viewport_Demo.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_Demo/Viewport_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_Demo/Viewport_Demo.ino index 83916520..07d43df6 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_Demo/Viewport_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_Demo/Viewport_Demo.ino @@ -10,7 +10,7 @@ // Viewports have a number of potential uses: // - create a "virtual" TFT screen smaller than the actual TFT screen -// - render GUI items (menus etc) in a viewport, erase GUI item by redrawing whole screen, +// - render GUI items (menus etc.) in a viewport, erase GUI item by redrawing whole screen, // this will be fast because only the viewport will be refreshed (e.g. clearing menu) // - limit screen refresh to a particular area, e.g. changing numbers, icons or graph plotting // - showing a small portion of a larger image or sprite, this allows panning and scrolling diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_Demo/Viewport_commands.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_Demo/Viewport_commands.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_Demo/Viewport_commands.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_Demo/Viewport_commands.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_graphicstest/Viewport_graphicstest.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_graphicstest/Viewport_graphicstest.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/Viewport_graphicstest/Viewport_graphicstest.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/Viewport_graphicstest/Viewport_graphicstest.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino similarity index 93% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino index f267195f..a436dcc5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino @@ -6,7 +6,7 @@ blendedColor = tft.alphaBlend(alpha, fg_color, bg_color); - The alphaBlend() function operates on 16 bit colours only + The alphaBlend() function operates on 16-bit colours only A test is included where the colours are mapped to 8 bits after blending Information on alpha blending is here @@ -43,7 +43,7 @@ void setup(void) { // ------------------------------------------------------------------------- void loop() { - // 16 bit colours (5 bits red, 6 bits green, 5 bits blue) + // 16-bit colours (5 bits red, 6 bits green, 5 bits blue) // Blend from white to full spectrum for (int a = 0; a < 256; a+=2) // Alpha 0 = 100% background, alpha 255 = 100% foreground { @@ -79,18 +79,18 @@ void loop() delay(4000); //* - // Decrease to 8 bit colour (3 bits red, 3 bits green, 2 bits blue) + // Decrease to 8-bit colour (3 bits red, 3 bits green, 2 bits blue) // Blend from white to full spectrum for (int a = 0; a < 256; a+=2) // Alpha 0 = 100% background, alpha 255 = 100% foreground { - // Convert blended 16 bit colour to 8 bits to reduce colour resolution, then map back to 16 bits for displaying + // Convert blended 16-bit colour to 8 bits to reduce colour resolution, then map back to 16 bits for displaying for (int c = 0; c < 192; c++) tft.drawPixel(c, a/2, tft.color8to16(tft.color16to8(tft.alphaBlend(a, rainbow(c), 0xFFFF)))); } // Blend from full spectrum to black for (int a = 255; a > 2; a-=2) { - // Convert blended 16 bit colour to 8 bits to reduce colour resolution, then map back to 16 bits for displaying + // Convert blended 16-bit colour to 8 bits to reduce colour resolution, then map back to 16 bits for displaying for (int c = 0; c < 192; c++) tft.drawPixel(c, 128 + (255-a)/2, tft.color8to16(tft.color16to8(tft.alphaBlend(a, rainbow(c), 0)))); } @@ -108,7 +108,7 @@ void loop() //*/ /* - // 16 bit colours (5 bits red, 6 bits green, 5 bits blue) + // 16-bit colours (5 bits red, 6 bits green, 5 bits blue) for (int a = 0; a < 256; a+=2) // Alpha 0 = 100% background, alpha 255 = 100% foreground { for (int c = 0; c < 192; c++) tft.drawPixel(c, a/2, tft.alphaBlend(a, rainbow(c), TFT_CYAN)); @@ -137,7 +137,7 @@ void loop() // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow(byte value) { @@ -147,7 +147,7 @@ unsigned int rainbow(byte value) value = value%192; - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0; // Green is the middle 6 bits, but only top 5 bits used here byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/drawXBitmap/drawXBitmap.ino b/libraries/TFT_eSPI-2.5.43/examples/Generic/drawXBitmap/drawXBitmap.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/drawXBitmap/drawXBitmap.ino rename to libraries/TFT_eSPI-2.5.43/examples/Generic/drawXBitmap/drawXBitmap.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Generic/drawXBitmap/xbm.h b/libraries/TFT_eSPI-2.5.43/examples/Generic/drawXBitmap/xbm.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Generic/drawXBitmap/xbm.h rename to libraries/TFT_eSPI-2.5.43/examples/Generic/drawXBitmap/xbm.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/Flash_PNG/Flash_PNG.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_PNG/Flash_PNG.ino similarity index 86% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/Flash_PNG/Flash_PNG.ino rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_PNG/Flash_PNG.ino index 6fcbadbc..91d71bf2 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/Flash_PNG/Flash_PNG.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_PNG/Flash_PNG.ino @@ -2,6 +2,10 @@ // This example renders a png file that is stored in a FLASH array // using the PNGdec library (available via library manager). +// Note: The PNGDEC required lots of RAM to work (~40kbytes) so +// this sketch is will not run on smaller memory processors (e.g. +// ESP8266, STM32F103 etc.) + // Image files can be converted to arrays using the tool here: // https://notisrac.github.io/FileToCArray/ // To use this tool: @@ -14,11 +18,11 @@ // Include the PNG decoder library #include -#include "panda.h" // Image is stored here in an 8 bit array +#include "panda.h" // Image is stored here in an 8-bit array -PNG png; // PNG decoder inatance +PNG png; // PNG decoder instance -#define MAX_IMAGE_WDITH 240 // Adjust for your images +#define MAX_IMAGE_WIDTH 240 // Adjust for your images int16_t xpos = 0; int16_t ypos = 0; @@ -50,7 +54,7 @@ void loop() { int16_t rc = png.openFLASH((uint8_t *)panda, sizeof(panda), pngDraw); if (rc == PNG_SUCCESS) { - Serial.println("Successfully png file"); + Serial.println("Successfully opened png file"); Serial.printf("image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType()); tft.startWrite(); uint32_t dt = millis(); @@ -72,7 +76,7 @@ void loop() // you will need to adapt this function to suit. // Callback function to draw pixels to the display void pngDraw(PNGDRAW *pDraw) { - uint16_t lineBuffer[MAX_IMAGE_WDITH]; + uint16_t lineBuffer[MAX_IMAGE_WIDTH]; png.getLineAsRGB565(pDraw, lineBuffer, PNG_RGB565_BIG_ENDIAN, 0xffffffff); tft.pushImage(xpos, ypos + pDraw->y, pDraw->iWidth, 1, lineBuffer); } diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/Flash_PNG/panda.h b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_PNG/panda.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/Flash_PNG/panda.h rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_PNG/panda.h diff --git a/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/Flash_transparent_PNG.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/Flash_transparent_PNG.ino new file mode 100644 index 00000000..366e3296 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/Flash_transparent_PNG.ino @@ -0,0 +1,90 @@ + +// This example renders a png file that is stored in a FLASH array +// using the PNGdec library (available via library manager). + +// Note: The PNGDEC required lots of RAM to work (~40kbytes) so +// this sketch is will not run on smaller memory processors (e.g. +// ESP8266, STM32F103 etc.) + +// The example png is encoded as ARGB 8 bits per pixel with indexed colour +// It was created using GIMP and has a transparent background area. + +// Image files can be converted to arrays using the tool here: +// https://notisrac.github.io/FileToCArray/ +// To use this tool: +// 1. Drag and drop PNG image file on "Browse..." button +// 2. Tick box "Treat as binary" +// 3. Click "Convert" +// 4. Click "Save as file" and move the header file to sketch folder +// (alternatively use the "Copy to clipboard" and paste into a new tab) +// 5. Open the sketch in IDE +// 6. Include the header file containing the array (SpongeBob.h in this example) + +// Include the PNG decoder library, available via the IDE library manager +#include + +// Include image array +#include "SpongeBob.h" + +PNG png; // PNG decoder instance + +#define MAX_IMAGE_WIDTH 240 // Sets rendering line buffer lengths, adjust for your images + +// Include the TFT library - see https://github.com/Bodmer/TFT_eSPI for library information +#include "SPI.h" +#include // Hardware-specific library +TFT_eSPI tft = TFT_eSPI(); // Invoke custom library + +// Position variables must be global (PNGdec does not handle position coordinates) +int16_t xpos = 0; +int16_t ypos = 0; + +//==================================================================================== +// Setup +//==================================================================================== +void setup() +{ + Serial.begin(115200); + Serial.println("\n\n Using the PNGdec library"); + + // Initialise the TFT + tft.begin(); + tft.fillScreen(TFT_BLACK); + + Serial.println("\r\nInitialisation done."); +} + +//==================================================================================== +// Loop +//==================================================================================== +void loop() +{ + uint16_t pngw = 0, pngh = 0; // To store width and height of image + + int16_t rc = png.openFLASH((uint8_t *)bob, sizeof(bob), pngDraw); + + if (rc == PNG_SUCCESS) { + Serial.println("Successfully opened png file"); + pngw = png.getWidth(); + pngh = png.getHeight(); + Serial.printf("Image metrics: (%d x %d), %d bpp, pixel type: %d\n", pngw, pngh, png.getBpp(), png.getPixelType()); + + tft.startWrite(); + uint32_t dt = millis(); + rc = png.decode(NULL, 0); + tft.endWrite(); + Serial.print(millis() - dt); Serial.println("ms"); + tft.endWrite(); + + // png.close(); // Required for files, not needed for FLASH arrays + } + + delay(250); + + // Randomly change position + xpos = random(tft.width() - pngw); + ypos = random(tft.height() - pngh); + + // Fill screen with a random colour at random intervals + if (random(100) < 20) tft.fillScreen(random(0x10000)); +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/SpongeBob.h b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/SpongeBob.h new file mode 100644 index 00000000..7aa29e9d --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/SpongeBob.h @@ -0,0 +1,1355 @@ +// array size is 21621 +static const unsigned char bob[] PROGMEM = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x76, 0x08, 0x06, 0x00, 0x00, 0x00, 0x03, 0x6e, 0x57, + 0xa2, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xec, 0xbd, 0x77, 0x98, 0x64, + 0x65, 0x99, 0xf7, 0xff, 0x79, 0xce, 0x39, 0x75, 0x2a, 0xc7, 0xee, 0xea, 0x9c, 0xe3, 0xf4, 0xe4, + 0xc0, 0x24, 0x60, 0x80, 0x95, 0x8c, 0x60, 0x00, 0x03, 0x20, 0x71, 0xdd, 0x55, 0x56, 0x57, 0xd6, + 0xb0, 0xbe, 0xee, 0xeb, 0xba, 0x2a, 0x86, 0x75, 0x55, 0x44, 0x74, 0x5d, 0xc5, 0x35, 0x80, 0xa0, + 0xa2, 0x20, 0x92, 0x83, 0x3a, 0x30, 0xc0, 0x00, 0x33, 0x30, 0x39, 0x31, 0xd3, 0x93, 0x3a, 0xe7, + 0xea, 0x50, 0x5d, 0xb9, 0xea, 0x9c, 0xf3, 0xfc, 0xfe, 0xa8, 0xea, 0xea, 0xee, 0x09, 0xb8, 0xeb, + 0xbe, 0x2b, 0xfa, 0xbb, 0x3c, 0x73, 0xd5, 0xd5, 0x5d, 0x53, 0xd5, 0xa7, 0xce, 0x73, 0xee, 0xe7, + 0x4e, 0xdf, 0xfb, 0x7b, 0xdf, 0x05, 0x7f, 0x39, 0xfe, 0x72, 0xfc, 0xe5, 0xf8, 0xcb, 0xf1, 0x97, + 0xe3, 0x2f, 0xc7, 0x5f, 0x8e, 0xbf, 0x1c, 0x7f, 0x39, 0xfe, 0x72, 0xfc, 0xe5, 0xf8, 0xef, 0x1d, + 0xe2, 0x7f, 0xf4, 0xd7, 0x12, 0xd1, 0x76, 0xa8, 0x62, 0xc9, 0x59, 0xbb, 0xd5, 0x4a, 0xaf, 0x36, + 0xc5, 0xa0, 0x51, 0x25, 0x9f, 0xba, 0x60, 0x60, 0x38, 0xa9, 0x67, 0x86, 0xf0, 0x9b, 0x63, 0x00, + 0x8c, 0x7b, 0xaa, 0xce, 0x7d, 0xb9, 0xa5, 0xb5, 0x75, 0x7a, 0xdc, 0x95, 0xb4, 0x05, 0xde, 0x6d, + 0x1f, 0x31, 0xc2, 0x8a, 0x0d, 0xb2, 0x6d, 0xe3, 0xdb, 0xa6, 0x33, 0xb6, 0xa7, 0x1f, 0xbd, 0x64, + 0xf4, 0xd8, 0xda, 0x07, 0xcf, 0x2a, 0x6d, 0x9a, 0x98, 0x6a, 0x54, 0x3a, 0xfa, 0x56, 0xb9, 0x8f, + 0x95, 0xac, 0x77, 0xeb, 0xe3, 0xa8, 0xfa, 0x38, 0x42, 0x80, 0x02, 0x18, 0xd9, 0x0a, 0xc6, 0x6d, + 0xbe, 0x83, 0x87, 0xeb, 0xf9, 0xdd, 0xd6, 0xf6, 0xfe, 0x8c, 0xe5, 0xcd, 0xbd, 0x06, 0x0e, 0x61, + 0x8f, 0x99, 0x67, 0x65, 0xdc, 0xc6, 0xbe, 0xd5, 0xcf, 0x2c, 0x08, 0x37, 0xf7, 0xcb, 0xea, 0xd2, + 0xd2, 0x1e, 0x24, 0xd3, 0xe4, 0x72, 0xa0, 0x08, 0xb0, 0xcc, 0x1a, 0xf6, 0xb6, 0x3a, 0x8c, 0xad, + 0x0b, 0xfb, 0xfa, 0xf0, 0x65, 0x0e, 0x17, 0xaf, 0x7b, 0xca, 0xdb, 0x2c, 0xac, 0x6c, 0x75, 0x70, + 0xd2, 0x3b, 0x74, 0xd9, 0x6b, 0x81, 0x16, 0x33, 0x64, 0xbd, 0xc3, 0x79, 0x44, 0xaf, 0x92, 0xd2, + 0x20, 0x59, 0xe2, 0xca, 0x7a, 0x45, 0xe4, 0xee, 0xe3, 0x41, 0x77, 0xf7, 0x73, 0x1b, 0x7a, 0x62, + 0x8e, 0x8c, 0xad, 0x2d, 0xed, 0x15, 0x2f, 0x61, 0x8b, 0xa7, 0x00, 0x88, 0x7b, 0x1b, 0xb4, 0xac, + 0xd9, 0x60, 0x04, 0x33, 0x7b, 0xc0, 0x4c, 0x22, 0xc8, 0x20, 0x85, 0x0b, 0xa4, 0x1d, 0xc1, 0xe4, + 0xff, 0xaf, 0x04, 0x7c, 0xd5, 0xd3, 0x95, 0x6f, 0x5d, 0xd0, 0xaf, 0x3d, 0x10, 0x8a, 0x8e, 0xb9, + 0x74, 0x1b, 0xa0, 0x7a, 0x98, 0x56, 0x8d, 0x6c, 0xc4, 0x1e, 0x48, 0x25, 0x1b, 0x7b, 0xd2, 0x18, + 0x0e, 0x51, 0x7a, 0xa8, 0xca, 0xe5, 0x35, 0x26, 0x3d, 0x41, 0xbb, 0x4a, 0x6d, 0x55, 0x10, 0x87, + 0x5d, 0x67, 0x7c, 0x72, 0x9a, 0xc8, 0xf8, 0x04, 0xd3, 0x66, 0xd6, 0xb0, 0xec, 0xd9, 0x04, 0x19, + 0xbf, 0xae, 0x65, 0x84, 0xd3, 0xa6, 0xc5, 0xf1, 0xb8, 0xbc, 0x94, 0x04, 0x7d, 0xf8, 0xfd, 0x5e, + 0x84, 0x80, 0xe8, 0x74, 0x82, 0xe1, 0xe1, 0x31, 0x92, 0x99, 0x0c, 0x19, 0xbb, 0x8b, 0xa8, 0xa8, + 0x93, 0xb1, 0xc6, 0xa9, 0x09, 0xb4, 0xac, 0x70, 0x1d, 0x2b, 0x0b, 0x79, 0xad, 0x81, 0x98, 0x6e, + 0x66, 0x75, 0x97, 0x74, 0xda, 0x43, 0x21, 0x0d, 0x87, 0xdd, 0x46, 0x30, 0xe0, 0xc5, 0x30, 0x2d, + 0xc6, 0x27, 0xe2, 0x0c, 0x27, 0x52, 0x0c, 0xdb, 0x9c, 0xe9, 0x68, 0xd3, 0x40, 0x54, 0x28, 0x16, + 0x02, 0x81, 0x2d, 0xb2, 0xd0, 0xeb, 0x1e, 0xc8, 0x38, 0x3d, 0x6a, 0x6f, 0xda, 0x6b, 0x78, 0x9c, + 0x65, 0x21, 0x17, 0x15, 0x65, 0x41, 0x02, 0x21, 0x0f, 0xb9, 0x6c, 0x8e, 0x9e, 0xbe, 0x71, 0xba, + 0xc7, 0xc6, 0x32, 0x49, 0x61, 0x33, 0xe3, 0xb2, 0xd6, 0x95, 0x6c, 0x1e, 0x9f, 0x30, 0x3d, 0x03, + 0x39, 0x10, 0xe8, 0xc3, 0x1d, 0x5e, 0xd7, 0x90, 0xe5, 0xf2, 0xa8, 0x3d, 0x51, 0x45, 0xa4, 0x4c, + 0x45, 0x2a, 0x86, 0x54, 0x14, 0xdb, 0x94, 0xc3, 0xa7, 0x0c, 0xd6, 0xca, 0x57, 0xba, 0x82, 0xe2, + 0xb6, 0xcd, 0xa5, 0xfa, 0x36, 0x1a, 0x86, 0xad, 0x3f, 0x6b, 0x01, 0x5f, 0xfc, 0xc8, 0xaa, 0x0d, + 0x67, 0x0e, 0x8c, 0xfd, 0xa6, 0x4a, 0x99, 0x70, 0x9e, 0xb3, 0x61, 0x25, 0x95, 0xe5, 0x7e, 0x6c, + 0xba, 0x46, 0x3a, 0x99, 0x65, 0x32, 0x9a, 0x64, 0x62, 0x3c, 0x81, 0x94, 0x12, 0xb7, 0xc7, 0x41, + 0x28, 0xe4, 0xc2, 0xef, 0x73, 0x61, 0xb7, 0x69, 0x08, 0x04, 0x12, 0x49, 0x32, 0x9d, 0x25, 0x12, + 0x89, 0x11, 0x89, 0xc4, 0xb1, 0xa4, 0xc4, 0xe3, 0xb1, 0x13, 0x2e, 0xf5, 0xe0, 0xf5, 0x3a, 0xd1, + 0x35, 0x0d, 0x21, 0x00, 0x09, 0x12, 0x48, 0xa6, 0xb3, 0x8c, 0x8c, 0x4e, 0x33, 0x32, 0x12, 0x25, + 0x1a, 0x4d, 0x22, 0x25, 0xe8, 0x36, 0x15, 0x9f, 0xdf, 0x89, 0xdf, 0xe7, 0x22, 0x18, 0x74, 0xe2, + 0x76, 0x3b, 0xb0, 0xdb, 0x6d, 0x28, 0x42, 0x20, 0x0a, 0xcb, 0xb2, 0xa4, 0x24, 0x95, 0xce, 0x12, + 0x19, 0x8b, 0x31, 0x30, 0x38, 0xc9, 0xe8, 0xe8, 0x14, 0xa9, 0x64, 0x16, 0x97, 0xdb, 0x4e, 0xb8, + 0xdc, 0x4f, 0x65, 0x79, 0x80, 0x70, 0xd8, 0x83, 0xd3, 0x69, 0x27, 0x67, 0x09, 0x14, 0xcb, 0x42, + 0xd7, 0x14, 0x2c, 0x60, 0x2a, 0x9a, 0xa0, 0xb7, 0x6f, 0x82, 0xd1, 0xd1, 0x69, 0xa6, 0x26, 0x63, + 0x98, 0x86, 0x09, 0x02, 0x9c, 0x2e, 0x07, 0x3e, 0xbf, 0x8b, 0x80, 0xdf, 0x4d, 0x69, 0xa9, 0x07, + 0x8f, 0x5b, 0x47, 0x00, 0xd9, 0xac, 0x49, 0x5f, 0xef, 0x24, 0x2f, 0x77, 0xf7, 0xf3, 0x5a, 0x43, + 0xfc, 0xbb, 0x7b, 0x1b, 0x92, 0x1f, 0xdb, 0x5f, 0x67, 0x66, 0xff, 0x2c, 0x05, 0x7c, 0xc1, 0x53, + 0xb5, 0xda, 0xa2, 0xd1, 0xdc, 0x83, 0xcd, 0xe3, 0xa3, 0x6f, 0x2f, 0x2f, 0x2f, 0x17, 0x6f, 0xbb, + 0x6c, 0x2d, 0x76, 0x9b, 0x0a, 0x42, 0x80, 0x94, 0x20, 0x04, 0x42, 0x14, 0x4e, 0x2d, 0x65, 0xe1, + 0x87, 0x44, 0x08, 0x81, 0x2c, 0x9a, 0xf7, 0xfc, 0x73, 0x0a, 0xef, 0x93, 0x85, 0xf7, 0xe5, 0xdf, + 0x31, 0xff, 0xb2, 0x0a, 0xa7, 0x2c, 0x5c, 0xb1, 0x28, 0xfa, 0x07, 0x13, 0xb0, 0x2c, 0x89, 0x76, + 0xc2, 0x8a, 0x84, 0x04, 0x89, 0x28, 0x5c, 0xce, 0xcc, 0xe7, 0xe4, 0xcf, 0x33, 0xf3, 0x5c, 0xa8, + 0x02, 0x69, 0x4a, 0x90, 0x92, 0xe9, 0x94, 0xc5, 0x57, 0xbe, 0x76, 0x80, 0x35, 0xab, 0x4b, 0x79, + 0xfb, 0xa5, 0x95, 0x28, 0x85, 0xdd, 0x65, 0x29, 0x02, 0x55, 0x51, 0xb0, 0x4c, 0x93, 0x99, 0x0b, + 0x17, 0x85, 0xb5, 0x49, 0x40, 0x48, 0x39, 0x6f, 0x3d, 0x08, 0xc1, 0x54, 0x2c, 0xc5, 0x33, 0xaf, + 0xec, 0x95, 0xcf, 0x94, 0x0d, 0x7d, 0xaf, 0x33, 0x64, 0xdc, 0xfa, 0xea, 0x22, 0xcc, 0x37, 0x53, + 0xc0, 0xca, 0x1f, 0xf2, 0x47, 0x21, 0x93, 0x15, 0xe5, 0xb1, 0xec, 0xa5, 0x42, 0xd5, 0x44, 0x26, + 0x6b, 0x92, 0xc9, 0x19, 0xc5, 0xdd, 0x22, 0x44, 0x5e, 0x7f, 0xa4, 0x94, 0xc5, 0x87, 0x29, 0x25, + 0x13, 0x89, 0x34, 0x7d, 0xe3, 0x51, 0xa6, 0x53, 0x99, 0xbc, 0x30, 0xe7, 0x6e, 0x00, 0xcb, 0x42, + 0x48, 0x89, 0x90, 0xf2, 0xd4, 0x7b, 0x4e, 0xe4, 0xb5, 0xd1, 0x90, 0x12, 0x69, 0x59, 0x20, 0x25, + 0x39, 0x43, 0xf2, 0xe0, 0x43, 0x7d, 0xfc, 0xfa, 0xf1, 0x21, 0x64, 0xe1, 0x5c, 0x16, 0x70, 0xe8, + 0x78, 0x9c, 0xc9, 0xb8, 0xc1, 0x8c, 0x44, 0x66, 0x37, 0x5a, 0xe1, 0xfa, 0x80, 0x74, 0xc6, 0xe0, + 0x85, 0x57, 0x22, 0x4c, 0xc5, 0x72, 0x00, 0x38, 0xec, 0x02, 0x84, 0xc2, 0x81, 0xd7, 0xa7, 0xc8, + 0x19, 0x32, 0x2f, 0x5c, 0xe0, 0xbe, 0x9f, 0xf7, 0xf0, 0xc0, 0xc3, 0x7d, 0xe4, 0x4c, 0x89, 0x22, + 0x44, 0xc1, 0x3a, 0x14, 0x36, 0xa3, 0x2c, 0x8a, 0x16, 0x6b, 0xe6, 0x77, 0x29, 0xf1, 0x7b, 0x1c, + 0xac, 0x5b, 0xd8, 0x22, 0x96, 0xed, 0x2d, 0xbb, 0xa5, 0x64, 0xa2, 0xf1, 0x43, 0x6f, 0xb6, 0x06, + 0xff, 0xb7, 0x05, 0x7c, 0xd9, 0x0b, 0x5e, 0x51, 0x93, 0x98, 0x7c, 0x8b, 0x27, 0x13, 0xb7, 0x35, + 0xb5, 0x9c, 0x85, 0xc7, 0xd7, 0xc4, 0xe0, 0xd0, 0x54, 0xfe, 0x76, 0xce, 0x59, 0xf4, 0xcc, 0x82, + 0x25, 0x30, 0x30, 0x31, 0xcd, 0xa6, 0x03, 0x47, 0x78, 0xf9, 0x70, 0x17, 0x1b, 0xf7, 0x1d, 0x66, + 0x6f, 0xdf, 0x08, 0x19, 0xc3, 0x2c, 0x68, 0xed, 0xc9, 0x7f, 0x73, 0xd2, 0x79, 0x80, 0xdd, 0x07, + 0x63, 0x7c, 0xfb, 0xbb, 0x47, 0x49, 0x65, 0x2d, 0xa4, 0x94, 0x28, 0x02, 0x5c, 0x6e, 0x8d, 0x57, + 0xb7, 0x8e, 0x91, 0xcc, 0x98, 0x48, 0x09, 0x39, 0x09, 0xbf, 0x7e, 0xb4, 0x8f, 0x5d, 0x7b, 0xa7, + 0x4e, 0xbd, 0xb2, 0xc2, 0xf5, 0x4c, 0x27, 0x2d, 0xbe, 0x79, 0xe7, 0x21, 0x9e, 0x7d, 0x71, 0x14, + 0x4b, 0x80, 0xa6, 0x29, 0x34, 0x36, 0x79, 0xd8, 0xbf, 0x7f, 0x8a, 0x44, 0xca, 0x44, 0x2a, 0x82, + 0x74, 0x4e, 0xb2, 0xf1, 0xb9, 0x21, 0x32, 0x39, 0x89, 0x2a, 0x94, 0x79, 0x97, 0x39, 0xb3, 0x51, + 0x2c, 0x29, 0x19, 0x9e, 0x8a, 0xf3, 0xd2, 0xa1, 0x6e, 0x26, 0x0a, 0x31, 0x98, 0x00, 0x42, 0x41, + 0x17, 0x25, 0x7a, 0x56, 0xa9, 0x9e, 0x9c, 0xfe, 0x60, 0x53, 0x6f, 0x20, 0xf0, 0x67, 0x25, 0xe0, + 0xf2, 0xa8, 0x66, 0x0f, 0xc6, 0x8c, 0xb7, 0xd8, 0xec, 0x3e, 0xa5, 0xa5, 0x6d, 0x11, 0xd5, 0x35, + 0x8d, 0xec, 0xde, 0xdb, 0x4d, 0x3c, 0x99, 0x39, 0x41, 0x54, 0xf9, 0x67, 0xa6, 0x84, 0xae, 0xd1, + 0x09, 0x2c, 0x29, 0xf3, 0xe6, 0x4e, 0x4a, 0x0e, 0x0f, 0x8d, 0xb0, 0xfd, 0x58, 0x3f, 0x19, 0xd3, + 0xca, 0xcb, 0x53, 0xcc, 0xd1, 0xda, 0x39, 0x66, 0x7b, 0xae, 0x89, 0xaf, 0x2c, 0x77, 0xf0, 0xca, + 0xd6, 0x51, 0xf6, 0x1c, 0x88, 0x62, 0x02, 0xc9, 0xac, 0x85, 0xd3, 0xa9, 0x71, 0xe8, 0x70, 0x94, + 0x23, 0x5d, 0x09, 0x26, 0x62, 0x06, 0x86, 0x95, 0xd7, 0x34, 0x39, 0xd7, 0x74, 0x9e, 0xb0, 0x69, + 0x04, 0x50, 0xe2, 0xb7, 0x71, 0xed, 0x35, 0x0d, 0x3c, 0xfd, 0xf4, 0x20, 0x07, 0x0e, 0xc7, 0xf9, + 0xe9, 0x2f, 0xfb, 0x78, 0xe5, 0x95, 0x18, 0xfb, 0xf6, 0x2b, 0x7c, 0xe5, 0x1b, 0x5d, 0x7c, 0xf7, + 0x87, 0x5d, 0x6c, 0x7c, 0x7e, 0x8c, 0x91, 0xd1, 0x34, 0x8b, 0x17, 0xfa, 0x50, 0x84, 0x3c, 0xcd, + 0x66, 0x11, 0xf4, 0x45, 0xa2, 0x8c, 0x44, 0xa7, 0xd9, 0xdf, 0x37, 0x42, 0xce, 0xcc, 0xc7, 0x55, + 0x76, 0x9b, 0x86, 0xd3, 0xe9, 0x20, 0x14, 0xf1, 0xb6, 0xba, 0xb2, 0xfa, 0x92, 0x37, 0x53, 0xc0, + 0xda, 0x7f, 0xf7, 0x0f, 0x22, 0xe5, 0x8e, 0xf3, 0xda, 0xfb, 0x93, 0xe7, 0x95, 0x55, 0xb6, 0xe3, + 0xf3, 0xf9, 0x71, 0xb9, 0x5d, 0x0c, 0x0d, 0xd5, 0xb3, 0x6b, 0x6f, 0x2f, 0xeb, 0x57, 0x37, 0x63, + 0x53, 0x95, 0x82, 0x59, 0xcc, 0x3b, 0x43, 0x05, 0x89, 0xae, 0xaa, 0xf3, 0x4d, 0xaf, 0x84, 0xa1, + 0xa9, 0x28, 0xc7, 0x86, 0x9d, 0x2c, 0xa8, 0x0e, 0xa3, 0xce, 0x73, 0xb2, 0x73, 0xb7, 0x47, 0xc1, + 0xe4, 0x4b, 0x28, 0x0f, 0xd9, 0xb8, 0xe6, 0xbd, 0x8d, 0xdc, 0xf5, 0xfd, 0xc3, 0xfc, 0xae, 0xb9, + 0x94, 0xce, 0x23, 0x61, 0x9c, 0xae, 0x66, 0x96, 0x2e, 0x5b, 0xcf, 0xbf, 0xff, 0xc7, 0x18, 0x91, + 0xb1, 0x5e, 0x6a, 0xaa, 0xfb, 0xe9, 0xed, 0x8d, 0xb0, 0x6a, 0x45, 0x09, 0x52, 0x8a, 0x39, 0xfe, + 0x77, 0xfe, 0x67, 0x0b, 0x21, 0xa9, 0xab, 0x73, 0x71, 0xf8, 0xa8, 0x9f, 0x5f, 0x3f, 0xba, 0x8e, + 0x75, 0xeb, 0xd6, 0xf1, 0x7f, 0x3e, 0x55, 0x87, 0xd3, 0xe9, 0xc0, 0x34, 0x4d, 0x86, 0x87, 0x47, + 0xd8, 0xb7, 0x6f, 0x2f, 0xc1, 0xd0, 0x46, 0x36, 0xbf, 0xdc, 0x4d, 0x45, 0xd8, 0x4e, 0x79, 0xa9, + 0xbd, 0xa8, 0xb9, 0xc5, 0x8d, 0x28, 0x25, 0x42, 0xc9, 0x5f, 0xe3, 0x64, 0x32, 0x49, 0x3c, 0x93, + 0x25, 0xe8, 0x72, 0x60, 0x49, 0x89, 0x65, 0x59, 0xb8, 0x9c, 0x53, 0x38, 0xed, 0x39, 0xfe, 0xac, + 0x04, 0x5c, 0x3a, 0x92, 0x5e, 0xe2, 0xc8, 0x68, 0xb6, 0x86, 0xa6, 0x36, 0x10, 0x02, 0x4d, 0xb3, + 0xb1, 0xe2, 0x8c, 0xf5, 0xec, 0x7c, 0xed, 0x65, 0x0e, 0x74, 0x0e, 0xb1, 0xa4, 0xa3, 0x1a, 0x6d, + 0x66, 0xfd, 0x85, 0x78, 0xb6, 0x3c, 0xe8, 0xa3, 0x7f, 0x62, 0x6a, 0x36, 0xc0, 0x29, 0xdc, 0xf0, + 0x63, 0x23, 0x11, 0x6a, 0x4a, 0xfd, 0xf8, 0xec, 0xfa, 0x49, 0x9e, 0xb7, 0x18, 0x4a, 0xc9, 0xbc, + 0xf3, 0x1c, 0x9b, 0xca, 0x71, 0xe4, 0x58, 0x8e, 0xd6, 0xf6, 0x0f, 0x70, 0xc9, 0xa5, 0x97, 0xf2, + 0xf7, 0x4d, 0x4d, 0xb8, 0xdd, 0x6e, 0x6c, 0x36, 0x1b, 0xb9, 0x5c, 0x8e, 0x64, 0x32, 0x41, 0x57, + 0x57, 0x37, 0xbf, 0xfd, 0xed, 0x6f, 0xf9, 0xde, 0x0f, 0x7e, 0x49, 0xd6, 0x94, 0x9c, 0xbf, 0xa1, + 0x0c, 0xa7, 0x36, 0xf7, 0x64, 0x20, 0x91, 0x6c, 0xdf, 0x33, 0xcd, 0xc3, 0x8f, 0x36, 0xf3, 0xbd, + 0xef, 0xdd, 0xc9, 0x82, 0x05, 0x0b, 0xd0, 0x34, 0x6d, 0x5e, 0xa0, 0xd7, 0xd2, 0xd2, 0xc2, 0x86, + 0x0d, 0x67, 0x73, 0xcd, 0x35, 0xd7, 0xf0, 0xfc, 0xf3, 0xcf, 0xf3, 0xcf, 0x9f, 0xff, 0x1e, 0x1f, + 0x78, 0x7f, 0x92, 0xd5, 0xcb, 0x03, 0xa8, 0x73, 0x36, 0x8b, 0x22, 0xa0, 0xc2, 0xef, 0xa5, 0x7b, + 0x6c, 0x1c, 0x29, 0x25, 0x56, 0x61, 0x57, 0x66, 0x72, 0x26, 0xc9, 0x74, 0x1a, 0x4b, 0x75, 0x49, + 0x48, 0x5b, 0x90, 0x78, 0xd3, 0x04, 0xac, 0xfe, 0x77, 0xde, 0xbc, 0xea, 0x90, 0xcf, 0xdd, 0x3c, + 0x22, 0xef, 0x6a, 0x16, 0x75, 0xa5, 0x8b, 0x96, 0xae, 0x40, 0x55, 0xf3, 0x16, 0x5e, 0x55, 0x35, + 0xca, 0xca, 0xab, 0x38, 0x78, 0xb0, 0x97, 0x64, 0x62, 0x92, 0xf2, 0x72, 0x5f, 0xfe, 0x9e, 0x16, + 0x82, 0x12, 0xa7, 0x6e, 0x63, 0x74, 0x3a, 0x4e, 0x3a, 0x97, 0xcb, 0x47, 0xa0, 0x85, 0x1b, 0x69, + 0x58, 0x16, 0x5e, 0xbb, 0x93, 0x12, 0x8f, 0x73, 0xbe, 0x70, 0x4f, 0x88, 0xc0, 0x07, 0xc7, 0xb3, + 0x7c, 0xe3, 0x9b, 0x39, 0x2e, 0xbc, 0xf8, 0x4b, 0x5c, 0x7d, 0xf5, 0xd5, 0xd4, 0xd6, 0xd6, 0xe2, + 0x70, 0x38, 0x50, 0x55, 0x15, 0x21, 0x04, 0xaa, 0xaa, 0xe2, 0x70, 0x38, 0xa9, 0xac, 0xac, 0x64, + 0xfd, 0xfa, 0xf5, 0x9c, 0x71, 0xc6, 0x05, 0x3c, 0xfd, 0x4c, 0x94, 0x6d, 0xdb, 0xb6, 0xb1, 0x70, + 0x91, 0x07, 0x87, 0x7d, 0xd6, 0x13, 0x75, 0x76, 0x27, 0xf9, 0xe5, 0x43, 0x6d, 0x7c, 0xe2, 0x1f, + 0x6f, 0xa3, 0xa1, 0xa1, 0x01, 0x45, 0x51, 0x8a, 0x9f, 0x37, 0xb3, 0xf9, 0x66, 0xae, 0xd1, 0xe1, + 0x70, 0xd0, 0xde, 0xde, 0xce, 0x92, 0xa5, 0x67, 0x73, 0xdf, 0xcf, 0x8e, 0xa0, 0x6a, 0xbd, 0xd4, + 0xd5, 0x38, 0x0b, 0x5e, 0x24, 0xaf, 0xcf, 0x6e, 0x87, 0x8e, 0x5d, 0xb3, 0x11, 0x72, 0xbb, 0xa8, + 0x0a, 0xfa, 0x50, 0x84, 0x20, 0x9b, 0x35, 0xe8, 0x3c, 0x32, 0x48, 0x04, 0xdd, 0x3a, 0x58, 0x63, + 0xfe, 0x74, 0xe4, 0xdb, 0xc9, 0x9e, 0x3f, 0x7d, 0x01, 0x47, 0x75, 0xd1, 0x3a, 0xa9, 0x5d, 0xbf, + 0xf4, 0xa8, 0xbc, 0x71, 0x65, 0xfb, 0x59, 0x4a, 0xb8, 0xac, 0x6c, 0xde, 0x4d, 0x51, 0x55, 0x95, + 0xb2, 0xf2, 0x2a, 0x5e, 0x3f, 0xd8, 0x8d, 0x66, 0x33, 0x28, 0x09, 0xba, 0x11, 0x14, 0x5e, 0x53, + 0x04, 0x0e, 0xcd, 0xc6, 0x50, 0x34, 0x76, 0x82, 0x16, 0x0b, 0x5c, 0x76, 0x1b, 0x15, 0x41, 0xef, + 0x3c, 0x0d, 0x9e, 0x9b, 0x4e, 0x4d, 0x26, 0x4c, 0xbe, 0x7e, 0x47, 0x82, 0xeb, 0x6e, 0xf8, 0x1a, + 0x6b, 0xd6, 0xac, 0x29, 0x0a, 0xe4, 0x54, 0x8f, 0xfc, 0x66, 0x53, 0x09, 0x85, 0x42, 0xac, 0x5f, + 0xbf, 0x9e, 0xa9, 0xe9, 0x4a, 0x7e, 0x76, 0xff, 0xb3, 0x2c, 0x59, 0x62, 0xc3, 0xe3, 0xd6, 0x88, + 0xa5, 0x2c, 0x7e, 0x70, 0xb7, 0xc5, 0xfb, 0xff, 0xe6, 0x0b, 0x54, 0x55, 0x55, 0xcd, 0xfb, 0xbb, + 0x93, 0x02, 0xf7, 0x39, 0x42, 0x0f, 0x06, 0x83, 0x2c, 0x5f, 0xbe, 0x9a, 0x07, 0x1f, 0xea, 0xc5, + 0xee, 0x38, 0x4e, 0x4d, 0x95, 0xa3, 0x78, 0xbd, 0xaa, 0x80, 0x12, 0xaf, 0x8b, 0x52, 0xaf, 0x0b, + 0x45, 0x14, 0x36, 0xbc, 0xa6, 0x32, 0x15, 0x4d, 0x33, 0x92, 0xee, 0x8d, 0xf7, 0x34, 0x25, 0xef, + 0xea, 0xfb, 0xa6, 0x1c, 0xf9, 0x93, 0x17, 0xf0, 0x86, 0xb7, 0x2e, 0xf6, 0x2f, 0xe9, 0xb7, 0xee, + 0x58, 0x98, 0x2b, 0xaf, 0x5b, 0xb6, 0x62, 0x75, 0x51, 0x7b, 0xe6, 0xde, 0x10, 0x55, 0xd3, 0xf0, + 0xfb, 0x4b, 0x38, 0x74, 0x60, 0x1f, 0x0d, 0x0d, 0x25, 0x68, 0xaa, 0x28, 0x6a, 0xb2, 0xc7, 0x61, + 0x43, 0x55, 0x54, 0xc6, 0xa6, 0xe3, 0x45, 0x0d, 0x06, 0x08, 0x7b, 0xbd, 0x54, 0x04, 0xbc, 0x27, + 0x09, 0x0a, 0x99, 0xcf, 0x73, 0x1f, 0x7c, 0x64, 0x84, 0xa6, 0xd6, 0xbf, 0xe7, 0x9c, 0x73, 0xce, + 0x9d, 0xa7, 0x6d, 0x6f, 0x24, 0x14, 0x00, 0x4d, 0xd3, 0x68, 0x6b, 0x6b, 0xc3, 0xeb, 0x5b, 0xc0, + 0xbd, 0xf7, 0x3d, 0xc3, 0xd2, 0xe5, 0x36, 0x76, 0xed, 0x8d, 0xe2, 0xf6, 0xdd, 0xcc, 0xfa, 0x75, + 0xeb, 0x4f, 0x7b, 0xae, 0x62, 0x3e, 0x7e, 0xc2, 0xe6, 0x71, 0xb9, 0x5c, 0x2c, 0x5a, 0xb4, 0x94, + 0x9f, 0xdd, 0xff, 0x3a, 0x75, 0xf5, 0x63, 0x94, 0x04, 0x6c, 0x45, 0xff, 0x2e, 0x4f, 0x71, 0x1d, + 0xa5, 0x61, 0x1f, 0x43, 0x47, 0xe3, 0xf6, 0xd8, 0x44, 0x65, 0x58, 0xfb, 0x54, 0xe5, 0xe3, 0x83, + 0xdf, 0x1f, 0x35, 0xfe, 0x64, 0x05, 0x7c, 0xce, 0xf3, 0xab, 0x03, 0x0b, 0x87, 0x79, 0x60, 0x61, + 0xbf, 0x75, 0xee, 0xba, 0xb3, 0xce, 0xc6, 0xe7, 0xf3, 0x9f, 0xfa, 0x46, 0x0b, 0xb0, 0xdb, 0x1d, + 0x8c, 0x8d, 0x4e, 0x50, 0x5e, 0xaa, 0xe2, 0x74, 0xd8, 0x8a, 0x81, 0x89, 0x10, 0x82, 0x12, 0xaf, + 0x9b, 0xb2, 0x80, 0x97, 0x6c, 0xd6, 0x22, 0x63, 0x18, 0xb8, 0xec, 0x76, 0x96, 0xd4, 0x95, 0x63, + 0xb7, 0xa9, 0xb3, 0x01, 0xcc, 0x9c, 0xf3, 0x0e, 0x8f, 0xe7, 0x78, 0xec, 0x89, 0x4a, 0x6e, 0xb8, + 0xe1, 0x43, 0xb8, 0x5c, 0xae, 0xd3, 0x0a, 0x57, 0x16, 0x82, 0x9a, 0x54, 0x3a, 0x4d, 0x2e, 0x9b, + 0x2d, 0x6a, 0xb2, 0xa2, 0x28, 0xd4, 0xd4, 0xd4, 0x60, 0x5a, 0x15, 0x3c, 0xf1, 0xc4, 0x33, 0x74, + 0x1e, 0x72, 0xf2, 0xf6, 0x77, 0xfc, 0x1d, 0xc1, 0x60, 0x10, 0x45, 0x51, 0x4e, 0x3a, 0x87, 0x69, + 0x9a, 0x64, 0x32, 0x19, 0x72, 0xb9, 0x7c, 0x60, 0x74, 0xa2, 0xf9, 0x76, 0xb9, 0x5c, 0xd4, 0xd5, + 0xb5, 0x72, 0xff, 0x2f, 0x9e, 0x62, 0xe5, 0x0a, 0x15, 0x5d, 0x13, 0x27, 0x4a, 0xb6, 0xa8, 0xd9, + 0xba, 0x4d, 0xc5, 0xe7, 0x73, 0x8b, 0xc9, 0x03, 0x5d, 0xad, 0x42, 0xc6, 0x77, 0x89, 0xf7, 0xd5, + 0x76, 0x0e, 0xff, 0x7c, 0xfc, 0x4f, 0x2f, 0xc8, 0xba, 0xe4, 0x79, 0x44, 0xd5, 0xc8, 0xe4, 0x47, + 0x17, 0x0d, 0xe7, 0x2e, 0x3c, 0xf3, 0xec, 0x73, 0x28, 0x2b, 0x2b, 0x3f, 0x29, 0xe2, 0x9d, 0x97, + 0x1f, 0x2a, 0x02, 0xb7, 0x37, 0x44, 0x22, 0x19, 0x23, 0xe4, 0x77, 0x9e, 0xb4, 0xf0, 0x52, 0x8f, + 0x93, 0xd2, 0x05, 0xf5, 0x64, 0x4d, 0x0b, 0x45, 0x80, 0x26, 0xc4, 0x49, 0x82, 0x9d, 0x81, 0x28, + 0x0f, 0x1f, 0x8d, 0xb3, 0x7e, 0xfd, 0x75, 0x04, 0x02, 0x81, 0x37, 0x14, 0x6e, 0x24, 0x32, 0xce, + 0xaf, 0x7f, 0xfd, 0x10, 0x8f, 0xfc, 0xf6, 0x79, 0x72, 0x96, 0xc2, 0x9a, 0x8e, 0x06, 0xde, 0xf3, + 0x9e, 0x77, 0xb3, 0x68, 0xd1, 0x22, 0x34, 0x4d, 0xe3, 0x82, 0x0b, 0x2e, 0xe0, 0xd8, 0xb1, 0xe3, + 0x8c, 0x8e, 0x1f, 0xa6, 0xb4, 0xb4, 0xf4, 0xa4, 0x73, 0xe5, 0xcf, 0x11, 0xe1, 0x67, 0x3f, 0xff, + 0x39, 0x8f, 0x3f, 0xb3, 0x11, 0x13, 0x85, 0xb3, 0x56, 0x2e, 0xe6, 0x9d, 0x57, 0xbe, 0x93, 0xa5, + 0x4b, 0x96, 0x62, 0xb3, 0xd9, 0x8a, 0x9a, 0xdc, 0xd4, 0xd4, 0x44, 0x4b, 0xeb, 0x75, 0xec, 0xdc, + 0xfd, 0x63, 0x36, 0xac, 0x0b, 0x91, 0x0f, 0x43, 0xc4, 0x49, 0xa9, 0x18, 0x40, 0x4d, 0x95, 0x9f, + 0x45, 0x55, 0xa5, 0xb6, 0xc4, 0xf1, 0xb1, 0xff, 0x8c, 0xb7, 0x8f, 0xef, 0xd8, 0x05, 0x7d, 0x7f, + 0x52, 0x1a, 0x5c, 0x35, 0xea, 0x17, 0xe1, 0xe9, 0xda, 0xb7, 0x2f, 0xe9, 0xca, 0xde, 0xb9, 0xbc, + 0x75, 0xa1, 0xd6, 0xd2, 0xd6, 0x51, 0x58, 0xe8, 0x1b, 0x20, 0x9f, 0x52, 0x90, 0x4a, 0x26, 0xc9, + 0x24, 0x47, 0x28, 0x0f, 0xfb, 0x10, 0x8a, 0x38, 0x01, 0x20, 0x28, 0xf8, 0x4a, 0x21, 0x98, 0x79, + 0x69, 0x5e, 0xea, 0x51, 0x38, 0x0c, 0x29, 0xd8, 0xf4, 0x62, 0x9c, 0x25, 0x4b, 0xaf, 0xa3, 0xa2, + 0xa2, 0xe2, 0xb4, 0xe6, 0x74, 0x7c, 0x7c, 0x9c, 0x4f, 0x7f, 0xf6, 0x73, 0x7c, 0x39, 0x5e, 0xc5, + 0xd1, 0x8b, 0x6f, 0xa1, 0x6b, 0xf9, 0xa5, 0x6c, 0x36, 0xbc, 0xfc, 0xe6, 0x9e, 0xbb, 0x09, 0xe5, + 0xa2, 0xb4, 0xb6, 0xb6, 0x60, 0xb7, 0xdb, 0xa9, 0xad, 0xad, 0xe1, 0xa5, 0x97, 0x5e, 0x62, 0xfd, + 0xfa, 0xf5, 0xb8, 0xdd, 0xee, 0xe2, 0xf9, 0xa4, 0x94, 0xc4, 0xe2, 0x71, 0xbe, 0x7a, 0xfb, 0x1d, + 0xdc, 0x36, 0x1e, 0xa2, 0xeb, 0xd2, 0x0f, 0xd3, 0x7b, 0xc6, 0xdb, 0xd8, 0x4c, 0x29, 0x4f, 0xde, + 0xf3, 0x13, 0x02, 0xc9, 0x31, 0x16, 0x2c, 0x58, 0x30, 0x4f, 0xc8, 0xe1, 0x70, 0x39, 0xbf, 0xfc, + 0xe5, 0x26, 0xd6, 0xad, 0xb5, 0x0a, 0x69, 0xe1, 0x9c, 0xfc, 0xbd, 0xf0, 0x10, 0x05, 0x90, 0xc1, + 0xee, 0x76, 0xd0, 0x77, 0xec, 0x98, 0x2b, 0x59, 0x9a, 0x09, 0x19, 0xff, 0xaa, 0x3d, 0x35, 0xfc, + 0x4d, 0xf3, 0x8f, 0x5a, 0x84, 0x78, 0x43, 0xa0, 0xa3, 0x6c, 0xda, 0xb4, 0x55, 0x4d, 0x4f, 0x5e, + 0x5b, 0x86, 0x69, 0x6f, 0x6e, 0x69, 0xa3, 0x00, 0xe9, 0xe6, 0xd5, 0x4b, 0x72, 0x32, 0x0a, 0x45, + 0x3e, 0x0d, 0x71, 0x38, 0x9d, 0x1c, 0xef, 0x1e, 0x25, 0x67, 0x99, 0x27, 0x23, 0x5c, 0x85, 0x9d, + 0x1e, 0x4d, 0xa5, 0xe9, 0x9f, 0x98, 0x26, 0x6b, 0x5a, 0xc5, 0xd3, 0xc9, 0x99, 0x97, 0x01, 0xc3, + 0x92, 0x8c, 0x8d, 0x79, 0x08, 0x87, 0xc3, 0xa7, 0xd5, 0x5c, 0xd3, 0x34, 0x79, 0xe2, 0xc9, 0x27, + 0xb9, 0xdf, 0xb9, 0x18, 0xf3, 0xcc, 0x2b, 0x90, 0x9a, 0x8e, 0x54, 0x55, 0x68, 0x5c, 0x4c, 0xcf, + 0xfb, 0x3e, 0xc3, 0xad, 0xdb, 0xc7, 0xb9, 0xf7, 0xbe, 0x9f, 0x92, 0xc9, 0x64, 0xa8, 0xa8, 0xa8, + 0x60, 0xfd, 0xfa, 0xf5, 0x6c, 0xdb, 0xb6, 0x0d, 0xcb, 0xb2, 0x8a, 0xbe, 0x56, 0x4a, 0xc9, 0xf6, + 0xed, 0xdb, 0x79, 0x60, 0x44, 0xc3, 0x3c, 0xfb, 0x6d, 0x48, 0x87, 0x0b, 0x4b, 0xd5, 0x90, 0xb5, + 0x6d, 0x0c, 0x5e, 0xff, 0x59, 0xfe, 0xef, 0x8e, 0x71, 0x36, 0x6e, 0x7c, 0x16, 0xcb, 0x9a, 0x95, + 0x4b, 0x59, 0x59, 0x98, 0xba, 0x86, 0xf3, 0x39, 0xde, 0x93, 0x06, 0xa5, 0x00, 0xd4, 0x88, 0x39, + 0x3e, 0x5c, 0x16, 0x81, 0x6b, 0x2a, 0x4a, 0xbd, 0x94, 0x95, 0x84, 0x45, 0xe9, 0x88, 0xfd, 0xda, + 0x92, 0x48, 0x68, 0xf5, 0x9f, 0x14, 0x92, 0xe5, 0x48, 0x79, 0x16, 0x95, 0x8e, 0xf0, 0xb6, 0xb2, + 0xd2, 0x6a, 0x9c, 0x2e, 0x17, 0x42, 0xcc, 0xe2, 0x74, 0x12, 0x89, 0x94, 0x60, 0x9a, 0x06, 0xd9, + 0x6c, 0x06, 0xd3, 0x34, 0x8b, 0xeb, 0x0a, 0x95, 0x94, 0x20, 0x6c, 0x95, 0x1c, 0x3e, 0x3a, 0x3a, + 0x8b, 0x2a, 0xcd, 0xdc, 0x50, 0x04, 0x39, 0xcb, 0x62, 0x67, 0x57, 0x3f, 0xaf, 0x1c, 0xee, 0x66, + 0xeb, 0xe1, 0x5e, 0x32, 0x46, 0x1e, 0x8f, 0x17, 0x72, 0x0e, 0x60, 0x0c, 0x20, 0x74, 0x6c, 0xb6, + 0xd3, 0x7b, 0x91, 0x78, 0x3c, 0xce, 0xa6, 0x2d, 0x3b, 0x49, 0x2e, 0x3e, 0x3b, 0x7f, 0xe6, 0x74, + 0x12, 0xf1, 0xca, 0xe3, 0x88, 0x03, 0x5b, 0x40, 0x28, 0xc4, 0xfe, 0xea, 0x6a, 0xee, 0xd8, 0x3d, + 0xc1, 0x96, 0x2d, 0x5b, 0x00, 0x58, 0xbf, 0x7e, 0x3d, 0x9b, 0x37, 0x6f, 0x26, 0x93, 0xc9, 0x14, + 0x85, 0x61, 0x18, 0x06, 0xdb, 0xb6, 0x6d, 0x67, 0xb0, 0x6d, 0x0d, 0x08, 0x05, 0x46, 0xfb, 0xe0, + 0x81, 0x3b, 0x11, 0x4f, 0xdf, 0x0d, 0xb9, 0x0c, 0xe3, 0xe7, 0x5c, 0xc9, 0x5d, 0x0f, 0x3f, 0xc7, + 0xd0, 0xd0, 0x10, 0x96, 0x65, 0x15, 0xb5, 0x78, 0xe1, 0xc2, 0xa5, 0x3c, 0xf9, 0xf4, 0x24, 0x0f, + 0x3d, 0x31, 0xc4, 0x0f, 0x7e, 0x72, 0x8c, 0x27, 0x7e, 0x37, 0xc2, 0x58, 0x34, 0x37, 0x0b, 0xd2, + 0x14, 0x34, 0x59, 0x55, 0x14, 0xea, 0xaa, 0xcb, 0xf0, 0x8d, 0xd8, 0xf4, 0x50, 0x4a, 0x7b, 0xd7, + 0xb2, 0xc3, 0xe5, 0xe2, 0x4f, 0x46, 0xc0, 0x6e, 0x35, 0x79, 0x4e, 0x69, 0x3c, 0x69, 0x2b, 0x2d, + 0xab, 0x44, 0x51, 0x66, 0xd1, 0xa8, 0x7c, 0x11, 0x01, 0xfa, 0xfb, 0x7b, 0xd8, 0xf8, 0xbb, 0x07, + 0x78, 0xf2, 0x89, 0x1f, 0xf2, 0xdc, 0xb3, 0x0f, 0x31, 0x38, 0xd8, 0x83, 0x94, 0x16, 0x8a, 0xaa, + 0xb2, 0xe2, 0x8c, 0xb5, 0x1c, 0x3a, 0x92, 0xe2, 0x48, 0xd7, 0x18, 0x96, 0x9c, 0x55, 0xf8, 0x19, + 0xb0, 0xde, 0x30, 0xad, 0xfc, 0xfd, 0x8c, 0xc5, 0x38, 0x3a, 0x34, 0x5e, 0xd4, 0x5c, 0xf1, 0xdf, + 0x28, 0x78, 0x25, 0x93, 0x49, 0xc6, 0x72, 0x3a, 0xd2, 0x1b, 0x00, 0x21, 0x50, 0x5e, 0x79, 0x0c, + 0x79, 0xfb, 0x2d, 0xc8, 0x2f, 0xdd, 0x84, 0xdc, 0x78, 0x3f, 0x20, 0x39, 0xb6, 0xee, 0x0a, 0x7e, + 0xfc, 0x8b, 0x87, 0x99, 0x9c, 0x9c, 0xa2, 0x34, 0x1c, 0x46, 0x51, 0x14, 0x06, 0x07, 0x06, 0x8a, + 0x1a, 0x9c, 0x4e, 0xa7, 0xe9, 0xea, 0x1f, 0x22, 0x57, 0x5a, 0x85, 0xc8, 0x66, 0x10, 0x4f, 0xdd, + 0x0d, 0xbf, 0xfc, 0x3a, 0xf2, 0x47, 0x9f, 0x45, 0xfe, 0xe6, 0x27, 0xe0, 0xf0, 0xb0, 0xbd, 0x76, + 0x0d, 0xdb, 0xb7, 0xef, 0xc8, 0xc3, 0x93, 0x52, 0x32, 0x39, 0x39, 0xc9, 0xd6, 0xad, 0x5b, 0xd8, + 0xf4, 0x7c, 0x3f, 0x07, 0xf6, 0x4f, 0x90, 0xce, 0x48, 0x1e, 0x7d, 0xbc, 0x97, 0x8f, 0xfe, 0xe3, + 0x2e, 0x06, 0x46, 0x33, 0x27, 0x5c, 0xb9, 0xc4, 0x1f, 0x70, 0xa1, 0x92, 0x44, 0x19, 0x2d, 0xbd, + 0x30, 0xa9, 0x38, 0x9d, 0x7f, 0x32, 0x02, 0x6e, 0xde, 0x17, 0x70, 0x79, 0x72, 0x6e, 0x11, 0x0a, + 0x9d, 0x6c, 0x26, 0x47, 0x86, 0x07, 0x79, 0x75, 0xeb, 0x93, 0x4c, 0x4d, 0xf5, 0x93, 0xcb, 0x25, + 0x99, 0x98, 0xe8, 0x66, 0xcb, 0x2b, 0x8f, 0x70, 0xec, 0xe8, 0x61, 0xa4, 0x04, 0x87, 0xc3, 0xc9, + 0x19, 0xeb, 0xcf, 0x63, 0xcf, 0xfe, 0x18, 0xbb, 0xf7, 0xf7, 0x61, 0x4a, 0xc9, 0xcc, 0x3f, 0x4d, + 0x51, 0xf0, 0xbb, 0x9c, 0x45, 0x7f, 0xdc, 0x33, 0x3e, 0x49, 0xb2, 0x50, 0x91, 0x9a, 0xb1, 0xd5, + 0x42, 0x80, 0x22, 0x92, 0xa4, 0x52, 0xa9, 0xd3, 0x5e, 0x9f, 0x61, 0x18, 0x24, 0x4d, 0x09, 0x8a, + 0x9a, 0x4f, 0xab, 0x06, 0x8e, 0x81, 0x25, 0x21, 0x35, 0x0d, 0x8f, 0xdc, 0x85, 0xe8, 0x3e, 0x08, + 0x81, 0x52, 0x5e, 0xd0, 0x1b, 0x38, 0x72, 0xf4, 0x08, 0x4e, 0x87, 0x83, 0x05, 0xed, 0xed, 0x74, + 0x1e, 0x3e, 0x3c, 0x0f, 0x12, 0x95, 0x92, 0xfc, 0x39, 0xd2, 0x09, 0x44, 0xdf, 0xe1, 0xfc, 0x7f, + 0x9a, 0x26, 0x6c, 0xfc, 0x25, 0xa2, 0xff, 0x08, 0x53, 0x0d, 0x1d, 0xec, 0xdc, 0x77, 0x80, 0x74, + 0x26, 0xc3, 0xfe, 0xfd, 0xfb, 0xf9, 0xc4, 0xc7, 0x3f, 0x82, 0xd7, 0x75, 0x3f, 0xf7, 0xfe, 0x68, + 0x25, 0xff, 0xf2, 0xa9, 0x45, 0xdc, 0xfa, 0x81, 0x66, 0xbe, 0xfe, 0xaf, 0x2b, 0x68, 0x69, 0xf6, + 0xf0, 0xf0, 0x63, 0x7d, 0x18, 0x72, 0x0e, 0xd4, 0x5a, 0x4c, 0xdf, 0x14, 0xc8, 0xe9, 0xd5, 0x22, + 0xa7, 0x68, 0x7f, 0x12, 0x02, 0x3e, 0xa3, 0xb3, 0x52, 0x97, 0x81, 0xe4, 0xc5, 0xa1, 0x50, 0x95, + 0xf0, 0x9d, 0x14, 0xc5, 0x4a, 0x8e, 0x1e, 0x3b, 0x8c, 0x69, 0x26, 0xe6, 0x21, 0x53, 0x96, 0x95, + 0x65, 0xef, 0xde, 0x17, 0x18, 0x19, 0x19, 0x02, 0xc0, 0xe9, 0x74, 0xb1, 0xf6, 0xec, 0xf3, 0x19, + 0x18, 0xd1, 0x39, 0x70, 0x68, 0x08, 0xab, 0x08, 0xf1, 0x09, 0x16, 0x54, 0x85, 0x71, 0xe9, 0x3a, + 0x52, 0x4a, 0xb2, 0xa6, 0x99, 0x37, 0xd3, 0x33, 0x10, 0x36, 0xf9, 0xe8, 0xba, 0xbc, 0x3c, 0xc5, + 0xe8, 0xe8, 0xe8, 0x29, 0xab, 0x4b, 0x90, 0x4f, 0xc9, 0x02, 0x9a, 0x04, 0xb3, 0x80, 0xf7, 0x0a, + 0x65, 0x36, 0x2e, 0x18, 0xed, 0x86, 0x57, 0x9f, 0x06, 0x60, 0xac, 0x61, 0x09, 0x47, 0x8e, 0x1d, + 0xc7, 0xb2, 0x2c, 0xfc, 0xc1, 0x20, 0x23, 0x23, 0x23, 0xc5, 0x6b, 0x56, 0x15, 0x05, 0x87, 0xae, + 0xa1, 0x64, 0x92, 0x48, 0xbb, 0x13, 0xab, 0xb4, 0x6a, 0xce, 0x2e, 0xee, 0x81, 0xee, 0x83, 0x98, + 0xbe, 0x52, 0x5e, 0x1f, 0x98, 0xe4, 0xd9, 0x67, 0x9f, 0xe5, 0x73, 0x9f, 0xbb, 0x95, 0xf7, 0x5d, + 0x33, 0xc4, 0xcd, 0xef, 0x6b, 0xa0, 0x3c, 0xa4, 0x17, 0x63, 0x12, 0x9f, 0x5b, 0x63, 0xc3, 0xd9, + 0x61, 0xf6, 0xed, 0x8f, 0x92, 0x48, 0x9a, 0x73, 0xc2, 0x13, 0x41, 0x22, 0x9e, 0xce, 0xe3, 0xd6, + 0xf3, 0xd1, 0xec, 0x37, 0x57, 0xc0, 0x1a, 0x46, 0x7b, 0xe5, 0x88, 0xba, 0xb8, 0xb9, 0x6d, 0x11, + 0xba, 0x6e, 0x9f, 0x17, 0xdc, 0x64, 0x32, 0x39, 0xa2, 0x53, 0xc3, 0xa7, 0x0e, 0x7c, 0x8c, 0x69, + 0x0e, 0x1d, 0xdc, 0x83, 0x61, 0x18, 0x05, 0x21, 0xd8, 0x59, 0xb9, 0xe6, 0x2c, 0x7a, 0x07, 0x4c, + 0x46, 0x23, 0xb1, 0xe2, 0xba, 0x7d, 0x4e, 0x3b, 0x67, 0xb5, 0x37, 0xd2, 0x18, 0x2e, 0xa1, 0x3a, + 0xe8, 0xc7, 0xa5, 0x6b, 0xf3, 0x62, 0x36, 0x45, 0x48, 0x9a, 0x9a, 0x6c, 0x74, 0x77, 0x77, 0x21, + 0x4f, 0xe7, 0x42, 0xdc, 0x2e, 0xaa, 0xfd, 0x36, 0x44, 0x6c, 0x12, 0x14, 0x05, 0x9a, 0x97, 0x80, + 0xa6, 0x15, 0xf2, 0x2c, 0x89, 0x3c, 0xf8, 0x2a, 0x24, 0xa6, 0xc9, 0x05, 0xca, 0xe8, 0xee, 0x1d, + 0x44, 0x4a, 0x49, 0x55, 0x45, 0x25, 0x93, 0x93, 0x93, 0x73, 0x36, 0x89, 0x9d, 0x96, 0xc6, 0x7a, + 0xf4, 0x91, 0x5e, 0xb0, 0x3b, 0xa0, 0x71, 0x31, 0xa8, 0x05, 0x25, 0x33, 0x73, 0x28, 0xd3, 0x63, + 0xa0, 0x6a, 0x3c, 0x1e, 0xb7, 0x71, 0xdb, 0xe7, 0xff, 0x9a, 0x8f, 0x7e, 0x44, 0x70, 0xfe, 0xd9, + 0x25, 0xd8, 0x54, 0x51, 0x0c, 0x3a, 0xe5, 0x9c, 0x24, 0x40, 0x55, 0x45, 0x7e, 0x9f, 0x89, 0x99, + 0x90, 0x53, 0xe2, 0xf3, 0xbb, 0x10, 0x38, 0xb1, 0xac, 0x4a, 0xa4, 0x0c, 0xbc, 0xf9, 0x02, 0x5e, + 0x7a, 0xbc, 0xc4, 0xdd, 0xde, 0x67, 0x7d, 0x7e, 0x89, 0xa7, 0x29, 0x54, 0x53, 0xd7, 0x70, 0x62, + 0x2e, 0x8f, 0x61, 0x18, 0x64, 0xb2, 0xd3, 0xa7, 0x44, 0x90, 0x24, 0x30, 0x3e, 0x7e, 0x8c, 0xe9, + 0xe8, 0x54, 0xf1, 0xfd, 0x9a, 0xa6, 0x51, 0x5e, 0xd5, 0x42, 0xe7, 0x91, 0xc1, 0xa2, 0x16, 0x0b, + 0xc0, 0xef, 0xd4, 0x39, 0xa3, 0xb9, 0x9a, 0xd5, 0xcd, 0x35, 0x38, 0x34, 0x75, 0x36, 0x4d, 0x2a, + 0xdc, 0xb8, 0xc6, 0x7a, 0x17, 0x7b, 0x76, 0x6f, 0x26, 0x95, 0x4a, 0xcd, 0x43, 0xbf, 0x66, 0x3e, + 0xd3, 0xe9, 0x74, 0xb2, 0x6e, 0xc5, 0x12, 0x5c, 0x7d, 0x87, 0xf2, 0x1a, 0xd2, 0xb2, 0x1c, 0xaa, + 0x5a, 0x67, 0x17, 0x97, 0x4a, 0xa0, 0x66, 0xd2, 0xc5, 0x80, 0x47, 0x02, 0x36, 0xdd, 0x36, 0x0f, + 0xbc, 0xd0, 0x34, 0x8d, 0x55, 0x2b, 0x57, 0x50, 0x7b, 0x6c, 0x17, 0x18, 0x26, 0xe2, 0xcc, 0xcb, + 0x50, 0x56, 0x9d, 0x5f, 0xf4, 0x13, 0x96, 0xdd, 0x05, 0x99, 0x14, 0xd5, 0x93, 0x3d, 0x7c, 0xe6, + 0xd3, 0xed, 0xac, 0x5f, 0x15, 0x3a, 0xa5, 0x0e, 0x9a, 0xa6, 0xe4, 0xf0, 0x91, 0x18, 0xc1, 0x51, + 0x49, 0xf2, 0xf9, 0x18, 0xb1, 0xce, 0x24, 0x46, 0x2a, 0xbf, 0xda, 0xa0, 0xdf, 0x89, 0x4d, 0x57, + 0x91, 0x18, 0x05, 0x5a, 0xc2, 0x9b, 0x28, 0xe0, 0x65, 0x9b, 0x17, 0x28, 0xcd, 0x7b, 0x2b, 0xbe, + 0x74, 0xc6, 0xa1, 0xd0, 0x95, 0xcb, 0x97, 0xae, 0x16, 0x79, 0xc4, 0x47, 0xcc, 0xcb, 0x72, 0x6c, + 0x36, 0x1b, 0x0e, 0x3d, 0x30, 0x8f, 0xb9, 0x31, 0x2b, 0x64, 0x81, 0x61, 0xa6, 0x98, 0x9c, 0x9a, + 0x9a, 0x2d, 0x1b, 0x02, 0x5e, 0xaf, 0x97, 0x58, 0x2c, 0x83, 0x65, 0xc9, 0xd9, 0x42, 0x84, 0x98, + 0xcd, 0x8c, 0xc5, 0xdc, 0x74, 0xaa, 0x10, 0x4d, 0x57, 0x94, 0xea, 0x94, 0x87, 0xf6, 0x72, 0x6c, + 0xef, 0x2e, 0x8c, 0x89, 0x31, 0xac, 0x54, 0x12, 0xac, 0x42, 0x5a, 0x25, 0x25, 0x8a, 0xa2, 0x70, + 0xde, 0xb9, 0xe7, 0xb0, 0xf6, 0xf8, 0x56, 0x48, 0xc6, 0x90, 0xe1, 0x5a, 0xc4, 0xbb, 0x6e, 0x05, + 0x67, 0x20, 0xcf, 0xca, 0x08, 0x94, 0x61, 0x3a, 0xdc, 0x90, 0x4b, 0x23, 0xc8, 0xa7, 0x46, 0xbd, + 0xbd, 0xbd, 0x38, 0x1c, 0x8e, 0x79, 0xb0, 0xe4, 0xe2, 0xc5, 0x4b, 0xb8, 0x30, 0x98, 0x41, 0x19, + 0x38, 0x82, 0xf4, 0x87, 0xe1, 0x96, 0x7f, 0x43, 0x5c, 0x72, 0x23, 0x62, 0xd9, 0x79, 0x28, 0x6d, + 0xcb, 0x08, 0x3f, 0x7f, 0x3f, 0x9f, 0xbd, 0xea, 0x38, 0x97, 0x5d, 0x54, 0x81, 0xa6, 0x9c, 0x50, + 0xed, 0x2a, 0x5c, 0xef, 0xc0, 0x48, 0x9a, 0x67, 0x9e, 0x19, 0xe4, 0xe2, 0x0f, 0xd4, 0x13, 0x5a, + 0xef, 0xc5, 0x8c, 0x9a, 0x0c, 0xde, 0x13, 0x61, 0x6a, 0x6b, 0x1c, 0x8f, 0xd3, 0x4e, 0x7d, 0x5d, + 0x09, 0x1e, 0xbd, 0x2f, 0xe1, 0xd4, 0x27, 0xfe, 0xa8, 0x12, 0x3e, 0x09, 0xe8, 0x58, 0x76, 0xa3, + 0xee, 0xe9, 0x88, 0xc4, 0x7f, 0xb2, 0xaa, 0xb2, 0xdd, 0x51, 0xdf, 0xd8, 0x34, 0x07, 0x7f, 0x98, + 0xdd, 0xf5, 0x8a, 0x22, 0x18, 0x1d, 0x8d, 0x10, 0x9b, 0x1e, 0x2c, 0xae, 0xf4, 0x44, 0x1c, 0xb9, + 0xa4, 0xb4, 0x91, 0x70, 0xb8, 0xac, 0xf8, 0xff, 0x86, 0x61, 0x32, 0x19, 0xe9, 0xa1, 0xb9, 0xb1, + 0x74, 0xb6, 0xe4, 0x36, 0x83, 0x62, 0x9d, 0x50, 0xa0, 0x97, 0x96, 0x24, 0xd5, 0x9f, 0x65, 0x7a, + 0x73, 0x9c, 0xc6, 0xb8, 0x89, 0xed, 0xf0, 0xd3, 0xa4, 0x76, 0x3f, 0x40, 0x74, 0xd3, 0x6f, 0xc9, + 0x4e, 0x65, 0xb0, 0x97, 0x57, 0xa3, 0x38, 0x5d, 0x05, 0x33, 0xed, 0xc6, 0x2b, 0x53, 0xbc, 0xb0, + 0x75, 0x0f, 0x89, 0xda, 0x76, 0xa8, 0x6d, 0x83, 0xba, 0x36, 0x08, 0x56, 0x20, 0x2e, 0xbb, 0x19, + 0x2a, 0xea, 0x71, 0x76, 0x6e, 0xe7, 0xe6, 0xf6, 0x20, 0x8b, 0x16, 0x2e, 0x64, 0xc7, 0x8e, 0x1d, + 0x3c, 0xf7, 0xec, 0xb3, 0x9c, 0x7d, 0xf6, 0xd9, 0x78, 0x3c, 0x1e, 0x84, 0x10, 0xe8, 0xba, 0x4e, + 0x6d, 0x4d, 0x15, 0xbb, 0xef, 0xbf, 0x97, 0x81, 0xba, 0x25, 0xc8, 0x40, 0x18, 0x71, 0xc6, 0x05, + 0xc8, 0x35, 0x17, 0xe3, 0xeb, 0xdc, 0xc9, 0xe7, 0x9a, 0x7f, 0xc6, 0xf5, 0xd7, 0xd6, 0x62, 0x57, + 0x67, 0xad, 0x8b, 0x9c, 0x53, 0x13, 0x4e, 0x66, 0x2c, 0xee, 0xbe, 0xaf, 0x0b, 0x81, 0xc2, 0x95, + 0xab, 0x2b, 0x61, 0xda, 0xc0, 0xb7, 0xd2, 0x8d, 0x6f, 0xb5, 0x9b, 0x54, 0x57, 0x9a, 0xc4, 0x9e, + 0x14, 0xfe, 0x85, 0x3e, 0xfa, 0x87, 0x0f, 0x4d, 0x4f, 0x87, 0xa7, 0xef, 0x3d, 0xf2, 0x1f, 0xb9, + 0xf8, 0x9b, 0xa6, 0xc1, 0x3e, 0xfb, 0x20, 0x1e, 0x7b, 0x54, 0x96, 0x57, 0x54, 0xcf, 0x31, 0xbf, + 0x62, 0x9e, 0x9f, 0x15, 0x42, 0xa1, 0xb6, 0xb6, 0x01, 0x21, 0x6c, 0xf3, 0x10, 0xa1, 0xfc, 0x6b, + 0x05, 0xb3, 0xac, 0x9e, 0x1c, 0x2c, 0x66, 0xb3, 0x26, 0x86, 0x69, 0xce, 0xde, 0x9c, 0xb9, 0x18, + 0x6e, 0xe1, 0x79, 0x6e, 0xda, 0x64, 0xec, 0xe1, 0x49, 0x92, 0x07, 0x53, 0xf8, 0xcf, 0xf4, 0x50, + 0xf7, 0xfe, 0x30, 0x0d, 0x1f, 0xa9, 0x26, 0x74, 0x59, 0x90, 0x8a, 0xf7, 0x5b, 0x58, 0xc9, 0x7b, + 0x18, 0xbe, 0xe7, 0x9b, 0x98, 0x89, 0x58, 0x11, 0x73, 0xbe, 0xe4, 0x92, 0x8b, 0xf9, 0x68, 0x79, + 0x1c, 0xdf, 0xb6, 0xdf, 0xe4, 0x6f, 0xfd, 0xba, 0x4b, 0xe0, 0xaf, 0x3f, 0x8f, 0x6c, 0x5d, 0x8e, + 0x88, 0x4f, 0xb1, 0xa1, 0x67, 0x0b, 0xeb, 0xd6, 0xae, 0x25, 0x93, 0xc9, 0x70, 0xb8, 0x73, 0x17, + 0xd7, 0x5e, 0x33, 0xcc, 0x0f, 0x7f, 0xf8, 0x1d, 0xa6, 0xa3, 0xd1, 0xa2, 0x16, 0x2f, 0xec, 0xe8, + 0xe0, 0x5f, 0x6e, 0xb8, 0x82, 0x8e, 0x5f, 0x7d, 0x2d, 0x1f, 0x5c, 0x65, 0xd3, 0x84, 0x5e, 0x78, + 0x80, 0xcf, 0x57, 0xdf, 0xc5, 0xfb, 0x6f, 0xa8, 0xc3, 0xa9, 0x8a, 0xa2, 0xad, 0x91, 0x33, 0xf7, + 0x44, 0x4a, 0xd2, 0x39, 0xc9, 0xcf, 0x1f, 0xec, 0xe3, 0x89, 0x27, 0xfb, 0xf9, 0x9b, 0xf7, 0x37, + 0xe1, 0x0b, 0xab, 0x28, 0x9a, 0x00, 0x2b, 0x4f, 0xfe, 0x0b, 0x6e, 0xf0, 0x61, 0xaf, 0xb6, 0xe1, + 0x3a, 0x0e, 0xcb, 0x1c, 0xa5, 0x35, 0xb5, 0xc3, 0xe9, 0xc7, 0x57, 0x75, 0xeb, 0xa5, 0x6f, 0x9e, + 0x0f, 0x9e, 0x45, 0xfd, 0x4f, 0x9d, 0x95, 0x16, 0xa0, 0xca, 0xaa, 0xea, 0x6a, 0x42, 0x25, 0xcd, + 0xf3, 0xaa, 0x2f, 0x30, 0xc3, 0xa2, 0xd0, 0xf1, 0xcf, 0xa1, 0x22, 0xe5, 0xcd, 0xba, 0x46, 0x3a, + 0xa3, 0x30, 0x19, 0x4d, 0x16, 0x80, 0x92, 0xf9, 0xc1, 0x99, 0x94, 0x92, 0xcc, 0xb8, 0x41, 0xe4, + 0xd7, 0x93, 0x78, 0x56, 0xb9, 0x09, 0x6c, 0xf0, 0xa1, 0x87, 0x34, 0x84, 0x02, 0x46, 0xd2, 0x62, + 0x6a, 0x73, 0x1c, 0x2b, 0x6d, 0x51, 0x7a, 0x49, 0x08, 0x69, 0xec, 0x20, 0xdd, 0x77, 0x3c, 0x0f, + 0x6e, 0x08, 0x81, 0xdb, 0xed, 0xe6, 0xef, 0x3f, 0xfc, 0x21, 0xbe, 0x52, 0x9f, 0x66, 0xe1, 0x23, + 0xdf, 0x82, 0x9e, 0x43, 0x90, 0x98, 0x86, 0xc1, 0x2e, 0xd6, 0x6e, 0xfc, 0x31, 0xff, 0xe7, 0xa6, + 0xab, 0xa8, 0xa9, 0xa9, 0xa1, 0xa7, 0xa7, 0x07, 0x4d, 0xdd, 0xc9, 0x5f, 0x9d, 0x13, 0x62, 0xd9, + 0x92, 0x17, 0xb9, 0xf3, 0x5b, 0xdf, 0x60, 0x6c, 0x2c, 0x52, 0xdc, 0x28, 0x17, 0x5e, 0x78, 0x01, + 0xdf, 0xfe, 0x87, 0xeb, 0xb9, 0xf0, 0xd1, 0x2f, 0x51, 0x75, 0xe7, 0xfb, 0xf9, 0xe2, 0xe2, 0x5f, + 0xf1, 0xb7, 0x37, 0xd6, 0xe3, 0xb2, 0xcd, 0x87, 0x67, 0x45, 0x9e, 0x52, 0xc9, 0x74, 0xda, 0xe2, + 0xee, 0x9f, 0xf5, 0x70, 0xe7, 0xb7, 0x0f, 0xf2, 0xc9, 0x8f, 0x2f, 0x62, 0x51, 0x9b, 0x17, 0x47, + 0xa5, 0x8e, 0xea, 0x57, 0xc9, 0x45, 0x0d, 0x8c, 0x84, 0xc5, 0xe8, 0x03, 0x13, 0xb8, 0x1a, 0x1c, + 0x58, 0xfd, 0x26, 0x8b, 0x6b, 0x6b, 0x68, 0x3f, 0xec, 0x58, 0xbe, 0xe0, 0xa8, 0xe3, 0xc6, 0xc5, + 0xc7, 0x83, 0xea, 0x9b, 0x62, 0xa2, 0xdb, 0x6f, 0xf2, 0xd9, 0x43, 0x93, 0xea, 0xc7, 0x4a, 0x0d, + 0xbf, 0xb3, 0xbc, 0xaa, 0xfa, 0xa4, 0x20, 0xaa, 0xb8, 0x33, 0x14, 0x85, 0x50, 0x30, 0xcc, 0xf0, + 0xf0, 0x08, 0x86, 0x11, 0xcb, 0xfb, 0xd2, 0xc2, 0xc6, 0xa8, 0xa8, 0x58, 0x42, 0x7b, 0xfb, 0x22, + 0x14, 0xb5, 0x50, 0x25, 0x2a, 0x14, 0xc8, 0x47, 0x46, 0xc6, 0x98, 0x8e, 0x8e, 0x51, 0x57, 0x53, + 0x82, 0x22, 0xe6, 0x9f, 0x37, 0x37, 0x6d, 0x12, 0x79, 0x68, 0x92, 0xc0, 0xf9, 0x3e, 0x62, 0x7b, + 0x92, 0x24, 0x5f, 0x4f, 0xe3, 0x5e, 0xe8, 0xc8, 0xbb, 0x04, 0x4d, 0xc1, 0xb7, 0xd2, 0x8d, 0xe6, + 0x55, 0x51, 0x6c, 0x0a, 0xd9, 0xf1, 0x1c, 0xaa, 0x67, 0x3d, 0xf6, 0x8a, 0xba, 0xa2, 0x0b, 0xd0, + 0x75, 0x9d, 0x15, 0xcb, 0x97, 0x73, 0xfe, 0xc2, 0x3a, 0x96, 0xf4, 0x6d, 0xa3, 0x61, 0xe7, 0x93, + 0x5c, 0xe5, 0x9c, 0xe0, 0x93, 0x7f, 0xfd, 0x1e, 0x56, 0xad, 0x5a, 0x45, 0x3a, 0x9d, 0xe6, 0x47, + 0x3f, 0xfc, 0x1e, 0x97, 0x5d, 0x32, 0x4c, 0x7d, 0xa5, 0x83, 0xe6, 0x46, 0x0f, 0x39, 0xa3, 0x93, + 0x1f, 0xff, 0x78, 0x27, 0x75, 0xf5, 0x2d, 0x84, 0x42, 0x21, 0x14, 0x45, 0x41, 0x51, 0x04, 0x9d, + 0x07, 0x77, 0xf0, 0x91, 0xeb, 0x46, 0x79, 0xcf, 0x3b, 0x6b, 0x70, 0x68, 0x4a, 0x5e, 0x73, 0xe7, + 0x38, 0x5d, 0x0b, 0xc9, 0xb1, 0xfe, 0x14, 0x5f, 0xfa, 0xca, 0x01, 0x1e, 0xb9, 0xbf, 0x9b, 0x2f, + 0x7e, 0x79, 0x05, 0x97, 0x5d, 0x58, 0x51, 0x28, 0x3c, 0x40, 0x6c, 0x6f, 0x02, 0x33, 0x66, 0xe2, + 0xac, 0xd3, 0x11, 0x4e, 0x05, 0xbd, 0xcc, 0x46, 0xaa, 0x2f, 0x83, 0xaf, 0xca, 0x45, 0x2a, 0x9b, + 0x53, 0x86, 0x8d, 0xd8, 0x86, 0xc9, 0x80, 0xf9, 0xe3, 0xde, 0xef, 0xe4, 0x62, 0x7f, 0xf4, 0x6a, + 0x92, 0x62, 0xb8, 0x13, 0x29, 0x2d, 0x75, 0x4f, 0xd7, 0xf1, 0x9d, 0x1f, 0xab, 0xa9, 0x6f, 0xa4, + 0xb4, 0x34, 0x7c, 0x42, 0x10, 0x35, 0xab, 0xc9, 0x81, 0x60, 0x88, 0x0d, 0x1b, 0x2e, 0x63, 0xcf, + 0x9e, 0x6d, 0x44, 0x22, 0xdd, 0x48, 0x69, 0x52, 0x12, 0x6a, 0x60, 0xe5, 0xaa, 0x75, 0x68, 0x9a, + 0x36, 0x4f, 0xff, 0x15, 0x55, 0xa5, 0xb5, 0x7d, 0x21, 0xaf, 0x6d, 0x79, 0x8a, 0xa1, 0xd1, 0x28, + 0xd5, 0x15, 0xb3, 0x1a, 0x6e, 0x99, 0x92, 0xc9, 0x17, 0xa6, 0x71, 0xaf, 0x76, 0xe1, 0xaa, 0xb3, + 0xa3, 0x28, 0x02, 0x2d, 0xa4, 0x21, 0x14, 0x41, 0x74, 0x5b, 0x82, 0xc4, 0x81, 0x14, 0x15, 0xd7, + 0x95, 0xa0, 0xa8, 0x05, 0xef, 0x67, 0xd9, 0x51, 0xbc, 0x81, 0x79, 0x06, 0x66, 0x26, 0x22, 0xee, + 0xe8, 0xe8, 0x60, 0x41, 0x47, 0x07, 0xb2, 0x00, 0x2b, 0x02, 0xe4, 0x72, 0x39, 0x1e, 0x7b, 0xf4, + 0x51, 0x4a, 0x42, 0xcf, 0xb2, 0xa4, 0xa3, 0xba, 0x90, 0x67, 0xc3, 0x05, 0x1b, 0x4a, 0x28, 0x0f, + 0xf7, 0xf1, 0x9d, 0x6f, 0xdf, 0xcc, 0xe2, 0xa5, 0x37, 0x50, 0x57, 0x57, 0xcb, 0xc6, 0xdf, 0xfd, + 0x80, 0x9b, 0x6f, 0xc8, 0xb2, 0x62, 0x51, 0x05, 0x0a, 0x32, 0xcf, 0xd3, 0x2e, 0xd6, 0x7c, 0x25, + 0xa9, 0x9c, 0xe4, 0xc5, 0x97, 0xc7, 0xf8, 0xf2, 0xbf, 0xed, 0xa7, 0x34, 0xa4, 0x73, 0xfb, 0xfb, + 0x16, 0xb2, 0xae, 0x3d, 0x88, 0x25, 0x25, 0xdb, 0x77, 0x45, 0x89, 0x46, 0x73, 0xb4, 0xb4, 0x79, + 0xa9, 0xab, 0xcc, 0x6f, 0x4e, 0x77, 0x8b, 0xa3, 0x40, 0x2c, 0x04, 0x15, 0x41, 0x73, 0x53, 0x25, + 0x95, 0x5b, 0xfb, 0x94, 0xca, 0x90, 0xbd, 0x0e, 0x18, 0xfc, 0xa3, 0x6b, 0xf0, 0xc1, 0x7b, 0xe2, + 0xb2, 0xed, 0x16, 0xed, 0x98, 0x23, 0x9d, 0xbc, 0x21, 0x3d, 0x10, 0x73, 0x54, 0x54, 0xd6, 0xa2, + 0xeb, 0x8e, 0xa2, 0x39, 0x3c, 0x31, 0x67, 0xb2, 0xdb, 0x1d, 0xd4, 0xd7, 0x35, 0xd1, 0xd0, 0xd8, + 0x41, 0x73, 0xd3, 0x62, 0x9a, 0x5b, 0x3b, 0x70, 0x38, 0x1c, 0xf3, 0x02, 0xb3, 0x99, 0xc3, 0xe9, + 0x72, 0xa3, 0xa8, 0x0e, 0x0e, 0x1d, 0xdc, 0x4f, 0x5d, 0x5d, 0x29, 0xba, 0x4d, 0x05, 0x09, 0x99, + 0x31, 0x83, 0xd8, 0xd6, 0x04, 0x25, 0x17, 0xfb, 0x51, 0x34, 0x81, 0x2d, 0xa0, 0xa1, 0xda, 0x0a, + 0x55, 0x27, 0x87, 0x82, 0xd6, 0xea, 0x64, 0x34, 0x95, 0xa3, 0xab, 0x37, 0x89, 0xdf, 0xa6, 0xb2, + 0xf5, 0x91, 0x71, 0x5e, 0x57, 0x1a, 0xa8, 0xae, 0xa9, 0xc1, 0x6e, 0xb7, 0x9f, 0x44, 0xb9, 0x99, + 0xfb, 0x7b, 0x32, 0x99, 0xe4, 0xa1, 0x87, 0x1e, 0xe2, 0xc8, 0xe1, 0x3b, 0xf9, 0xc0, 0x4d, 0xd5, + 0x78, 0x1c, 0xca, 0x9c, 0x1a, 0x35, 0x94, 0x97, 0xd9, 0x59, 0xb6, 0xdc, 0xc5, 0x4f, 0x7f, 0xfa, + 0x08, 0x5e, 0xf7, 0x6b, 0x7c, 0xf8, 0x83, 0x41, 0x9a, 0x6b, 0x9d, 0x45, 0xdf, 0x25, 0xc8, 0x17, + 0x13, 0x0c, 0x4b, 0x72, 0xb4, 0x27, 0xc9, 0x1d, 0x77, 0x76, 0x72, 0xd7, 0x0f, 0x8e, 0x70, 0xd3, + 0x0d, 0xcd, 0x7c, 0xea, 0x1f, 0x17, 0xb2, 0xf0, 0x9c, 0x20, 0xb9, 0x51, 0x03, 0x5b, 0x48, 0x23, + 0x63, 0xc0, 0xbf, 0x7f, 0xf7, 0x30, 0x0f, 0x3f, 0xd2, 0x8f, 0x4d, 0xd7, 0x68, 0x6e, 0xf6, 0x60, + 0x53, 0x04, 0x58, 0x92, 0xd8, 0xf6, 0x04, 0x9e, 0x45, 0x2e, 0x6c, 0x1e, 0x8d, 0xee, 0xce, 0x31, + 0x75, 0xc4, 0xa6, 0xf5, 0xed, 0xbe, 0x3f, 0xf9, 0xc2, 0x9b, 0x52, 0x2e, 0xb4, 0x7d, 0xce, 0x98, + 0xcc, 0xf8, 0xcc, 0x63, 0x9e, 0x91, 0xf1, 0xb7, 0x8e, 0x1d, 0x19, 0xb2, 0xb9, 0x3d, 0x01, 0xbc, + 0x3e, 0xff, 0x1c, 0x33, 0x3c, 0x1f, 0x86, 0x13, 0x05, 0xf2, 0x9d, 0xae, 0xdb, 0xe7, 0x60, 0xd6, + 0xe2, 0x14, 0xbe, 0x5b, 0x10, 0x08, 0x84, 0x98, 0x9c, 0xca, 0x32, 0x3c, 0xd4, 0x4b, 0x6d, 0x4d, + 0x09, 0x8a, 0x10, 0xc4, 0xf7, 0xa7, 0x10, 0x1e, 0x05, 0x77, 0x9b, 0xb3, 0x40, 0xf3, 0x99, 0x8d, + 0x01, 0xba, 0xc6, 0xb3, 0x7c, 0xed, 0x3b, 0x87, 0xd8, 0xfa, 0xea, 0x38, 0xcb, 0x96, 0x85, 0xa8, + 0x0c, 0xeb, 0xf8, 0x3b, 0xec, 0xbc, 0xbc, 0xfd, 0x19, 0xee, 0xbe, 0x7b, 0x33, 0x52, 0x6a, 0x84, + 0x42, 0x21, 0x34, 0x4d, 0x43, 0x55, 0xd5, 0x02, 0xa2, 0x66, 0x31, 0x3d, 0x3d, 0xcd, 0xf6, 0xed, + 0xdb, 0xf9, 0xf7, 0x7f, 0xbf, 0x9d, 0xd2, 0x92, 0xc7, 0xf9, 0xc0, 0x4d, 0x35, 0xf8, 0x5c, 0xf3, + 0x97, 0x6b, 0x4a, 0xd8, 0xd7, 0x19, 0xe3, 0x57, 0x0f, 0xf7, 0x71, 0xd3, 0x0d, 0x8d, 0x5c, 0x72, + 0x7e, 0x39, 0x6e, 0xbb, 0x3a, 0x0f, 0xbc, 0x30, 0x10, 0x74, 0x0d, 0xa4, 0xf9, 0xc1, 0xdd, 0xc7, + 0xf8, 0xca, 0xbf, 0x1d, 0xa0, 0xa5, 0xd5, 0xc7, 0x97, 0x6e, 0x5b, 0xce, 0x45, 0xe7, 0x95, 0xe1, + 0x71, 0xaa, 0x28, 0x8a, 0xc0, 0x5e, 0xa6, 0x21, 0x85, 0x60, 0xc7, 0x9e, 0x29, 0xf6, 0xee, 0x9b, + 0xe4, 0x9b, 0xdf, 0x58, 0x85, 0xc3, 0x99, 0xdf, 0x48, 0x3e, 0x8f, 0x46, 0x7a, 0xd8, 0x20, 0x75, + 0x2c, 0x83, 0x7f, 0x8d, 0x1b, 0x0b, 0xc9, 0xd1, 0xe3, 0xfd, 0x0c, 0x05, 0xc6, 0x9f, 0xdf, 0xfe, + 0x53, 0x5e, 0xf8, 0xa3, 0x9b, 0x68, 0x80, 0xed, 0xcd, 0x96, 0xdc, 0x0e, 0x0f, 0xe6, 0x5e, 0x0d, + 0xb1, 0xfc, 0x70, 0xec, 0xae, 0xf8, 0x8b, 0xbf, 0x08, 0x35, 0xb7, 0x9c, 0xc5, 0x8a, 0x33, 0xd6, + 0xa2, 0xaa, 0xda, 0x29, 0x7d, 0xf2, 0x1b, 0x51, 0x69, 0xe6, 0xbd, 0x4f, 0x51, 0x58, 0xb4, 0x74, + 0x19, 0x5b, 0x36, 0x8f, 0x73, 0xa4, 0x6b, 0x8c, 0x05, 0xcd, 0x65, 0x64, 0x86, 0x73, 0x68, 0x01, + 0x75, 0x1e, 0x58, 0x02, 0xd0, 0x3b, 0x92, 0xe6, 0x5b, 0xdf, 0x3e, 0x48, 0x22, 0x61, 0x72, 0xc1, + 0x05, 0x95, 0x74, 0xb4, 0x79, 0xd0, 0x54, 0x41, 0x79, 0xa5, 0xc2, 0x3f, 0xdc, 0xd2, 0xc4, 0xe0, + 0x68, 0x86, 0x17, 0x5e, 0xfc, 0x3a, 0xb7, 0x7d, 0xee, 0x5f, 0x98, 0x8a, 0x56, 0x63, 0x77, 0x54, + 0x20, 0xa5, 0xc0, 0x34, 0x52, 0x98, 0xc6, 0x61, 0xd6, 0xad, 0x57, 0xb9, 0xf5, 0xc3, 0x95, 0x34, + 0xd5, 0xd4, 0xe6, 0x3b, 0x27, 0x4e, 0xe0, 0x5b, 0x8f, 0x46, 0x32, 0x24, 0xe2, 0x06, 0x1f, 0xfb, + 0x48, 0x2b, 0x4e, 0x4d, 0x14, 0xab, 0x1d, 0x12, 0x48, 0x1b, 0x92, 0xa3, 0xdd, 0x29, 0xee, 0xbe, + 0xe7, 0x18, 0x9b, 0x5f, 0x1c, 0xe6, 0x92, 0x4b, 0xaa, 0xb8, 0xfb, 0x47, 0xeb, 0x69, 0x6f, 0xf6, + 0xe4, 0x69, 0xbe, 0x85, 0x6d, 0x20, 0x05, 0xe4, 0x0c, 0xc9, 0xc6, 0xcd, 0x11, 0x3e, 0xfe, 0xf1, + 0xd7, 0x38, 0xe3, 0x8c, 0x52, 0xdc, 0x0e, 0x85, 0x55, 0x0b, 0x7d, 0x58, 0x59, 0x49, 0xaa, 0x37, + 0xc3, 0xc4, 0x33, 0x51, 0xc2, 0x57, 0x86, 0x0a, 0x2e, 0xc6, 0x42, 0x5a, 0x52, 0x98, 0xa6, 0x7c, + 0xf3, 0x19, 0x1d, 0x8f, 0xae, 0x1d, 0x7f, 0x30, 0xfd, 0x7c, 0xd9, 0xe6, 0xf6, 0x4c, 0xc3, 0x13, + 0xf2, 0xf0, 0xee, 0x55, 0x81, 0x40, 0x09, 0x2d, 0x6d, 0x0b, 0xfe, 0x47, 0x70, 0xaa, 0x10, 0x02, + 0x9b, 0x4d, 0x67, 0xe5, 0x9a, 0xb3, 0xd9, 0xb1, 0xe5, 0x69, 0x2a, 0x2b, 0xfc, 0x28, 0x1e, 0x85, + 0xcc, 0x40, 0xb6, 0xd0, 0xde, 0x23, 0x11, 0x32, 0xef, 0xf3, 0x42, 0x3e, 0x1b, 0x5f, 0xfe, 0xc2, + 0x52, 0x7a, 0xfa, 0x53, 0x5c, 0x77, 0xfd, 0x66, 0x76, 0xec, 0x88, 0xf0, 0xc1, 0xbf, 0x6d, 0xa5, + 0xa9, 0xde, 0x85, 0x66, 0x49, 0xaa, 0x4b, 0x75, 0xae, 0xbd, 0xaa, 0x96, 0xab, 0xaf, 0x82, 0x64, + 0xda, 0x64, 0x7c, 0x6a, 0x0a, 0xc3, 0x04, 0xb7, 0x4b, 0x21, 0xe4, 0x6b, 0x45, 0xd7, 0x44, 0xbe, + 0x04, 0x79, 0x42, 0x4b, 0xcc, 0x4c, 0x3a, 0x57, 0x55, 0xe6, 0xa0, 0xaa, 0xcc, 0x51, 0xcc, 0x04, + 0x72, 0x08, 0xc6, 0xc6, 0x32, 0x6c, 0x79, 0x2d, 0xc2, 0xaf, 0x7e, 0xd5, 0x8b, 0x04, 0xde, 0x7a, + 0x69, 0x35, 0x1f, 0xfb, 0x48, 0x3b, 0x55, 0xe5, 0x76, 0x14, 0xe6, 0x9e, 0x2b, 0x0f, 0xc6, 0x4c, + 0xc5, 0x4d, 0x7e, 0xf6, 0xcb, 0x1e, 0xbe, 0xfa, 0xc5, 0x7d, 0x9c, 0x61, 0x98, 0x54, 0x97, 0xdb, + 0x71, 0x3b, 0x54, 0xa4, 0x84, 0x74, 0x4f, 0x9a, 0xcc, 0xb8, 0x49, 0xe5, 0xf5, 0xa5, 0xa8, 0xae, + 0x7c, 0x41, 0x24, 0x1e, 0xcb, 0x90, 0x4c, 0x25, 0x8a, 0x01, 0xd9, 0x9b, 0x4e, 0xd9, 0xf9, 0xcd, + 0x79, 0xa3, 0xc3, 0x3c, 0x52, 0x76, 0x91, 0xee, 0xd0, 0x37, 0x97, 0xf5, 0x1e, 0x59, 0xd8, 0xd0, + 0xdc, 0x8c, 0x36, 0x27, 0xff, 0xfd, 0x43, 0x85, 0xec, 0xf1, 0x78, 0xa9, 0x6d, 0x5c, 0xc9, 0xa1, + 0x43, 0x47, 0x59, 0xdc, 0x5a, 0x41, 0xf4, 0xa9, 0x69, 0xa6, 0x17, 0x24, 0xf0, 0xaf, 0x74, 0x83, + 0xc8, 0xa3, 0x5d, 0x1e, 0xa7, 0x8a, 0x40, 0xd2, 0xd6, 0xe8, 0xe1, 0xda, 0x6b, 0x9a, 0x79, 0xf2, + 0xeb, 0xaf, 0xb3, 0xed, 0x89, 0x7e, 0xce, 0x7d, 0x4f, 0x23, 0xd7, 0x5d, 0xd7, 0x40, 0x7d, 0xb5, + 0x13, 0x5d, 0xcd, 0xe7, 0x7a, 0x1e, 0xbb, 0x82, 0xa7, 0xdc, 0x3e, 0x2f, 0xbf, 0x16, 0xf2, 0x84, + 0xb2, 0xce, 0x09, 0x00, 0xc5, 0x8c, 0x06, 0x4a, 0x60, 0xf7, 0xfe, 0x18, 0x8f, 0x3d, 0x39, 0x40, + 0x3a, 0x63, 0x72, 0xc6, 0xaa, 0x52, 0xbe, 0xfa, 0xd5, 0x95, 0x54, 0x96, 0x39, 0xd0, 0x0a, 0x65, + 0xcd, 0xb9, 0xd7, 0x2e, 0xa5, 0x24, 0x63, 0x4a, 0x76, 0x1f, 0x98, 0xe6, 0x2b, 0x5f, 0xd9, 0xcf, + 0xee, 0x8d, 0xa3, 0x5c, 0xee, 0x05, 0xbf, 0x53, 0xe4, 0x81, 0xc8, 0x42, 0x86, 0xe0, 0x6a, 0x75, + 0xe2, 0x6a, 0xa1, 0xd8, 0x04, 0x07, 0x90, 0x4c, 0x65, 0x31, 0x4c, 0x43, 0x4a, 0x54, 0xf8, 0x03, + 0xfb, 0xd2, 0x2a, 0xb6, 0xb4, 0xd8, 0xad, 0xb4, 0x29, 0xd4, 0xe6, 0x54, 0x76, 0xa8, 0xee, 0x8d, + 0xdb, 0x54, 0xff, 0x4b, 0xa5, 0x2b, 0xb3, 0xfe, 0xd0, 0x64, 0x24, 0xca, 0x13, 0x13, 0xfb, 0x72, + 0x0b, 0xe3, 0xb1, 0x18, 0x81, 0x60, 0xe8, 0xb4, 0x2c, 0x8b, 0xff, 0xba, 0xb9, 0x96, 0x54, 0xd7, + 0xd6, 0xb0, 0xfb, 0xd5, 0x03, 0xe8, 0xcb, 0x6c, 0x84, 0xde, 0x15, 0x60, 0xfc, 0xfe, 0x49, 0xe2, + 0x5b, 0x12, 0x38, 0x17, 0x38, 0x40, 0x05, 0xcd, 0xa7, 0xe2, 0x5d, 0xea, 0x42, 0xb7, 0x09, 0xae, + 0x7a, 0x67, 0x2d, 0x1b, 0x1f, 0xeb, 0x61, 0x6d, 0x6f, 0x82, 0xc8, 0x0f, 0x3b, 0xb9, 0xf9, 0x07, + 0x47, 0x68, 0x3a, 0xbf, 0x92, 0x2b, 0xdf, 0x55, 0xcf, 0xaa, 0xe5, 0x41, 0x2a, 0x4a, 0x6d, 0xb3, + 0x1a, 0x3b, 0x8b, 0xbb, 0xcd, 0x14, 0xa0, 0xe7, 0xd7, 0x68, 0xe7, 0x3e, 0x2f, 0xfc, 0xba, 0xa0, + 0xdd, 0xcb, 0xb2, 0xe5, 0x8b, 0xf2, 0xcf, 0x0d, 0x13, 0x61, 0x49, 0x90, 0x79, 0xe1, 0xca, 0xbc, + 0x63, 0x07, 0x21, 0x48, 0x66, 0x2d, 0x5e, 0x3f, 0x12, 0xe3, 0x27, 0xf7, 0x1d, 0xe3, 0xfe, 0xfb, + 0x7a, 0xe8, 0x30, 0x24, 0xd7, 0x86, 0x04, 0x21, 0x45, 0x32, 0x6a, 0x0a, 0x42, 0x41, 0x17, 0x8a, + 0x32, 0x0b, 0x77, 0xcd, 0xd0, 0x79, 0x84, 0xcc, 0x37, 0xb4, 0xa5, 0xd3, 0x39, 0x0c, 0xc3, 0x25, + 0x52, 0x99, 0x80, 0x80, 0x5e, 0x2a, 0xba, 0x9c, 0xee, 0xec, 0xae, 0x92, 0x0b, 0x8c, 0xd7, 0x7d, + 0x8b, 0xf5, 0x80, 0xba, 0x4b, 0xa9, 0x9b, 0xdc, 0x34, 0xfa, 0xb6, 0xfe, 0x79, 0x35, 0xd2, 0x8a, + 0x83, 0x65, 0x81, 0xd4, 0x93, 0xaa, 0xdf, 0x0c, 0xba, 0xde, 0x1d, 0x1f, 0x88, 0xb8, 0xa6, 0xb6, + 0xd8, 0x3e, 0x6c, 0xe5, 0x54, 0xbf, 0x1e, 0x19, 0xfb, 0x51, 0xe9, 0x21, 0x3e, 0x1b, 0x59, 0xc0, + 0xf8, 0xff, 0x48, 0xc0, 0x89, 0x68, 0x0b, 0xf1, 0xa8, 0x20, 0x9d, 0x9e, 0x24, 0x12, 0x19, 0x3b, + 0xa5, 0x80, 0xa5, 0x94, 0x85, 0x0e, 0x83, 0x38, 0x1e, 0x8f, 0xef, 0x24, 0x5a, 0xed, 0x29, 0x19, + 0x23, 0x76, 0x07, 0x0e, 0x77, 0x39, 0xa9, 0x6c, 0x8e, 0xe0, 0x99, 0x5e, 0xbc, 0x8b, 0x9c, 0xa4, + 0x7b, 0xb2, 0x48, 0x53, 0xa2, 0xb8, 0x14, 0x1c, 0xb5, 0x76, 0x94, 0x42, 0x34, 0xdd, 0x58, 0xe3, + 0xe4, 0xbd, 0x37, 0xb5, 0xf2, 0xf8, 0x3f, 0xef, 0xe2, 0x6c, 0x17, 0x34, 0x09, 0x8b, 0xe1, 0xe7, + 0x07, 0xf9, 0xde, 0x53, 0xfd, 0x8c, 0x86, 0xed, 0x9c, 0x71, 0x4e, 0x39, 0xe7, 0x9c, 0x5d, 0xc6, + 0x9a, 0x55, 0x21, 0x6a, 0xaa, 0x9d, 0x38, 0xed, 0x2a, 0xaa, 0x22, 0x39, 0x55, 0x5b, 0xd1, 0x49, + 0x29, 0x1f, 0xe0, 0xd2, 0x80, 0x9c, 0x55, 0xa0, 0x95, 0x09, 0x66, 0x08, 0x63, 0x16, 0x12, 0x53, + 0x42, 0x74, 0xda, 0x60, 0xdb, 0xce, 0x49, 0x1e, 0x7c, 0xa8, 0x97, 0xa7, 0x9f, 0x1a, 0x20, 0x1c, + 0xb5, 0xb8, 0xd2, 0x07, 0x2d, 0xbe, 0xd9, 0xc0, 0x33, 0x21, 0x25, 0x8d, 0x41, 0x0d, 0x55, 0x9d, + 0x5f, 0x65, 0x9a, 0x81, 0x62, 0x05, 0xa0, 0xeb, 0x1a, 0x59, 0x6f, 0x26, 0x93, 0x0e, 0x24, 0x9f, + 0x2e, 0xdb, 0xec, 0xbb, 0x2a, 0xfd, 0x2b, 0xf3, 0xab, 0xde, 0xa7, 0xb4, 0xa6, 0xba, 0x5c, 0xa9, + 0x98, 0xd4, 0xa6, 0xac, 0x81, 0x35, 0xb9, 0x23, 0xa1, 0x27, 0x7c, 0x37, 0x2b, 0x65, 0x99, 0xbd, + 0x96, 0x21, 0xcf, 0x66, 0x54, 0xf9, 0xa4, 0xf3, 0x2e, 0x73, 0xd1, 0x9a, 0x29, 0x57, 0xd9, 0xe2, + 0x4a, 0xbb, 0xb2, 0x74, 0xe1, 0x42, 0x3c, 0x5e, 0x81, 0x85, 0x64, 0xf3, 0x76, 0xf9, 0xa1, 0xfb, + 0x8c, 0xc1, 0x55, 0xa5, 0x3b, 0xd5, 0x73, 0x23, 0x2b, 0xa3, 0x99, 0x3f, 0x58, 0xc0, 0x5b, 0xce, + 0x3b, 0x24, 0x2f, 0xde, 0x58, 0xf3, 0xdd, 0x89, 0x70, 0xea, 0x9a, 0xe3, 0x47, 0xf6, 0xd5, 0xd6, + 0xd6, 0x35, 0xcc, 0x4b, 0x4f, 0xf2, 0xfc, 0x28, 0x83, 0x9d, 0x3b, 0xb7, 0xd0, 0xdb, 0xb3, 0x93, + 0xea, 0x9a, 0xa5, 0xac, 0x3e, 0xe3, 0x6c, 0x6c, 0xba, 0xfe, 0x7b, 0x89, 0xe5, 0x6e, 0x6f, 0x80, + 0x44, 0x2c, 0x8a, 0xdf, 0x65, 0xc7, 0xe6, 0xd7, 0xb0, 0x2d, 0xd5, 0x4e, 0xf9, 0x3e, 0x15, 0xc9, + 0x65, 0x17, 0x55, 0xf2, 0xf0, 0x43, 0x3d, 0x0c, 0xef, 0x9b, 0xa0, 0x42, 0x17, 0x54, 0xe8, 0x92, + 0x4a, 0x9b, 0x42, 0x3a, 0x9b, 0xa5, 0xff, 0xc9, 0x3e, 0xee, 0xfb, 0x75, 0x1f, 0x5f, 0xd3, 0x05, + 0xee, 0x5a, 0x0f, 0xeb, 0xd6, 0x96, 0xb2, 0x7a, 0x4d, 0x88, 0xc5, 0x8b, 0x82, 0x94, 0x97, 0xd9, + 0xf1, 0x7a, 0x34, 0x74, 0x5d, 0x41, 0x11, 0x02, 0x55, 0xcc, 0xd4, 0x66, 0xe5, 0x49, 0xf1, 0x84, + 0x25, 0xf3, 0xd1, 0x75, 0x36, 0x6b, 0x31, 0x39, 0x95, 0xe3, 0xe8, 0xf1, 0x38, 0xbf, 0xf9, 0xcd, + 0x10, 0xbf, 0xf9, 0xed, 0x30, 0xfd, 0x83, 0x12, 0x65, 0x2a, 0xce, 0xe5, 0x41, 0x68, 0x0b, 0xe7, + 0x49, 0xef, 0x32, 0x0f, 0x6b, 0xe5, 0x1b, 0xdb, 0x55, 0x08, 0xf8, 0xed, 0xf3, 0x70, 0xfb, 0xb9, + 0x9b, 0x48, 0x4a, 0x89, 0xcd, 0xa6, 0x21, 0x71, 0xda, 0xf7, 0x0f, 0x65, 0x5f, 0xa8, 0xff, 0xd9, + 0x42, 0xfb, 0xbb, 0xcf, 0xb9, 0x52, 0x5c, 0xfe, 0xdd, 0xcb, 0xa9, 0xab, 0xad, 0x23, 0x1a, 0x8d, + 0x2a, 0x0f, 0xfd, 0xfa, 0xa1, 0xf6, 0xef, 0x3c, 0xfe, 0x9d, 0x17, 0x26, 0x82, 0xc3, 0xc6, 0xfa, + 0x63, 0x6e, 0xc7, 0x45, 0x67, 0x56, 0x88, 0xf3, 0x6f, 0x2e, 0xa3, 0xb9, 0xd1, 0x83, 0x6e, 0x13, + 0x08, 0x2b, 0x5f, 0x84, 0x44, 0xc2, 0xe2, 0x85, 0x21, 0x76, 0x7e, 0x2d, 0xd9, 0xb0, 0xcb, 0x21, + 0x2a, 0x21, 0xda, 0xfd, 0x07, 0x0b, 0x18, 0xa0, 0xb7, 0xd4, 0xea, 0x73, 0xe9, 0xea, 0xed, 0x9e, + 0x43, 0x5d, 0x5f, 0x3f, 0x72, 0xe8, 0xa0, 0xbe, 0x78, 0xd9, 0xf2, 0x39, 0xd8, 0xb3, 0x20, 0x16, + 0x8b, 0x33, 0x34, 0xd8, 0x09, 0x18, 0xf4, 0xf5, 0xee, 0xa4, 0x24, 0x54, 0x49, 0xfb, 0x82, 0x8e, + 0xdf, 0xe7, 0x8d, 0xd1, 0x34, 0x1b, 0x99, 0x9c, 0x39, 0x8f, 0x5a, 0x7b, 0xba, 0xa3, 0xbc, 0x54, + 0xe7, 0xc6, 0x9b, 0x9a, 0xf9, 0xde, 0x27, 0x26, 0xb9, 0x58, 0xe6, 0x49, 0x01, 0x00, 0x76, 0xa0, + 0xc5, 0x21, 0x68, 0x75, 0x40, 0x46, 0xc2, 0xd8, 0x50, 0x8c, 0xfe, 0xfb, 0x63, 0x7c, 0xe7, 0x9e, + 0x2e, 0x22, 0x1a, 0x28, 0x41, 0x1b, 0x75, 0x8d, 0x1e, 0x5a, 0xda, 0x7c, 0x78, 0x3d, 0x1a, 0x75, + 0x75, 0xf9, 0x76, 0x16, 0xa7, 0xd3, 0x86, 0xd7, 0x9b, 0x27, 0x1d, 0x4c, 0x4f, 0x67, 0x49, 0x67, + 0x0c, 0x46, 0x47, 0xd3, 0x8c, 0x8d, 0xa5, 0x39, 0x74, 0x68, 0x9a, 0xae, 0x1e, 0x41, 0xa8, 0xa4, + 0x9e, 0x15, 0xcb, 0xcf, 0xe5, 0x13, 0x9f, 0x3c, 0x1b, 0xc3, 0x30, 0xb8, 0xfd, 0x73, 0x9f, 0xa5, + 0xd2, 0x1c, 0x2c, 0xd2, 0x65, 0xe7, 0x6a, 0x6a, 0x5c, 0x0a, 0xfc, 0x7e, 0x35, 0x1f, 0x8c, 0x9d, + 0x66, 0x35, 0x7e, 0xbf, 0x13, 0x7f, 0xda, 0xc6, 0xa5, 0x87, 0xde, 0xe5, 0x78, 0xff, 0xd7, 0x3e, + 0x42, 0x5b, 0x6b, 0x5b, 0x91, 0x7f, 0xed, 0x72, 0xb9, 0xb8, 0xe5, 0x83, 0xb7, 0x50, 0xfe, 0x70, + 0x99, 0xed, 0xb1, 0xc7, 0x6e, 0xb3, 0xfd, 0xdb, 0xd7, 0x5b, 0xa8, 0x0e, 0xdb, 0x91, 0x12, 0xb2, + 0x86, 0x64, 0x6c, 0x22, 0xc7, 0xf0, 0x70, 0x9a, 0x89, 0xa9, 0x0c, 0x4b, 0x17, 0xfa, 0x28, 0x0b, + 0xdb, 0x59, 0x12, 0x2e, 0x29, 0xd9, 0xd7, 0x9b, 0x5e, 0x0d, 0xfc, 0xcf, 0x04, 0x7c, 0x70, 0xf9, + 0xa0, 0xa5, 0xf7, 0xb8, 0xbe, 0x1f, 0xb0, 0x9c, 0xef, 0xf5, 0xed, 0xdd, 0x72, 0x66, 0x79, 0x45, + 0x25, 0x65, 0x15, 0x15, 0xa4, 0xd3, 0x06, 0xa3, 0xa3, 0x71, 0x62, 0xd3, 0xa3, 0xe4, 0x72, 0x89, + 0x22, 0x20, 0xd2, 0xdf, 0x7f, 0x94, 0xd6, 0xb6, 0xf6, 0x62, 0x6e, 0xfa, 0x06, 0x11, 0x17, 0x53, + 0xd1, 0x24, 0xb2, 0x36, 0x54, 0xf4, 0x9f, 0x9c, 0x32, 0x0d, 0x03, 0x55, 0x11, 0x9c, 0xbb, 0xa1, + 0x8c, 0xc7, 0xce, 0xab, 0xa4, 0x7f, 0xd3, 0x20, 0x0d, 0xf6, 0x59, 0x3f, 0x9b, 0xdf, 0xd5, 0x02, + 0x9b, 0x90, 0x54, 0xdb, 0x04, 0x35, 0x36, 0xc9, 0x5a, 0x20, 0x27, 0x05, 0x69, 0x33, 0x47, 0xe7, + 0xbe, 0x49, 0x5e, 0x1c, 0x2e, 0xe1, 0x7d, 0xd7, 0x5d, 0xc7, 0x74, 0x5c, 0xb0, 0xef, 0x40, 0x37, + 0xa6, 0x69, 0x92, 0x4e, 0xa7, 0x89, 0x44, 0xc6, 0xd8, 0xbb, 0xf7, 0x10, 0xda, 0x78, 0x84, 0x6a, + 0x1b, 0x58, 0x42, 0x90, 0x69, 0x5a, 0xc8, 0xdd, 0x77, 0x7f, 0x8f, 0x05, 0x0b, 0xda, 0x09, 0x04, + 0x02, 0xa8, 0xaa, 0x4a, 0x77, 0x77, 0x37, 0xf7, 0x36, 0x36, 0x31, 0x75, 0x70, 0x90, 0x80, 0x9a, + 0x1f, 0x45, 0x31, 0x53, 0x82, 0x90, 0x12, 0x92, 0x42, 0xa0, 0x69, 0x73, 0x3a, 0x29, 0xe7, 0xd6, + 0xb0, 0x67, 0x2c, 0x96, 0x53, 0xa7, 0xa6, 0xa6, 0x82, 0x8b, 0x2e, 0xbb, 0x9a, 0xc6, 0xa6, 0x76, + 0xc4, 0x9c, 0x08, 0x6e, 0x06, 0x8d, 0xbb, 0xfc, 0xf2, 0x2b, 0x38, 0x78, 0xf0, 0x00, 0x3b, 0x76, + 0x6c, 0x62, 0xa2, 0xd1, 0xc3, 0x6f, 0x37, 0x0e, 0xf1, 0xf2, 0xf6, 0x71, 0x8e, 0xeb, 0xb9, 0x5c, + 0xc4, 0x19, 0x55, 0x3f, 0xb5, 0xa8, 0x43, 0x59, 0xbf, 0x2a, 0x84, 0xcd, 0xa6, 0xd0, 0x50, 0xad, + 0x69, 0xb2, 0x34, 0xf3, 0xae, 0xf2, 0x43, 0x55, 0x0f, 0x8f, 0x2c, 0x18, 0x34, 0xfe, 0x60, 0x01, + 0x03, 0xec, 0xa9, 0x4f, 0x66, 0x3a, 0x5e, 0x09, 0xbf, 0x33, 0x6a, 0x33, 0x9e, 0xd9, 0xb5, 0x6d, + 0xf3, 0x8a, 0xb4, 0xd1, 0xce, 0x7f, 0xfe, 0xe7, 0x4e, 0xa6, 0xa6, 0x6c, 0x64, 0x32, 0x71, 0x4a, + 0x4a, 0x92, 0xac, 0x5d, 0xa7, 0xd1, 0xdc, 0x24, 0x48, 0xc4, 0x27, 0xc8, 0x65, 0xb3, 0x28, 0x0e, + 0xe7, 0x69, 0x79, 0xd4, 0x52, 0x4a, 0x7c, 0x3e, 0x1f, 0x03, 0x5d, 0x89, 0x22, 0xfb, 0x52, 0x9c, + 0x3e, 0x26, 0x03, 0x20, 0x1c, 0xd2, 0xb9, 0xfa, 0xbd, 0x0d, 0xdc, 0xfe, 0xf2, 0x08, 0x15, 0x96, + 0x89, 0x43, 0x91, 0xa7, 0xa0, 0xe6, 0xc9, 0x02, 0xc8, 0x28, 0xb1, 0x09, 0xb0, 0xa9, 0x50, 0x69, + 0x13, 0xbc, 0xae, 0x28, 0x5c, 0x79, 0xe5, 0x95, 0x74, 0x74, 0x74, 0x14, 0xe8, 0xad, 0x60, 0x49, + 0x8b, 0x78, 0x3c, 0xce, 0xe7, 0x3f, 0xff, 0x79, 0x8e, 0x46, 0x35, 0x6a, 0x99, 0x00, 0x00, 0x20, + 0x00, 0x49, 0x44, 0x41, 0x54, 0xdd, 0xf3, 0x1d, 0xce, 0xf1, 0xc1, 0x84, 0x01, 0x4f, 0x99, 0x06, + 0x55, 0x55, 0x95, 0x94, 0x94, 0x94, 0x14, 0x4d, 0x6d, 0x49, 0x49, 0x09, 0x4d, 0x2d, 0x2d, 0x4c, + 0xec, 0x7b, 0x89, 0xfa, 0x82, 0x99, 0x94, 0x42, 0x16, 0x46, 0x46, 0x80, 0xe9, 0x51, 0x29, 0x0d, + 0xdb, 0x67, 0x83, 0xf4, 0xd9, 0x84, 0xaa, 0x78, 0x7d, 0x9a, 0xa6, 0x52, 0x5d, 0xe5, 0xa6, 0xaf, + 0x77, 0x2b, 0xf5, 0x0d, 0xeb, 0x50, 0x14, 0xdb, 0x49, 0x2d, 0x40, 0x0e, 0x87, 0x83, 0x4b, 0x2e, + 0xb9, 0x8c, 0xeb, 0xaf, 0xff, 0x29, 0x91, 0xa6, 0xa4, 0x34, 0x2f, 0x48, 0x77, 0xda, 0xde, 0x6f, + 0x3e, 0x8d, 0x83, 0x2f, 0xe7, 0xb6, 0x89, 0x4f, 0x0e, 0x8e, 0x26, 0x3e, 0xa9, 0x28, 0x42, 0x11, + 0x52, 0x52, 0x1d, 0x76, 0xa2, 0x76, 0xd9, 0xdc, 0x86, 0xc7, 0x14, 0xff, 0x65, 0x0d, 0x2e, 0x3f, + 0x50, 0x2a, 0x50, 0x93, 0xe5, 0xb2, 0xaf, 0xca, 0x63, 0xda, 0xdc, 0x2d, 0x42, 0x18, 0x8a, 0x4c, + 0xd8, 0xa6, 0x95, 0x50, 0xdf, 0xc0, 0xf3, 0xa1, 0xb8, 0xb0, 0x9a, 0x6a, 0x7e, 0xf4, 0xfa, 0x93, + 0xa3, 0x77, 0xf6, 0xee, 0x0c, 0x69, 0x5f, 0xff, 0xfa, 0xbd, 0x34, 0xb7, 0x34, 0x93, 0x4e, 0xa5, + 0xd9, 0xb7, 0x6f, 0x3f, 0x8f, 0x3c, 0xf2, 0x30, 0x3f, 0xfe, 0xf1, 0x26, 0xce, 0x3c, 0xcb, 0xe0, + 0x2d, 0xe7, 0x4b, 0x1c, 0x2e, 0x90, 0xd6, 0x7c, 0xc5, 0x94, 0x72, 0xc6, 0x6f, 0x49, 0xbc, 0x5e, + 0x1f, 0x91, 0xf1, 0x2c, 0x91, 0xa9, 0x24, 0x65, 0x01, 0xd7, 0x1b, 0x6a, 0x3a, 0x52, 0xa2, 0x00, + 0x67, 0x9f, 0x59, 0xca, 0xe3, 0x17, 0x55, 0xd3, 0xff, 0x58, 0x2f, 0xcd, 0x8e, 0x93, 0x37, 0x82, + 0x14, 0xb3, 0xa4, 0x81, 0xbc, 0xa8, 0xc1, 0xa3, 0x49, 0x64, 0x26, 0x43, 0x76, 0x4e, 0x6b, 0x4b, + 0xde, 0xb7, 0xab, 0x78, 0xbd, 0x5e, 0x1a, 0x1b, 0x1b, 0xd9, 0x2e, 0x35, 0x0c, 0x69, 0xe2, 0x50, + 0x25, 0xa9, 0xc8, 0x28, 0x03, 0x03, 0x03, 0x34, 0x36, 0x36, 0x16, 0x53, 0x23, 0xbb, 0xdd, 0x4e, + 0x79, 0x79, 0x19, 0xdb, 0x0d, 0x05, 0x4b, 0x5a, 0xa8, 0x85, 0x4d, 0x24, 0x05, 0x98, 0x52, 0x60, + 0x7a, 0x74, 0x02, 0x3e, 0x1d, 0x59, 0x20, 0x35, 0xcc, 0x2d, 0x8b, 0xca, 0x19, 0x9f, 0x2c, 0x25, + 0x35, 0xd5, 0x41, 0x36, 0x6e, 0xda, 0xc8, 0x74, 0xf4, 0xdd, 0x04, 0x82, 0x0d, 0xa7, 0x5c, 0x6e, + 0x59, 0x59, 0x39, 0xc1, 0xaa, 0x5a, 0x26, 0xde, 0x95, 0xb8, 0xcf, 0xb6, 0x7a, 0xf0, 0x6f, 0x47, + 0x97, 0x0f, 0x65, 0x01, 0xfc, 0x5f, 0xaa, 0xdd, 0xba, 0xad, 0x33, 0x69, 0x8d, 0x4f, 0x65, 0x95, + 0xf2, 0x12, 0x3b, 0x08, 0x0b, 0xc4, 0x20, 0x52, 0x31, 0xff, 0x6b, 0x51, 0x74, 0xc9, 0x76, 0x4d, + 0xcb, 0xf5, 0x58, 0xdf, 0x57, 0x7f, 0x12, 0xbc, 0xae, 0x36, 0x31, 0x6d, 0x0b, 0x99, 0x80, 0xb4, + 0xc8, 0x99, 0x29, 0x86, 0x9c, 0x59, 0x26, 0x6d, 0x1e, 0x9e, 0xf6, 0xfb, 0x30, 0x7a, 0x93, 0xe2, + 0x73, 0x97, 0xbf, 0x9d, 0xe5, 0x2b, 0x96, 0x33, 0x1e, 0x19, 0xa7, 0xab, 0xab, 0x8b, 0xb7, 0xbd, + 0xed, 0x0a, 0xae, 0xb8, 0xe2, 0x72, 0x3a, 0x0f, 0x1f, 0xe6, 0x17, 0xf7, 0xdf, 0xcf, 0xad, 0x1f, + 0xf9, 0x1d, 0x1f, 0xbc, 0xa5, 0x83, 0x35, 0xeb, 0x6a, 0x0b, 0x66, 0x2c, 0xbf, 0x40, 0xab, 0xe0, + 0xbb, 0x11, 0x79, 0x0a, 0x4d, 0x65, 0x6d, 0x07, 0x2f, 0xbd, 0xbc, 0x87, 0x8b, 0x2f, 0x5c, 0x86, + 0x5b, 0x57, 0x11, 0x27, 0x28, 0xae, 0x60, 0xbe, 0x36, 0xf8, 0x5c, 0x2a, 0x37, 0xde, 0xd0, 0xc4, + 0x3f, 0x6f, 0x1e, 0xa6, 0x26, 0x99, 0xc5, 0xae, 0xcc, 0xbe, 0x4f, 0x48, 0x51, 0xdc, 0x40, 0x33, + 0x44, 0x37, 0x09, 0xd8, 0x85, 0xc4, 0x9a, 0x9e, 0x62, 0x78, 0x78, 0x98, 0xa5, 0x4b, 0x97, 0xce, + 0xa3, 0x00, 0x09, 0x21, 0x68, 0x6f, 0x6f, 0x27, 0xea, 0xf0, 0x92, 0x65, 0x0a, 0x3b, 0x02, 0x6f, + 0x2a, 0x4e, 0x5f, 0x5f, 0x5f, 0x81, 0xef, 0x2d, 0x67, 0x7b, 0x87, 0x5b, 0x5b, 0x79, 0x4e, 0xe8, + 0x18, 0x32, 0x8d, 0xa2, 0x14, 0xd8, 0x29, 0x52, 0x60, 0x48, 0x89, 0x69, 0x57, 0xb0, 0xeb, 0xe2, + 0xb4, 0xbd, 0xce, 0x33, 0x47, 0xc0, 0xef, 0x24, 0x14, 0x3c, 0xcc, 0xf1, 0x63, 0x2f, 0xb3, 0x62, + 0x55, 0x2d, 0x70, 0x72, 0xc6, 0x21, 0x2d, 0x89, 0xa9, 0xe4, 0xa4, 0x65, 0x4d, 0x74, 0x8b, 0xe3, + 0xb6, 0x62, 0x17, 0xb9, 0xe3, 0x6d, 0xe9, 0xd7, 0xa7, 0x8e, 0x9a, 0xe3, 0xd1, 0xe9, 0x5c, 0x79, + 0x45, 0x89, 0x8e, 0xcf, 0xab, 0xa3, 0x5a, 0x59, 0xd2, 0x46, 0xee, 0xf7, 0x0b, 0xb8, 0xa2, 0xbb, + 0x46, 0x58, 0xc7, 0xcc, 0x8b, 0x1c, 0xf7, 0x4c, 0x5d, 0xfb, 0x95, 0xb7, 0xb5, 0xe9, 0xe7, 0x9f, + 0x5f, 0x41, 0xd0, 0x9b, 0x7f, 0x4b, 0xce, 0x90, 0x8c, 0x8d, 0x67, 0x19, 0x1b, 0x4d, 0xb1, 0x77, + 0x5f, 0x94, 0x57, 0xa4, 0xc6, 0x53, 0x4f, 0xdc, 0xc1, 0x93, 0x4f, 0x3c, 0xcc, 0xf2, 0x15, 0x6b, + 0x18, 0x1b, 0x1b, 0xa3, 0xa3, 0xa3, 0x83, 0xda, 0xda, 0x5a, 0x16, 0x2f, 0x5a, 0xc4, 0x17, 0xbe, + 0xf0, 0x05, 0x8e, 0x1f, 0xbf, 0x89, 0x1f, 0xfe, 0xf0, 0x07, 0x3c, 0xf5, 0xe4, 0x73, 0x7c, 0xf0, + 0x96, 0x33, 0xf0, 0x78, 0x61, 0xfb, 0xb6, 0x17, 0x89, 0x44, 0x8e, 0x62, 0xb3, 0xb9, 0x59, 0xba, + 0xec, 0x3c, 0x9a, 0x9a, 0x5a, 0x68, 0x6d, 0x6f, 0x27, 0x3a, 0x35, 0xc1, 0xf6, 0x1d, 0xc7, 0x38, + 0x7b, 0x5d, 0x2b, 0x2a, 0xb3, 0x2d, 0xa4, 0xe2, 0x04, 0x2d, 0xce, 0x13, 0x50, 0x25, 0xcb, 0x97, + 0x04, 0x78, 0xcb, 0x35, 0xcd, 0x1c, 0xfd, 0xde, 0x21, 0x16, 0x3b, 0xf2, 0x6a, 0x2b, 0xc5, 0x89, + 0x51, 0xb1, 0x28, 0xf2, 0xb1, 0x75, 0x21, 0xf0, 0x66, 0x12, 0x6c, 0xd9, 0xb2, 0x05, 0x87, 0xc3, + 0x89, 0xdf, 0xef, 0xc3, 0xed, 0x76, 0x17, 0x89, 0x77, 0x52, 0x4a, 0x0c, 0xbb, 0x93, 0xac, 0x39, + 0x85, 0x5b, 0x83, 0x12, 0x61, 0xf0, 0xe8, 0xa3, 0x8f, 0x32, 0x39, 0x39, 0x89, 0xa2, 0x28, 0x98, + 0xa6, 0x49, 0x7f, 0x7f, 0x3f, 0x7b, 0x76, 0xef, 0xc1, 0xca, 0x66, 0x66, 0x45, 0x57, 0xf8, 0x80, + 0xb4, 0x25, 0x08, 0xd7, 0x79, 0xf1, 0xfa, 0x6c, 0x45, 0xad, 0x15, 0xa7, 0x0c, 0x2b, 0xf3, 0xc1, + 0x61, 0x4b, 0x4b, 0x29, 0x3b, 0x77, 0x3d, 0xce, 0x82, 0x8e, 0x8b, 0x70, 0xb9, 0xc3, 0xf3, 0x70, + 0x04, 0xd3, 0x34, 0x39, 0x7a, 0xfc, 0x28, 0xc3, 0x35, 0xfd, 0x19, 0x2b, 0x3b, 0x79, 0xef, 0xe4, + 0x95, 0xf1, 0xe2, 0x6e, 0xcc, 0xfd, 0x67, 0x45, 0xef, 0x54, 0x34, 0x35, 0x1d, 0x99, 0xc8, 0x94, + 0xb7, 0x35, 0xb9, 0xd1, 0x6d, 0x62, 0x5e, 0x53, 0xfa, 0x1b, 0x0a, 0xd8, 0x8a, 0x98, 0xf6, 0xec, + 0x3e, 0xef, 0x17, 0xae, 0xae, 0xf0, 0x38, 0xae, 0xb8, 0xb4, 0x12, 0xb7, 0xae, 0x90, 0x31, 0x2d, + 0xb2, 0x46, 0x3e, 0x2d, 0xac, 0x0c, 0xeb, 0x54, 0x87, 0x6d, 0xac, 0x5c, 0xec, 0xe7, 0x86, 0x6b, + 0xeb, 0xc9, 0x98, 0x16, 0x91, 0xb1, 0x1c, 0xaf, 0xbf, 0xbe, 0x87, 0x07, 0x1e, 0x8c, 0xd0, 0xd3, + 0xd3, 0x43, 0x4d, 0x4d, 0x4d, 0xa1, 0xae, 0xaa, 0xd0, 0xd2, 0xd2, 0xc2, 0x17, 0xbf, 0xf8, 0x25, + 0x76, 0xed, 0xda, 0xc5, 0xb7, 0xbf, 0xf5, 0x2d, 0x5c, 0x9e, 0x97, 0x68, 0x6f, 0x1b, 0x45, 0x51, + 0x20, 0x97, 0x9b, 0x62, 0xe7, 0x8e, 0xa7, 0x41, 0x5e, 0x4a, 0x73, 0x4b, 0x2b, 0xcb, 0x57, 0x9e, + 0xc1, 0xd6, 0x97, 0x9e, 0x65, 0x60, 0x70, 0x92, 0xba, 0xea, 0xd0, 0x1b, 0x53, 0xde, 0x85, 0xc0, + 0xa9, 0xc3, 0xbb, 0xaf, 0xac, 0xe5, 0x1f, 0x36, 0x0e, 0x52, 0xd3, 0x1d, 0x25, 0xa0, 0x9e, 0x9c, + 0xf0, 0x8a, 0x22, 0xb6, 0x9c, 0xb7, 0x18, 0x8d, 0xba, 0xc1, 0x93, 0xb7, 0x7f, 0x99, 0x5f, 0x7e, + 0xfd, 0xab, 0x28, 0x4e, 0x27, 0x42, 0xb7, 0x93, 0x05, 0x84, 0xaa, 0x61, 0x9a, 0x06, 0x72, 0x22, + 0x82, 0x59, 0x92, 0x17, 0x5a, 0x83, 0x03, 0x0e, 0x3e, 0xf9, 0x10, 0xf7, 0x3e, 0xf1, 0x6b, 0x32, + 0xe4, 0x53, 0x2b, 0x1d, 0x89, 0x4b, 0x81, 0x0e, 0x57, 0xa1, 0x69, 0xae, 0x60, 0x29, 0x24, 0x82, + 0x8c, 0x69, 0x51, 0x53, 0xe7, 0xc6, 0x69, 0x53, 0x66, 0xa7, 0x08, 0x9d, 0x60, 0x25, 0xe6, 0xba, + 0x9a, 0xd2, 0xa0, 0x87, 0x74, 0x6a, 0x07, 0xe3, 0xe3, 0x5d, 0x38, 0x5d, 0xa5, 0x48, 0x69, 0x91, + 0x4e, 0x67, 0xe8, 0xeb, 0xeb, 0xe3, 0x91, 0x47, 0x1e, 0xe1, 0x9e, 0x97, 0xef, 0x91, 0x89, 0x0f, + 0x0c, 0x3c, 0xa6, 0xb7, 0xd8, 0x06, 0xe6, 0xae, 0x49, 0x7f, 0x8b, 0x53, 0xc9, 0x3c, 0xad, 0x44, + 0x87, 0x87, 0x33, 0x48, 0x04, 0xc9, 0x94, 0x45, 0x4e, 0x5a, 0xff, 0x35, 0x01, 0x2b, 0x21, 0x73, + 0xad, 0xbb, 0x5f, 0x59, 0x7c, 0xe9, 0x45, 0x65, 0xb8, 0xec, 0x0a, 0x47, 0xba, 0x92, 0x7c, 0xfe, + 0x8b, 0xfb, 0xd8, 0xb3, 0x6f, 0x1a, 0x9f, 0x57, 0xa7, 0xbe, 0xde, 0xc9, 0xc2, 0x85, 0x3e, 0xd6, + 0xad, 0x2b, 0xa5, 0xb6, 0xc6, 0x4d, 0x65, 0x99, 0x9d, 0xca, 0x52, 0x9d, 0xea, 0xb7, 0x94, 0x33, + 0x30, 0x94, 0x2b, 0x52, 0x65, 0xe7, 0x2e, 0xc8, 0x66, 0xb3, 0xb1, 0x66, 0xcd, 0x1a, 0xda, 0xda, + 0xfe, 0x83, 0x3b, 0xee, 0xb8, 0x9d, 0x9e, 0x9e, 0x6f, 0xd1, 0xd8, 0x68, 0x14, 0x5e, 0xcf, 0xb0, + 0x77, 0xef, 0xf3, 0x84, 0xcb, 0xca, 0xf0, 0xf9, 0x02, 0x2c, 0x5e, 0xbe, 0x96, 0xe3, 0xdd, 0x5b, + 0xa9, 0xae, 0x0c, 0xa0, 0x15, 0xda, 0x3b, 0x4f, 0x15, 0x78, 0xcd, 0x3c, 0x6f, 0x6d, 0x72, 0x73, + 0xf5, 0x8d, 0xcd, 0x3c, 0xf0, 0x99, 0x5d, 0x9c, 0xab, 0x48, 0x54, 0x31, 0x6b, 0xc8, 0x2d, 0x29, + 0xe9, 0xcf, 0xc0, 0xce, 0x38, 0xc4, 0x2c, 0x49, 0x83, 0x5d, 0x61, 0xbd, 0x57, 0xb2, 0xc6, 0x4d, + 0x01, 0x22, 0x8c, 0x81, 0x88, 0x93, 0xb5, 0x20, 0x69, 0x81, 0x54, 0x25, 0xce, 0x32, 0x81, 0x4d, + 0xc9, 0x7f, 0x6a, 0xbb, 0x13, 0x3a, 0x9c, 0xf9, 0x5d, 0x22, 0x4e, 0xe0, 0x8c, 0x99, 0x45, 0x42, + 0xec, 0x6c, 0xaf, 0x56, 0x54, 0x0a, 0xea, 0xca, 0x1d, 0x88, 0x99, 0x9a, 0xf5, 0x0c, 0x06, 0x3e, + 0x2f, 0xfd, 0x93, 0x85, 0xd4, 0x5b, 0xa0, 0xdb, 0x6d, 0xd8, 0x1d, 0x39, 0xfa, 0x7a, 0x77, 0x31, + 0x1d, 0x73, 0xb1, 0x63, 0xc7, 0x4e, 0x1e, 0x7e, 0xe4, 0x61, 0x5e, 0x9d, 0x7a, 0xd5, 0x4c, 0xac, + 0x4d, 0x45, 0xf5, 0xbf, 0x53, 0x7f, 0xa2, 0x2f, 0xb0, 0x7d, 0x7a, 0xb4, 0x29, 0x93, 0x06, 0x28, + 0x7b, 0xd5, 0x6d, 0xb7, 0x72, 0xd6, 0xda, 0x4c, 0xe6, 0xf8, 0x17, 0x6c, 0x0d, 0xb9, 0x12, 0xd3, + 0xec, 0x28, 0x40, 0x9f, 0x39, 0x84, 0x56, 0x86, 0xae, 0x67, 0x81, 0xc8, 0x1b, 0x0b, 0x58, 0xf6, + 0x4f, 0xaa, 0xad, 0x86, 0x21, 0x96, 0x2e, 0x69, 0x25, 0x97, 0x93, 0xfc, 0xfa, 0xd1, 0x5e, 0x1e, + 0x89, 0x8d, 0x4b, 0xc7, 0x17, 0x1c, 0x91, 0x21, 0x17, 0xb9, 0xc3, 0x4c, 0x5a, 0x4f, 0x1e, 0x1a, + 0xce, 0xe5, 0x6e, 0xe8, 0x6c, 0x2c, 0xb7, 0xbb, 0xa9, 0xad, 0xd5, 0x39, 0xe3, 0x0c, 0x3f, 0x8b, + 0x16, 0x85, 0x78, 0xf6, 0x59, 0x9d, 0x73, 0xce, 0xad, 0x3a, 0x25, 0xa0, 0x21, 0xa5, 0x24, 0x10, + 0x08, 0xf0, 0x8e, 0x77, 0xbc, 0x93, 0x7f, 0xfd, 0xca, 0xaf, 0xa8, 0xaf, 0xef, 0x2e, 0x06, 0x5c, + 0x86, 0x11, 0xe5, 0xe8, 0x91, 0x43, 0xac, 0x5c, 0xb5, 0x96, 0x60, 0xa8, 0x84, 0xd1, 0x41, 0x3f, + 0x99, 0x8c, 0x81, 0xea, 0xd4, 0x8b, 0x41, 0xc9, 0x29, 0xfd, 0xb1, 0x10, 0xa8, 0xc0, 0x15, 0x97, + 0x57, 0xb3, 0xe9, 0xf9, 0x11, 0x7a, 0x7e, 0x37, 0x40, 0x53, 0xa1, 0x29, 0x24, 0x2b, 0x05, 0x9b, + 0xa3, 0x92, 0xe7, 0xe3, 0x90, 0xcd, 0x47, 0x3a, 0x1c, 0xcc, 0xe4, 0x07, 0xa6, 0xad, 0xf7, 0x89, + 0x22, 0x23, 0x29, 0x6d, 0x4a, 0x5e, 0x9e, 0x86, 0xdd, 0x49, 0x30, 0xa4, 0x64, 0x81, 0x43, 0xb2, + 0xc1, 0x2f, 0x08, 0x6a, 0x05, 0x76, 0x28, 0x12, 0x61, 0xe5, 0x87, 0xc9, 0xcc, 0xb6, 0xde, 0x88, + 0xa2, 0x68, 0xc5, 0x9c, 0x98, 0x7d, 0x5a, 0x53, 0x68, 0x6d, 0xf5, 0x16, 0x40, 0x94, 0x22, 0x20, + 0xfd, 0x86, 0x50, 0x2d, 0x98, 0xfc, 0xf4, 0xe7, 0xb7, 0xf1, 0x68, 0xa7, 0x25, 0xa3, 0xeb, 0x27, + 0x27, 0x6d, 0x7f, 0xad, 0x47, 0x14, 0xdd, 0xf6, 0x8f, 0x0e, 0x77, 0xee, 0x77, 0x63, 0x1b, 0xa2, + 0xe9, 0x62, 0xee, 0xfc, 0x43, 0xbb, 0x2b, 0xbd, 0x51, 0xfb, 0x49, 0xf8, 0x55, 0xde, 0xf9, 0x96, + 0x0a, 0x9f, 0x5a, 0x16, 0xb2, 0xe3, 0x76, 0xdb, 0x40, 0xe4, 0x9b, 0x08, 0xac, 0x31, 0xd5, 0x93, + 0x1b, 0xcf, 0xf8, 0x4f, 0x25, 0xe1, 0xa2, 0x80, 0x2b, 0x1e, 0xaf, 0x57, 0xd3, 0xaf, 0x59, 0xef, + 0x3d, 0xd3, 0xe5, 0xd5, 0x4b, 0x82, 0x76, 0x26, 0x26, 0x32, 0x6c, 0xdd, 0x3e, 0x81, 0xb6, 0xc1, + 0xb5, 0x45, 0xab, 0x31, 0x2e, 0x12, 0xa5, 0xe9, 0x14, 0x96, 0x85, 0xd5, 0x5b, 0xf6, 0x09, 0xab, + 0x34, 0xf1, 0xd5, 0x8f, 0xfd, 0xed, 0xe7, 0x44, 0x5b, 0x5b, 0x2b, 0x9b, 0x37, 0xbf, 0xc4, 0xd7, + 0x6f, 0x7f, 0x90, 0x5b, 0x6f, 0xfd, 0x07, 0xea, 0xeb, 0xeb, 0x4f, 0xd9, 0x7b, 0x3b, 0x53, 0xa3, + 0x4d, 0x24, 0x92, 0x58, 0x56, 0xae, 0x58, 0x57, 0x9e, 0x09, 0x5e, 0x06, 0x07, 0x8f, 0xd2, 0xb1, + 0x70, 0x29, 0x4e, 0xa7, 0x13, 0xbb, 0x33, 0x44, 0x22, 0x9d, 0xc1, 0xe5, 0xd4, 0x67, 0x37, 0xc8, + 0x09, 0xcc, 0xcb, 0xd9, 0xa2, 0x3e, 0x94, 0xf8, 0x34, 0x3e, 0xf4, 0x77, 0x6d, 0x7c, 0x6c, 0xcf, + 0x38, 0xe1, 0xa9, 0x0c, 0x3e, 0x05, 0x5e, 0x4f, 0x48, 0x36, 0xc5, 0x24, 0xb9, 0x39, 0xba, 0x63, + 0x02, 0xfb, 0x92, 0x92, 0x65, 0x1e, 0x70, 0x2b, 0xf9, 0x8d, 0xd2, 0x97, 0x81, 0x4d, 0x73, 0x36, + 0xc1, 0xcb, 0x49, 0x88, 0xe4, 0xe0, 0xbd, 0x61, 0xf0, 0xa8, 0x33, 0x55, 0xad, 0xfc, 0xcf, 0x62, + 0x89, 0xbb, 0xb0, 0xcb, 0x84, 0x9c, 0x45, 0xb1, 0x2c, 0x09, 0x51, 0xaf, 0x46, 0x79, 0xb9, 0xb3, + 0xe0, 0x16, 0xc4, 0x3c, 0x4a, 0xed, 0xc9, 0xd9, 0x40, 0xfe, 0xbf, 0x4d, 0xcb, 0x22, 0xfe, 0xf6, + 0xf1, 0xe3, 0x18, 0xe2, 0x22, 0x67, 0x83, 0x39, 0x28, 0xec, 0xd9, 0x4c, 0xa4, 0x2d, 0x31, 0xcf, + 0xde, 0x86, 0x5f, 0x0d, 0xd9, 0xd3, 0x2f, 0xca, 0x1f, 0x2e, 0xfc, 0x1d, 0x57, 0x7d, 0xe3, 0xb6, + 0x55, 0x62, 0xcd, 0x0a, 0x3f, 0xa6, 0x21, 0x31, 0x2d, 0x89, 0x62, 0x49, 0xce, 0x3d, 0xb3, 0x84, + 0x4f, 0xf5, 0x25, 0xce, 0xf9, 0xe1, 0xb6, 0xa9, 0x7d, 0xf2, 0x2e, 0x71, 0xf6, 0xd4, 0x2d, 0xf2, + 0xd8, 0x29, 0x49, 0x77, 0xb9, 0xb2, 0xa8, 0x5b, 0x4b, 0x4f, 0xaf, 0x5c, 0xbb, 0x26, 0x88, 0x2a, + 0x24, 0x23, 0x63, 0x19, 0xba, 0x72, 0x59, 0x53, 0x6f, 0xcf, 0xdd, 0x1b, 0x59, 0x1f, 0x4d, 0x8c, + 0xb5, 0xa6, 0xac, 0xb1, 0xf6, 0x8c, 0xa5, 0x8c, 0x98, 0x3f, 0xa1, 0x4a, 0x24, 0x15, 0x45, 0x70, + 0xc1, 0x05, 0x17, 0x70, 0xd3, 0x4d, 0x37, 0xf2, 0x9d, 0xef, 0xfc, 0x07, 0x37, 0xdf, 0x7c, 0xf3, + 0x49, 0xf0, 0xe5, 0xcc, 0x23, 0x9b, 0xcd, 0xb2, 0x73, 0xc7, 0x4e, 0xbe, 0xfd, 0xed, 0x6f, 0xd0, + 0xd6, 0x36, 0xc8, 0x89, 0xd8, 0x47, 0x26, 0x33, 0x41, 0x34, 0x3a, 0x55, 0xa0, 0xe4, 0x6a, 0x58, + 0xd6, 0x7c, 0x0f, 0x6c, 0x5a, 0x92, 0xa3, 0x23, 0x13, 0x6c, 0x3b, 0xd6, 0xcf, 0x54, 0x32, 0x3d, + 0x6f, 0x80, 0x9a, 0x40, 0xb0, 0x6a, 0x59, 0x80, 0x1b, 0xff, 0xae, 0x83, 0xd7, 0x72, 0x90, 0x94, + 0x92, 0xdd, 0xf1, 0xf9, 0xc2, 0x9d, 0x39, 0xc6, 0x4c, 0x88, 0x17, 0xb2, 0x09, 0x0b, 0xd0, 0xc5, + 0xc9, 0x8c, 0x87, 0x23, 0x39, 0xd8, 0x13, 0xcf, 0x6f, 0x26, 0x59, 0x80, 0x34, 0xe5, 0x5c, 0xf7, + 0xa9, 0xcc, 0x2d, 0x54, 0xe4, 0x25, 0x9e, 0xb5, 0xc0, 0xd7, 0xe6, 0xa7, 0xba, 0xd2, 0x39, 0xbf, + 0x9a, 0x55, 0xf8, 0x19, 0x4d, 0x67, 0xd9, 0xd7, 0x37, 0xc2, 0xd1, 0xd1, 0x09, 0xb2, 0x86, 0x89, + 0x94, 0x16, 0xd9, 0xac, 0x41, 0xd4, 0x4c, 0x1b, 0xd2, 0x69, 0xff, 0x52, 0x7d, 0xab, 0xfd, 0xf8, + 0xf8, 0x12, 0x2b, 0x15, 0x69, 0xcb, 0x9d, 0xe4, 0x4c, 0x73, 0xaf, 0xe8, 0x7e, 0xf5, 0x80, 0x78, + 0xfb, 0xb5, 0x6f, 0x6f, 0x10, 0xb1, 0x58, 0x16, 0x81, 0xc0, 0x6e, 0x13, 0xb8, 0xed, 0x79, 0xae, + 0x58, 0xc8, 0x6f, 0xe3, 0xc3, 0x7f, 0xd3, 0x2c, 0xbe, 0x72, 0xde, 0xb2, 0x8a, 0xf0, 0x41, 0xf7, + 0x73, 0x25, 0x4f, 0xb8, 0x3b, 0x4e, 0xcd, 0xaa, 0x1c, 0x72, 0x97, 0x97, 0xf6, 0x3b, 0x16, 0x37, + 0x35, 0xf8, 0x40, 0x4a, 0xfa, 0xfa, 0x13, 0x44, 0x1a, 0xb2, 0x51, 0xa5, 0x42, 0x3e, 0x35, 0x4f, + 0xe5, 0xeb, 0x94, 0x29, 0xa5, 0x45, 0x3e, 0x7d, 0xef, 0xfd, 0xf7, 0xb1, 0x73, 0xe7, 0x4e, 0x1a, + 0x1a, 0x1a, 0x38, 0xff, 0xfc, 0xf3, 0x71, 0x3a, 0x9d, 0x58, 0x96, 0x85, 0x69, 0x9a, 0xe4, 0x72, + 0x39, 0x12, 0x89, 0x04, 0x9d, 0x9d, 0x9d, 0x3c, 0xf8, 0xe0, 0x03, 0xfc, 0xc3, 0x47, 0x6f, 0xe5, + 0xe3, 0x9f, 0xb8, 0x86, 0x9a, 0xda, 0xdf, 0x50, 0x5d, 0x9d, 0x9f, 0x2f, 0x39, 0x37, 0x4d, 0xb1, + 0xac, 0x2c, 0xd3, 0xd1, 0x28, 0x48, 0xc8, 0x66, 0xb2, 0x64, 0xd2, 0x99, 0xa2, 0x00, 0x67, 0xa6, + 0xc9, 0xed, 0xee, 0x1e, 0xa0, 0x27, 0x32, 0xc9, 0x6b, 0x47, 0xfb, 0x48, 0x64, 0x8d, 0xb9, 0x2d, + 0xb8, 0xd8, 0x14, 0x78, 0xcf, 0x55, 0xb5, 0x54, 0x5e, 0x54, 0xc5, 0xab, 0xf1, 0xbc, 0x20, 0x4f, + 0x75, 0xa4, 0x81, 0x84, 0x35, 0x7b, 0xe7, 0xbd, 0x9a, 0xc0, 0x7b, 0x42, 0x35, 0xc2, 0x02, 0x0e, + 0x24, 0x05, 0x69, 0x8b, 0xa2, 0xe6, 0x8a, 0x82, 0x7d, 0x96, 0x72, 0xb6, 0xfa, 0x24, 0x85, 0x2c, + 0x22, 0x59, 0xd3, 0x16, 0xb4, 0x2d, 0x0a, 0xe0, 0xf7, 0xaa, 0xf3, 0xe8, 0xa2, 0x52, 0x4a, 0xa6, + 0x52, 0x19, 0x36, 0x1f, 0x3c, 0x4e, 0xe7, 0xe0, 0x28, 0xbb, 0xbb, 0xfa, 0xd9, 0xd7, 0x93, 0xef, + 0xd1, 0xca, 0xe5, 0x0c, 0xd2, 0x58, 0xa6, 0x92, 0x93, 0x3b, 0xb6, 0x2e, 0x88, 0x9d, 0xb6, 0xfa, + 0x6f, 0x25, 0x62, 0x94, 0x98, 0x59, 0x96, 0x2c, 0x0a, 0xb0, 0xf9, 0xa5, 0x31, 0xc6, 0xa7, 0x8d, + 0x79, 0xe6, 0x5f, 0x08, 0x81, 0xa6, 0xc0, 0x5b, 0xce, 0x2d, 0xe7, 0x4a, 0x77, 0x6d, 0x5d, 0x6e, + 0xc0, 0xfc, 0x5c, 0x78, 0xa7, 0xd3, 0x76, 0x92, 0x89, 0x56, 0x7c, 0xe9, 0xab, 0x9b, 0x22, 0x5e, + 0x7b, 0x59, 0x99, 0x8e, 0x65, 0xc2, 0xd1, 0x23, 0x71, 0x52, 0x9e, 0xda, 0xb4, 0xd6, 0xa3, 0x8c, + 0xc3, 0xfe, 0x59, 0x2d, 0xf8, 0xeb, 0xc1, 0x6c, 0x68, 0x93, 0xf6, 0xc5, 0xce, 0x60, 0xf7, 0x59, + 0xef, 0xfa, 0xd0, 0x35, 0x95, 0x4b, 0x2a, 0x3b, 0x58, 0xd0, 0xd6, 0x8e, 0xaa, 0xa9, 0x45, 0xd3, + 0x33, 0x3a, 0x3a, 0x42, 0x67, 0xe7, 0x41, 0x72, 0xb9, 0x09, 0x96, 0xaf, 0x08, 0x71, 0xf1, 0x25, + 0x6d, 0x5c, 0x75, 0x65, 0x07, 0x87, 0x3a, 0x07, 0x90, 0xd2, 0x3a, 0x21, 0x6c, 0x92, 0x30, 0x27, + 0x68, 0xb1, 0x24, 0x64, 0x32, 0xe6, 0x1c, 0x7f, 0x2b, 0x18, 0x9b, 0x4e, 0x30, 0x63, 0xf9, 0xa6, + 0xd3, 0x29, 0x46, 0xa7, 0x13, 0x34, 0x86, 0xfd, 0xf3, 0xe0, 0xc0, 0xa0, 0x57, 0xe3, 0x93, 0xff, + 0x67, 0x11, 0x37, 0x77, 0x46, 0x19, 0xdf, 0x7e, 0x6a, 0xb2, 0xa2, 0x21, 0x21, 0x9a, 0xcb, 0x83, + 0xd7, 0x02, 0x81, 0x69, 0xe5, 0x2b, 0x45, 0x27, 0x1e, 0xc3, 0xa6, 0x64, 0xca, 0x10, 0x38, 0xf5, + 0xd9, 0x9e, 0xe6, 0xb9, 0x41, 0x52, 0x1e, 0x1d, 0x2d, 0x4e, 0x3d, 0x65, 0x48, 0x51, 0xb8, 0x72, + 0x45, 0x08, 0xbb, 0x4d, 0x99, 0xdd, 0x00, 0x05, 0x4a, 0xd0, 0xa1, 0x81, 0x31, 0xd2, 0xb9, 0x5c, + 0x91, 0x8a, 0x3c, 0x32, 0x1d, 0x23, 0x95, 0x33, 0x48, 0x65, 0x0d, 0xa2, 0x96, 0x6b, 0xa2, 0x47, + 0xba, 0xe2, 0x70, 0xec, 0xf4, 0x15, 0xb7, 0xf6, 0xca, 0xec, 0x44, 0x24, 0xd9, 0xf7, 0xcf, 0x9f, + 0xdd, 0xdd, 0xee, 0xf7, 0xe9, 0x8c, 0x4f, 0x66, 0x08, 0xfb, 0xb5, 0xd9, 0x52, 0x64, 0xc1, 0x8a, + 0x39, 0x34, 0xc9, 0x85, 0xe7, 0x95, 0xf3, 0xd3, 0x67, 0x46, 0xaf, 0x48, 0x07, 0x65, 0x18, 0x52, + 0x83, 0x45, 0x01, 0x87, 0x8f, 0x04, 0x45, 0xfa, 0x31, 0x87, 0xb7, 0xb5, 0x56, 0x17, 0x4e, 0x5d, + 0x25, 0x67, 0x4a, 0x86, 0x46, 0x53, 0x58, 0x72, 0xf0, 0x5e, 0x12, 0xfa, 0x49, 0xfd, 0x9b, 0x13, + 0x7f, 0x65, 0xec, 0x2d, 0xdd, 0xea, 0x3c, 0x3f, 0xb9, 0x28, 0xbe, 0xfe, 0xd5, 0xc4, 0xee, 0xf7, + 0x6d, 0xd5, 0x9e, 0x5b, 0xaa, 0x18, 0x39, 0x96, 0x6f, 0x17, 0x7e, 0xef, 0x70, 0xd0, 0xb6, 0x66, + 0xfd, 0x4a, 0x6e, 0xbc, 0x79, 0x05, 0xb5, 0xb5, 0x7e, 0xfc, 0x01, 0x07, 0x02, 0xc1, 0xc8, 0xf0, + 0x10, 0x87, 0x8f, 0x38, 0x30, 0xcd, 0x24, 0xf3, 0x07, 0x85, 0x0a, 0x84, 0x50, 0x71, 0x3a, 0x5d, + 0x45, 0x2e, 0xd6, 0x64, 0x2c, 0x79, 0x42, 0xc8, 0x5c, 0x40, 0xa5, 0xe6, 0xcc, 0xd7, 0x9a, 0xa9, + 0x07, 0x15, 0x27, 0xce, 0x21, 0x69, 0x6f, 0x72, 0xf3, 0xcf, 0x9f, 0x5e, 0xca, 0xdf, 0x7f, 0xe4, + 0x35, 0xfa, 0x07, 0x4e, 0x1e, 0x6a, 0x63, 0x01, 0xcf, 0x4e, 0x4b, 0x50, 0x04, 0x36, 0x24, 0x3b, + 0x62, 0x30, 0x21, 0x4f, 0x36, 0xe5, 0x59, 0x04, 0x49, 0x4b, 0x14, 0x21, 0x48, 0x31, 0xc3, 0xe6, + 0x91, 0xb3, 0xa6, 0x59, 0x16, 0xae, 0xc9, 0x40, 0x32, 0x51, 0xe6, 0x64, 0xe1, 0x42, 0xff, 0x49, + 0x93, 0x72, 0x93, 0xb9, 0x1c, 0x91, 0x58, 0xac, 0x58, 0x94, 0x01, 0x41, 0xce, 0xb4, 0x48, 0x19, + 0x26, 0xa9, 0x44, 0x06, 0x33, 0xe3, 0xdc, 0x5f, 0x3d, 0xa6, 0xbf, 0xe1, 0xdc, 0x8e, 0xcc, 0xa0, + 0x66, 0xf3, 0x8c, 0xa4, 0x72, 0xff, 0xf8, 0x89, 0x0e, 0x26, 0xc6, 0xb3, 0xd8, 0xb4, 0x7c, 0x07, + 0xa5, 0x54, 0xf2, 0x20, 0x16, 0x80, 0x61, 0x4a, 0x52, 0x39, 0x8b, 0xea, 0x6a, 0x37, 0x61, 0x33, + 0x27, 0x8e, 0xc7, 0xe3, 0xf3, 0x4d, 0xb4, 0x70, 0x4d, 0xdb, 0x54, 0xd7, 0xf4, 0x99, 0x55, 0xe5, + 0x76, 0xec, 0xba, 0x82, 0x61, 0x4a, 0x46, 0xc7, 0x2d, 0x54, 0xd9, 0x6c, 0x89, 0x81, 0xc6, 0x53, + 0x7e, 0x70, 0x64, 0x5d, 0xff, 0xc1, 0xa9, 0xeb, 0xc7, 0x7f, 0xac, 0xaf, 0x4c, 0x5e, 0xa8, 0x2f, + 0xb6, 0x2a, 0xeb, 0xd7, 0xdb, 0xeb, 0x3a, 0xde, 0xeb, 0x7b, 0xe9, 0xa2, 0x8b, 0x0d, 0xde, 0xfa, + 0xd6, 0x6a, 0x96, 0x2c, 0xa9, 0x20, 0x10, 0x70, 0x16, 0x67, 0x47, 0x05, 0x83, 0x41, 0x7c, 0xbe, + 0xaa, 0x53, 0x46, 0x93, 0x8a, 0xa2, 0xe3, 0x72, 0xb9, 0x90, 0x52, 0x52, 0x5a, 0x56, 0xce, 0xd0, + 0xd0, 0xe4, 0xec, 0xb0, 0x52, 0x29, 0x09, 0xba, 0x9d, 0x45, 0x82, 0x9f, 0xaa, 0x28, 0x78, 0xec, + 0xfa, 0x6c, 0x61, 0xa2, 0xa0, 0x5f, 0xa2, 0xc0, 0x20, 0xbc, 0xe4, 0x82, 0x72, 0x3e, 0xf1, 0xb1, + 0x45, 0x78, 0xdc, 0x73, 0xd9, 0x5d, 0xb3, 0xbb, 0x65, 0xd4, 0x12, 0xfc, 0x62, 0x02, 0xee, 0x9b, + 0x80, 0x03, 0x39, 0x4e, 0xd9, 0xb9, 0xa8, 0x21, 0xb1, 0x2b, 0xb2, 0x00, 0x9c, 0xcc, 0x52, 0x42, + 0xa4, 0x28, 0xc0, 0xa0, 0x05, 0x61, 0x09, 0x29, 0x18, 0xcd, 0x41, 0xc3, 0xaa, 0x52, 0xea, 0x6a, + 0x5c, 0xb3, 0x30, 0xe9, 0x1c, 0x52, 0x9f, 0x69, 0xc9, 0x79, 0xdd, 0x21, 0x36, 0x55, 0xc5, 0xad, + 0x69, 0xa8, 0x9a, 0x82, 0x4d, 0x8f, 0xa0, 0xdb, 0xfb, 0xdf, 0x10, 0xff, 0x77, 0x05, 0xe4, 0xfb, + 0xcf, 0x14, 0x65, 0x8b, 0xd6, 0xaf, 0x0b, 0x13, 0x08, 0xda, 0x09, 0x05, 0x75, 0x2c, 0x0b, 0x1e, + 0x7d, 0x7a, 0x98, 0xb1, 0xa8, 0x81, 0x14, 0x30, 0x10, 0xc9, 0xf0, 0xf4, 0xef, 0x46, 0x48, 0x24, + 0x4d, 0x92, 0xa6, 0x89, 0x32, 0x67, 0x93, 0x15, 0xb2, 0x3e, 0x53, 0xb1, 0x5c, 0xb1, 0xf2, 0xfc, + 0x58, 0x06, 0x89, 0x99, 0x93, 0x4c, 0x8e, 0x5b, 0xc8, 0xb2, 0xd4, 0x6a, 0xe3, 0xfc, 0x7d, 0xb7, + 0x86, 0x36, 0xbb, 0x2e, 0xf2, 0x3f, 0xaa, 0xf8, 0xc3, 0x5b, 0x3d, 0xde, 0xca, 0x71, 0xc7, 0xbc, + 0x2d, 0x3f, 0xba, 0x66, 0xda, 0x1a, 0x5b, 0x67, 0x18, 0xbb, 0x97, 0xa5, 0x53, 0x43, 0xe9, 0xc0, + 0x6d, 0x93, 0xf6, 0xf4, 0xd4, 0xbe, 0xdd, 0xdb, 0x0a, 0x98, 0xef, 0x6c, 0xb4, 0x6b, 0xd3, 0x1d, + 0xd4, 0xd5, 0xb7, 0x23, 0x84, 0x5a, 0xec, 0x8e, 0xc8, 0xcb, 0x4f, 0xe0, 0x74, 0x96, 0xe2, 0xf1, + 0x78, 0xf3, 0x1b, 0xa1, 0xa4, 0x14, 0xdd, 0x59, 0xc7, 0xd0, 0xf0, 0x54, 0x51, 0x1f, 0xaa, 0x4b, + 0x7c, 0x34, 0x84, 0x43, 0x68, 0x8a, 0x42, 0x6d, 0x49, 0x90, 0x52, 0xaf, 0xab, 0x68, 0x06, 0x67, + 0x58, 0x39, 0x33, 0x21, 0x97, 0x2e, 0x04, 0x37, 0x5f, 0x5f, 0xcf, 0x87, 0x6e, 0x69, 0x2d, 0x04, + 0x73, 0xf2, 0x94, 0x09, 0x8a, 0xfc, 0x3d, 0xed, 0x1e, 0x5a, 0x11, 0xa9, 0x12, 0xb3, 0xa3, 0x88, + 0xe5, 0x8c, 0x56, 0xcb, 0x82, 0x56, 0x4b, 0x5e, 0x37, 0x60, 0xc3, 0xb9, 0x65, 0x38, 0xf5, 0x13, + 0xba, 0x7f, 0x25, 0xd8, 0x15, 0x05, 0xa7, 0xcd, 0x36, 0x0b, 0x75, 0x4a, 0x49, 0x4d, 0xc8, 0x8f, + 0xc3, 0xa6, 0xe2, 0x76, 0x3b, 0x70, 0xe9, 0x56, 0x4d, 0xa2, 0x22, 0x13, 0x7e, 0x23, 0x01, 0xc7, + 0x33, 0x87, 0x15, 0x97, 0x33, 0x81, 0x5d, 0x95, 0x5c, 0x76, 0x61, 0x39, 0x41, 0xb7, 0x42, 0x34, + 0x6e, 0xf0, 0xca, 0xcb, 0x11, 0x14, 0x25, 0xbf, 0xfe, 0xf1, 0xf1, 0x2c, 0x42, 0x51, 0x38, 0x74, + 0x28, 0x46, 0x44, 0xba, 0x73, 0x42, 0x0f, 0xca, 0xf9, 0x02, 0xce, 0x09, 0xd3, 0x1c, 0x14, 0xaf, + 0xcf, 0x6c, 0x56, 0xdd, 0xae, 0xb0, 0xa0, 0x55, 0xa3, 0xf5, 0xf1, 0x89, 0x0b, 0xd7, 0xdd, 0x51, + 0x72, 0xe7, 0xda, 0xef, 0x04, 0x9e, 0x6a, 0x78, 0xcc, 0x3b, 0xcc, 0x03, 0x9e, 0xc1, 0xec, 0x4e, + 0xf5, 0xd1, 0x92, 0x97, 0xfd, 0xc1, 0x53, 0xa2, 0x26, 0x25, 0xa3, 0x2f, 0xf6, 0x35, 0xe8, 0xdf, + 0x88, 0x4c, 0x1e, 0x97, 0x3d, 0x5d, 0xc7, 0x99, 0x4b, 0x88, 0x12, 0x02, 0x1a, 0x1b, 0x9a, 0x29, + 0x09, 0xb5, 0xcc, 0x16, 0x1b, 0x04, 0x08, 0xa1, 0xd0, 0xd8, 0xb8, 0x18, 0x67, 0x61, 0xb2, 0x81, + 0xaa, 0x28, 0xb4, 0x77, 0x2c, 0xe1, 0xc0, 0xc1, 0x09, 0x12, 0xe9, 0x3c, 0xbe, 0x6a, 0x13, 0x82, + 0x55, 0x0d, 0x55, 0x5c, 0xba, 0xa2, 0x83, 0x55, 0x8d, 0x55, 0xd8, 0x94, 0x7c, 0x6a, 0x32, 0x99, + 0x48, 0x31, 0x30, 0x31, 0x4d, 0x22, 0x9b, 0x2b, 0x42, 0x57, 0x42, 0xe4, 0xb1, 0xea, 0x5b, 0x3f, + 0xdc, 0xca, 0x4d, 0xd7, 0xd7, 0xa2, 0x69, 0x27, 0xb2, 0x37, 0x24, 0xf3, 0x47, 0x97, 0xc9, 0x82, + 0x15, 0x90, 0xd8, 0x14, 0x81, 0x4b, 0x53, 0xd0, 0x55, 0x85, 0xa8, 0x05, 0x53, 0x86, 0x2c, 0xb2, + 0xa6, 0x64, 0x31, 0x56, 0x98, 0x7d, 0xde, 0x9b, 0x85, 0xcc, 0x02, 0x3f, 0x1b, 0xce, 0x2e, 0x43, + 0x91, 0x27, 0xf6, 0x5b, 0x81, 0xc3, 0xa6, 0xb2, 0xb8, 0xae, 0x02, 0xb7, 0xc3, 0x8e, 0xae, 0xa9, + 0xb4, 0x54, 0x94, 0xd1, 0x51, 0x53, 0x86, 0x22, 0x04, 0x7e, 0xaf, 0x93, 0x2a, 0x35, 0xd8, 0xe1, + 0x98, 0xf6, 0xff, 0xd3, 0xea, 0xdd, 0x65, 0xa7, 0xad, 0xa9, 0xba, 0xfd, 0xcd, 0x72, 0x77, 0xb7, + 0x4a, 0xff, 0x60, 0x1a, 0x87, 0xae, 0x90, 0xce, 0xc1, 0x03, 0x0f, 0xf5, 0xb1, 0x6a, 0x55, 0x88, + 0x80, 0x57, 0x23, 0x63, 0x48, 0x36, 0x3d, 0x3f, 0xc2, 0x74, 0xd4, 0xe4, 0xae, 0xbb, 0x0f, 0x93, + 0xab, 0x4c, 0x3f, 0x80, 0xc3, 0x18, 0x9d, 0xe7, 0xe1, 0xc2, 0x4f, 0xf8, 0x6b, 0xc5, 0xcf, 0xad, + 0x6d, 0x77, 0x5e, 0xba, 0xa8, 0xfc, 0x3d, 0x6f, 0xaf, 0x46, 0x11, 0x82, 0xb4, 0x69, 0x81, 0xa6, + 0xa0, 0x16, 0x82, 0x89, 0x78, 0xd2, 0xe2, 0x85, 0x17, 0x23, 0x7c, 0xeb, 0x07, 0x87, 0xd8, 0x75, + 0x89, 0xf9, 0x82, 0xbe, 0xc4, 0xbc, 0x38, 0x72, 0xfe, 0xd4, 0x49, 0x34, 0x91, 0x0b, 0x5f, 0x6a, + 0x2c, 0x5f, 0x34, 0x18, 0xdf, 0xda, 0x31, 0x61, 0x6f, 0xb8, 0xe0, 0xa2, 0x77, 0xe1, 0xf6, 0xb8, + 0x99, 0x3b, 0xdb, 0x23, 0x16, 0x9b, 0xe6, 0xd5, 0xad, 0xcf, 0x31, 0x39, 0x79, 0x1c, 0x29, 0xa1, + 0xb2, 0x6a, 0x29, 0xeb, 0xd7, 0x9d, 0x87, 0x66, 0xd3, 0xe6, 0x4c, 0x0b, 0x10, 0xf4, 0xf7, 0x75, + 0x93, 0x8d, 0x1d, 0x64, 0xcd, 0xca, 0x7a, 0x54, 0x65, 0x3e, 0xcc, 0x27, 0x81, 0x9e, 0xb1, 0x28, + 0xbb, 0xba, 0xfb, 0x30, 0x2c, 0x0b, 0xbb, 0xa6, 0x71, 0x46, 0x73, 0x1d, 0x95, 0x01, 0xcf, 0xec, + 0x40, 0x72, 0x24, 0x7d, 0xc3, 0x19, 0x3e, 0xf7, 0xc5, 0xbd, 0xdc, 0xf7, 0xd3, 0x3e, 0xa4, 0x25, + 0x58, 0x55, 0x5f, 0xc9, 0xca, 0xc6, 0x1a, 0x6c, 0xaa, 0xc2, 0x68, 0x2c, 0xc1, 0x91, 0xa1, 0x51, + 0x8e, 0x0d, 0x47, 0xb0, 0x69, 0x36, 0xae, 0x3e, 0x7b, 0x25, 0xab, 0x1a, 0x6a, 0xa8, 0xf2, 0x7b, + 0x18, 0x4f, 0xa4, 0x38, 0x38, 0x34, 0xca, 0xab, 0x9d, 0x5d, 0x0c, 0xf5, 0x0f, 0xb0, 0x54, 0xcb, + 0xb2, 0xc0, 0x01, 0x0e, 0x55, 0x14, 0x05, 0x1d, 0x37, 0x05, 0x0f, 0x67, 0x04, 0x9f, 0xba, 0x63, + 0x15, 0xef, 0xbd, 0xb2, 0xa6, 0x30, 0x80, 0xf5, 0x14, 0x13, 0x73, 0x65, 0xbe, 0x2b, 0xd8, 0xb4, + 0x2c, 0x74, 0x65, 0x96, 0x74, 0x6f, 0x4a, 0x38, 0x70, 0x78, 0x90, 0xfb, 0x8e, 0x1c, 0x8d, 0xee, + 0x68, 0xb4, 0x9a, 0x36, 0xad, 0x1b, 0x9f, 0x38, 0x65, 0x65, 0x6f, 0xbf, 0xbf, 0x2a, 0xbb, 0x3d, + 0xf5, 0xe2, 0xba, 0x47, 0x43, 0xcd, 0x6f, 0x7d, 0x4b, 0x15, 0x07, 0x0e, 0x4c, 0xb1, 0x7f, 0x7f, + 0x94, 0x6f, 0xdc, 0xbe, 0x0a, 0x97, 0x4b, 0xe1, 0xc9, 0x27, 0x87, 0xb8, 0xf3, 0xae, 0xc3, 0x18, + 0x0e, 0x48, 0x5e, 0x1a, 0x1a, 0x77, 0x9d, 0xcf, 0x45, 0x63, 0x57, 0x0c, 0xec, 0x2c, 0x0a, 0x38, + 0xf4, 0x1b, 0x97, 0x2d, 0xf7, 0x8a, 0xbc, 0xe3, 0x92, 0xc3, 0xa1, 0x0f, 0x7f, 0xfb, 0x2b, 0xab, + 0x44, 0x79, 0xc8, 0x36, 0xbf, 0x2b, 0x41, 0xe4, 0xd3, 0x83, 0x8c, 0x21, 0x79, 0x7a, 0xe3, 0x28, + 0xc1, 0x90, 0xce, 0xc7, 0x6e, 0xdf, 0x9b, 0x3e, 0xba, 0xc2, 0x79, 0x71, 0xfc, 0x5f, 0xfb, 0x5e, + 0x3c, 0xd5, 0x45, 0x5d, 0xbc, 0xcb, 0x77, 0xc9, 0x59, 0x3b, 0xac, 0x47, 0xce, 0xac, 0xff, 0x2b, + 0xfb, 0xa2, 0xa5, 0xcb, 0x4e, 0x18, 0xff, 0x2c, 0x31, 0x8c, 0x1c, 0x53, 0x93, 0xf9, 0xc1, 0x2b, + 0x25, 0xa5, 0x61, 0xd4, 0x13, 0x3a, 0x11, 0x67, 0x26, 0xd7, 0xed, 0x7c, 0xed, 0x45, 0xd6, 0x2c, + 0xf7, 0x12, 0x0e, 0xba, 0x8b, 0xe4, 0xb5, 0xfc, 0xc8, 0x07, 0x8b, 0xcd, 0x07, 0xbb, 0x98, 0x4c, + 0x26, 0xf3, 0x01, 0x0c, 0xe0, 0xd4, 0x75, 0xce, 0x5b, 0xd8, 0x8c, 0xdb, 0x6e, 0x9b, 0x37, 0x4d, + 0xbe, 0x7f, 0x34, 0xc3, 0x67, 0xbf, 0xb0, 0x97, 0xdd, 0xcf, 0x67, 0xf9, 0xfe, 0x2d, 0xd7, 0xb2, + 0xb8, 0xbc, 0x34, 0xff, 0x4d, 0x2e, 0x85, 0x51, 0x4e, 0x7b, 0x7b, 0x87, 0xf8, 0xf5, 0xab, 0x7b, + 0x58, 0xd3, 0xda, 0xc0, 0xbb, 0xd7, 0x2c, 0xc9, 0x0b, 0xa1, 0xe0, 0x42, 0x12, 0x59, 0x83, 0x3d, + 0x7d, 0x83, 0xdc, 0xbd, 0xe9, 0x55, 0x0e, 0xec, 0x39, 0xc0, 0x05, 0x3e, 0x93, 0x52, 0x15, 0x0c, + 0x60, 0xe3, 0x94, 0xa4, 0xfd, 0xda, 0x06, 0xbe, 0x7c, 0xdb, 0x72, 0x82, 0x9e, 0x13, 0xfa, 0x97, + 0xe6, 0x4b, 0x78, 0xde, 0x3c, 0xec, 0xb9, 0x53, 0x74, 0xa3, 0xb1, 0x34, 0xbf, 0x78, 0x6a, 0xa7, + 0xf5, 0x60, 0x43, 0xe0, 0xd3, 0xbb, 0x57, 0xf5, 0x7d, 0x6d, 0x22, 0x18, 0x3f, 0xa5, 0xe7, 0x28, + 0xed, 0x54, 0x1b, 0xb2, 0xdb, 0x6a, 0x1e, 0xb7, 0x76, 0x27, 0x6a, 0xb5, 0x0a, 0x05, 0xf3, 0xa8, + 0x61, 0xf7, 0xee, 0xcc, 0x38, 0xa8, 0xd2, 0x65, 0xf2, 0x4a, 0x46, 0x71, 0x65, 0xb6, 0x88, 0x94, + 0xb2, 0x47, 0x5d, 0xc1, 0x13, 0x91, 0xc5, 0xf1, 0xed, 0xf3, 0xdc, 0x8d, 0x95, 0x36, 0x2e, 0xa9, + 0xef, 0xd4, 0x3f, 0xf0, 0x89, 0x0f, 0x77, 0x88, 0x70, 0x89, 0x6d, 0xb6, 0xa7, 0x63, 0x6e, 0x97, + 0xa1, 0x80, 0x81, 0x91, 0x0c, 0xdb, 0x76, 0x8c, 0xd3, 0xb1, 0xd0, 0xcb, 0xd2, 0x72, 0x8f, 0x43, + 0x93, 0xe2, 0x7d, 0x65, 0x77, 0xb5, 0x9c, 0x92, 0xdd, 0xdb, 0x5f, 0xe2, 0xd8, 0xd4, 0x53, 0x59, + 0xb2, 0xa9, 0xa7, 0xa7, 0x53, 0x66, 0xb3, 0x99, 0x79, 0x1e, 0x6f, 0x86, 0x17, 0x5d, 0x1a, 0xae, + 0x20, 0x5c, 0x56, 0x81, 0x72, 0x0a, 0xc6, 0x47, 0x1e, 0xf0, 0x50, 0xa8, 0xae, 0x69, 0x66, 0x78, + 0x34, 0x5a, 0x08, 0x6c, 0x66, 0xf3, 0xbe, 0x8c, 0x69, 0x91, 0x2c, 0x8c, 0x1b, 0x9c, 0x99, 0x17, + 0x99, 0xca, 0xe6, 0x18, 0x9d, 0x4e, 0xc0, 0x09, 0x93, 0x30, 0x6a, 0xca, 0xec, 0x7c, 0xf9, 0xf3, + 0xcb, 0x78, 0xcb, 0x3b, 0x7c, 0xdc, 0xf5, 0x9b, 0x17, 0x38, 0x36, 0x32, 0x8e, 0x65, 0x59, 0xa8, + 0x52, 0x12, 0x72, 0xd8, 0x39, 0xaf, 0xbd, 0x81, 0x3b, 0xae, 0x7b, 0x1b, 0xed, 0x15, 0xa5, 0x3c, + 0xb5, 0xeb, 0x10, 0x86, 0x99, 0xff, 0xca, 0x00, 0x69, 0x49, 0x5c, 0x9a, 0xca, 0xfa, 0xc6, 0x5a, + 0xbe, 0x7d, 0xe3, 0x3b, 0xf9, 0xf8, 0x0d, 0x57, 0xf1, 0xbc, 0xf4, 0x33, 0x64, 0xc0, 0x2b, 0xd3, + 0xe0, 0x38, 0x2b, 0xcc, 0x27, 0x3f, 0xd6, 0x41, 0xe0, 0x74, 0xc2, 0x9d, 0x91, 0xf0, 0xdc, 0x1e, + 0xe8, 0x39, 0x8f, 0x7c, 0x03, 0x9f, 0xc0, 0x6e, 0x2a, 0x8a, 0x0f, 0xe5, 0x1d, 0x7a, 0x46, 0xd5, + 0x4f, 0x67, 0xa6, 0x23, 0xed, 0x66, 0xb7, 0xad, 0x5e, 0xac, 0xb0, 0xb7, 0x53, 0xa6, 0x2f, 0xa2, + 0xcc, 0xfd, 0x0e, 0xb5, 0x21, 0xfd, 0x71, 0x73, 0x49, 0xe6, 0xa3, 0xc6, 0x62, 0xdb, 0xea, 0x6c, + 0x83, 0xfd, 0xe2, 0xd4, 0xbb, 0x1c, 0x57, 0xc7, 0x6f, 0x3b, 0x51, 0xb8, 0x00, 0x9a, 0x18, 0xe5, + 0x5f, 0x6f, 0x58, 0x51, 0xa7, 0x2f, 0x5b, 0xe4, 0xcb, 0x47, 0x5f, 0xe2, 0x04, 0xd4, 0x57, 0xe6, + 0x77, 0x60, 0x57, 0x57, 0x9c, 0xd7, 0x5f, 0x9f, 0x62, 0xd7, 0x8e, 0x29, 0x8e, 0x76, 0x27, 0xc8, + 0x55, 0x06, 0x24, 0xe6, 0xa9, 0xaf, 0xe9, 0x40, 0xdd, 0x68, 0xe6, 0xdc, 0x07, 0x6b, 0x6e, 0x88, + 0x98, 0x63, 0x87, 0xa3, 0x93, 0x93, 0x81, 0x70, 0x79, 0x05, 0x27, 0xb7, 0x35, 0x89, 0xdf, 0xc7, + 0xe4, 0xc1, 0xe7, 0x0f, 0x90, 0x8c, 0xaa, 0xf3, 0x90, 0x68, 0x49, 0x7e, 0x4a, 0x9e, 0xa6, 0x08, + 0xd2, 0x73, 0x68, 0xba, 0x52, 0x48, 0x26, 0x13, 0x29, 0x1a, 0xca, 0x82, 0x85, 0x79, 0x5b, 0xb3, + 0x7d, 0x4a, 0x95, 0xa5, 0x3a, 0x9f, 0xfd, 0xe7, 0x85, 0xfc, 0xe2, 0xc1, 0x5e, 0xfe, 0xfe, 0x47, + 0xf7, 0x73, 0xdd, 0xf2, 0xf5, 0x5c, 0xbe, 0x72, 0x11, 0x01, 0x97, 0x03, 0x2c, 0x0b, 0x4d, 0x08, + 0x56, 0x37, 0x54, 0xb3, 0xa8, 0xaa, 0x6c, 0x36, 0xb7, 0x9c, 0x33, 0x5c, 0xc6, 0xa9, 0x69, 0x5c, + 0xb6, 0xac, 0x83, 0xfd, 0x7d, 0xc3, 0xdc, 0xf5, 0xcc, 0x8b, 0x9c, 0x77, 0x69, 0x19, 0x5f, 0xfc, + 0xfc, 0x32, 0x1a, 0xaa, 0x9d, 0x88, 0x37, 0x2a, 0x7b, 0xcd, 0x81, 0x2c, 0x4d, 0x29, 0xe9, 0x1f, + 0x8f, 0x02, 0x82, 0xda, 0x92, 0xc2, 0xd8, 0xe1, 0x9c, 0x81, 0x69, 0x64, 0x65, 0x45, 0xca, 0xdc, + 0x61, 0xaa, 0xf2, 0x0d, 0x87, 0x95, 0x8e, 0x6f, 0xe8, 0x9e, 0xfb, 0xfa, 0x48, 0xfe, 0x91, 0xfe, + 0xfd, 0xc4, 0x77, 0xa7, 0x30, 0x17, 0x2f, 0xec, 0x08, 0x60, 0xb3, 0x09, 0x86, 0x23, 0x59, 0x82, + 0x7e, 0x0d, 0xbb, 0x26, 0xc8, 0x1a, 0x16, 0xa6, 0x05, 0x4e, 0x3d, 0x4f, 0xd1, 0x3c, 0x7a, 0x34, + 0xce, 0x92, 0x85, 0x01, 0xfe, 0xf6, 0xe3, 0x5b, 0x98, 0xbc, 0x2e, 0xb7, 0xd7, 0xb9, 0x36, 0x76, + 0x5b, 0xe4, 0xe2, 0xf4, 0x69, 0xeb, 0x54, 0x93, 0x8b, 0x46, 0xa3, 0xf5, 0xaf, 0xa9, 0x2f, 0x4c, + 0x4c, 0x4c, 0xbc, 0x3d, 0x5c, 0x5e, 0xce, 0x7f, 0xaf, 0x1d, 0x62, 0xce, 0xc4, 0xd7, 0xb9, 0x2d, + 0xf5, 0x05, 0xa6, 0x86, 0x5d, 0x53, 0xf1, 0x3a, 0x1c, 0x24, 0xd2, 0xd9, 0x59, 0x4f, 0x82, 0x40, + 0x3b, 0x0d, 0xff, 0x4b, 0x08, 0x81, 0xcf, 0xa5, 0xf2, 0xfe, 0xeb, 0x1b, 0x39, 0xeb, 0xac, 0x72, + 0xee, 0xfa, 0xfe, 0x5e, 0x7e, 0x76, 0xd7, 0x36, 0xfe, 0xaa, 0xad, 0x9d, 0x0d, 0x1d, 0xcd, 0xb4, + 0x55, 0x86, 0x09, 0xb9, 0x5d, 0x78, 0x5c, 0x5a, 0xa1, 0xd9, 0x6c, 0x86, 0x29, 0x6a, 0xd1, 0x37, + 0x11, 0x65, 0x77, 0xcf, 0x00, 0x4f, 0xef, 0x7a, 0x9d, 0x97, 0xbb, 0x8f, 0xf0, 0xa1, 0x7f, 0x6c, + 0xe5, 0xc3, 0x1f, 0x6c, 0xa7, 0xb2, 0xd4, 0xc6, 0xac, 0x61, 0x79, 0x43, 0xb2, 0x11, 0x52, 0x4a, + 0x7a, 0xc6, 0xa2, 0xec, 0xec, 0xea, 0xc3, 0x65, 0xd7, 0x29, 0xf5, 0xb9, 0x70, 0xe9, 0x36, 0x26, + 0xa3, 0x29, 0xa6, 0x89, 0x73, 0x2c, 0xac, 0x45, 0x85, 0xb0, 0xfe, 0x57, 0x7a, 0x59, 0x34, 0x59, + 0xf0, 0x13, 0x29, 0x43, 0xf2, 0xe3, 0x7b, 0xbb, 0xf8, 0xe0, 0xdf, 0xb6, 0xa0, 0x7b, 0x04, 0xdb, + 0x76, 0x4d, 0xa0, 0x6a, 0x2a, 0x6b, 0x57, 0x06, 0x10, 0x08, 0x96, 0x2e, 0x0d, 0x52, 0xd7, 0xe0, + 0xe5, 0x81, 0xde, 0xae, 0x89, 0x58, 0x1d, 0x17, 0x45, 0x2e, 0x4e, 0xbf, 0xe1, 0x0c, 0xe4, 0x6e, + 0x87, 0xd3, 0x59, 0x1e, 0x70, 0x9d, 0x9d, 0x4a, 0x25, 0x4e, 0xbb, 0xf8, 0xd9, 0xb6, 0xd4, 0x53, + 0xdc, 0x20, 0x99, 0x9f, 0x64, 0x67, 0x19, 0xb3, 0xc9, 0xea, 0xcc, 0x1d, 0x50, 0x04, 0xd4, 0x94, + 0x04, 0x18, 0x99, 0x8e, 0x61, 0x15, 0xee, 0x8b, 0x22, 0xa0, 0xdc, 0xef, 0x41, 0x9c, 0x26, 0x01, + 0x12, 0x12, 0x54, 0x29, 0x58, 0xd8, 0xe8, 0xe6, 0x1b, 0x5f, 0x5d, 0x42, 0xe7, 0xd1, 0x38, 0x0f, + 0x3f, 0xdc, 0xcf, 0x17, 0x37, 0xed, 0x24, 0xd2, 0x2f, 0xf1, 0x69, 0x1e, 0x2a, 0x83, 0x3e, 0x5c, + 0xba, 0x0d, 0x24, 0x8c, 0xc5, 0x12, 0x44, 0x62, 0x31, 0x26, 0x32, 0x71, 0x82, 0x15, 0x82, 0x33, + 0xcf, 0x0c, 0x73, 0xef, 0xbf, 0xae, 0x65, 0xd5, 0xf2, 0x00, 0x33, 0xf3, 0xc5, 0x65, 0xca, 0x86, + 0x31, 0xe0, 0x44, 0x6b, 0x9e, 0xce, 0x7f, 0xc0, 0x09, 0x85, 0xfe, 0x99, 0xba, 0xb0, 0x25, 0x25, + 0x43, 0x53, 0xd3, 0xa7, 0x6c, 0x7c, 0xcf, 0x9a, 0xb5, 0xc4, 0x7d, 0x99, 0xd1, 0xd1, 0xd2, 0xf8, + 0xff, 0xca, 0xec, 0x0e, 0x2d, 0xa5, 0xbb, 0x72, 0xdb, 0x77, 0x4c, 0xda, 0xea, 0xeb, 0xbc, 0xfc, + 0xf6, 0xb7, 0x03, 0xbc, 0xfd, 0xed, 0x35, 0x04, 0x3d, 0x2e, 0x3c, 0x5e, 0x1b, 0x0f, 0xfe, 0xba, + 0x8f, 0x25, 0x8b, 0xfd, 0xb8, 0x75, 0x58, 0x73, 0x46, 0x80, 0xa7, 0x7e, 0x37, 0x42, 0xca, 0x5f, + 0x63, 0x68, 0x53, 0x4a, 0x1c, 0x0e, 0xbf, 0xb1, 0x0e, 0x4a, 0xb0, 0xa4, 0xd0, 0x52, 0xc9, 0xf8, + 0xc9, 0xe5, 0xb5, 0x99, 0x29, 0x73, 0xa9, 0x24, 0xba, 0xdd, 0x81, 0xaa, 0x28, 0xa7, 0x92, 0x2f, + 0x99, 0x4c, 0x66, 0x66, 0x07, 0xce, 0x33, 0x7b, 0x8a, 0x94, 0xd4, 0x86, 0x7c, 0x44, 0x93, 0x61, + 0x0e, 0x0f, 0x8d, 0x22, 0x91, 0x54, 0x07, 0x83, 0x94, 0x78, 0x9d, 0x79, 0xf5, 0x13, 0x27, 0x5c, + 0xc8, 0x8c, 0xdd, 0x35, 0x05, 0xb9, 0x2d, 0x61, 0x70, 0x48, 0x16, 0x2f, 0xb1, 0xb1, 0xe8, 0x9f, + 0x3c, 0x7c, 0xe2, 0xa3, 0xed, 0xf4, 0x0f, 0x67, 0x18, 0x1e, 0x4e, 0x31, 0xd8, 0x9f, 0xe0, 0x78, + 0x57, 0x96, 0x64, 0xca, 0xe4, 0x82, 0x36, 0x3f, 0xe5, 0x95, 0x15, 0x54, 0x54, 0x38, 0xa9, 0xaf, + 0x72, 0xe2, 0x71, 0xa9, 0x79, 0xaa, 0xac, 0x90, 0xc8, 0x69, 0x1b, 0xd9, 0x9d, 0xa5, 0xc8, 0x71, + 0x1d, 0xfb, 0xa5, 0x43, 0xc5, 0x56, 0x15, 0x4e, 0x53, 0xb7, 0x56, 0x84, 0xa0, 0xcc, 0xef, 0x61, + 0x68, 0x72, 0x8a, 0x2a, 0xbf, 0x0f, 0x47, 0xa1, 0x77, 0xda, 0xe3, 0xb6, 0x63, 0x19, 0x4e, 0x92, + 0xc9, 0xff, 0xbd, 0x46, 0x34, 0xcd, 0x5e, 0xeb, 0xff, 0xc8, 0x77, 0x1f, 0x8a, 0x7d, 0xf3, 0xb9, + 0x97, 0xb6, 0x3b, 0xb7, 0xa7, 0x62, 0xf2, 0x0b, 0x5f, 0xde, 0x2b, 0x6e, 0xfd, 0xf0, 0x02, 0xca, + 0xca, 0x5d, 0x1c, 0x3b, 0x16, 0xe7, 0x33, 0xb7, 0xed, 0x65, 0xf5, 0xea, 0x52, 0x86, 0x86, 0x92, + 0xdc, 0xdb, 0xd9, 0x1d, 0x8b, 0x9d, 0x21, 0xde, 0xa9, 0xfa, 0xcb, 0x93, 0xbf, 0xef, 0xc4, 0x8e, + 0xb4, 0x3b, 0x21, 0xb0, 0x3d, 0x39, 0x36, 0x72, 0xfc, 0xda, 0x54, 0x62, 0x0d, 0x2e, 0xb7, 0x6b, + 0x5e, 0x9e, 0xd8, 0x75, 0xfc, 0x18, 0x3b, 0x77, 0xfe, 0x8e, 0x40, 0xa0, 0x9e, 0x73, 0xcf, 0xbb, + 0x30, 0xdf, 0x30, 0x2e, 0xc4, 0x3c, 0x55, 0x95, 0x27, 0x38, 0xb8, 0xb9, 0xb7, 0x50, 0x55, 0x04, + 0x4b, 0xea, 0xca, 0x68, 0x2a, 0x0f, 0x92, 0x33, 0x2c, 0xfc, 0x2e, 0x7b, 0x81, 0xba, 0x32, 0xeb, + 0xab, 0xe7, 0xff, 0x9d, 0x00, 0x9b, 0x85, 0xbe, 0x61, 0x84, 0xdc, 0xbe, 0x52, 0x12, 0xdf, 0x6d, + 0x46, 0x29, 0xcf, 0xa2, 0x2f, 0x9b, 0xa2, 0xa5, 0x39, 0x4e, 0x5b, 0xad, 0x13, 0xb9, 0x36, 0x98, + 0xaf, 0x64, 0xc9, 0xbc, 0x50, 0x84, 0x00, 0xa1, 0x14, 0xe8, 0x40, 0x49, 0x0d, 0xa3, 0xdb, 0x43, + 0x76, 0x57, 0x00, 0xab, 0xdb, 0x81, 0x6d, 0x45, 0x0c, 0xfb, 0xe5, 0x03, 0x08, 0x9b, 0x39, 0xbf, + 0x1d, 0xe6, 0x84, 0xaf, 0x23, 0x98, 0xf9, 0x02, 0xb0, 0xe6, 0xb2, 0x10, 0x35, 0x21, 0x3f, 0x76, + 0x4d, 0x29, 0x7c, 0xf1, 0x16, 0x84, 0x82, 0x6e, 0x5a, 0xab, 0x53, 0x34, 0x44, 0xec, 0x81, 0xc1, + 0x49, 0x97, 0x18, 0x0b, 0xfe, 0xbf, 0x97, 0xb4, 0x66, 0x0c, 0x7b, 0xff, 0x93, 0xff, 0x3b, 0xd5, + 0x7d, 0xc8, 0x9e, 0xfc, 0x6b, 0xb7, 0x6e, 0x7f, 0xed, 0x99, 0xa7, 0x73, 0x57, 0x3f, 0x77, 0xc7, + 0x96, 0x25, 0x01, 0x4c, 0x22, 0xba, 0x86, 0x55, 0x6a, 0x8d, 0xde, 0x7d, 0xfc, 0xf8, 0xb8, 0xe2, + 0x0c, 0x0c, 0x6a, 0xd7, 0xf3, 0xf5, 0xa9, 0x73, 0xa3, 0xaf, 0x40, 0xf4, 0xf7, 0x9e, 0x38, 0x6b, + 0x1b, 0xb7, 0xd2, 0xa5, 0xea, 0x58, 0xba, 0xcb, 0xa4, 0xaf, 0xa7, 0x8b, 0xf6, 0x85, 0x8b, 0x8a, + 0x37, 0xdf, 0x34, 0x4d, 0x7a, 0x7a, 0x0e, 0x63, 0x59, 0x71, 0xc6, 0xc7, 0x0f, 0xd1, 0xdf, 0xdf, + 0x4e, 0x63, 0x63, 0xf3, 0x49, 0x0c, 0x4a, 0xaf, 0xc7, 0xc3, 0x48, 0x5f, 0xaa, 0x88, 0x3c, 0x89, + 0x39, 0xda, 0x9f, 0x47, 0x69, 0x04, 0x5e, 0xbb, 0x9e, 0x67, 0xbe, 0x9f, 0x10, 0xd8, 0x9c, 0x38, + 0xa2, 0x58, 0xce, 0xf1, 0x04, 0xda, 0xd2, 0x08, 0x4a, 0x63, 0x94, 0xdc, 0xcb, 0x61, 0x32, 0x4f, + 0x95, 0x41, 0xba, 0x1c, 0xe1, 0xb6, 0x10, 0xe1, 0x2c, 0xc2, 0x63, 0xa2, 0x84, 0x33, 0x98, 0x42, + 0x42, 0x56, 0xc3, 0x1a, 0xd3, 0xb1, 0xc6, 0x6d, 0xc8, 0x88, 0x06, 0x52, 0xa0, 0xd4, 0xa7, 0x71, + 0x5c, 0x3b, 0x80, 0xd6, 0x10, 0x2f, 0x46, 0xc9, 0xa7, 0xf4, 0xc0, 0x27, 0x4c, 0x82, 0x57, 0x14, + 0x81, 0xb3, 0x30, 0xf8, 0x7c, 0xe6, 0x9a, 0x74, 0x4d, 0xa5, 0xa1, 0xda, 0x27, 0x2a, 0x07, 0x87, + 0xde, 0xd1, 0xf0, 0x7a, 0xd9, 0xbf, 0x8d, 0xd1, 0x9d, 0xf9, 0x7f, 0x2e, 0xe0, 0xf1, 0x6b, 0x0f, + 0x4a, 0xe0, 0x37, 0x85, 0x07, 0xa1, 0x17, 0xe5, 0xbf, 0x1b, 0x86, 0x70, 0x8d, 0xa6, 0x33, 0xa8, + 0x41, 0x1d, 0xf7, 0x55, 0x46, 0x96, 0x32, 0xcb, 0x50, 0xf5, 0x09, 0x63, 0x40, 0xfc, 0xd7, 0xa7, + 0x78, 0xbd, 0xd2, 0x96, 0xb1, 0x42, 0x3b, 0x7d, 0x1b, 0x1b, 0xbc, 0xd6, 0xdf, 0x1d, 0x3f, 0xba, + 0x47, 0xaf, 0xad, 0xaf, 0xc7, 0xe5, 0xf6, 0xcc, 0xc3, 0x82, 0xf2, 0x6b, 0x35, 0x99, 0x9c, 0x88, + 0xcc, 0x17, 0x70, 0x41, 0x42, 0x6e, 0x8f, 0x87, 0x68, 0x0c, 0x52, 0xe9, 0x1c, 0x2e, 0x87, 0x6d, + 0x3e, 0xb5, 0xb2, 0x50, 0x3c, 0xc8, 0x64, 0x72, 0x18, 0x85, 0x39, 0x97, 0xba, 0x6e, 0xc3, 0x66, + 0x53, 0x67, 0x3b, 0xfd, 0xe5, 0x2c, 0xfa, 0x94, 0xcd, 0x19, 0x24, 0x12, 0x69, 0x62, 0xa9, 0x4c, + 0x91, 0x2c, 0x67, 0x5b, 0x39, 0x86, 0x77, 0x95, 0x07, 0x75, 0xc2, 0x87, 0xd2, 0xeb, 0xc3, 0xea, + 0x75, 0x61, 0xf6, 0x69, 0x98, 0x9d, 0x4e, 0x30, 0x05, 0x28, 0x12, 0xe1, 0xb2, 0x10, 0x7e, 0x13, + 0xed, 0xbc, 0x18, 0xda, 0x82, 0x18, 0x4a, 0x38, 0x05, 0x8a, 0x9c, 0x2d, 0x42, 0x48, 0x39, 0xbf, + 0x0f, 0x89, 0x22, 0xa1, 0x33, 0x3f, 0x13, 0xac, 0xc0, 0xba, 0x60, 0x0e, 0x6d, 0x76, 0x6e, 0x97, + 0xa3, 0xa2, 0xaa, 0x78, 0xba, 0xbd, 0x6a, 0x69, 0xd4, 0x25, 0x4e, 0xd3, 0x9c, 0xf0, 0x3f, 0x13, + 0xf0, 0x49, 0x95, 0xa2, 0x73, 0x12, 0x59, 0xa0, 0xf0, 0xa5, 0x8a, 0x31, 0xf8, 0xe8, 0x1f, 0x7e, + 0xf2, 0x21, 0xd5, 0xbb, 0xb1, 0xcb, 0xed, 0x79, 0xda, 0x39, 0x32, 0xfc, 0xb6, 0x43, 0x07, 0xf7, + 0x8b, 0xe5, 0x2b, 0xf3, 0x5f, 0xaa, 0xa1, 0x69, 0x2a, 0xe1, 0x70, 0x15, 0xa3, 0xa3, 0xaf, 0x17, + 0x18, 0x1b, 0xa7, 0x20, 0xcc, 0x21, 0xd0, 0x75, 0x3b, 0xfe, 0x50, 0x3d, 0xdb, 0x77, 0x75, 0xb3, + 0x66, 0x75, 0x73, 0xfe, 0x8b, 0x23, 0x2d, 0x49, 0x2c, 0x9e, 0xa6, 0xaf, 0x2f, 0xc2, 0xb1, 0xae, + 0x49, 0x26, 0x26, 0x0d, 0x72, 0x46, 0x02, 0xcb, 0x8a, 0xa1, 0xdb, 0x34, 0xbc, 0x1e, 0x17, 0x7e, + 0x9f, 0x87, 0x60, 0xd0, 0x83, 0xdf, 0xeb, 0x24, 0x93, 0xcd, 0x31, 0x38, 0x3c, 0xc9, 0xc8, 0xc8, + 0x24, 0xa9, 0x34, 0x68, 0x5a, 0x35, 0xbe, 0x40, 0x33, 0xaa, 0xa2, 0x91, 0x88, 0x0f, 0x91, 0x4e, + 0x1f, 0x40, 0xd7, 0x33, 0x78, 0xbd, 0x2e, 0x42, 0x2d, 0x3e, 0xc2, 0x21, 0x1f, 0x7e, 0x97, 0x0f, + 0x5d, 0xb7, 0xe5, 0x7b, 0x95, 0x75, 0x0b, 0xa9, 0xe4, 0x67, 0x53, 0x8f, 0x8d, 0x4f, 0xd3, 0xbf, + 0x27, 0x42, 0x3a, 0x9d, 0x45, 0x55, 0x04, 0x15, 0x15, 0x21, 0xea, 0x6a, 0xc3, 0xf8, 0x7c, 0x2e, + 0x34, 0x55, 0xc1, 0x30, 0x2d, 0x62, 0xb1, 0x14, 0x83, 0x83, 0x13, 0x0c, 0x0c, 0x4d, 0x90, 0x48, + 0x26, 0x51, 0x15, 0x85, 0x96, 0xa6, 0x6a, 0xda, 0xda, 0x2a, 0x71, 0x3b, 0xed, 0xf3, 0xb0, 0xea, + 0x4c, 0xce, 0x60, 0x64, 0x78, 0x82, 0xa9, 0x95, 0x63, 0xd1, 0xa3, 0x4d, 0xca, 0xff, 0x4e, 0x90, + 0xc5, 0xff, 0xe2, 0xb1, 0x63, 0xd9, 0x40, 0xba, 0x72, 0x53, 0xd3, 0xf5, 0x0e, 0x4d, 0xfe, 0x52, + 0xed, 0xda, 0x76, 0x69, 0x65, 0x65, 0x35, 0x95, 0xd5, 0xb5, 0x48, 0x09, 0x0d, 0x8d, 0x2d, 0x74, + 0x77, 0x1f, 0x20, 0x1e, 0x1f, 0xc1, 0xe7, 0x0b, 0x9c, 0x14, 0xa0, 0x49, 0x69, 0x31, 0xd0, 0xd7, + 0x4b, 0xf7, 0xb1, 0xfd, 0x4c, 0x47, 0x07, 0xe8, 0xea, 0x1e, 0xc4, 0xeb, 0xf5, 0x10, 0x8f, 0x67, + 0x30, 0xad, 0x4a, 0xda, 0x16, 0x5c, 0xcb, 0xfa, 0x0d, 0xe7, 0x62, 0x77, 0xf8, 0x48, 0xa7, 0xa6, + 0x19, 0x1d, 0x39, 0xc0, 0x40, 0xff, 0x6b, 0xf4, 0xf7, 0x3f, 0xc7, 0xc8, 0x58, 0x37, 0x92, 0x2c, + 0x42, 0x48, 0x8c, 0x1c, 0xd8, 0x6c, 0x4b, 0x58, 0xbe, 0xe2, 0x6f, 0xa8, 0xad, 0x5b, 0x47, 0x69, + 0xb8, 0x0d, 0x97, 0x2b, 0xdf, 0xad, 0x90, 0xcd, 0x26, 0x88, 0x8c, 0x1d, 0xa6, 0xaf, 0x67, 0x0b, + 0xfb, 0xf7, 0x3f, 0x46, 0xe7, 0x91, 0x17, 0x71, 0x39, 0x25, 0x9a, 0x6d, 0x16, 0x2a, 0x51, 0x2c, + 0x81, 0x33, 0x67, 0xc3, 0x9b, 0xd6, 0x19, 0x1c, 0xb2, 0xd8, 0x9d, 0x70, 0x72, 0xe1, 0xc5, 0x57, + 0xa0, 0x58, 0xc3, 0xec, 0xd9, 0x7f, 0x94, 0xed, 0x3b, 0xf7, 0xa0, 0x69, 0x0a, 0x9a, 0xa6, 0xa0, + 0x28, 0x5e, 0x6c, 0x7a, 0x29, 0xf1, 0x84, 0x8b, 0xc1, 0x41, 0x0f, 0x7d, 0xbd, 0x47, 0xe8, 0x58, + 0x60, 0x63, 0x78, 0xf4, 0x28, 0xdb, 0x77, 0x77, 0x52, 0x53, 0x5d, 0x41, 0x75, 0x55, 0x08, 0xb7, + 0xdb, 0x4e, 0x26, 0x63, 0x70, 0xec, 0xd8, 0x10, 0x9d, 0x9d, 0x53, 0x1c, 0x5e, 0x5a, 0x65, 0x9f, + 0xb6, 0xf5, 0xff, 0xaf, 0x4c, 0x29, 0xfd, 0xa3, 0x8c, 0x3e, 0xbd, 0x7c, 0x53, 0xa8, 0x66, 0x61, + 0xbf, 0x71, 0x60, 0x61, 0xae, 0xc2, 0x77, 0xde, 0xf9, 0x97, 0x63, 0x77, 0xe4, 0x0b, 0x0b, 0xb1, + 0xf8, 0x34, 0x89, 0x78, 0x8c, 0x70, 0xb8, 0xa2, 0xd8, 0x6e, 0x3a, 0xe3, 0x63, 0x0f, 0x1f, 0xda, + 0xcf, 0xbe, 0xdd, 0xdb, 0x11, 0xe1, 0x77, 0x60, 0x04, 0xcf, 0xc1, 0xea, 0x3c, 0xc4, 0x7b, 0xdf, + 0xf3, 0x4e, 0x14, 0x01, 0x6e, 0x77, 0x18, 0x97, 0xbb, 0x14, 0x21, 0xd4, 0x79, 0x66, 0xdb, 0xb2, + 0xb2, 0x24, 0x13, 0x13, 0x44, 0x22, 0x87, 0x99, 0x9a, 0x1c, 0x60, 0xd3, 0xf3, 0x07, 0xf9, 0xe5, + 0x2f, 0x7f, 0x45, 0x2c, 0x9e, 0xe2, 0x9d, 0xef, 0xbc, 0x86, 0x6b, 0xae, 0x79, 0x1f, 0x0b, 0x16, + 0x2c, 0x98, 0xd7, 0x2f, 0x25, 0x25, 0x1c, 0x3b, 0x76, 0x84, 0x4f, 0x7f, 0xfa, 0x93, 0x24, 0x93, + 0x19, 0x26, 0x87, 0x3b, 0xf9, 0x4c, 0x15, 0x2c, 0x71, 0x3b, 0x40, 0x82, 0x6a, 0x29, 0xd8, 0xd3, + 0x0a, 0x18, 0x82, 0xbb, 0xbb, 0x23, 0xfc, 0xcc, 0x5e, 0xc6, 0x19, 0xab, 0x57, 0xf2, 0xe9, 0x4f, + 0xff, 0x13, 0x65, 0xe1, 0x20, 0xe9, 0xf4, 0x24, 0x86, 0x61, 0x30, 0x3a, 0x36, 0xc2, 0x2b, 0xaf, + 0x6c, 0x65, 0xd3, 0xa6, 0x17, 0xe9, 0xec, 0xec, 0x61, 0xe1, 0xc2, 0x15, 0xbc, 0xe7, 0x3d, 0xef, + 0x65, 0xdd, 0xda, 0x55, 0xa4, 0xd3, 0x3d, 0x6c, 0x7b, 0xf5, 0xfb, 0x0c, 0x0e, 0x3e, 0x85, 0x94, + 0xd1, 0x42, 0xae, 0xed, 0x40, 0x55, 0x5a, 0x78, 0xf4, 0xa9, 0x3e, 0x76, 0xdc, 0x10, 0xdd, 0xa7, + 0x9f, 0x69, 0xae, 0x19, 0x69, 0xb2, 0xd2, 0x7f, 0x96, 0x02, 0x6e, 0x1b, 0xb2, 0x8b, 0xd5, 0xc7, + 0x9c, 0x7f, 0xb3, 0x7c, 0x77, 0xee, 0x7b, 0xab, 0x17, 0x5d, 0xa0, 0xb6, 0x2f, 0x5c, 0x72, 0x42, + 0x6f, 0xb6, 0x9c, 0xc7, 0xe5, 0xea, 0xeb, 0xee, 0x62, 0xdb, 0xae, 0x2e, 0x6c, 0x0b, 0x3f, 0x83, + 0xad, 0xf2, 0x1c, 0x8c, 0x5c, 0x86, 0xee, 0x47, 0xee, 0xe6, 0x33, 0x1f, 0xfb, 0x7b, 0xec, 0x76, + 0xfb, 0x69, 0xd1, 0xb0, 0x99, 0xc2, 0xfa, 0xcc, 0x39, 0x0d, 0xc3, 0x64, 0x68, 0x68, 0x88, 0x27, + 0x9e, 0x78, 0x9c, 0xfb, 0xef, 0xff, 0x05, 0x03, 0x03, 0x03, 0x5c, 0x76, 0xd9, 0x5b, 0xb9, 0xfa, + 0xea, 0xf7, 0xb2, 0x7c, 0xc5, 0x0a, 0x5c, 0x4e, 0x27, 0x47, 0x8f, 0x1e, 0xe5, 0x5f, 0xfe, 0xe5, + 0x5f, 0x58, 0xba, 0x74, 0x29, 0x37, 0xde, 0x74, 0x23, 0x3f, 0xf8, 0xcf, 0x1f, 0x30, 0xfa, 0x93, + 0xef, 0xf2, 0xb9, 0xb6, 0x0a, 0xdc, 0xaa, 0x5a, 0x20, 0xd6, 0xc1, 0x68, 0xc6, 0xe0, 0xe3, 0x47, + 0x27, 0xb8, 0xfe, 0xf6, 0x6f, 0x13, 0x0c, 0x06, 0xb9, 0xf7, 0xde, 0x7b, 0xf9, 0xe0, 0x07, 0x3f, + 0x48, 0x6c, 0x7a, 0x9a, 0xc7, 0x1e, 0x7f, 0x9c, 0x97, 0x5f, 0x7e, 0x99, 0x70, 0xb8, 0x8c, 0x2b, + 0xae, 0xb8, 0x9c, 0x8b, 0x2e, 0xba, 0x88, 0x86, 0x86, 0x7c, 0x8b, 0xad, 0xa2, 0xe4, 0x79, 0xd2, + 0x46, 0x2e, 0xc5, 0xd8, 0xd8, 0x41, 0x26, 0x27, 0x8e, 0x21, 0xa5, 0xc4, 0xe5, 0x29, 0xc3, 0xe9, + 0xa8, 0xe7, 0x93, 0xff, 0xf4, 0x59, 0x1e, 0xb2, 0xbf, 0xfa, 0xba, 0xfb, 0x72, 0x75, 0xf5, 0xf8, + 0x3b, 0x3a, 0x93, 0x7f, 0x56, 0x26, 0x7a, 0xe6, 0x38, 0x5c, 0x99, 0x91, 0xde, 0x2e, 0x7e, 0x5b, + 0x3d, 0xc4, 0x40, 0x6f, 0xcf, 0x91, 0xba, 0xc6, 0xe6, 0x56, 0x74, 0xbb, 0xbd, 0x00, 0x27, 0x32, + 0xbf, 0xda, 0x34, 0x1d, 0x65, 0xff, 0xeb, 0xbd, 0xd8, 0x57, 0x7e, 0x03, 0x35, 0xb4, 0x02, 0x50, + 0xd0, 0x74, 0xc1, 0xff, 0xd7, 0xde, 0x99, 0x86, 0x49, 0x55, 0x5d, 0x7b, 0xff, 0xb7, 0xcf, 0x39, + 0x35, 0x57, 0x77, 0x55, 0xf5, 0x3c, 0x41, 0x37, 0x74, 0x03, 0x32, 0x8f, 0x22, 0xa2, 0x06, 0x15, + 0x05, 0x45, 0x05, 0x51, 0x71, 0xbc, 0xc6, 0x68, 0x9c, 0xa7, 0x7b, 0x73, 0xbd, 0x37, 0x4f, 0xbc, + 0x57, 0xcd, 0x6b, 0x06, 0xcd, 0x4d, 0xa2, 0xaf, 0x57, 0xe3, 0x78, 0x45, 0x6f, 0xd0, 0x68, 0x90, + 0x38, 0x83, 0xca, 0x10, 0xc1, 0x01, 0x08, 0x20, 0xa3, 0xd0, 0x8c, 0x4d, 0x33, 0xf4, 0x3c, 0x55, + 0x55, 0xd7, 0x5c, 0x75, 0xce, 0xd9, 0xef, 0x87, 0xea, 0xae, 0x1e, 0x80, 0x57, 0xe3, 0x87, 0xd0, + 0x3e, 0x0f, 0xfb, 0x4b, 0xd7, 0xd3, 0x5d, 0xdd, 0x5d, 0xe7, 0xfc, 0xcf, 0x5a, 0x7b, 0xed, 0xb5, + 0xd6, 0xff, 0xbf, 0xda, 0x53, 0x26, 0xb1, 0x58, 0x2c, 0x23, 0x24, 0x7a, 0xa2, 0x8c, 0x55, 0x4f, + 0x90, 0x2a, 0xd0, 0x34, 0xc1, 0xa0, 0x41, 0x83, 0xb8, 0xfd, 0xf6, 0x3b, 0xb8, 0xea, 0xaa, 0x05, + 0xac, 0x5d, 0xbb, 0x96, 0x97, 0x5f, 0xfe, 0x1f, 0x16, 0x2c, 0x58, 0xc0, 0xf4, 0xe9, 0xd3, 0x39, + 0xe3, 0x8c, 0x33, 0xd8, 0xb0, 0x61, 0x03, 0x33, 0x66, 0xcc, 0xe0, 0xe6, 0x9b, 0x6f, 0xc6, 0xe5, + 0x72, 0x71, 0xf7, 0xdd, 0x77, 0xf3, 0x8b, 0xd6, 0x36, 0xfe, 0xe3, 0xc3, 0x3f, 0x33, 0xa7, 0x30, + 0x1b, 0x97, 0x2a, 0x08, 0xa4, 0x24, 0x4b, 0x9b, 0x03, 0x54, 0x5d, 0xfd, 0x23, 0x66, 0xce, 0x3c, + 0x1f, 0x8f, 0xc7, 0x8b, 0xdb, 0xed, 0xe6, 0xe1, 0x87, 0x1f, 0x26, 0x1e, 0x8f, 0x33, 0x6b, 0xd6, + 0x6c, 0x16, 0x2e, 0x5c, 0x48, 0x55, 0x55, 0x15, 0x6e, 0xb7, 0x3b, 0xe3, 0x21, 0x7a, 0x4b, 0x3a, + 0x59, 0xac, 0x4e, 0x8a, 0x4b, 0x26, 0x51, 0x5c, 0x32, 0x29, 0x13, 0x92, 0x75, 0x76, 0x86, 0x70, + 0x39, 0x5c, 0xa8, 0x41, 0xd5, 0xa2, 0x0e, 0x89, 0xd9, 0x81, 0x68, 0x61, 0x8d, 0x4b, 0x91, 0xf1, + 0xa4, 0x45, 0x4f, 0xa6, 0x50, 0x34, 0x81, 0xa2, 0xaa, 0xc9, 0x96, 0x51, 0xba, 0x1c, 0xd0, 0x00, + 0x03, 0xd8, 0xda, 0xdc, 0x47, 0x3a, 0x6d, 0xf1, 0x57, 0x42, 0x4d, 0xf5, 0x3f, 0x0f, 0x06, 0xfc, + 0x22, 0xbf, 0xb0, 0xe8, 0xd8, 0x96, 0x1a, 0xd3, 0x64, 0xf7, 0xae, 0x7d, 0xe8, 0xc3, 0x7e, 0x8e, + 0x25, 0x67, 0x42, 0x97, 0x0b, 0x96, 0x08, 0x45, 0xc3, 0x9e, 0x97, 0x4f, 0x34, 0x1a, 0xfd, 0xff, + 0x8e, 0xd8, 0x39, 0x11, 0xe0, 0x9a, 0xa6, 0x91, 0x9f, 0x9f, 0xcf, 0xdc, 0xb9, 0x73, 0x99, 0x35, + 0x6b, 0x16, 0x7b, 0xf7, 0xee, 0xe5, 0x9d, 0x77, 0xde, 0x61, 0xd5, 0xaa, 0x55, 0xdc, 0x7a, 0xeb, + 0x6d, 0xcc, 0x9d, 0x7b, 0x59, 0xc6, 0x33, 0x14, 0x14, 0x14, 0xf0, 0xf8, 0x6f, 0x1e, 0xe7, 0xa9, + 0xa2, 0x42, 0x7e, 0xff, 0xe4, 0x6f, 0x18, 0xe5, 0xb6, 0x11, 0x36, 0x24, 0xfe, 0xd1, 0x93, 0xf9, + 0xe5, 0x7d, 0xf7, 0xe1, 0xf5, 0xfa, 0x10, 0x42, 0x30, 0x75, 0xea, 0x54, 0xde, 0x7d, 0xf7, 0xdd, + 0x0c, 0xf5, 0xa5, 0x7b, 0x8b, 0xf9, 0x76, 0x83, 0xbb, 0xba, 0xa8, 0xa4, 0x2e, 0x17, 0xe5, 0xe5, + 0xe5, 0x98, 0xdb, 0x8f, 0x22, 0xfd, 0x2e, 0x35, 0xe7, 0xf9, 0x9c, 0x71, 0xfa, 0x4a, 0xf3, 0x35, + 0xdb, 0x6e, 0x65, 0x44, 0x39, 0x0e, 0x11, 0x16, 0xba, 0x6c, 0xac, 0x48, 0xfd, 0xda, 0xf7, 0xa1, + 0xf6, 0x6b, 0xff, 0x65, 0xba, 0x39, 0xa0, 0x01, 0x5e, 0x77, 0x7a, 0xbb, 0x1c, 0xfb, 0xa9, 0xad, + 0xdd, 0x30, 0x53, 0x32, 0x18, 0x0c, 0x88, 0x9e, 0xfc, 0x74, 0xba, 0x1c, 0x69, 0x1a, 0x06, 0x7b, + 0x76, 0xef, 0xa1, 0xc9, 0xb6, 0x00, 0x6b, 0xe1, 0x74, 0x44, 0x57, 0x43, 0x6b, 0xba, 0x93, 0x51, + 0xe0, 0xce, 0x2f, 0xa6, 0xa1, 0xa1, 0x81, 0xe2, 0xe2, 0xe2, 0xef, 0xfc, 0x19, 0x14, 0x45, 0xc1, + 0xe9, 0x74, 0x30, 0x61, 0xc2, 0x04, 0xc6, 0x8d, 0x1b, 0x47, 0x2a, 0x95, 0xc2, 0x62, 0xb1, 0x64, + 0x66, 0x30, 0x76, 0x7b, 0x91, 0x54, 0x2a, 0xc5, 0xc1, 0x9a, 0x1a, 0x1e, 0xa8, 0x2a, 0xe0, 0xa2, + 0x02, 0x0f, 0x6d, 0x29, 0x83, 0xfb, 0xf7, 0xef, 0x61, 0xc7, 0x8e, 0x1d, 0x0c, 0x1e, 0x3c, 0x18, + 0x55, 0xed, 0x21, 0x6c, 0xd3, 0xa7, 0xce, 0x2f, 0x8f, 0xd1, 0xb5, 0xfe, 0xa6, 0x9d, 0xb1, 0xa8, + 0xa8, 0x08, 0xcb, 0x9f, 0x06, 0x0d, 0x4b, 0xbe, 0x60, 0xdf, 0x79, 0x16, 0xcd, 0xb9, 0x57, 0xcf, + 0x1a, 0xac, 0x4e, 0xbb, 0x33, 0x8f, 0xd2, 0x22, 0x3b, 0x4d, 0x2d, 0x09, 0xfe, 0xf5, 0xa9, 0xad, + 0x8f, 0xac, 0x1b, 0x13, 0x39, 0x08, 0xc1, 0x3f, 0x0d, 0x68, 0x80, 0xd3, 0xfd, 0xcd, 0xa9, 0x74, + 0x2b, 0xa9, 0xbf, 0x03, 0xd3, 0x94, 0x28, 0x0a, 0xe8, 0xa9, 0x24, 0x35, 0xfb, 0xf6, 0x52, 0x7b, + 0xf0, 0x20, 0xb1, 0xdc, 0x1b, 0xb1, 0x8f, 0xbe, 0x1a, 0x84, 0xd6, 0x4b, 0xa6, 0x18, 0x4c, 0x29, + 0xc8, 0xca, 0x2b, 0xe2, 0x0f, 0xcf, 0x3f, 0x4d, 0x55, 0x45, 0x05, 0x12, 0x49, 0x2a, 0x99, 0xca, + 0x3c, 0x1c, 0xba, 0x9e, 0xfa, 0xd6, 0x16, 0xdd, 0x2d, 0x98, 0x66, 0x77, 0x38, 0x70, 0xbb, 0xb3, + 0x49, 0xa5, 0x52, 0x84, 0x43, 0x9d, 0x44, 0x63, 0xd1, 0xf4, 0x74, 0x71, 0x20, 0x10, 0xec, 0xa4, + 0x79, 0xe5, 0x47, 0x4c, 0x1b, 0x55, 0x88, 0x21, 0xc1, 0xa7, 0xa9, 0x5c, 0x94, 0xa5, 0xf0, 0xcc, + 0xd3, 0x4f, 0x53, 0x5b, 0x7b, 0x08, 0xab, 0xd5, 0xd2, 0xab, 0xd3, 0xf2, 0x3b, 0x06, 0x37, 0x52, + 0x62, 0x4a, 0x93, 0xf5, 0xeb, 0xd7, 0x32, 0x6f, 0x72, 0x92, 0xbb, 0xef, 0x2a, 0x2f, 0x18, 0x33, + 0xb2, 0x12, 0x87, 0x96, 0xf6, 0x02, 0x8a, 0x94, 0x94, 0x16, 0xd8, 0x18, 0xe1, 0xc9, 0x52, 0xd7, + 0xfa, 0xdb, 0xcf, 0x2d, 0x0a, 0x88, 0xc5, 0x4d, 0x5e, 0xa9, 0x0f, 0x68, 0x80, 0x65, 0x17, 0x49, + 0x2a, 0x12, 0x0e, 0x60, 0x98, 0xe9, 0xa6, 0xba, 0x0d, 0x6b, 0xd7, 0xd1, 0x14, 0x3f, 0x0d, 0xdb, + 0x98, 0x7f, 0xc7, 0x91, 0x3b, 0x09, 0xba, 0x22, 0x63, 0x89, 0xc8, 0x8c, 0xd9, 0x09, 0xfb, 0x1b, + 0x59, 0xf9, 0xca, 0xb3, 0x0c, 0xaa, 0x7f, 0x97, 0x69, 0x83, 0xdc, 0xe9, 0x9b, 0xdb, 0x5b, 0xe8, + 0x44, 0x93, 0xf4, 0x93, 0x3d, 0xe9, 0xa7, 0xe9, 0x4c, 0x9f, 0x92, 0x23, 0x00, 0x31, 0x20, 0xd6, + 0xab, 0xdc, 0x68, 0x4b, 0xff, 0xa4, 0x3d, 0x6c, 0xf0, 0xd8, 0xd2, 0x16, 0x7e, 0x56, 0x54, 0x42, + 0xb6, 0x45, 0xcd, 0xfc, 0xd6, 0xd9, 0xb9, 0x6e, 0x5e, 0xf9, 0x6a, 0x2d, 0x6d, 0x39, 0xdb, 0x38, + 0x6f, 0x8c, 0x2b, 0x9d, 0xf1, 0xe9, 0x3b, 0x85, 0x3a, 0xd3, 0x79, 0xd9, 0x9d, 0x79, 0xf7, 0x87, + 0x0d, 0xea, 0xfd, 0x29, 0x1c, 0x56, 0x95, 0x92, 0x1c, 0x15, 0x87, 0x35, 0x7d, 0xfc, 0x8a, 0x25, + 0x4c, 0x3e, 0xd8, 0x14, 0xa2, 0xd3, 0xeb, 0xe6, 0xee, 0x7b, 0x4e, 0x63, 0xda, 0x94, 0x49, 0x58, + 0x55, 0x41, 0x20, 0x6c, 0xf0, 0xd5, 0x96, 0x00, 0x36, 0x8b, 0x60, 0xea, 0x44, 0x2f, 0x56, 0x8b, + 0xc2, 0xd0, 0xc1, 0x2e, 0xc1, 0x61, 0x5b, 0x65, 0x72, 0x93, 0x45, 0x81, 0xf0, 0xc0, 0xb6, 0x60, + 0x69, 0xd8, 0x90, 0x52, 0x27, 0xe8, 0xaf, 0x23, 0x16, 0x0e, 0x71, 0xf8, 0xd0, 0x21, 0x9a, 0x02, + 0x5e, 0x9c, 0x3f, 0xf8, 0x15, 0xc2, 0x9a, 0x9b, 0x69, 0x7f, 0xed, 0x6e, 0xfe, 0x43, 0x08, 0x1a, + 0x0e, 0xec, 0x62, 0xfd, 0x1f, 0x1e, 0xe5, 0x42, 0xf5, 0x63, 0xf6, 0x9a, 0x16, 0xf2, 0x3c, 0x1a, + 0x9a, 0x2a, 0x90, 0x12, 0x62, 0xc9, 0xae, 0x99, 0xbd, 0xbd, 0xf1, 0x15, 0xc7, 0x5a, 0x8a, 0x22, + 0x04, 0x76, 0x6b, 0x7a, 0xd2, 0x5a, 0x67, 0xcc, 0xa4, 0x23, 0x64, 0x64, 0x40, 0xd0, 0x0d, 0x49, + 0x38, 0x21, 0x49, 0xa4, 0x0c, 0x4c, 0xd3, 0x64, 0xdb, 0xc1, 0x18, 0x23, 0x74, 0x3b, 0xe7, 0xe4, + 0x66, 0x67, 0x5c, 0x88, 0x90, 0x92, 0x12, 0x9b, 0x85, 0x4b, 0x0b, 0xbd, 0x7c, 0xbe, 0xbb, 0x93, + 0x92, 0x1c, 0x2b, 0x16, 0xb5, 0x6f, 0x51, 0xa3, 0xc8, 0x67, 0x61, 0x48, 0x41, 0xcf, 0xed, 0xdc, + 0x56, 0x1b, 0x67, 0xd1, 0xa7, 0x1d, 0x14, 0xf9, 0x6c, 0x1c, 0x6e, 0x4d, 0x62, 0xd3, 0x60, 0xde, + 0x54, 0x0f, 0xbe, 0x2c, 0x85, 0xf7, 0xb7, 0x44, 0x99, 0x7d, 0xc3, 0x69, 0xcc, 0x9f, 0x57, 0x8a, + 0x27, 0x4b, 0xe3, 0xd0, 0x91, 0x18, 0xcb, 0x3e, 0xa9, 0xe7, 0x83, 0x8d, 0xcd, 0xe6, 0xd6, 0x8a, + 0x00, 0x97, 0x36, 0x14, 0x28, 0xa3, 0x9f, 0x98, 0x84, 0xcb, 0xa9, 0xa1, 0x29, 0x02, 0xf3, 0xb0, + 0xb0, 0x98, 0xae, 0xef, 0x76, 0xc9, 0xf0, 0xf0, 0x39, 0x00, 0x00, 0x14, 0x24, 0x49, 0x44, 0x41, + 0x54, 0xe0, 0xf9, 0x87, 0x02, 0x7c, 0xd8, 0xed, 0x8b, 0x55, 0xaa, 0x71, 0xa9, 0x24, 0xda, 0xf8, + 0xfc, 0xd3, 0x77, 0x89, 0xc7, 0x93, 0x58, 0x47, 0x3f, 0x87, 0xb0, 0xf8, 0x7a, 0x84, 0xc9, 0x32, + 0xc4, 0x6d, 0x83, 0x7d, 0x9b, 0xbe, 0x64, 0xdf, 0xc2, 0x5f, 0x30, 0x3b, 0x67, 0x13, 0x4e, 0xab, + 0x64, 0x6f, 0xbb, 0x49, 0x2c, 0x09, 0x6e, 0x3b, 0x24, 0x92, 0x92, 0xe7, 0x3f, 0x6e, 0x63, 0xd3, + 0xbe, 0xf8, 0x37, 0xf4, 0x48, 0x82, 0xcf, 0xad, 0xf2, 0xf3, 0xeb, 0x0b, 0x29, 0xf2, 0x5a, 0xa8, + 0x3e, 0x9a, 0xe0, 0xd1, 0x37, 0x5b, 0x49, 0xa4, 0xba, 0xb8, 0xb8, 0x26, 0xc4, 0x53, 0x69, 0x05, + 0x25, 0x13, 0x49, 0xa9, 0x22, 0x78, 0x7e, 0x52, 0x39, 0x1e, 0x4d, 0xe9, 0xc3, 0x2d, 0xb2, 0x28, + 0x30, 0xab, 0xc0, 0xc3, 0x3b, 0x5b, 0x3a, 0xb8, 0x7f, 0x77, 0x0b, 0xbd, 0x39, 0x83, 0xaa, 0x02, + 0x0f, 0xcc, 0xf3, 0x30, 0xa4, 0xc0, 0x8b, 0x94, 0xb0, 0xa5, 0x26, 0xc6, 0x4b, 0xcb, 0xdb, 0xb9, + 0xe3, 0xa2, 0x5c, 0xc6, 0x0c, 0x4e, 0x0b, 0xb3, 0xd6, 0x34, 0x25, 0xf9, 0xd5, 0x92, 0x56, 0x4e, + 0x9b, 0x92, 0xcf, 0x7f, 0x3c, 0x31, 0x95, 0x91, 0x23, 0xb2, 0xa9, 0xad, 0x8d, 0xf0, 0xdf, 0xcf, + 0x1c, 0xe6, 0xbd, 0x65, 0x47, 0xd9, 0x3b, 0x42, 0xff, 0xab, 0x36, 0x36, 0xf7, 0x1e, 0xeb, 0x84, + 0xd4, 0xd8, 0x9a, 0x77, 0x42, 0x6f, 0xac, 0x5a, 0xdd, 0x6a, 0xd9, 0xba, 0x35, 0xca, 0x86, 0xaf, + 0x5a, 0x48, 0x8c, 0x90, 0x58, 0x06, 0x7a, 0x14, 0x0d, 0x10, 0xcb, 0x89, 0xbd, 0xb1, 0x77, 0x7c, + 0xea, 0xae, 0x89, 0xdb, 0xc5, 0xe4, 0x44, 0xa2, 0x03, 0xb5, 0xe4, 0xa7, 0x58, 0x07, 0x5f, 0xd8, + 0xcf, 0xbd, 0x4a, 0x40, 0x67, 0xf3, 0x8a, 0xf7, 0x88, 0x2c, 0xf9, 0x3f, 0x5c, 0x58, 0x7c, 0x04, + 0x8b, 0x9a, 0x76, 0x7f, 0x4e, 0xcd, 0x20, 0x14, 0x33, 0x70, 0xdb, 0x35, 0x54, 0x4d, 0xe0, 0xb0, + 0xa9, 0xec, 0x6e, 0x34, 0xd2, 0xca, 0x01, 0x27, 0xaa, 0x03, 0x03, 0xa5, 0x3e, 0x49, 0x34, 0x91, + 0x7e, 0x80, 0x1c, 0x56, 0x85, 0x44, 0x52, 0xd2, 0x1e, 0x95, 0x7d, 0x4d, 0xbe, 0xcb, 0x20, 0xcf, + 0xcd, 0x77, 0x73, 0xba, 0xd7, 0xdd, 0x5f, 0xfd, 0x10, 0x81, 0x60, 0xb8, 0xdb, 0xce, 0x8c, 0x82, + 0x2c, 0xaa, 0x8f, 0x04, 0x30, 0x7b, 0x7f, 0x5e, 0x53, 0x64, 0xf2, 0xce, 0xfb, 0xea, 0x93, 0x3c, + 0xb3, 0xb4, 0x9d, 0xbb, 0x2e, 0xce, 0xe1, 0xb4, 0x52, 0x1b, 0x1f, 0x6c, 0x0a, 0x73, 0xc1, 0x38, + 0x17, 0x1f, 0x6d, 0x09, 0x31, 0xf7, 0x86, 0x2a, 0xee, 0xb9, 0x73, 0x18, 0x12, 0xc1, 0xb3, 0x2f, + 0xd6, 0xf0, 0xc7, 0xff, 0xdd, 0x8f, 0x25, 0x96, 0xa2, 0x3a, 0x96, 0xc2, 0x7a, 0x23, 0xcd, 0xd6, + 0xb1, 0x0d, 0x35, 0xc4, 0x64, 0x71, 0x4d, 0x4c, 0xca, 0x83, 0x87, 0xe7, 0x72, 0xe3, 0x4d, 0x97, + 0x93, 0xe5, 0x79, 0x87, 0x0d, 0x75, 0xbf, 0x05, 0x52, 0x03, 0x1f, 0xe0, 0x75, 0xa3, 0x82, 0xb1, + 0xc4, 0x11, 0xe5, 0xd2, 0xce, 0x90, 0x67, 0x59, 0x7c, 0xa1, 0x73, 0xd2, 0xe9, 0x37, 0x9c, 0x45, + 0xa5, 0xc5, 0x9d, 0x61, 0x84, 0x20, 0x41, 0x4f, 0xc5, 0xf8, 0x7c, 0xf1, 0x42, 0x7c, 0xeb, 0x9e, + 0xe2, 0xcc, 0x92, 0x16, 0x84, 0x02, 0x75, 0x7e, 0x41, 0xa9, 0x17, 0x1c, 0x6a, 0x7a, 0x3e, 0x02, + 0x80, 0x2a, 0x24, 0x63, 0x07, 0xdb, 0xb9, 0x73, 0x76, 0x17, 0xfb, 0x0f, 0xb0, 0x68, 0x16, 0x54, + 0x15, 0xac, 0x9a, 0x82, 0x45, 0x03, 0xab, 0xaa, 0xe0, 0xb2, 0x99, 0xa8, 0x8a, 0x24, 0xcb, 0xae, + 0x20, 0x25, 0x0c, 0xce, 0xd7, 0x78, 0xf8, 0xba, 0x3c, 0x4c, 0xb3, 0xef, 0xfe, 0xa9, 0x69, 0x2a, + 0x36, 0x4d, 0xb0, 0x78, 0x8d, 0x9f, 0x0f, 0x9a, 0x02, 0x5c, 0x59, 0xec, 0xeb, 0x23, 0x87, 0x2f, + 0x25, 0xac, 0xf3, 0x87, 0x59, 0x1f, 0x0d, 0xf3, 0xb3, 0x2b, 0x7d, 0x14, 0x78, 0xb4, 0x4c, 0x42, + 0x05, 0xa0, 0x34, 0xd7, 0x42, 0x6b, 0xc0, 0xe0, 0xa5, 0xe5, 0xed, 0x5c, 0x73, 0x8e, 0x87, 0x49, + 0x55, 0x0e, 0x1a, 0x3b, 0x74, 0x1a, 0x3b, 0x52, 0x3c, 0xfd, 0x49, 0x80, 0x39, 0x37, 0x8d, 0xe4, + 0xca, 0xf9, 0x65, 0x7c, 0xbd, 0x2b, 0xc8, 0xef, 0x9e, 0xa8, 0xa6, 0x69, 0x77, 0x07, 0x3f, 0xbd, + 0x24, 0x97, 0x2c, 0x87, 0xc2, 0xbf, 0xbd, 0xda, 0x4c, 0x5d, 0xb2, 0xe8, 0x12, 0xb5, 0x28, 0x5a, + 0xc4, 0x91, 0x00, 0x6e, 0x4b, 0x0e, 0xc3, 0xc7, 0x9d, 0xc9, 0xb6, 0x46, 0x0b, 0xbb, 0x9b, 0x4c, + 0x8c, 0xcc, 0x99, 0x62, 0x80, 0x03, 0x0c, 0xb0, 0x79, 0xb0, 0xd9, 0x74, 0xf0, 0x79, 0xdf, 0xaf, + 0x63, 0x2d, 0xc1, 0x3f, 0x0f, 0xa9, 0x6f, 0xb2, 0x54, 0x4e, 0x94, 0x99, 0x88, 0x34, 0x1e, 0x0d, + 0xb0, 0xf2, 0xa5, 0x27, 0x19, 0x51, 0xf3, 0x02, 0x43, 0x0b, 0x63, 0xc4, 0x92, 0xb0, 0xa2, 0xda, + 0x24, 0x10, 0x91, 0xfc, 0xd3, 0x34, 0x8d, 0x2c, 0x3b, 0x74, 0x84, 0x0c, 0xaa, 0x8a, 0xd2, 0x8d, + 0x76, 0x67, 0x8f, 0x72, 0x72, 0xce, 0x68, 0x57, 0x1f, 0x25, 0xb9, 0x9e, 0x10, 0x56, 0xf4, 0xa8, + 0xe0, 0x64, 0xea, 0xfe, 0x02, 0xaf, 0x4b, 0xe5, 0xbc, 0xb1, 0xee, 0x3e, 0x35, 0xdb, 0xde, 0xb6, + 0x9f, 0x65, 0xcf, 0xe1, 0xb7, 0x8b, 0x9b, 0xf0, 0x59, 0x55, 0x2e, 0xc8, 0xcb, 0xce, 0x3c, 0x00, + 0x3b, 0x3a, 0x63, 0xfc, 0xd7, 0x81, 0x06, 0x16, 0x5c, 0xe2, 0xe1, 0xe2, 0xc9, 0x59, 0x5d, 0x7d, + 0x89, 0x3d, 0x52, 0x4a, 0xf1, 0xa4, 0xc9, 0xcb, 0x2b, 0xfc, 0x8c, 0x29, 0x77, 0x30, 0x73, 0x5c, + 0x16, 0x9a, 0x92, 0x7e, 0xd0, 0xd6, 0x1f, 0x88, 0xf1, 0xe8, 0x7f, 0x4d, 0x66, 0xf6, 0xec, 0x12, + 0x3e, 0x58, 0x5a, 0xc7, 0x63, 0xbf, 0xda, 0xc1, 0x50, 0xb7, 0x60, 0x48, 0xbe, 0x85, 0x61, 0xc5, + 0x16, 0x4c, 0x09, 0x05, 0x1e, 0x85, 0x06, 0x23, 0x62, 0x15, 0x46, 0x5c, 0x48, 0xa1, 0xd0, 0xac, + 0x07, 0xf8, 0x78, 0xfd, 0x7e, 0xae, 0x9e, 0x57, 0xc5, 0xa0, 0x3c, 0x27, 0x4a, 0xd3, 0x77, 0xbf, + 0xdf, 0x0a, 0x27, 0x61, 0x29, 0xe7, 0x1d, 0xda, 0x62, 0x58, 0xc2, 0x1d, 0xed, 0x4d, 0xf5, 0x48, + 0xa9, 0x83, 0x90, 0x04, 0x5a, 0xeb, 0xf8, 0xf0, 0xf1, 0x9f, 0x32, 0xe9, 0xe8, 0x53, 0x54, 0xe5, + 0xc7, 0xa8, 0xf7, 0xc3, 0xc2, 0x2f, 0x0c, 0x96, 0xee, 0x34, 0x69, 0x0a, 0xa6, 0xdb, 0x76, 0xed, + 0x56, 0x68, 0xeb, 0x4c, 0x65, 0xaa, 0x4f, 0xc7, 0xd4, 0x7c, 0xbb, 0x35, 0xb3, 0x64, 0x17, 0x7d, + 0xb5, 0xdf, 0xec, 0x89, 0xfe, 0x67, 0xd4, 0x3e, 0x0c, 0x87, 0xae, 0x24, 0xc5, 0xe8, 0xc1, 0x36, + 0xee, 0xb9, 0x3c, 0x97, 0x87, 0x0f, 0xd4, 0xb1, 0xb2, 0xb5, 0x13, 0x45, 0x40, 0x75, 0x38, 0xc1, + 0xc3, 0xfb, 0xea, 0xb8, 0xe4, 0x22, 0x37, 0xb3, 0x26, 0x66, 0xd1, 0xa7, 0xe2, 0x2c, 0xd3, 0x24, + 0xb6, 0x2f, 0xaa, 0xa3, 0x44, 0x12, 0x06, 0x57, 0x9f, 0xe5, 0xc1, 0xda, 0x65, 0x36, 0xb9, 0x59, + 0x0a, 0xd3, 0x86, 0xd9, 0xa8, 0x6b, 0x88, 0xf1, 0xbf, 0xaf, 0xd5, 0xf2, 0xfb, 0x5f, 0x6c, 0xe7, + 0x27, 0x33, 0x3d, 0xfc, 0xfb, 0xfc, 0x3c, 0x92, 0x86, 0x49, 0x20, 0x62, 0xe2, 0xb0, 0x29, 0x94, + 0xe7, 0x6b, 0xe8, 0x46, 0x07, 0x86, 0x1e, 0x15, 0x60, 0x92, 0xa3, 0xba, 0xb8, 0xf6, 0xdc, 0x2a, + 0xce, 0x3e, 0xcd, 0x4b, 0x8e, 0x8b, 0x74, 0xc2, 0x47, 0xa8, 0xdf, 0x0f, 0x0b, 0x4e, 0xb7, 0xb0, + 0x94, 0x58, 0x85, 0xdd, 0xa3, 0xb4, 0xd5, 0xd7, 0x61, 0xe8, 0x49, 0x3a, 0x9a, 0x6a, 0xf9, 0xe2, + 0x77, 0x0f, 0x32, 0xdb, 0xb9, 0x02, 0x67, 0xb6, 0xc9, 0xa6, 0x43, 0x92, 0xf7, 0xb7, 0x98, 0x34, + 0x46, 0xd2, 0xd2, 0xfb, 0xc3, 0x8b, 0x04, 0x56, 0x55, 0xa0, 0x2a, 0x70, 0x28, 0xa8, 0x63, 0x4a, + 0x89, 0x22, 0x8e, 0x65, 0xfc, 0xa7, 0x41, 0x3c, 0xfe, 0x7c, 0xe3, 0xde, 0x85, 0x8c, 0xe3, 0x25, + 0x23, 0x7a, 0x9a, 0x09, 0x04, 0x53, 0x87, 0x3b, 0x78, 0xe0, 0xfa, 0x5c, 0x1e, 0x5d, 0x5c, 0xc7, + 0x06, 0xbf, 0x8f, 0x4d, 0xc1, 0x10, 0x17, 0x5c, 0xe8, 0xe2, 0x92, 0x29, 0xd9, 0x64, 0x06, 0x87, + 0xcb, 0x1e, 0xb6, 0x43, 0x73, 0x40, 0x67, 0xf5, 0x8e, 0x30, 0x3f, 0x99, 0x97, 0x87, 0xc3, 0xd6, + 0x8b, 0x87, 0xa4, 0xc1, 0x8d, 0x33, 0x72, 0x78, 0xf2, 0x4f, 0xfb, 0xd8, 0x53, 0x9f, 0xe4, 0xe9, + 0xdb, 0x8a, 0x29, 0xcd, 0xd1, 0x68, 0x0d, 0x19, 0x84, 0xe3, 0x26, 0xba, 0x99, 0xbe, 0x8e, 0x7c, + 0x8f, 0x05, 0xe3, 0xab, 0xec, 0xce, 0xa4, 0xe2, 0x49, 0xd9, 0x27, 0x36, 0xe0, 0x90, 0x09, 0xdc, + 0x4b, 0x17, 0x13, 0x79, 0x6b, 0x21, 0xcd, 0xdb, 0x77, 0x61, 0x4e, 0x76, 0xa3, 0x29, 0x3a, 0x90, + 0x1e, 0x36, 0xe6, 0x5b, 0x5e, 0xac, 0x62, 0x91, 0xf7, 0xa7, 0xd6, 0x44, 0xcf, 0x97, 0x7a, 0x0c, + 0xcb, 0x48, 0xaf, 0x6e, 0x19, 0x63, 0xfc, 0xb4, 0x75, 0x62, 0xc7, 0xfe, 0x01, 0x01, 0xb0, 0x8c, + 0x35, 0x1f, 0xb1, 0xcd, 0x6d, 0x8e, 0xd4, 0x2d, 0xf2, 0xe5, 0x6f, 0xfb, 0xeb, 0x7b, 0x34, 0x2d, + 0x79, 0x86, 0x8b, 0x8b, 0x76, 0xa2, 0x9b, 0xf0, 0xe1, 0x36, 0xc9, 0x47, 0xd5, 0x26, 0xba, 0x09, + 0x59, 0x16, 0xb8, 0x7e, 0xaa, 0xca, 0xe4, 0x72, 0x91, 0x96, 0x2c, 0x32, 0x05, 0x1d, 0x81, 0x14, + 0xa9, 0x14, 0xd8, 0xad, 0x64, 0x5a, 0x7c, 0x7b, 0x33, 0x22, 0x14, 0x21, 0x8f, 0x49, 0x35, 0x64, + 0x24, 0x96, 0x7a, 0x75, 0x59, 0x88, 0x5e, 0x71, 0x99, 0x3c, 0x4e, 0x2a, 0x71, 0xda, 0x08, 0x27, + 0x0f, 0xfd, 0x50, 0xe5, 0xad, 0x75, 0x01, 0xae, 0x9d, 0x99, 0xcd, 0xf4, 0x51, 0x2e, 0x84, 0x22, + 0x32, 0xd2, 0x1b, 0x5d, 0x62, 0xb4, 0xe8, 0x86, 0xe4, 0x9d, 0x75, 0x41, 0x16, 0x9c, 0xed, 0x21, + 0xdf, 0xa3, 0x22, 0x65, 0xcf, 0x7c, 0x07, 0x29, 0xc1, 0xeb, 0x56, 0x78, 0xe8, 0x9a, 0x42, 0x76, + 0xd4, 0xc6, 0xd8, 0x79, 0x24, 0x81, 0xd7, 0xad, 0xb2, 0xf3, 0x50, 0x1c, 0x7f, 0xd8, 0xa4, 0x35, + 0x68, 0x90, 0xd2, 0x25, 0x09, 0xdd, 0xc4, 0x58, 0xed, 0xce, 0x8e, 0x7e, 0xe1, 0xd3, 0xac, 0x7f, + 0xac, 0x43, 0x4a, 0x89, 0x36, 0xe5, 0x4c, 0xac, 0x33, 0x66, 0x92, 0xfa, 0xdd, 0x63, 0x52, 0x1b, + 0xff, 0xe2, 0x76, 0xeb, 0x2c, 0x0c, 0x6e, 0x07, 0xf7, 0xcf, 0x84, 0x1a, 0x7d, 0xae, 0xed, 0x91, + 0xe4, 0x76, 0xcb, 0x43, 0xf2, 0x50, 0x5c, 0x01, 0x89, 0x70, 0x06, 0xb1, 0x5e, 0xe7, 0x9d, 0x9e, + 0xf3, 0x69, 0xf6, 0x15, 0x1d, 0xe7, 0x77, 0xae, 0x3d, 0xe9, 0x00, 0xab, 0x96, 0x1c, 0x61, 0x55, + 0x0a, 0x39, 0xbc, 0x6b, 0x3b, 0xe1, 0x45, 0x77, 0x71, 0x41, 0xa5, 0x49, 0x22, 0x05, 0x4b, 0xbe, + 0xd2, 0xf9, 0xb2, 0x36, 0xfd, 0x9e, 0xaa, 0x5c, 0xc1, 0x35, 0x53, 0x54, 0x2a, 0xf2, 0x7a, 0x3a, + 0x27, 0x54, 0x91, 0x96, 0xe3, 0x5d, 0xb1, 0x3d, 0x84, 0xdb, 0xae, 0x1e, 0x6b, 0xa9, 0x12, 0x92, + 0x86, 0x20, 0x9a, 0x10, 0x24, 0x75, 0x83, 0x64, 0x4a, 0xcf, 0x24, 0x57, 0xfa, 0xce, 0x2a, 0x4b, + 0x73, 0x9b, 0x22, 0x09, 0x41, 0x3c, 0x95, 0x1e, 0xd5, 0x67, 0x76, 0x0d, 0xb3, 0xee, 0x06, 0x5e, + 0x76, 0xb5, 0x04, 0x19, 0x86, 0xe4, 0xf3, 0xea, 0x30, 0x9f, 0x55, 0x87, 0xbb, 0x2b, 0xc4, 0x24, + 0x75, 0x81, 0x61, 0x9a, 0x18, 0x86, 0x49, 0x30, 0xaa, 0x73, 0xfa, 0x70, 0x17, 0xe3, 0x2a, 0x6c, + 0x7d, 0x82, 0xae, 0xde, 0x9f, 0xc9, 0xaa, 0xc1, 0xd4, 0xe1, 0x0e, 0x84, 0x10, 0xec, 0xa9, 0x4b, + 0xf0, 0xda, 0x1a, 0x3f, 0xd9, 0x8a, 0xc1, 0xd6, 0x9d, 0xad, 0xac, 0xd9, 0x6b, 0xb2, 0xdd, 0x54, + 0x71, 0x5d, 0x5a, 0xb4, 0x43, 0x0a, 0x7b, 0x27, 0x42, 0x22, 0x34, 0x1f, 0xea, 0xe8, 0xf1, 0x90, + 0x95, 0x0d, 0x56, 0x2b, 0x8a, 0x53, 0x3a, 0x14, 0xbb, 0x2e, 0x7c, 0x4b, 0x7c, 0x5a, 0x72, 0x6f, + 0xf2, 0xc5, 0xe4, 0xf6, 0xd8, 0x4d, 0x6a, 0x9d, 0x54, 0xe6, 0x2f, 0xb8, 0x12, 0xaf, 0xd7, 0xcb, + 0x9b, 0x6f, 0xbe, 0x49, 0x78, 0x59, 0x5b, 0x81, 0x65, 0xa4, 0xfa, 0x44, 0xde, 0x16, 0xed, 0xfc, + 0xb6, 0x49, 0x7a, 0xf4, 0xa4, 0x02, 0x8c, 0xa2, 0x24, 0x0c, 0x33, 0xb2, 0x4c, 0xf3, 0xc6, 0xef, + 0x2e, 0xf1, 0x22, 0x34, 0x25, 0xad, 0x74, 0xd3, 0x16, 0x4e, 0xb7, 0xbf, 0xfe, 0xa0, 0x52, 0x70, + 0xc9, 0x78, 0x0d, 0x9f, 0xa3, 0x67, 0xaf, 0x4d, 0x99, 0x82, 0x2f, 0xf6, 0x9b, 0x04, 0xe3, 0x10, + 0xef, 0x08, 0x92, 0x54, 0xfa, 0xee, 0xa5, 0x19, 0x61, 0x50, 0x29, 0x51, 0x14, 0x81, 0x53, 0x55, + 0xf0, 0x68, 0x60, 0xd3, 0xcc, 0x9e, 0xe6, 0x74, 0x93, 0x2e, 0x2a, 0x8e, 0x40, 0x88, 0xb4, 0x64, + 0xb1, 0xa2, 0xa6, 0x55, 0x63, 0x15, 0x41, 0x3f, 0xe9, 0x61, 0xc9, 0xf1, 0xf4, 0xa6, 0xbb, 0xbf, + 0xd7, 0xbd, 0xeb, 0xaf, 0x3b, 0xac, 0x72, 0xe5, 0x99, 0x9e, 0x74, 0x5b, 0xce, 0x09, 0x4e, 0x6b, + 0xaa, 0x00, 0x7f, 0x44, 0xf2, 0xe9, 0xd7, 0x21, 0xde, 0x58, 0xe3, 0x67, 0x78, 0x3e, 0x9c, 0x37, + 0x42, 0xe5, 0x6f, 0x35, 0x26, 0x07, 0x07, 0xdb, 0xc9, 0xfe, 0x61, 0xd1, 0x36, 0xeb, 0x84, 0x8e, + 0x79, 0x6d, 0xd3, 0xf7, 0x05, 0xed, 0x3f, 0x82, 0x2c, 0x6b, 0x16, 0x0e, 0x87, 0x03, 0x5d, 0xd7, + 0x09, 0x85, 0x42, 0x48, 0xc5, 0xa1, 0x48, 0x33, 0x82, 0x12, 0x91, 0xe3, 0xf4, 0xb5, 0x5c, 0x2f, + 0x0f, 0xa1, 0x5e, 0x7e, 0xd5, 0x7c, 0x9e, 0x7c, 0xf2, 0x49, 0x1a, 0x1b, 0x1b, 0x59, 0xbd, 0x7a, + 0x35, 0x07, 0x0e, 0xd4, 0x10, 0x5b, 0xce, 0x24, 0xd5, 0x6b, 0x9b, 0x09, 0xfa, 0x87, 0x27, 0x15, + 0xe0, 0xe6, 0x91, 0x8d, 0x66, 0xde, 0x6a, 0xcb, 0xea, 0xd8, 0x04, 0xe3, 0x8e, 0xf6, 0x0e, 0xa1, + 0x55, 0xe6, 0x2b, 0x38, 0xac, 0x50, 0x98, 0x2d, 0x98, 0x30, 0x58, 0xe1, 0x9c, 0x61, 0x0a, 0x76, + 0xad, 0xa7, 0x51, 0xae, 0x23, 0x0a, 0xcb, 0x77, 0x19, 0x0c, 0xcd, 0x57, 0x98, 0x31, 0x3c, 0x2d, + 0x59, 0x20, 0x45, 0x2f, 0xad, 0x57, 0x29, 0xa0, 0x57, 0xe8, 0xd5, 0xa3, 0xf4, 0x4c, 0xd7, 0x1b, + 0xe5, 0x71, 0xb2, 0xc4, 0xc7, 0x23, 0x12, 0x1d, 0x83, 0x32, 0x3d, 0x53, 0xad, 0xbb, 0x7f, 0xad, + 0x27, 0xf2, 0x8e, 0x1b, 0x2a, 0xb3, 0xa7, 0xe6, 0xe0, 0xb2, 0x2b, 0x99, 0xd6, 0xa3, 0xf4, 0x76, + 0x91, 0x1e, 0x4d, 0xa0, 0x1b, 0x70, 0xa8, 0x39, 0xc5, 0xda, 0xdd, 0x61, 0x56, 0x6c, 0x0b, 0x83, + 0x2e, 0x99, 0x33, 0x4a, 0xa1, 0xc8, 0x03, 0xcb, 0x77, 0x4a, 0xd6, 0x0c, 0xc9, 0x35, 0xec, 0xf3, + 0xf5, 0x47, 0x6c, 0xb3, 0xeb, 0x5f, 0x68, 0x29, 0x4f, 0x74, 0x14, 0x1c, 0xb1, 0x2b, 0xa9, 0x5d, + 0xb6, 0x39, 0xee, 0x50, 0x96, 0xc5, 0x6e, 0xb7, 0x13, 0x8b, 0xc7, 0x68, 0xd7, 0xda, 0x4d, 0xa5, + 0x38, 0xf6, 0x65, 0xf2, 0x3d, 0xbb, 0xa1, 0xfb, 0x93, 0xd7, 0x24, 0x77, 0x25, 0xec, 0xaa, 0xaa, + 0x50, 0x51, 0x51, 0xce, 0xae, 0x5d, 0xbb, 0x78, 0xe1, 0x85, 0x17, 0x39, 0x78, 0xb0, 0x16, 0x21, + 0xc0, 0xd8, 0x22, 0x2c, 0x89, 0xf1, 0x8e, 0xab, 0xb2, 0x9f, 0x75, 0x7c, 0xd4, 0x79, 0x4f, 0x9b, + 0x71, 0xf2, 0x2c, 0x18, 0x88, 0x6d, 0xd1, 0xbf, 0x30, 0x73, 0x48, 0x76, 0xd4, 0x29, 0x1a, 0x08, + 0x34, 0x45, 0x32, 0x7b, 0xb4, 0x4a, 0x5e, 0x56, 0x7a, 0xb4, 0x6c, 0xb7, 0xb7, 0xdb, 0xdf, 0x2c, + 0x59, 0x7b, 0x40, 0x32, 0x6b, 0xb4, 0x4a, 0x89, 0x87, 0x0c, 0x6f, 0x4a, 0xf4, 0x9f, 0x9f, 0xd0, + 0xeb, 0xd0, 0xd2, 0x07, 0x6c, 0xd1, 0x77, 0xc6, 0x42, 0xf7, 0x74, 0xb6, 0xfe, 0x96, 0xd8, 0x87, + 0xc2, 0xdf, 0x3f, 0xeb, 0x29, 0x32, 0xb2, 0x3a, 0x19, 0x32, 0x1e, 0x80, 0xc7, 0xa9, 0x50, 0x55, + 0x6c, 0xcd, 0xb0, 0x1b, 0x44, 0xd7, 0xcf, 0xe3, 0x49, 0x93, 0x2d, 0x07, 0xe3, 0xac, 0xdc, 0x16, + 0x62, 0x6b, 0x4d, 0x82, 0x0a, 0x1f, 0x5c, 0x36, 0x5a, 0x50, 0xe6, 0x53, 0x68, 0x0b, 0xc3, 0xe2, + 0xcd, 0x26, 0x7b, 0x66, 0x69, 0x2d, 0xce, 0x0b, 0xf5, 0x5b, 0xd4, 0x41, 0xd6, 0x4f, 0x5a, 0xca, + 0x3b, 0xd2, 0x2c, 0xd5, 0xb0, 0x21, 0x64, 0x38, 0x5e, 0x50, 0xee, 0xad, 0x10, 0xd9, 0x59, 0x1e, + 0x9a, 0x9b, 0x1b, 0x69, 0x8a, 0x35, 0xa3, 0x66, 0x09, 0xc1, 0x69, 0x49, 0x9b, 0xf9, 0xb9, 0x9c, + 0x21, 0xdb, 0x4d, 0x0c, 0x43, 0xf0, 0xfc, 0xf3, 0xcf, 0xf3, 0xe2, 0x8b, 0x2f, 0x02, 0x82, 0xca, + 0xca, 0x4a, 0x24, 0x70, 0xa8, 0xfd, 0x08, 0x84, 0x4c, 0x64, 0xe0, 0x24, 0xef, 0xc1, 0x00, 0x76, + 0x6b, 0xa1, 0x40, 0x31, 0x68, 0x08, 0x74, 0xa4, 0x25, 0x81, 0x14, 0x28, 0xc8, 0xee, 0x29, 0x13, + 0x18, 0x26, 0x6c, 0xac, 0x95, 0xb4, 0x86, 0x24, 0x57, 0x4c, 0x56, 0xf0, 0xd8, 0xe9, 0x91, 0x6d, + 0x90, 0xb2, 0xe7, 0x75, 0x3f, 0x48, 0x8e, 0xb1, 0xcf, 0xde, 0x2f, 0x7a, 0xe9, 0x6b, 0x48, 0x64, + 0x9f, 0xc1, 0xbf, 0x19, 0x61, 0xef, 0x5e, 0x72, 0x4d, 0x99, 0x13, 0xba, 0xcc, 0x30, 0xc0, 0xfb, + 0xb8, 0xe0, 0x44, 0x22, 0x45, 0x43, 0x73, 0x84, 0xb2, 0x62, 0x17, 0x8a, 0x92, 0xa6, 0xfb, 0xac, + 0xdd, 0x13, 0x63, 0xe9, 0xc6, 0x20, 0x8a, 0x9e, 0x62, 0x54, 0xb1, 0xe0, 0x9c, 0x73, 0x15, 0xdc, + 0xf6, 0x74, 0x00, 0xb7, 0xa7, 0xc1, 0x64, 0xc9, 0x76, 0x95, 0xb6, 0x4b, 0x4b, 0xea, 0x1d, 0x53, + 0xe2, 0xb3, 0xda, 0xaf, 0x69, 0xae, 0xee, 0x57, 0x11, 0x47, 0x08, 0xc9, 0x90, 0xf2, 0x0a, 0xac, + 0x36, 0x0b, 0x7e, 0xbf, 0x9f, 0x60, 0x45, 0x7b, 0x14, 0x45, 0xdd, 0x9c, 0xfc, 0x52, 0xaa, 0xa9, + 0x3d, 0xb2, 0x92, 0x68, 0x5a, 0x86, 0x2d, 0x95, 0xd2, 0x99, 0x3b, 0x6f, 0x1e, 0x53, 0xa7, 0x9e, + 0x89, 0xdb, 0xed, 0x22, 0x95, 0xd2, 0x79, 0xf5, 0xbd, 0x97, 0x8d, 0x83, 0x13, 0xab, 0x37, 0xda, + 0x67, 0x0a, 0x33, 0xf4, 0x9f, 0x27, 0x19, 0x60, 0xd3, 0x57, 0x80, 0x74, 0xeb, 0xc2, 0x1f, 0xf5, + 0x93, 0x32, 0x05, 0x36, 0xa5, 0xc7, 0xd2, 0x22, 0x09, 0xc1, 0xca, 0x6a, 0x83, 0x12, 0x1f, 0xcc, + 0x19, 0xa7, 0xa4, 0x5d, 0x72, 0xa6, 0xa1, 0x5d, 0x66, 0x5c, 0x20, 0xc7, 0xaf, 0x1f, 0x1d, 0x73, + 0x4e, 0xed, 0xb1, 0x3a, 0x71, 0x8c, 0x6e, 0x55, 0x4f, 0x5c, 0x24, 0x7a, 0x3f, 0x03, 0x7d, 0x9b, + 0x7b, 0x65, 0xcf, 0xdf, 0xec, 0xff, 0x5f, 0x9b, 0x9a, 0x02, 0xc4, 0x63, 0x29, 0xf2, 0xf2, 0x9c, + 0xac, 0xdb, 0x1d, 0x25, 0x1c, 0x88, 0x70, 0xe9, 0x48, 0xd2, 0xa2, 0xaa, 0xa2, 0x5b, 0xb2, 0x18, + 0x36, 0x1c, 0x34, 0xf9, 0xcb, 0x51, 0x64, 0xe2, 0x1e, 0x65, 0x95, 0xe3, 0xa2, 0xc4, 0xaf, 0x44, + 0xa9, 0xba, 0xfb, 0xd8, 0x72, 0xaa, 0x81, 0x4d, 0xe6, 0x52, 0x5a, 0x54, 0xca, 0xe7, 0x9f, 0x7d, + 0xce, 0xdb, 0x6f, 0xbf, 0xcd, 0x81, 0x8d, 0x47, 0xb3, 0xc4, 0x01, 0xf7, 0x72, 0xeb, 0x28, 0xf3, + 0x97, 0x52, 0xed, 0x48, 0xfb, 0x20, 0x45, 0xe1, 0xa2, 0x8b, 0xe7, 0x30, 0x73, 0xe6, 0x2c, 0x94, + 0xae, 0x73, 0x5b, 0x5b, 0x7b, 0x3b, 0x2d, 0x55, 0x2d, 0x86, 0x65, 0x0c, 0xd5, 0x2d, 0xc3, 0x62, + 0xf2, 0xa4, 0x5b, 0xb0, 0x71, 0xf4, 0x70, 0x9b, 0x0c, 0xa5, 0x16, 0x77, 0x98, 0xe6, 0x8f, 0xa2, + 0x09, 0xd1, 0x35, 0xba, 0x55, 0xd2, 0xd4, 0x29, 0x59, 0xbd, 0xd7, 0xe4, 0x9c, 0x4a, 0x41, 0x59, + 0x8e, 0xe8, 0xb3, 0x77, 0x8a, 0xae, 0xe4, 0x85, 0x00, 0x5a, 0x3a, 0xa1, 0x25, 0x0c, 0xa3, 0x8b, + 0x7b, 0x13, 0xc0, 0xe4, 0x31, 0x20, 0xc4, 0x52, 0xe0, 0x8f, 0x0a, 0x4a, 0xb2, 0xe5, 0x71, 0xf7, + 0x62, 0xd1, 0xab, 0xd4, 0xd7, 0x2d, 0xb0, 0x21, 0xfb, 0x47, 0xdd, 0xa2, 0xe7, 0xb5, 0xa0, 0x97, + 0xea, 0x4e, 0x97, 0xab, 0x0f, 0xf8, 0xa3, 0xf8, 0xfd, 0x11, 0x0a, 0x2c, 0x82, 0xc2, 0x7c, 0xfa, + 0x1c, 0x93, 0x92, 0x86, 0x60, 0xd5, 0x2e, 0x83, 0xa5, 0xc1, 0x3c, 0xe9, 0xb8, 0x2a, 0xfb, 0x35, + 0x6b, 0x9e, 0xff, 0xf6, 0xf6, 0x33, 0x9b, 0x8e, 0xdb, 0xe0, 0x6e, 0xc6, 0x54, 0xe2, 0xf1, 0x88, + 0xfc, 0xfd, 0x73, 0x4f, 0x50, 0xbf, 0xa7, 0x8e, 0x50, 0x28, 0x3d, 0x13, 0x92, 0xad, 0x91, 0xfc, + 0xe4, 0x48, 0xeb, 0x53, 0x66, 0x58, 0x13, 0x48, 0x9d, 0xaa, 0xaa, 0x2a, 0xce, 0x3e, 0xfb, 0x07, + 0x19, 0x70, 0xa5, 0x94, 0x7c, 0xbd, 0x6b, 0x3b, 0xb1, 0x71, 0x72, 0xab, 0xc5, 0x63, 0xdb, 0xd8, + 0x9b, 0x75, 0xa8, 0x9c, 0x2c, 0x80, 0x9d, 0x57, 0x25, 0x70, 0x5c, 0x61, 0x98, 0xb1, 0x42, 0x08, + 0x25, 0xd2, 0xc1, 0x49, 0x75, 0x03, 0x6c, 0xaa, 0x95, 0x5c, 0x32, 0x56, 0x49, 0x83, 0xdb, 0x9f, + 0xaf, 0xd4, 0xf5, 0x2d, 0x7f, 0x0c, 0x3e, 0xde, 0x69, 0x50, 0xe2, 0xe9, 0xd7, 0x22, 0x93, 0x51, + 0x49, 0xe9, 0x81, 0xb0, 0xb6, 0x95, 0x74, 0x21, 0xbf, 0xff, 0xc4, 0x36, 0xd9, 0x93, 0xac, 0xe8, + 0xd1, 0x55, 0x93, 0xfd, 0xea, 0xbb, 0x3d, 0xf4, 0x93, 0xcc, 0xf9, 0xb7, 0x3b, 0x21, 0xd2, 0x27, + 0xcb, 0x22, 0x33, 0x0f, 0x59, 0xf7, 0xd6, 0xa1, 0x08, 0x88, 0xa5, 0x04, 0xef, 0x6d, 0xd1, 0x79, + 0x5f, 0x58, 0x22, 0xb6, 0xf3, 0x6d, 0x37, 0xca, 0xb2, 0x9c, 0xdb, 0x03, 0xf7, 0xb5, 0x9d, 0x90, + 0xbd, 0x60, 0xd6, 0xda, 0xbc, 0xb1, 0xcd, 0xe2, 0xc2, 0x3d, 0x5b, 0xf6, 0x10, 0x0a, 0x45, 0xba, + 0xe0, 0x49, 0x27, 0x4e, 0x8c, 0xdd, 0x29, 0x45, 0x1e, 0x35, 0x84, 0xa6, 0x69, 0xcc, 0x98, 0x71, + 0x2e, 0x1e, 0xaf, 0x27, 0x73, 0xed, 0xf5, 0xf5, 0x75, 0x6c, 0xb0, 0x7d, 0x15, 0x52, 0xb3, 0x93, + 0x57, 0xb7, 0x8c, 0x0d, 0x46, 0x4e, 0xfa, 0x39, 0x38, 0x1d, 0xa1, 0x24, 0x20, 0x5b, 0x10, 0xd3, + 0xa0, 0x3e, 0x00, 0xb5, 0x6d, 0x26, 0x1e, 0x7b, 0x1a, 0xdc, 0xde, 0xd9, 0xa2, 0xbe, 0x99, 0x08, + 0xe8, 0x8c, 0xc3, 0x07, 0xdb, 0x0c, 0xc6, 0x95, 0x29, 0xe4, 0x38, 0x65, 0x9f, 0x6a, 0x4f, 0x6f, + 0x6e, 0xb3, 0x44, 0x92, 0x34, 0x04, 0xbb, 0x9b, 0x0c, 0x66, 0x8f, 0x52, 0xb0, 0x28, 0xbd, 0x03, + 0xae, 0x1e, 0x01, 0x97, 0x3e, 0xb0, 0xf6, 0x8a, 0xb8, 0xa5, 0x14, 0x98, 0x08, 0x0c, 0x03, 0x74, + 0xb3, 0x97, 0xc6, 0x75, 0xaf, 0xcf, 0xa4, 0x4b, 0x85, 0x84, 0x2e, 0x48, 0xa6, 0x4c, 0x4c, 0xba, + 0xf4, 0xbf, 0xba, 0x74, 0xc0, 0x12, 0x86, 0xe4, 0xaf, 0xd5, 0x92, 0xed, 0x65, 0x55, 0x09, 0x57, + 0x95, 0xbc, 0xb2, 0xf3, 0xd5, 0xfd, 0xcb, 0xe1, 0xc8, 0x09, 0x6f, 0x47, 0x61, 0x75, 0x91, 0x25, + 0xb1, 0xc1, 0xb3, 0x30, 0xf9, 0xfe, 0xc1, 0x92, 0x13, 0x8f, 0x53, 0x92, 0x8c, 0x1b, 0x37, 0x9e, + 0x31, 0x63, 0xc7, 0x65, 0x1e, 0xce, 0x48, 0x38, 0xcc, 0x8a, 0xa3, 0x9f, 0xe8, 0xd1, 0x69, 0xfe, + 0x3b, 0xb4, 0xfc, 0xac, 0xa3, 0xd0, 0xca, 0x80, 0x00, 0x58, 0x0a, 0xd5, 0x54, 0xda, 0x3d, 0x2b, + 0xc8, 0x8f, 0xfd, 0xf0, 0xfd, 0xb5, 0x71, 0x6d, 0xfe, 0x24, 0x85, 0x92, 0x1c, 0x95, 0x23, 0x7e, + 0x41, 0x4a, 0x37, 0x30, 0xe5, 0xb1, 0xf9, 0x09, 0x29, 0x61, 0xdb, 0x51, 0x89, 0xdb, 0x26, 0x18, + 0x5b, 0x2a, 0xfa, 0x64, 0x25, 0xa4, 0x90, 0x7d, 0xe4, 0x41, 0x01, 0x8e, 0xfa, 0x25, 0xbb, 0x1a, + 0x4c, 0xa2, 0xc9, 0x74, 0x92, 0x24, 0xe3, 0xbc, 0x45, 0x7a, 0x0c, 0x52, 0x2c, 0x95, 0x16, 0x35, + 0x49, 0xa4, 0xcc, 0xbe, 0xec, 0x0a, 0x09, 0x98, 0x0a, 0x09, 0x1d, 0x62, 0x09, 0x41, 0x2c, 0x69, + 0x62, 0xf6, 0xe7, 0xa6, 0xa0, 0x02, 0x56, 0x4c, 0x6c, 0xc4, 0x32, 0x4e, 0xbe, 0xfb, 0xc9, 0xb4, + 0xa0, 0xfa, 0x2c, 0x38, 0x7e, 0x1c, 0x89, 0x38, 0xc6, 0x2b, 0x37, 0xa9, 0x53, 0xcd, 0x95, 0x2c, + 0xfa, 0x86, 0x2d, 0x2b, 0x10, 0xd0, 0x8c, 0x76, 0x7d, 0x92, 0xac, 0x33, 0x4f, 0x20, 0x17, 0x20, + 0x29, 0x28, 0x28, 0xe0, 0xe2, 0x39, 0x97, 0x64, 0x24, 0xa7, 0xe2, 0xf1, 0x38, 0xab, 0xf6, 0xad, + 0x48, 0xec, 0x39, 0x7d, 0xe3, 0x9d, 0xda, 0x10, 0xe3, 0xcf, 0x4d, 0xb3, 0xdb, 0xe5, 0x80, 0x48, + 0x55, 0x02, 0x34, 0xe7, 0xeb, 0x32, 0x7f, 0x7b, 0x7b, 0xa3, 0x72, 0x9a, 0x90, 0x81, 0x0d, 0xb0, + 0x68, 0x87, 0x41, 0xc2, 0x30, 0x7b, 0x5c, 0x65, 0xff, 0xee, 0x8c, 0xa4, 0x02, 0xba, 0x64, 0x4a, + 0x19, 0x5c, 0x77, 0x86, 0x8a, 0xa6, 0x91, 0xd1, 0xca, 0x92, 0x82, 0x63, 0x4c, 0xdd, 0x30, 0x25, + 0x3b, 0x1b, 0x25, 0xfe, 0x2b, 0x7d, 0x44, 0xc7, 0x58, 0xb0, 0xaa, 0x56, 0x54, 0xc5, 0x4a, 0x20, + 0xca, 0xb1, 0x60, 0x49, 0x01, 0x42, 0xc5, 0xa2, 0xb8, 0xc9, 0x72, 0x78, 0xb0, 0xbb, 0x95, 0xb6, + 0xa6, 0xf6, 0x2f, 0x16, 0x49, 0x12, 0x26, 0xc7, 0xf0, 0x14, 0xb5, 0xae, 0x78, 0xcc, 0x49, 0x96, + 0xdd, 0x83, 0xcd, 0xe6, 0xa6, 0x23, 0x98, 0xfe, 0x9b, 0xa2, 0x6b, 0x20, 0xad, 0x2a, 0x1c, 0x38, + 0x8b, 0x6c, 0x09, 0xbd, 0xe4, 0xe0, 0xab, 0x2d, 0xe7, 0xee, 0xa9, 0xf9, 0x56, 0x31, 0x89, 0x8c, + 0x93, 0x92, 0x89, 0x13, 0x9e, 0xd1, 0x55, 0x55, 0x65, 0xea, 0x19, 0xd3, 0xc8, 0xcb, 0xcb, 0x07, + 0x24, 0x81, 0x40, 0x80, 0x4f, 0xf6, 0x7f, 0xa4, 0x6f, 0x19, 0xff, 0xf9, 0x6d, 0x66, 0x99, 0xf1, + 0x7a, 0xfb, 0xec, 0xe3, 0x17, 0xc4, 0x4f, 0x9e, 0x8b, 0x06, 0x84, 0x43, 0xac, 0x73, 0xdf, 0x2a, + 0xe7, 0xc9, 0x9b, 0xf0, 0x09, 0x20, 0xeb, 0x44, 0x9d, 0x19, 0xaa, 0x3a, 0x34, 0xf2, 0xb6, 0xe3, + 0xe7, 0x65, 0x2f, 0x44, 0xb5, 0x2b, 0x26, 0x6b, 0x78, 0x1c, 0x32, 0x13, 0xf9, 0xf6, 0xd2, 0xa0, + 0xcd, 0xb4, 0xf9, 0x48, 0x29, 0x69, 0x0b, 0x4b, 0x76, 0x58, 0xdd, 0x52, 0x9d, 0xa9, 0x3e, 0x64, + 0x1d, 0x1f, 0x7d, 0x4a, 0xd3, 0xd2, 0x7c, 0x22, 0x7b, 0x67, 0xff, 0xc8, 0xbb, 0x1b, 0x60, 0x05, + 0x55, 0x8d, 0xa2, 0xb9, 0x02, 0x68, 0x3e, 0xcd, 0x0c, 0xe5, 0xc5, 0xe3, 0xc7, 0xb3, 0xa2, 0x0c, + 0x6d, 0x8b, 0x24, 0x21, 0x02, 0x27, 0xbc, 0xb6, 0xc0, 0xdf, 0x5b, 0xf5, 0xd1, 0xec, 0x58, 0x14, + 0xbb, 0x1e, 0x17, 0x9d, 0xc7, 0xfc, 0xcf, 0x9c, 0x9c, 0x1c, 0x6e, 0xbe, 0xe5, 0xc7, 0x04, 0x03, + 0x41, 0x16, 0xff, 0xf9, 0x0d, 0x5c, 0x59, 0x6e, 0x9a, 0xa7, 0xb4, 0x76, 0xd6, 0x5d, 0x5a, 0x77, + 0x2f, 0x91, 0xa2, 0xd7, 0x43, 0x73, 0x8f, 0xc8, 0x01, 0x55, 0x4d, 0xea, 0x5e, 0x2d, 0xc3, 0xa5, + 0x0e, 0x7c, 0xfc, 0x4d, 0xef, 0xf3, 0xbd, 0x69, 0x1f, 0x66, 0xee, 0x35, 0xef, 0xcd, 0x75, 0x89, + 0x42, 0x8f, 0x43, 0xf6, 0x3d, 0x16, 0xf5, 0xc9, 0x32, 0xf5, 0xec, 0xaf, 0xfb, 0x9a, 0x21, 0x78, + 0x91, 0x92, 0xb0, 0x0d, 0x15, 0xef, 0x36, 0x8c, 0x0e, 0x45, 0x19, 0xe0, 0x4b, 0x94, 0xa9, 0x71, + 0x4b, 0x85, 0xf2, 0x8a, 0x3a, 0xce, 0xf6, 0x0b, 0xe3, 0xab, 0xb8, 0xe8, 0x7d, 0x8d, 0x76, 0x87, + 0x9d, 0x68, 0x34, 0xc6, 0xe8, 0xb1, 0x63, 0x19, 0x36, 0x7c, 0x38, 0xcf, 0xfe, 0xed, 0xd9, 0x44, + 0x74, 0x66, 0xfb, 0x75, 0x81, 0x0b, 0x82, 0x1f, 0x0d, 0xc8, 0x7a, 0xf0, 0xdf, 0x1d, 0x8f, 0x79, + 0x73, 0x6a, 0xb2, 0xce, 0x72, 0x2c, 0xda, 0x9a, 0x25, 0xcc, 0x15, 0xbb, 0x4c, 0xa2, 0xc9, 0x5e, + 0xf9, 0x2b, 0xd9, 0xbf, 0xba, 0x2b, 0x89, 0x26, 0x04, 0x9b, 0x3a, 0x04, 0x46, 0x96, 0x5c, 0x2c, + 0xcd, 0xc4, 0xfe, 0xef, 0xc3, 0x35, 0xb6, 0x94, 0x46, 0xa4, 0x3a, 0x3e, 0xf4, 0xb4, 0xfb, 0xdf, + 0x52, 0xab, 0xd4, 0x49, 0xe9, 0x0e, 0x2c, 0xa7, 0xd3, 0xc1, 0xb5, 0xd7, 0xdd, 0xc0, 0x3f, 0xff, + 0xcb, 0x03, 0xf8, 0x72, 0x7c, 0x6c, 0xf8, 0xdb, 0x7a, 0x96, 0x2d, 0xfb, 0x90, 0xce, 0xd1, 0x4d, + 0x21, 0xa3, 0x33, 0xb4, 0xe6, 0x5b, 0x15, 0x76, 0xbe, 0x0f, 0x17, 0x1f, 0xf8, 0x53, 0xa7, 0xb4, + 0xdd, 0x1c, 0x5b, 0xcd, 0x10, 0x35, 0x77, 0xd7, 0x4e, 0xe5, 0xf4, 0xba, 0xdd, 0xa6, 0xf0, 0x3a, + 0xc1, 0xeb, 0x50, 0x8e, 0xe9, 0x6e, 0x14, 0xc0, 0xee, 0x46, 0x58, 0x33, 0x4a, 0xa4, 0x2c, 0x17, + 0x1b, 0x0f, 0xb6, 0xcf, 0x88, 0x7c, 0x2f, 0x00, 0x06, 0x88, 0x3e, 0x6d, 0x26, 0xbc, 0x4f, 0x5a, + 0x57, 0x0a, 0x9f, 0xfd, 0x3c, 0x65, 0x9b, 0x5a, 0x72, 0xdd, 0xe5, 0xd7, 0x33, 0x7d, 0xfa, 0xd9, + 0x38, 0x1c, 0x0e, 0x72, 0x73, 0x72, 0x29, 0x2e, 0x29, 0xa1, 0x39, 0xd0, 0x24, 0x6b, 0x4b, 0x8e, + 0x3e, 0x26, 0x85, 0x58, 0x9d, 0xf8, 0xf0, 0x9b, 0xfb, 0xb4, 0xb4, 0x81, 0x72, 0x71, 0x45, 0x87, + 0xb3, 0xcb, 0x53, 0x2b, 0xbd, 0xb3, 0x13, 0xed, 0x81, 0x99, 0x7a, 0xad, 0x36, 0x4c, 0x78, 0xec, + 0x86, 0xfd, 0x6c, 0xe3, 0x41, 0xff, 0x65, 0xcd, 0xab, 0x00, 0xfc, 0xd7, 0xa0, 0xe7, 0xbc, 0x9f, + 0xf5, 0xaf, 0xca, 0x9d, 0xc2, 0xa8, 0xfe, 0x4b, 0xf0, 0xbe, 0x1d, 0xab, 0x74, 0x65, 0x42, 0xb1, + 0xc2, 0xe8, 0x12, 0x41, 0x79, 0xae, 0x42, 0xb6, 0x1d, 0x9c, 0xb6, 0xb4, 0x5d, 0x6f, 0x6e, 0x00, + 0x39, 0xc3, 0x57, 0xad, 0xe6, 0xc5, 0x36, 0x7e, 0x1b, 0xa9, 0xa1, 0x81, 0xb4, 0x9a, 0x07, 0xc7, + 0x9b, 0x5c, 0xf7, 0x26, 0x16, 0xe6, 0x66, 0x95, 0x4d, 0x2c, 0x2b, 0x1b, 0xac, 0x68, 0x9a, 0x46, + 0x24, 0x12, 0xe6, 0x60, 0x4d, 0x0d, 0x6b, 0xcd, 0x2f, 0xa9, 0x59, 0xb0, 0xef, 0x25, 0xbb, 0xee, + 0x79, 0xa2, 0x79, 0x41, 0xc7, 0xb7, 0xe2, 0x2b, 0x9d, 0x74, 0x80, 0xf3, 0xbf, 0xf2, 0x0a, 0x33, + 0x68, 0x5e, 0xd3, 0xf9, 0x8c, 0xf9, 0xcb, 0xc4, 0xf2, 0x8e, 0x2a, 0x63, 0x7f, 0x14, 0xe2, 0xa0, + 0x4c, 0x53, 0x74, 0xad, 0x54, 0xf6, 0x21, 0x0e, 0x8b, 0xbc, 0x90, 0x41, 0x93, 0x08, 0x0c, 0x8e, + 0x6b, 0xdc, 0xf7, 0xfb, 0xb1, 0xec, 0xde, 0x13, 0xe4, 0xbd, 0xf7, 0x8f, 0xd2, 0xb2, 0xc3, 0xc0, + 0xe6, 0x93, 0xe4, 0x58, 0x05, 0xc2, 0x6a, 0x23, 0x70, 0xae, 0xad, 0x5d, 0x2b, 0x10, 0x37, 0xb7, + 0x4d, 0xe8, 0x0c, 0xf0, 0x3d, 0x5c, 0xd6, 0x39, 0x1e, 0xa3, 0xa5, 0xcd, 0x48, 0xbd, 0xf0, 0xc6, + 0xab, 0xb6, 0xa2, 0x5c, 0x1f, 0x81, 0xec, 0xa0, 0xde, 0x79, 0x45, 0xac, 0xd1, 0x32, 0x2e, 0x76, + 0x93, 0x63, 0xb8, 0xfe, 0x45, 0x63, 0xde, 0x91, 0x6f, 0xcd, 0x70, 0x38, 0xe9, 0x00, 0x27, 0x57, + 0xdb, 0x5d, 0xda, 0x6e, 0xeb, 0x73, 0xa9, 0x57, 0x9b, 0x7c, 0x86, 0x4c, 0xf5, 0x04, 0x4f, 0xa6, + 0x55, 0xa8, 0x6e, 0xb5, 0xb0, 0xa8, 0x26, 0x22, 0x9a, 0x2a, 0xd3, 0x07, 0x1b, 0x85, 0xdc, 0x71, + 0xfa, 0x8e, 0xd8, 0x2d, 0x57, 0x9f, 0x55, 0xa4, 0xdc, 0x7a, 0xcb, 0x10, 0x0e, 0x1f, 0x8e, 0xb2, + 0xf3, 0x60, 0x98, 0xc4, 0x34, 0xf7, 0x72, 0x3d, 0x7a, 0xf4, 0x99, 0xa0, 0xd4, 0x0d, 0x25, 0xd7, + 0x89, 0xeb, 0xfa, 0xc4, 0x81, 0xd6, 0xca, 0xa6, 0x03, 0x7c, 0x4f, 0x97, 0x7f, 0x4e, 0xe0, 0xa5, + 0xfc, 0x75, 0x9e, 0x35, 0xb1, 0x0f, 0xec, 0x43, 0x0f, 0xd2, 0x89, 0x63, 0x41, 0xb0, 0x3e, 0x30, + 0xb9, 0xf5, 0xeb, 0xef, 0xe5, 0xc5, 0xe4, 0xde, 0x56, 0xe6, 0x1c, 0x7b, 0xf5, 0x19, 0x6d, 0xe5, + 0x15, 0x15, 0x5d, 0xc9, 0x62, 0x25, 0xfd, 0x35, 0x5b, 0x95, 0xae, 0x5f, 0xe6, 0xed, 0xca, 0xdb, + 0xec, 0x2b, 0x00, 0xc8, 0xaf, 0xb6, 0x5b, 0xb2, 0x5f, 0x2e, 0x5c, 0x7a, 0xce, 0x8c, 0x22, 0xb9, + 0xaf, 0x7a, 0x8e, 0x0c, 0xb5, 0xcd, 0x97, 0x3f, 0x7f, 0x68, 0xa4, 0xcc, 0xfe, 0xcf, 0xac, 0xa6, + 0x82, 0x65, 0x22, 0x97, 0x53, 0x6b, 0xe0, 0x44, 0xd1, 0x83, 0x12, 0x0e, 0x51, 0xb0, 0xc5, 0x3b, + 0xdc, 0xf7, 0x7a, 0xe1, 0x2b, 0x91, 0xec, 0xb6, 0xda, 0x9d, 0x5b, 0x36, 0xe6, 0x1e, 0x3e, 0x74, + 0x18, 0x90, 0xd8, 0x6c, 0x96, 0x74, 0x9e, 0x35, 0xa4, 0x60, 0x49, 0x65, 0x57, 0xaa, 0x8a, 0x25, + 0xa7, 0x54, 0x22, 0xe4, 0xda, 0x41, 0x17, 0x3a, 0xdf, 0x4e, 0x9d, 0x77, 0xdf, 0x5d, 0x43, 0x29, + 0x2f, 0x73, 0xb2, 0x71, 0xb3, 0x9f, 0xd7, 0xaa, 0xeb, 0x52, 0xca, 0x30, 0xe3, 0xfa, 0x96, 0x4b, + 0x64, 0xfb, 0x29, 0x28, 0x07, 0xc8, 0xca, 0xdb, 0xe3, 0x72, 0x7b, 0xff, 0xe2, 0x7a, 0xd8, 0xf9, + 0xcf, 0xb9, 0x49, 0x61, 0xb3, 0x77, 0x59, 0x6d, 0xda, 0x72, 0x67, 0xce, 0x9c, 0x29, 0xd7, 0xaf, + 0x5f, 0x2f, 0x97, 0x2e, 0x5b, 0x26, 0x2b, 0xcf, 0xae, 0x32, 0xdd, 0x4f, 0xfb, 0x16, 0xe5, 0x6c, + 0xf5, 0xb9, 0x8a, 0xf6, 0x59, 0x72, 0x7d, 0x8f, 0x79, 0x76, 0xde, 0x7f, 0x5f, 0xa5, 0x0c, 0xb6, + 0xcc, 0x97, 0x8d, 0x47, 0xe6, 0xca, 0x6b, 0x7f, 0x58, 0x26, 0x3d, 0x8b, 0xac, 0x6f, 0xe7, 0x6d, + 0x77, 0xd8, 0x4f, 0xdd, 0xd5, 0x01, 0xb2, 0x07, 0xe7, 0x6d, 0xc4, 0x99, 0x5c, 0x97, 0x78, 0x37, + 0xb2, 0x50, 0xbd, 0xc0, 0x58, 0xdb, 0xd1, 0x2f, 0x05, 0x08, 0x5e, 0xaf, 0x97, 0x11, 0x15, 0xe5, + 0xc4, 0x12, 0x21, 0x46, 0x8c, 0xf1, 0xa4, 0x22, 0x53, 0xda, 0x96, 0xc4, 0xf7, 0x64, 0xc7, 0x22, + 0x2d, 0xb6, 0xc7, 0xc6, 0xae, 0x4d, 0x8e, 0xbe, 0xf7, 0x77, 0xc3, 0xb1, 0xd9, 0x15, 0x5e, 0x7f, + 0xeb, 0x10, 0x7f, 0x1d, 0xdc, 0x5e, 0x6f, 0x19, 0x6f, 0x3c, 0xd8, 0x36, 0x3e, 0x19, 0x3f, 0x05, + 0xe3, 0x00, 0x70, 0xd1, 0xc5, 0x1b, 0x73, 0x35, 0xb9, 0x3f, 0xff, 0xf5, 0xc8, 0x1f, 0xc4, 0x05, + 0xc6, 0xda, 0x5e, 0xe7, 0x37, 0x45, 0xe0, 0xbc, 0x22, 0x2b, 0x91, 0xfd, 0x9b, 0xe2, 0x50, 0x43, + 0x6c, 0x2f, 0x6d, 0x8b, 0x9e, 0xc3, 0xd5, 0x58, 0xc7, 0x48, 0x31, 0xca, 0x22, 0xeb, 0x5d, 0xb3, + 0x85, 0x2d, 0x7a, 0x77, 0xd6, 0xfa, 0xd0, 0xdd, 0x0f, 0xde, 0x36, 0x9a, 0x21, 0x83, 0x9c, 0xec, + 0xaa, 0x0e, 0xf2, 0xca, 0xfa, 0xc3, 0x86, 0x9c, 0x6d, 0x3c, 0xa7, 0xe6, 0xaa, 0x07, 0x4e, 0x41, + 0x38, 0x40, 0x2c, 0x38, 0x11, 0x4e, 0x4c, 0x89, 0xac, 0xd2, 0x2e, 0x30, 0xb6, 0x19, 0x68, 0x9a, + 0xca, 0x75, 0xd7, 0x5d, 0x4b, 0x5b, 0x5b, 0x1b, 0x9f, 0x6c, 0x5e, 0x8e, 0x7a, 0x81, 0xbe, 0xd4, + 0x3e, 0xa7, 0xf3, 0xff, 0x76, 0x1e, 0xf2, 0xbe, 0xbb, 0xa3, 0x70, 0x7c, 0x7e, 0xb3, 0x6b, 0x1c, + 0x81, 0x9c, 0x98, 0x30, 0x0e, 0xaf, 0x3c, 0xdf, 0xa8, 0x4e, 0x5d, 0xfb, 0x93, 0x49, 0x95, 0xda, + 0xcc, 0x1f, 0xe4, 0x13, 0x0a, 0xeb, 0xbc, 0xf8, 0x6a, 0x2d, 0x07, 0x66, 0x18, 0x4b, 0xd5, 0xb0, + 0xe3, 0xb7, 0x6d, 0x65, 0x41, 0xf3, 0x14, 0x84, 0x03, 0xc4, 0x82, 0xcd, 0x70, 0xc4, 0x65, 0x84, + 0x3b, 0x6d, 0x98, 0x92, 0x29, 0x53, 0x26, 0xf3, 0xc8, 0x23, 0x8f, 0xf0, 0x4f, 0x37, 0xde, 0x88, + 0xdd, 0x6e, 0x97, 0x7a, 0x5d, 0x74, 0x83, 0xd9, 0x60, 0xdd, 0xd2, 0x38, 0x3c, 0xd0, 0xb9, 0xb1, + 0x29, 0xcc, 0xb4, 0x4a, 0x2b, 0x23, 0x73, 0x93, 0xa4, 0x9e, 0x8e, 0x8f, 0xbc, 0xd5, 0x53, 0x90, + 0x7b, 0xcb, 0x8d, 0x43, 0xd0, 0x54, 0xc1, 0x5b, 0xef, 0x1e, 0xe5, 0xed, 0xc2, 0x86, 0xcd, 0x6a, + 0xa1, 0xe5, 0x8e, 0x8e, 0x8b, 0x83, 0xfa, 0x29, 0xf8, 0x06, 0xd4, 0x1e, 0xdc, 0xd3, 0xb0, 0xe6, + 0xb0, 0xdb, 0xb1, 0x5a, 0xad, 0x04, 0xfc, 0x7e, 0xa4, 0xe9, 0xc5, 0xad, 0x0d, 0x45, 0x2d, 0xa9, + 0x41, 0x2d, 0x71, 0x2a, 0xc9, 0x8d, 0x3b, 0xf8, 0x60, 0xf1, 0x2a, 0x34, 0x6d, 0x07, 0xd7, 0x5d, + 0x9c, 0xcb, 0x03, 0xf7, 0x9f, 0x86, 0xc7, 0xa5, 0xb1, 0xe6, 0x6f, 0x1d, 0x3c, 0xf1, 0xf5, 0xa1, + 0x56, 0x73, 0x9e, 0x31, 0xdf, 0x7f, 0x51, 0x5b, 0xf3, 0x29, 0xe8, 0x06, 0x18, 0xc0, 0x8a, 0x70, + 0xa3, 0x08, 0x45, 0x40, 0x98, 0x0d, 0x1b, 0x37, 0xf1, 0xd8, 0x63, 0x8f, 0xb3, 0x65, 0xcb, 0x66, + 0xf4, 0x52, 0x33, 0x25, 0x2a, 0x2c, 0xdb, 0xd1, 0xac, 0xf1, 0x94, 0xb7, 0xf3, 0xf5, 0x7a, 0xff, + 0x92, 0x87, 0xfe, 0xe5, 0x9e, 0x89, 0x62, 0xcf, 0x9e, 0x1c, 0xee, 0xb8, 0x65, 0x28, 0xb9, 0x1e, + 0x8d, 0x03, 0x47, 0xe3, 0x3c, 0xfe, 0xd9, 0x8e, 0x64, 0xfb, 0xf5, 0xa1, 0x7b, 0xad, 0x65, 0xa2, + 0xee, 0x14, 0x6c, 0x03, 0x70, 0xe5, 0xd7, 0xd9, 0x4b, 0xb3, 0xff, 0x68, 0xf9, 0x4c, 0x8c, 0xcc, + 0x4c, 0x9b, 0x92, 0xc2, 0x6e, 0x93, 0xd9, 0x0f, 0x95, 0xae, 0xc8, 0x5b, 0xe1, 0xb3, 0x03, 0xe4, + 0x2f, 0x1f, 0x36, 0x7d, 0xfe, 0xcf, 0x46, 0x25, 0x1b, 0x6a, 0x2f, 0x93, 0x66, 0xf4, 0x2a, 0x69, + 0x86, 0xaf, 0x94, 0x87, 0xf6, 0x5f, 0x2a, 0x2f, 0xff, 0x71, 0x85, 0xee, 0x5d, 0x52, 0x78, 0x6b, + 0x51, 0xeb, 0x3f, 0x46, 0xb8, 0xed, 0xd4, 0xfa, 0x8e, 0xab, 0xe0, 0xa8, 0x28, 0xf5, 0xbe, 0xe6, + 0x7a, 0xcb, 0x79, 0x6f, 0x9e, 0x74, 0xdd, 0xe0, 0x93, 0x9e, 0x47, 0x8b, 0xbf, 0x28, 0x5c, 0x97, + 0x3f, 0x35, 0x73, 0x8c, 0xfa, 0xcc, 0x67, 0xad, 0x78, 0x21, 0xf7, 0xed, 0x25, 0x6f, 0x9d, 0x25, + 0x53, 0xe1, 0xab, 0xe4, 0xfe, 0xdd, 0x73, 0xe4, 0x0d, 0xb7, 0x0f, 0x95, 0x39, 0xef, 0x14, 0x7c, + 0x50, 0xd4, 0xac, 0x79, 0x4e, 0xdd, 0xc1, 0xbf, 0x7f, 0xfd, 0xc3, 0x2d, 0x62, 0x84, 0xac, 0x12, + 0x1d, 0xef, 0xc7, 0x9d, 0x34, 0x1a, 0x28, 0xd3, 0x12, 0xf1, 0xe6, 0x89, 0x1d, 0x7d, 0x5a, 0xcc, + 0x72, 0xd6, 0x6b, 0x43, 0x06, 0x6d, 0xb4, 0x7f, 0x32, 0x3f, 0x5c, 0x31, 0x7c, 0x7d, 0x6d, 0x80, + 0x8d, 0x17, 0xc7, 0x97, 0x5a, 0x27, 0x84, 0xaf, 0x69, 0xae, 0x8c, 0x47, 0x4f, 0xc1, 0xf5, 0x3d, + 0x00, 0xf8, 0x5b, 0x59, 0xfa, 0xce, 0xac, 0xf2, 0xf0, 0x57, 0xe2, 0x22, 0x47, 0x99, 0x52, 0xa7, + 0x4e, 0x0f, 0xac, 0x6c, 0x71, 0x66, 0xfa, 0x64, 0x4e, 0xad, 0x53, 0xeb, 0xd4, 0xea, 0xbd, 0xfe, + 0x1f, 0xce, 0xc8, 0x31, 0x59, 0x0a, 0xde, 0x14, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, + 0x44, 0xae, 0x42, 0x60, 0x82 +}; diff --git a/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/png_support.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/png_support.ino new file mode 100644 index 00000000..464e20b9 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/Flash_transparent_PNG/png_support.ino @@ -0,0 +1,19 @@ + +// PNGdec support functions + +//=========================================v========================================== +// pngDraw: Callback function to draw pixels to the display +//==================================================================================== +// This function will be called during decoding of the png file to render each image +// line to the TFT. PNGdec generates the image line and a 1bpp mask. +void pngDraw(PNGDRAW *pDraw) { + uint16_t lineBuffer[MAX_IMAGE_WIDTH]; // Line buffer for rendering + uint8_t maskBuffer[1 + MAX_IMAGE_WIDTH / 8]; // Mask buffer + + png.getLineAsRGB565(pDraw, lineBuffer, PNG_RGB565_BIG_ENDIAN, 0xffffffff); + + if (png.getAlphaMask(pDraw, maskBuffer, 255)) { + // Note: pushMaskedImage is for pushing to the TFT and will not work pushing into a sprite + tft.pushMaskedImage(xpos, ypos + pDraw->y, pDraw->iWidth, 1, lineBuffer, maskBuffer); + } +} diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino similarity index 92% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino index 1ffb3ca4..18040b8a 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino @@ -3,6 +3,10 @@ // ESP32, ESP8266). It renders a png file that is stored in LittleFS // using the PNGdec library (available via library manager). +// Note: The PNGDEC required lots of RAM to work (~40kbytes) so +// this sketch is will not run on smaller memory processors (e.g. +// ESP8266, STM32F103 etc.) + // The test image is in the sketch "data" folder (press Ctrl+K to see it). // You must upload the image to LittleFS using the Arduino IDE Tools Data // Upload menu option (you may need to install extra tools for that). @@ -17,7 +21,7 @@ #include PNG png; -#define MAX_IMAGE_WDITH 240 // Adjust for your images +#define MAX_IMAGE_WIDTH 240 // Adjust for your images int16_t xpos = 0; int16_t ypos = 0; @@ -67,7 +71,7 @@ void loop() tft.startWrite(); Serial.printf("image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType()); uint32_t dt = millis(); - if (png.getWidth() > MAX_IMAGE_WDITH) { + if (png.getWidth() > MAX_IMAGE_WIDTH) { Serial.println("Image too wide for allocated line buffer size!"); } else { @@ -93,7 +97,7 @@ void loop() // you will need to adapt this function to suit. // Callback function to draw pixels to the display void pngDraw(PNGDRAW *pDraw) { - uint16_t lineBuffer[MAX_IMAGE_WDITH]; + uint16_t lineBuffer[MAX_IMAGE_WIDTH]; png.getLineAsRGB565(pDraw, lineBuffer, PNG_RGB565_BIG_ENDIAN, 0xffffffff); tft.pushImage(xpos, ypos + pDraw->y, pDraw->iWidth, 1, lineBuffer); } diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/PNG_FS_Support.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/PNG_FS_Support.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/PNG_FS_Support.ino rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/PNG_FS_Support.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/data/EagleEye.png b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/data/EagleEye.png similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/data/EagleEye.png rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/data/EagleEye.png diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/data/panda.png b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/data/panda.png similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG/data/panda.png rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG/data/panda.png diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino similarity index 91% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino index 1ad440d9..f40cdfe7 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino @@ -3,6 +3,10 @@ // ESP32, ESP8266). It renders a png file that is stored in LittleFS // using the PNGdec library (available via library manager). +// Note: The PNGDEC required lots of RAM to work (~40kbytes) so +// this sketch is will not run on smaller memory processors (e.g. +// ESP8266, STM32F103 etc.) + // It uses DMA to send image data to the TFT while the decoding takes // place. The processor and display combination must support DMA to // run this sketch! The decode time dominates so DMA is mainly an advantage @@ -22,7 +26,7 @@ #include PNG png; -#define MAX_IMAGE_WDITH 240 // Adjust for your images +#define MAX_IMAGE_WIDTH 240 // Adjust for your images int16_t xpos = 0; int16_t ypos = 0; @@ -73,7 +77,7 @@ void loop() tft.startWrite(); Serial.printf("image specs: (%d x %d), %d bpp, pixel type: %d\n", png.getWidth(), png.getHeight(), png.getBpp(), png.getPixelType()); uint32_t dt = millis(); - if (png.getWidth() > MAX_IMAGE_WDITH) { + if (png.getWidth() > MAX_IMAGE_WIDTH) { Serial.println("Image too wide for allocated lin buffer!"); } else { @@ -99,8 +103,8 @@ void loop() // you will need to adapt this function to suit. // Callback function to draw pixels to the display void pngDraw(PNGDRAW *pDraw) { - uint16_t lineBuffer[MAX_IMAGE_WDITH]; - static uint16_t dmaBuffer[MAX_IMAGE_WDITH]; // static so buffer persists after fn exit + uint16_t lineBuffer[MAX_IMAGE_WIDTH]; + static uint16_t dmaBuffer[MAX_IMAGE_WIDTH]; // static so buffer persists after fn exit png.getLineAsRGB565(pDraw, lineBuffer, PNG_RGB565_BIG_ENDIAN, 0xffffffff); tft.pushImageDMA(xpos, ypos + pDraw->y, pDraw->iWidth, 1, lineBuffer, dmaBuffer); diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/PNG_FS_Support.ino b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/PNG_FS_Support.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/PNG_FS_Support.ino rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/PNG_FS_Support.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/data/EagleEye.png b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/data/EagleEye.png similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/data/EagleEye.png rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/data/EagleEye.png diff --git a/libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/data/panda.png b/libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/data/panda.png similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/PNG Images/LittleFS_PNG_DMA/data/panda.png rename to libraries/TFT_eSPI-2.5.43/examples/PNG Images/LittleFS_PNG_DMA/data/panda.png diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Font_Demo_1_Array.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Font_Demo_1_Array.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Font_Demo_1_Array.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Font_Demo_1_Array.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Font_Demo_2_Array.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Font_Demo_2_Array.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Font_Demo_2_Array.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Font_Demo_2_Array.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino similarity index 96% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino index a15ee443..038cfd42 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino @@ -11,7 +11,7 @@ This sketch uses method 3, the font characters are first plotted in a Sprite, then the Sprite is pushed to the screen. This method is very flexible and the Sprite can be created, deleted, resized as needed. To render anti-aliased fonts well the Sprite - needs to be 16 bit. The fonts will render in 1 bit per pixel sprites but there + needs to be 16-bit. The fonts will render in 1 bit per pixel sprites but there will then be no anti-aliasing. Using 1 bit per pixel Sprites is however useful to use the extended Unicode range in fonts on mono displays like ePaper. @@ -50,7 +50,7 @@ void setup(void) { tft.setRotation(1); - spr.setColorDepth(16); // 16 bit colour needed to show antialiased fonts + spr.setColorDepth(16); // 16-bit colour needed to show antialiased fonts } void loop() { @@ -93,7 +93,7 @@ void loop() { tft.fillScreen(TFT_BLACK); - // Beware: Sprites are a differerent "class" to TFT, so different fonts can be loaded + // Beware: Sprites are a different "class" to TFT, so different fonts can be loaded // in the tft and sprite instances, so load the font in the class instance you use! // In this example this means the spr. instance. @@ -181,7 +181,7 @@ void button(int x, int y, int num ) #define IWIDTH 40 #define IHEIGHT 25 - // Create a 16 bit sprite 40 pixels wide, 25 high (2000 bytes of RAM needed) + // Create a 16-bit sprite 40 pixels wide, 25 high (2000 bytes of RAM needed) spr.setColorDepth(16); spr.createSprite(IWIDTH, IHEIGHT); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansMonoSCB20.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansMonoSCB20.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansMonoSCB20.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansMonoSCB20.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino index 225ae962..de2eab99 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino @@ -58,7 +58,7 @@ void setup(void) { tft.setRotation(1); - spr.setColorDepth(16); // 16 bit colour needed to show anti-aliased fonts + spr.setColorDepth(16); // 16-bit colour needed to show anti-aliased fonts } void loop() { diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Final_Frontier_28.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Final_Frontier_28.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Final_Frontier_28.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Final_Frontier_28.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino index 16c53ce1..4af307f6 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino @@ -8,7 +8,7 @@ sketch in the library Tools folder. The Processing sketch can convert TrueType fonts in *.ttf or *.otf files. - The library supports 16 bit unicode characters: + The library supports 16-bit Unicode characters: https://en.wikipedia.org/wiki/Unicode_font The characters supported are in the in the Basic Multilingual Plane: diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/Smooth_font_gradient.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/Smooth_font_gradient.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/Smooth_font_gradient.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/Smooth_font_gradient.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino index ec6cb732..669e9371 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino @@ -83,7 +83,7 @@ unsigned int colour = red << 11; // Colour order is RGB 5+6+5 bits each void rainbow_fill() { - // The colours and state are not initialised so the start colour changes each time the funtion is called + // The colours and state are not initialised so the start colour changes each time the function is called for (int i = 319; i >= 0; i--) { // Draw a vertical line 1 pixel wide in the selected colour diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Final_Frontier_28.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Final_Frontier_28.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Final_Frontier_28.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Final_Frontier_28.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Latin_Hiragana_24.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Latin_Hiragana_24.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Latin_Hiragana_24.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Latin_Hiragana_24.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_Test_72.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_Test_72.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_Test_72.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_Test_72.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino similarity index 95% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino index a36c3689..9b523813 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino @@ -8,14 +8,14 @@ The library expects strings to be in UTF-8 encoded format: https://www.fileformat.info/info/unicode/utf8.htm - Creating varaibles needs to be done with care when using character arrays: + Creating variables needs to be done with care when using character arrays: char c = 'µ'; // Wrong char bad[4] = "5µA"; // Wrong char good[] = "5µA"; // Good String okay = "5µA"; // Good This is because UTF-8 characters outside the basic Latin set occupy more than - 1 byte per character! A 16 bit Unicode character occupies 3 bytes! + 1 byte per character! A 16-bit Unicode character occupies 3 bytes! */ @@ -89,7 +89,7 @@ void loop() //---------------------------------------------------------------------------- // We can have any random mix of characters in the font - String test2 = "仝倀"; // Unicodes 0x4EDD, 0x5000 + String test2 = "仝倀"; // Unicode 0x4EDD, 0x5000 tft.loadFont(Unicode_Test_72); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Final-Frontier-28.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Final-Frontier-28.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Final-Frontier-28.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Final-Frontier-28.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Latin-Hiragana-24.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Latin-Hiragana-24.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Latin-Hiragana-24.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Latin-Hiragana-24.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Unicode-Test-72.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Unicode-Test-72.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Unicode-Test-72.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Unicode-Test-72.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/Font_Demo_1.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/Font_Demo_1.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/Font_Demo_1.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/Font_Demo_1.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/Font_Demo_2.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/Font_Demo_2.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/Font_Demo_2.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/Font_Demo_2.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino index 312e4a73..df8ac13e 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino @@ -4,7 +4,7 @@ This sketch uses method 3, the font characters are first plotted in a Sprite, then the Sprite is pushed to the screen. This method is very flexible and the Sprite can be created, deleted, resized as needed. To render anti-aliased fonts well the Sprite - needs to be 16 bit. The fonts will render in 1 bit per pixel sprites but there + needs to be 16-bit. The fonts will render in 1 bit per pixel sprites but there will then be no anti-aliasing. Using 1 bit per pixel Sprites is however useful to use the extended Unicode range in fonts on mono displays like ePaper. @@ -51,7 +51,7 @@ void setup(void) { tft.setRotation(1); - spr.setColorDepth(16); // 16 bit colour needed to show antialiased fonts + spr.setColorDepth(16); // 16-bit colour needed to show antialiased fonts if (!LittleFS.begin()) { Serial.println("Flash FS initialisation failed!"); @@ -200,7 +200,7 @@ void button(int x, int y, int num ) #define IWIDTH 40 #define IHEIGHT 25 - // Create a 16 bit sprite 40 pixels wide, 25 high (2000 bytes of RAM needed) + // Create a 16-bit sprite 40 pixels wide, 25 high (2000 bytes of RAM needed) spr.setColorDepth(16); spr.createSprite(IWIDTH, IHEIGHT); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino index eb4ce044..edc14865 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino @@ -61,7 +61,7 @@ void setup(void) { tft.setRotation(1); - spr.setColorDepth(16); // 16 bit colour needed to show anti-aliased fonts + spr.setColorDepth(16); // 16-bit colour needed to show anti-aliased fonts if (!LittleFS.begin()) { Serial.println("Flash FS initialisation failed!"); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino index 1b4f1c29..ff3807a2 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino @@ -12,7 +12,7 @@ sketch in the library Tools folder. The Processing sketch can convert TrueType fonts in *.ttf or *.otf files. - The library supports 16 bit Unicode characters: + The library supports 16-bit Unicode characters: https://en.wikipedia.org/wiki/Unicode_font The characters supported are in the in the Basic Multilingual Plane: diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/data/Final-Frontier-28.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/data/Final-Frontier-28.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/data/Final-Frontier-28.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/data/Final-Frontier-28.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/Smooth_font_gradient.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/Smooth_font_gradient.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/Smooth_font_gradient.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/Smooth_font_gradient.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/LittleFS_functions.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/LittleFS_functions.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/LittleFS_functions.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/LittleFS_functions.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino index 530ae5b2..0f236531 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino @@ -15,7 +15,7 @@ String okay = "5µA"; // Good This is because UTF-8 characters outside the basic Latin set occupy more than - 1 byte per character! A 16 bit Unicode character occupies 3 bytes! + 1 byte per character! A 16-bit Unicode character occupies 3 bytes! */ diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/data/Final-Frontier-28.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/data/Final-Frontier-28.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/data/Final-Frontier-28.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/data/Final-Frontier-28.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/data/Latin-Hiragana-24.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/data/Latin-Hiragana-24.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/data/Latin-Hiragana-24.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/data/Latin-Hiragana-24.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/data/Unicode-Test-72.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/data/Unicode-Test-72.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/LittleFS/Unicode_test/data/Unicode-Test-72.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/LittleFS/Unicode_test/data/Unicode-Test-72.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino index 8013a5c7..5f3b961f 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino @@ -10,7 +10,7 @@ Load the font file onto the root directory of the SD Card. The font files used by this sketch can be found in the Data folder, press Ctrl+K to see it. - The library supports 16 bit Unicode characters: + The library supports 16-bit Unicode characters: https://en.wikipedia.org/wiki/Unicode_font The characters supported are in the in the Basic Multilingual Plane: diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/data/Final-Frontier-28.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/data/Final-Frontier-28.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/data/Final-Frontier-28.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/data/Final-Frontier-28.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Font_Demo_1.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Font_Demo_1.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Font_Demo_1.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Font_Demo_1.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Font_Demo_2.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Font_Demo_2.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Font_Demo_2.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Font_Demo_2.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino index 6cbaca22..6d18100a 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino @@ -4,7 +4,7 @@ This sketch uses method 3, the font characters are first plotted in a Sprite, then the Sprite is pushed to the screen. This method is very flexible and the Sprite can be created, deleted, resized as needed. To render anti-aliased fonts well the Sprite - needs to be 16 bit. The fonts will render in 1 bit per pixel sprites but there + needs to be 16-bit. The fonts will render in 1 bit per pixel sprites but there will then be no anti-aliasing. Using 1 bit per pixel Sprites is however useful to use the extended Unicode range in fonts on mono displays like ePaper. @@ -50,7 +50,7 @@ void setup(void) { tft.setRotation(1); - spr.setColorDepth(16); // 16 bit colour needed to show anti aliased fonts + spr.setColorDepth(16); // 16-bit colour needed to show anti aliased fonts if (!SPIFFS.begin()) { Serial.println("SPIFFS initialisation failed!"); @@ -200,7 +200,7 @@ void button(int x, int y, int num ) #define IWIDTH 40 #define IHEIGHT 25 - // Create a 16 bit sprite 40 pixels wide, 25 high (2000 bytes of RAM needed) + // Create a 16-bit sprite 40 pixels wide, 25 high (2000 bytes of RAM needed) spr.setColorDepth(16); spr.createSprite(IWIDTH, IHEIGHT); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino index 8259723f..e86fa888 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino @@ -61,7 +61,7 @@ void setup(void) { tft.setRotation(1); - spr.setColorDepth(16); // 16 bit colour needed to show anti-aliased fonts + spr.setColorDepth(16); // 16-bit colour needed to show anti-aliased fonts if (!SPIFFS.begin()) { Serial.println("SPIFFS initialisation failed!"); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino index d142d511..007da700 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino @@ -15,7 +15,7 @@ Note: SPIFFS does not accept an underscore _ in filenames! - The library supports 16 bit Unicode characters: + The library supports 16-bit Unicode characters: https://en.wikipedia.org/wiki/Unicode_font The characters supported are in the in the Basic Multilingual Plane: diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/data/Final-Frontier-28.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/data/Final-Frontier-28.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/data/Final-Frontier-28.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/data/Final-Frontier-28.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/Smooth_font_gradient.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/Smooth_font_gradient.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/Smooth_font_gradient.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/Smooth_font_gradient.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/SPIFFS_functions.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/SPIFFS_functions.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/SPIFFS_functions.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/SPIFFS_functions.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino index 26567d6c..5f97248a 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino @@ -15,7 +15,7 @@ String okay = "5µA"; // Good This is because UTF-8 characters outside the basic Latin set occupy more than - 1 byte per character! A 16 bit Unicode character occupies 3 bytes! + 1 byte per character! A 16-bit Unicode character occupies 3 bytes! */ diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Final-Frontier-28.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Final-Frontier-28.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Final-Frontier-28.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Final-Frontier-28.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Latin-Hiragana-24.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Latin-Hiragana-24.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Latin-Hiragana-24.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Latin-Hiragana-24.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Unicode-Test-72.vlw b/libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Unicode-Test-72.vlw similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Unicode-Test-72.vlw rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Unicode-Test-72.vlw diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino index 1cdd4229..9cc6a1fe 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino @@ -74,7 +74,7 @@ void setup() { tft.fillScreen(TFT_BLACK); // Create the clock face sprite - //face.setColorDepth(8); // 8 bit will work, but reduces effectiveness of anti-aliasing + //face.setColorDepth(8); // 8-bit will work, but reduces effectiveness of anti-aliasing face.createSprite(FACE_W, FACE_H); // Only 1 font used in the sprite, so can remain loaded @@ -129,7 +129,7 @@ static void renderFace(float t) { face.setTextDatum(MC_DATUM); // The background colour will be read during the character rendering - face.setTextColor(CLOCK_FG); + face.setTextColor(CLOCK_FG, CLOCK_BG); // Text offset adjustment constexpr uint32_t dialOffset = CLOCK_R - 10; @@ -143,7 +143,7 @@ static void renderFace(float t) { } // Add text (could be digital time...) - face.setTextColor(LABEL_FG); + face.setTextColor(LABEL_FG, CLOCK_BG); face.drawString("TFT_eSPI", CLOCK_R, CLOCK_R * 0.75); // Draw minute hand diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h index 1a85e04e..faadede8 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h @@ -4,17 +4,17 @@ // Time library: // https://github.com/PaulStoffregen/Time -#include +#include // Time zone correction library: // https://github.com/JChristensen/Timezone #include // Choose library to load -#ifdef ESP8266 +#ifdef ARDUINO_ARCH_ESP8266 // ESP8266 #include -#elif defined(ARDUINO_ARCH_MBED) || defined(ARDUINO_ARCH_RP2040) +#elif (defined(ARDUINO_ARCH_MBED) || defined(ARDUINO_ARCH_RP2040)) && !defined(ARDUINO_RASPBERRY_PI_PICO_W) // RP2040 Nano Connect #include #else @@ -31,16 +31,16 @@ WiFiUDP udp; // Settings //==================================================================================== -#define TIMEZONE UK // See below for other "Zone references", UK, usMT etc +#define TIMEZONE UK // See below for other "Zone references", UK, usMT etc. #ifdef ESP32 // Temporary fix, ESP8266 fails to communicate with some servers... -// Try to use pool url instead so the server IP address is looked up from those available +// Try to use pool URL instead so the server IP address is looked up from those available // (use a pool server in your own country to improve response time and reliability) //const char* ntpServerName = "time.nist.gov"; //const char* ntpServerName = "pool.ntp.org"; const char* ntpServerName = "time.google.com"; #else -// Try to use pool url instead so the server IP address is looked up from those available +// Try to use pool URL instead so the server IP address is looked up from those available // (use a pool server in your own country to improve response time and reliability) // const char* ntpServerName = "time.nist.gov"; const char* ntpServerName = "pool.ntp.org"; diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/NotoSansBold15.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/NotoSansBold15.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Anti-aliased_Clock/NotoSansBold15.h rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Anti-aliased_Clock/NotoSansBold15.h diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/Arc_meter_demo.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/Arc_meter_demo.ino new file mode 100644 index 00000000..1ce4cfb7 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/Arc_meter_demo.ino @@ -0,0 +1,208 @@ +// This is a test sketch being developed for a new arc based meter widget +// The meter graphic is fully anti-aliased to avoid jaggy pixelated edges + +// For this demo randomly sized meters are drawn, cycled and redrawn a random size. +// The meter is ramped up and down 0-100 and 100-0, then pauses before a new +// random sized meter is drawn + +// If the radius is > 25 then the value is drawn in the middle + +// The outer ring of the meter uses the drawSmoothCircle function (which draws +// a narrow full circle smooth arc) + +// Uncomment to draw meter digits and label text +//#define DRAW_DIGITS + +// If DRAW_DIGITS is defined the OpenFontRender library must be loaded since +// the sketch uses a scaleable TrueType font for the text and numerals. +// https://github.com/Bodmer/OpenFontRender + +#define LOOP_DELAY 0 // This controls how frequently the meter is updated + // for test purposes this is set to 0 + + +#include +#include // Hardware-specific library + +#ifdef DRAW_DIGITS + #include "NotoSans_Bold.h" + #include "OpenFontRender.h" + #define TTF_FONT NotoSans_Bold +#endif + + +TFT_eSPI tft = TFT_eSPI(); // Invoke custom library with default width and height +TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object + +#ifdef DRAW_DIGITS +OpenFontRender ofr; +#endif + +#define DARKER_GREY 0x18E3 + +uint32_t runTime = 0; // time for next update + +int reading = 0; // Value to be displayed +int d = 0; // Variable used for the sine wave test waveform +bool range_error = 0; +int8_t ramp = 1; + +bool initMeter = true; + +void setup(void) { + Serial.begin(115200); + tft.begin(); + tft.setRotation(1); + tft.fillScreen(TFT_NAVY); + //tft.setViewport(0, 0, 240, 320); +} + + +void loop() { + static uint16_t maxRadius = 0; + int8_t ramp = 1; + static uint8_t radius = 0; + static int16_t xpos = tft.width() / 2; + static int16_t ypos = tft.height() / 2; + bool newMeter = false; + + if (maxRadius == 0) { + maxRadius = tft.width(); + if (tft.height() < maxRadius) maxRadius = tft.height(); + maxRadius = (0.6 * maxRadius) / 2; + radius = maxRadius; + } + + // Choose a random meter radius for test purposes and draw for one range cycle + // Clear old meter first + tft.fillCircle(xpos, ypos, radius + 1, TFT_NAVY); + radius = random(20, maxRadius); // Random radius + initMeter = true; + +#ifdef DRAW_DIGITS + // Loading a font takes a few milliseconds, so for test purposes it is done outside the test loop + if (ofr.loadFont(TTF_FONT, sizeof(TTF_FONT))) { + Serial.println("Render initialize error"); + return; + } +#endif + + initMeter = true; + reading = 0; + ramp = 1; + while (!newMeter) { + if (millis() - runTime >= LOOP_DELAY) { + runTime = millis(); + + reading += ramp; + ringMeter(xpos, ypos, radius, reading, "Watts"); // Draw analogue meter + + if (reading > 99) ramp = -1; + if (reading <= 0) ramp = 1; + + if (reading > 99) delay(1000); + if (reading <= 0) { + delay(1000); + newMeter = true; + } + } + } + +#ifdef DRAW_DIGITS + ofr.unloadFont(); // Recover space used by font metrics etc. +#endif +} + +// ######################################################################### +// Draw the meter on the screen, returns x coord of right-hand side +// ######################################################################### +// x,y is centre of meter, r the radius, val a number in range 0-100 +// units is the meter scale label +void ringMeter(int x, int y, int r, int val, const char *units) +{ + static uint16_t last_angle = 30; + + if (initMeter) { + initMeter = false; + last_angle = 30; + tft.fillCircle(x, y, r, DARKER_GREY); + tft.drawSmoothCircle(x, y, r, TFT_SILVER, DARKER_GREY); + uint16_t tmp = r - 3; + tft.drawArc(x, y, tmp, tmp - tmp / 5, last_angle, 330, TFT_BLACK, DARKER_GREY); + } + + r -= 3; + + // Range here is 0-100 so value is scaled to an angle 30-330 + int val_angle = map(val, 0, 100, 30, 330); + + + if (last_angle != val_angle) { + // Could load the required font here + //if (ofr.loadFont(TTF_FONT, sizeof(TTF_FONT))) { + // Serial.println("Render initialize error"); + // return; + //} +#ifdef DRAW_DIGITS + ofr.setDrawer(spr); // Link renderer to sprite (font will be rendered in sprite spr) + + // Add value in centre if radius is a reasonable size + if ( r >= 25 ) { + // This code gets the font dimensions in pixels to determine the required the sprite size + ofr.setFontSize((6 * r) / 4); + ofr.setFontColor(TFT_WHITE, DARKER_GREY); + + + // The OpenFontRender library only has simple print functions... + // Digit jiggle for changing values often happens with proportional fonts because + // digit glyph width varies ( 1 narrower that 4 for example). This code prints up to + // 3 digits with even spacing. + // A few experimental fudge factors are used here to position the + // digits in the sprite... + // Create a sprite to draw the digits into + uint8_t w = ofr.getTextWidth("444"); + uint8_t h = ofr.getTextHeight("4") + 4; + spr.createSprite(w, h + 2); + spr.fillSprite(DARKER_GREY); // (TFT_BLUE); // (DARKER_GREY); + char str_buf[8]; // Buffed for string + itoa (val, str_buf, 10); // Convert value to string (null terminated) + uint8_t ptr = 0; // Pointer to a digit character + uint8_t dx = 4; // x offset for cursor position + if (val < 100) dx = ofr.getTextWidth("4") / 2; // Adjust cursor x for 2 digits + if (val < 10) dx = ofr.getTextWidth("4"); // Adjust cursor x for 1 digit + while ((uint8_t)str_buf[ptr] != 0) ptr++; // Count the characters + while (ptr) { + ofr.setCursor(w - dx - w / 20, -h / 2.5); // Offset cursor position in sprite + ofr.rprintf(str_buf + ptr - 1); // Draw a character + str_buf[ptr - 1] = 0; // Replace character with a null + dx += 1 + w / 3; // Adjust cursor for next character + ptr--; // Decrement character pointer + } + spr.pushSprite(x - w / 2, y - h / 2); // Push sprite containing the val number + spr.deleteSprite(); // Recover used memory + + // Make the TFT the print destination, print the units label direct to the TFT + ofr.setDrawer(tft); + ofr.setFontColor(TFT_GOLD, DARKER_GREY); + ofr.setFontSize(r / 2.0); + ofr.setCursor(x, y + (r * 0.4)); + ofr.cprintf("Watts"); + } +#endif + + //ofr.unloadFont(); // Recover space used by font metrics etc. + + // Allocate a value to the arc thickness dependant of radius + uint8_t thickness = r / 5; + if ( r < 25 ) thickness = r / 3; + + // Update the arc, only the zone between last_angle and new val_angle is updated + if (val_angle > last_angle) { + tft.drawArc(x, y, r, r - thickness, last_angle, val_angle, TFT_SKYBLUE, TFT_BLACK); // TFT_SKYBLUE random(0x10000) + } + else { + tft.drawArc(x, y, r, r - thickness, val_angle, last_angle, TFT_BLACK, DARKER_GREY); + } + last_angle = val_angle; // Store meter arc position for next redraw + } +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/NotoSans_Bold.h b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/NotoSans_Bold.h new file mode 100644 index 00000000..b05e99e9 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Arc_meter_demo/NotoSans_Bold.h @@ -0,0 +1,732 @@ +// This font is a subset of the full font to reduce array size, ONLY these characters are present: +// !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ + +// array size is 11592 + +const unsigned char NotoSans_Bold[] PROGMEM = { + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x80, 0x00, 0x03, 0x00, 0x30, 0x63, 0x6d, 0x61, 0x70, + 0xe1, 0x4c, 0xf1, 0x46, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x0b, 0x6e, 0x67, 0x6c, 0x79, 0x66, + 0xab, 0x85, 0x48, 0xd5, 0x00, 0x00, 0x0c, 0x2c, 0x00, 0x00, 0x1b, 0xa0, 0x68, 0x65, 0x61, 0x64, + 0x26, 0x95, 0xb4, 0xa1, 0x00, 0x00, 0x27, 0xcc, 0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61, + 0x03, 0x7f, 0x04, 0x08, 0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78, + 0xd0, 0xa7, 0x10, 0x76, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x01, 0x7c, 0x6c, 0x6f, 0x63, 0x61, + 0x00, 0x05, 0x33, 0xed, 0x00, 0x00, 0x29, 0xa4, 0x00, 0x00, 0x01, 0x80, 0x6d, 0x61, 0x78, 0x70, + 0x07, 0x5d, 0x11, 0x1f, 0x00, 0x00, 0x2b, 0x24, 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x1a, 0x56, 0x03, 0x30, 0x00, 0x00, 0x2b, 0x44, 0x00, 0x00, 0x01, 0x7a, 0x4f, 0x53, 0x2f, 0x32, + 0x0f, 0x8e, 0x89, 0xf7, 0x00, 0x00, 0x2c, 0xc0, 0x00, 0x00, 0x00, 0x60, 0x70, 0x6f, 0x73, 0x74, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x20, 0x00, 0x00, 0x00, 0x20, 0x70, 0x72, 0x65, 0x70, + 0x68, 0x06, 0x8c, 0x85, 0x00, 0x00, 0x2d, 0x40, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe2, + 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x07, 0xa8, 0x00, 0x04, 0x03, 0xc6, 0x00, 0x00, 0x00, 0xbe, + 0x00, 0x80, 0x00, 0x06, 0x00, 0x3e, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, + 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, + 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, + 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, + 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, + 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, + 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, + 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, + 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, + 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, + 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, + 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, + 0x00, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, + 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, + 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, + 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, + 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, + 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, + 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, + 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, + 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, + 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, + 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, + 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, + 0x00, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, + 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, + 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, + 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, + 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, + 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, + 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, + 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, + 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, + 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x04, + 0x03, 0xc6, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x80, 0x00, 0x06, 0x00, 0x3e, 0x00, 0x21, 0x00, 0x22, + 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, + 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, + 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, + 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, + 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, + 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, + 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, + 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, + 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, + 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, + 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, + 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x21, 0x00, 0x22, + 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, + 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, + 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, + 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, + 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, + 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, + 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, + 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, + 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, + 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, + 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, + 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, + 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, + 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, + 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, + 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, + 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, + 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, + 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, + 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, + 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, + 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, + 0x00, 0x5e, 0x00, 0x00, 0x00, 0x04, 0x03, 0xc6, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x80, 0x00, 0x06, + 0x00, 0x3e, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, + 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, + 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, + 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, + 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, + 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, + 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, + 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, + 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, + 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, + 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, + 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, + 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, + 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, + 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, + 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, + 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, + 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, + 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, + 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, + 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, + 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, + 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, + 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x01, 0x00, 0x02, + 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, + 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, + 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, + 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, + 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, + 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, + 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, + 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, + 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, + 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, + 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, + 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x58, 0x08, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0xfd, 0xad, 0x02, 0x4e, + 0x00, 0x00, 0xfd, 0xb2, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x07, 0xf6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x39, 0xff, 0xf3, 0x00, 0xe4, 0x02, 0xca, 0x00, 0x03, + 0x00, 0x0f, 0x00, 0x00, 0x37, 0x23, 0x03, 0x33, 0x03, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, + 0x06, 0x23, 0x22, 0x26, 0xcb, 0x77, 0x19, 0xa9, 0xab, 0x32, 0x24, 0x23, 0x32, 0x32, 0x23, 0x24, + 0x32, 0xed, 0x01, 0xdd, 0xfd, 0x7c, 0x2e, 0x25, 0x25, 0x2e, 0x2c, 0x27, 0x27, 0x00, 0x02, 0x00, + 0x41, 0x01, 0xc8, 0x01, 0x97, 0x02, 0xca, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x13, 0x03, 0x23, + 0x03, 0x21, 0x03, 0x23, 0x03, 0xc9, 0x14, 0x60, 0x14, 0x01, 0x56, 0x14, 0x60, 0x14, 0x02, 0xca, + 0xfe, 0xfe, 0x01, 0x02, 0xfe, 0xfe, 0x01, 0x02, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x02, 0x70, + 0x02, 0xc9, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x07, 0x33, 0x15, 0x23, 0x07, 0x23, 0x37, + 0x23, 0x07, 0x23, 0x37, 0x23, 0x35, 0x33, 0x37, 0x23, 0x35, 0x33, 0x37, 0x33, 0x07, 0x33, 0x37, + 0x33, 0x07, 0x33, 0x15, 0x05, 0x33, 0x37, 0x23, 0x01, 0xe8, 0x17, 0x7e, 0x91, 0x26, 0x6b, 0x26, + 0x5f, 0x25, 0x69, 0x24, 0x74, 0x87, 0x17, 0x7b, 0x8d, 0x26, 0x6b, 0x26, 0x61, 0x26, 0x69, 0x26, + 0x75, 0xfe, 0x97, 0x60, 0x17, 0x60, 0x01, 0x9c, 0x71, 0x65, 0xc6, 0xc6, 0xc6, 0xc6, 0x65, 0x71, + 0x66, 0xc7, 0xc7, 0xc7, 0xc7, 0x66, 0x71, 0x71, 0x00, 0x03, 0x00, 0x2b, 0xff, 0xc6, 0x02, 0x15, + 0x02, 0xf7, 0x00, 0x22, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x00, 0x37, 0x26, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x17, 0x35, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x35, 0x33, 0x15, 0x16, 0x17, 0x07, 0x26, + 0x26, 0x27, 0x15, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x15, 0x23, 0x11, 0x06, 0x15, 0x14, 0x16, + 0x17, 0x13, 0x36, 0x35, 0x34, 0x26, 0x27, 0xfd, 0x41, 0x66, 0x2a, 0x29, 0x74, 0x34, 0x4d, 0x5d, + 0x28, 0x75, 0x5d, 0x43, 0x6f, 0x5b, 0x2e, 0x28, 0x51, 0x23, 0x36, 0x62, 0x3d, 0x6a, 0x6b, 0x43, + 0x3f, 0x1e, 0x21, 0x43, 0x42, 0x21, 0x21, 0x28, 0x02, 0x15, 0x13, 0x81, 0x14, 0x21, 0x03, 0x97, + 0x1e, 0x39, 0x46, 0x31, 0x4b, 0x59, 0x08, 0x4b, 0x49, 0x04, 0x29, 0x72, 0x11, 0x12, 0x03, 0x90, + 0x14, 0x2f, 0x48, 0x3b, 0x49, 0x62, 0x0a, 0x64, 0x02, 0x6d, 0x09, 0x2a, 0x15, 0x1c, 0x0f, 0xfe, + 0xde, 0x0c, 0x2e, 0x14, 0x1d, 0x0f, 0x00, 0x05, 0x00, 0x1f, 0xff, 0xf7, 0x03, 0x66, 0x02, 0xd4, + 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x00, 0x13, 0x32, 0x16, 0x15, + 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x05, 0x01, 0x23, 0x01, 0x05, 0x22, 0x15, 0x14, + 0x33, 0x32, 0x35, 0x34, 0x05, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, + 0x17, 0x22, 0x15, 0x14, 0x33, 0x32, 0x35, 0x34, 0xc7, 0x54, 0x57, 0x52, 0x59, 0x52, 0x56, 0x50, + 0x02, 0x53, 0xfe, 0x74, 0x75, 0x01, 0x8c, 0xfe, 0x7b, 0x2e, 0x2e, 0x2f, 0x01, 0xc4, 0x54, 0x57, + 0x52, 0x59, 0x52, 0x56, 0x50, 0x59, 0x2e, 0x2e, 0x2f, 0x02, 0xd4, 0x75, 0x6a, 0x6a, 0x77, 0x77, + 0x6a, 0x6a, 0x75, 0x0a, 0xfd, 0x36, 0x02, 0xca, 0x5c, 0x7a, 0x7b, 0x7b, 0x7a, 0xb7, 0x75, 0x6a, + 0x6a, 0x77, 0x77, 0x6a, 0x6a, 0x75, 0x66, 0x7a, 0x7b, 0x7b, 0x7a, 0x00, 0x03, 0x00, 0x28, 0xff, + 0xf6, 0x02, 0xee, 0x02, 0xd4, 0x00, 0x21, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x00, 0x01, 0x32, 0x16, + 0x16, 0x15, 0x14, 0x06, 0x07, 0x17, 0x36, 0x36, 0x37, 0x33, 0x06, 0x06, 0x07, 0x17, 0x23, 0x27, + 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x17, + 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x36, 0x36, 0x35, 0x34, 0x26, 0x03, 0x06, 0x06, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x01, 0x36, 0x3a, 0x5a, 0x34, 0x52, 0x3d, 0x8b, 0x14, 0x1e, 0x0a, + 0x9b, 0x0f, 0x3a, 0x2d, 0x93, 0xb8, 0x38, 0x2b, 0x6a, 0x3e, 0x7a, 0x89, 0x46, 0x3d, 0x27, 0x1f, + 0x35, 0x5f, 0x3c, 0x19, 0x2d, 0x19, 0x15, 0x2a, 0x2d, 0x28, 0x4a, 0x1c, 0x21, 0x40, 0x30, 0x20, + 0x38, 0x17, 0x02, 0xd4, 0x24, 0x45, 0x32, 0x45, 0x5e, 0x23, 0x87, 0x22, 0x4b, 0x26, 0x38, 0x80, + 0x38, 0x8f, 0x37, 0x1e, 0x23, 0x70, 0x5b, 0x4c, 0x5b, 0x23, 0x2d, 0x4c, 0x2b, 0x33, 0x4a, 0x28, + 0x73, 0x19, 0x23, 0x19, 0x2e, 0x18, 0x17, 0x2e, 0x1e, 0x1e, 0x1a, 0xfe, 0xd1, 0x15, 0x2f, 0x1f, + 0x2b, 0x31, 0x10, 0x0e, 0x00, 0x01, 0x00, 0x41, 0x01, 0xc8, 0x00, 0xc9, 0x02, 0xca, 0x00, 0x03, + 0x00, 0x00, 0x13, 0x03, 0x23, 0x03, 0xc9, 0x14, 0x60, 0x14, 0x02, 0xca, 0xfe, 0xfe, 0x01, 0x02, + 0x00, 0x01, 0x00, 0x28, 0xff, 0x62, 0x01, 0x35, 0x02, 0xca, 0x00, 0x0d, 0x00, 0x00, 0x13, 0x34, + 0x36, 0x37, 0x33, 0x06, 0x06, 0x15, 0x14, 0x16, 0x17, 0x23, 0x26, 0x26, 0x28, 0x47, 0x4c, 0x7a, + 0x44, 0x47, 0x47, 0x43, 0x79, 0x4c, 0x47, 0x01, 0x12, 0x7a, 0xe3, 0x5b, 0x5e, 0xe2, 0x77, 0x74, + 0xe1, 0x5c, 0x58, 0xdf, 0x00, 0x01, 0x00, 0x1e, 0xff, 0x62, 0x01, 0x2b, 0x02, 0xca, 0x00, 0x0d, + 0x00, 0x00, 0x01, 0x14, 0x06, 0x07, 0x23, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x33, 0x16, 0x16, + 0x01, 0x2b, 0x47, 0x4c, 0x79, 0x44, 0x46, 0x47, 0x44, 0x7a, 0x4c, 0x47, 0x01, 0x12, 0x79, 0xdf, + 0x58, 0x5c, 0xe1, 0x74, 0x77, 0xe2, 0x5e, 0x5b, 0xe3, 0x00, 0x01, 0x00, 0x1f, 0x01, 0x24, 0x02, + 0x02, 0x02, 0xf8, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x07, 0x37, 0x17, 0x07, 0x17, 0x07, 0x27, 0x07, + 0x27, 0x37, 0x27, 0x37, 0x17, 0x27, 0x01, 0x50, 0x14, 0xb6, 0x10, 0xa6, 0x6d, 0x6f, 0x4c, 0x43, + 0x73, 0x6c, 0xa5, 0x13, 0xb2, 0x14, 0x02, 0xf8, 0xb4, 0x33, 0x7b, 0x0c, 0x91, 0x3b, 0x99, 0x98, + 0x3a, 0x91, 0x0d, 0x7a, 0x33, 0xb4, 0x00, 0x01, 0x00, 0x2b, 0x00, 0x6f, 0x02, 0x10, 0x02, 0x54, + 0x00, 0x0b, 0x00, 0x00, 0x01, 0x33, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, + 0x01, 0x53, 0xbd, 0xbd, 0x6b, 0xbd, 0xbd, 0x6b, 0x01, 0x96, 0x6b, 0xbc, 0xbc, 0x6b, 0xbe, 0x00, + 0x01, 0x00, 0x1f, 0xff, 0x7f, 0x00, 0xe0, 0x00, 0x74, 0x00, 0x08, 0x00, 0x00, 0x37, 0x06, 0x06, + 0x07, 0x23, 0x36, 0x36, 0x37, 0x33, 0xe0, 0x0d, 0x30, 0x19, 0x6b, 0x0e, 0x1c, 0x07, 0x89, 0x69, + 0x35, 0x7e, 0x37, 0x3b, 0x86, 0x34, 0x00, 0x01, 0x00, 0x1e, 0x00, 0xcf, 0x01, 0x24, 0x01, 0x49, + 0x00, 0x03, 0x00, 0x00, 0x37, 0x35, 0x21, 0x15, 0x1e, 0x01, 0x06, 0xcf, 0x7a, 0x7a, 0x00, 0x01, + 0x00, 0x39, 0xff, 0xf3, 0x00, 0xe4, 0x00, 0x99, 0x00, 0x0b, 0x00, 0x00, 0x37, 0x34, 0x36, 0x33, + 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x39, 0x32, 0x24, 0x23, 0x32, 0x32, 0x23, 0x24, + 0x32, 0x46, 0x2e, 0x25, 0x25, 0x2e, 0x2c, 0x27, 0x27, 0x00, 0x01, 0x00, 0x07, 0x00, 0x00, 0x01, + 0x98, 0x02, 0xca, 0x00, 0x03, 0x00, 0x00, 0x01, 0x01, 0x23, 0x01, 0x01, 0x98, 0xfe, 0xf6, 0x87, + 0x01, 0x0a, 0x02, 0xca, 0xfd, 0x36, 0x02, 0xca, 0x00, 0x02, 0x00, 0x24, 0xff, 0xf6, 0x02, 0x17, + 0x02, 0xd5, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x00, 0x01, 0x14, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x36, 0x36, 0x33, 0x32, 0x16, 0x05, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x02, 0x17, 0x31, 0x6d, 0x5c, 0x81, 0x78, 0x30, 0x6e, 0x5b, 0x80, 0x7a, 0xfe, 0xa3, + 0x2a, 0x39, 0x38, 0x2c, 0x2c, 0x38, 0x39, 0x2a, 0x01, 0x65, 0x73, 0xa4, 0x58, 0xc3, 0xac, 0x74, + 0xa4, 0x58, 0xc2, 0xae, 0x7a, 0x7b, 0x7a, 0x7b, 0x7a, 0x7c, 0x7c, 0x00, 0x01, 0x00, 0x3b, 0x00, + 0x00, 0x01, 0x9d, 0x02, 0xca, 0x00, 0x0c, 0x00, 0x00, 0x21, 0x23, 0x11, 0x34, 0x36, 0x37, 0x06, + 0x06, 0x07, 0x07, 0x27, 0x37, 0x33, 0x01, 0x9d, 0x97, 0x03, 0x01, 0x05, 0x21, 0x0e, 0x52, 0x49, + 0xe6, 0x7c, 0x01, 0x9d, 0x1a, 0x54, 0x20, 0x06, 0x1f, 0x0c, 0x42, 0x5b, 0xb7, 0x00, 0x01, 0x00, + 0x26, 0x00, 0x00, 0x02, 0x1b, 0x02, 0xd4, 0x00, 0x1d, 0x00, 0x00, 0x21, 0x21, 0x35, 0x37, 0x3e, + 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x16, 0x15, + 0x14, 0x06, 0x06, 0x07, 0x07, 0x15, 0x21, 0x02, 0x1b, 0xfe, 0x0d, 0xb3, 0x36, 0x42, 0x1e, 0x2f, + 0x28, 0x29, 0x4e, 0x2b, 0x52, 0x1f, 0x45, 0x5b, 0x40, 0x46, 0x65, 0x37, 0x2f, 0x59, 0x3f, 0x5c, + 0x01, 0x37, 0x69, 0xb5, 0x38, 0x4b, 0x3d, 0x23, 0x2b, 0x2a, 0x26, 0x23, 0x61, 0x1b, 0x2e, 0x1d, + 0x33, 0x57, 0x37, 0x3b, 0x62, 0x60, 0x3a, 0x56, 0x07, 0x00, 0x01, 0x00, 0x26, 0xff, 0xf6, 0x02, + 0x14, 0x02, 0xd4, 0x00, 0x2b, 0x00, 0x00, 0x01, 0x14, 0x06, 0x07, 0x15, 0x16, 0x16, 0x15, 0x14, + 0x06, 0x06, 0x23, 0x22, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x26, 0x23, + 0x23, 0x35, 0x33, 0x32, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, + 0x33, 0x32, 0x16, 0x01, 0xff, 0x59, 0x41, 0x56, 0x59, 0x3d, 0x7f, 0x64, 0x74, 0x5a, 0x2e, 0x65, + 0x2b, 0x51, 0x41, 0x1e, 0x4b, 0x43, 0x36, 0x37, 0x42, 0x45, 0x19, 0x2f, 0x37, 0x33, 0x4b, 0x1a, + 0x46, 0x2a, 0x71, 0x4e, 0x6e, 0x81, 0x02, 0x2a, 0x4a, 0x58, 0x10, 0x03, 0x0a, 0x54, 0x47, 0x3e, + 0x63, 0x39, 0x27, 0x80, 0x17, 0x18, 0x38, 0x33, 0x1e, 0x29, 0x15, 0x74, 0x19, 0x2b, 0x1c, 0x26, + 0x2b, 0x23, 0x11, 0x68, 0x1e, 0x28, 0x59, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x02, 0x2b, 0x02, + 0xca, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x00, 0x25, 0x23, 0x15, 0x23, 0x35, 0x21, 0x35, 0x01, 0x33, + 0x11, 0x33, 0x27, 0x34, 0x36, 0x36, 0x37, 0x23, 0x06, 0x06, 0x07, 0x07, 0x33, 0x02, 0x2b, 0x56, + 0x93, 0xfe, 0xcf, 0x01, 0x39, 0x8b, 0x56, 0xe9, 0x02, 0x03, 0x01, 0x04, 0x09, 0x14, 0x0e, 0x83, + 0xac, 0x94, 0x94, 0x94, 0x69, 0x01, 0xcd, 0xfe, 0x3f, 0x79, 0x17, 0x42, 0x39, 0x09, 0x14, 0x26, + 0x14, 0xc6, 0x00, 0x01, 0x00, 0x31, 0xff, 0xf6, 0x02, 0x0e, 0x02, 0xca, 0x00, 0x1e, 0x00, 0x00, + 0x01, 0x32, 0x16, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x36, 0x35, 0x34, 0x23, 0x22, 0x06, 0x07, 0x27, 0x13, 0x21, 0x15, 0x23, 0x07, 0x36, 0x36, 0x01, + 0x2c, 0x41, 0x66, 0x3b, 0x90, 0x8d, 0x38, 0x63, 0x25, 0x25, 0x68, 0x2e, 0x43, 0x47, 0x8f, 0x1c, + 0x3c, 0x14, 0x3c, 0x1b, 0x01, 0x83, 0xff, 0x0d, 0x11, 0x27, 0x01, 0xc8, 0x32, 0x60, 0x47, 0x74, + 0x85, 0x14, 0x13, 0x82, 0x13, 0x1b, 0x37, 0x3a, 0x6c, 0x0b, 0x05, 0x20, 0x01, 0x6c, 0x80, 0x8c, + 0x03, 0x07, 0x00, 0x02, 0x00, 0x23, 0xff, 0xf6, 0x02, 0x1b, 0x02, 0xd2, 0x00, 0x1e, 0x00, 0x2c, + 0x00, 0x00, 0x13, 0x34, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, + 0x06, 0x07, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x26, 0x05, + 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x06, 0x15, 0x14, 0x16, 0x16, 0x23, 0x12, 0x2d, + 0x51, 0x7d, 0x59, 0x15, 0x38, 0x13, 0x13, 0x2d, 0x16, 0x59, 0x61, 0x28, 0x03, 0x06, 0x14, 0x4b, + 0x3c, 0x5e, 0x6e, 0x83, 0x70, 0x49, 0x76, 0x46, 0x01, 0x02, 0x2c, 0x38, 0x30, 0x31, 0x21, 0x32, + 0x1c, 0x18, 0x31, 0x01, 0x2f, 0x3e, 0x78, 0x6b, 0x53, 0x2f, 0x03, 0x04, 0x79, 0x05, 0x05, 0x38, + 0x65, 0x42, 0x23, 0x30, 0x76, 0x6c, 0x74, 0x84, 0x43, 0x8b, 0x55, 0x3d, 0x40, 0x34, 0x3c, 0x1d, + 0x2e, 0x18, 0x21, 0x3f, 0x2a, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x02, 0x1b, 0x02, 0xca, 0x00, + 0x06, 0x00, 0x00, 0x33, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x6f, 0x01, 0x0c, 0xfe, 0xa0, 0x02, + 0x00, 0xfe, 0xf2, 0x02, 0x4b, 0x7f, 0x5f, 0xfd, 0x95, 0x00, 0x03, 0x00, 0x23, 0xff, 0xf6, 0x02, + 0x18, 0x02, 0xd3, 0x00, 0x1b, 0x00, 0x27, 0x00, 0x35, 0x00, 0x00, 0x01, 0x32, 0x16, 0x16, 0x15, + 0x14, 0x06, 0x07, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, + 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x17, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x36, 0x36, 0x35, + 0x34, 0x26, 0x03, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x26, 0x27, 0x27, 0x06, 0x06, + 0x01, 0x1e, 0x3e, 0x67, 0x3f, 0x49, 0x37, 0x26, 0x45, 0x2b, 0x3f, 0x71, 0x4a, 0x78, 0x83, 0x50, + 0x39, 0x30, 0x43, 0x40, 0x69, 0x3b, 0x25, 0x31, 0x34, 0x23, 0x22, 0x34, 0x31, 0x94, 0x37, 0x36, + 0x38, 0x38, 0x20, 0x2f, 0x19, 0x0d, 0x2e, 0x3a, 0x02, 0xd3, 0x26, 0x4c, 0x3a, 0x40, 0x53, 0x1b, + 0x14, 0x35, 0x47, 0x30, 0x3b, 0x58, 0x30, 0x66, 0x59, 0x4a, 0x5a, 0x1c, 0x1e, 0x55, 0x40, 0x39, + 0x4c, 0x26, 0x6e, 0x26, 0x23, 0x25, 0x2e, 0x11, 0x10, 0x2d, 0x27, 0x23, 0x26, 0xfe, 0x59, 0x27, + 0x32, 0x30, 0x28, 0x1b, 0x29, 0x21, 0x0e, 0x07, 0x16, 0x3a, 0x00, 0x02, 0x00, 0x20, 0xff, 0xf6, + 0x02, 0x18, 0x02, 0xd2, 0x00, 0x1e, 0x00, 0x2c, 0x00, 0x00, 0x01, 0x14, 0x0e, 0x03, 0x23, 0x22, + 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x36, 0x37, 0x23, 0x06, 0x06, 0x23, 0x22, 0x26, + 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x25, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x36, 0x35, 0x34, 0x26, 0x26, 0x02, 0x18, 0x12, 0x2d, 0x51, 0x7d, 0x59, 0x15, 0x38, 0x13, 0x14, + 0x2c, 0x16, 0x59, 0x61, 0x28, 0x03, 0x06, 0x15, 0x45, 0x44, 0x5b, 0x6e, 0x83, 0x70, 0x49, 0x76, + 0x46, 0xfe, 0xfe, 0x2c, 0x38, 0x30, 0x31, 0x22, 0x31, 0x1c, 0x18, 0x30, 0x01, 0x99, 0x3d, 0x79, + 0x6b, 0x53, 0x2f, 0x03, 0x04, 0x79, 0x04, 0x06, 0x39, 0x64, 0x42, 0x23, 0x30, 0x76, 0x6c, 0x74, + 0x84, 0x43, 0x8b, 0x55, 0x3c, 0x41, 0x34, 0x3c, 0x1e, 0x2d, 0x18, 0x21, 0x40, 0x29, 0x00, 0x02, + 0x00, 0x39, 0xff, 0xf3, 0x00, 0xe4, 0x02, 0x2c, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x00, 0x13, 0x34, + 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x39, 0x32, 0x24, 0x23, 0x32, 0x32, 0x23, 0x24, 0x32, 0x32, + 0x24, 0x23, 0x32, 0x32, 0x23, 0x24, 0x32, 0x01, 0xd9, 0x2e, 0x25, 0x25, 0x2e, 0x2c, 0x27, 0x27, + 0xfe, 0x99, 0x2e, 0x25, 0x25, 0x2e, 0x2c, 0x27, 0x27, 0x00, 0x02, 0x00, 0x1f, 0xff, 0x7f, 0x00, + 0xe4, 0x02, 0x2c, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x00, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, + 0x14, 0x06, 0x23, 0x22, 0x26, 0x13, 0x06, 0x06, 0x07, 0x23, 0x36, 0x36, 0x37, 0x33, 0x39, 0x32, + 0x24, 0x23, 0x32, 0x32, 0x23, 0x24, 0x32, 0xa7, 0x0d, 0x30, 0x19, 0x6b, 0x0e, 0x1c, 0x07, 0x89, + 0x01, 0xd9, 0x2e, 0x25, 0x25, 0x2e, 0x2c, 0x27, 0x27, 0xfe, 0xbc, 0x35, 0x7e, 0x37, 0x3b, 0x86, + 0x34, 0x00, 0x01, 0x00, 0x2b, 0x00, 0x63, 0x02, 0x10, 0x02, 0x71, 0x00, 0x06, 0x00, 0x00, 0x25, + 0x25, 0x35, 0x25, 0x15, 0x05, 0x05, 0x02, 0x10, 0xfe, 0x1b, 0x01, 0xe5, 0xfe, 0xb2, 0x01, 0x4e, + 0x63, 0xd6, 0x46, 0xf2, 0x75, 0x9b, 0x89, 0x00, 0x02, 0x00, 0x2b, 0x00, 0xcc, 0x02, 0x10, 0x01, + 0xf4, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x13, 0x35, 0x21, 0x15, 0x05, 0x35, 0x21, 0x15, 0x2b, + 0x01, 0xe5, 0xfe, 0x1b, 0x01, 0xe5, 0x01, 0x8a, 0x6a, 0x6a, 0xbe, 0x6b, 0x6b, 0x00, 0x01, 0x00, + 0x2b, 0x00, 0x63, 0x02, 0x10, 0x02, 0x71, 0x00, 0x06, 0x00, 0x00, 0x37, 0x25, 0x25, 0x35, 0x05, + 0x15, 0x05, 0x2b, 0x01, 0x4e, 0xfe, 0xb2, 0x01, 0xe5, 0xfe, 0x1b, 0xd8, 0x89, 0x9b, 0x75, 0xf2, + 0x46, 0xd6, 0x00, 0x02, 0x00, 0x03, 0xff, 0xf3, 0x01, 0xc5, 0x02, 0xd4, 0x00, 0x1d, 0x00, 0x29, + 0x00, 0x00, 0x13, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x06, 0x07, 0x0e, 0x02, 0x15, 0x15, 0x23, 0x07, + 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x87, 0x2a, 0x33, 0x2d, 0x27, + 0x2f, 0x2a, 0x2a, 0x52, 0x2b, 0x35, 0x31, 0x72, 0x44, 0x68, 0x73, 0x1a, 0x34, 0x27, 0x1d, 0x20, + 0x0b, 0x81, 0x10, 0x32, 0x24, 0x23, 0x32, 0x32, 0x23, 0x24, 0x32, 0x01, 0x11, 0x32, 0x44, 0x25, + 0x20, 0x2f, 0x20, 0x20, 0x21, 0x1a, 0x16, 0x6b, 0x1b, 0x22, 0x64, 0x4d, 0x29, 0x3c, 0x33, 0x1d, + 0x15, 0x1e, 0x1c, 0x15, 0x1d, 0xa7, 0x2e, 0x25, 0x25, 0x2e, 0x2c, 0x27, 0x27, 0x00, 0x02, 0x00, + 0x32, 0xff, 0xac, 0x03, 0x4f, 0x02, 0xca, 0x00, 0x3f, 0x00, 0x4d, 0x00, 0x00, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x23, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, + 0x32, 0x16, 0x17, 0x07, 0x06, 0x14, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x36, 0x35, 0x34, 0x26, + 0x26, 0x23, 0x22, 0x06, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x16, 0x05, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x37, 0x26, 0x26, 0x23, 0x22, 0x06, 0x06, 0x03, 0x4f, 0x16, 0x2d, 0x44, 0x2e, 0x25, + 0x38, 0x0b, 0x08, 0x14, 0x43, 0x2f, 0x59, 0x61, 0x3a, 0x6a, 0x48, 0x2f, 0x65, 0x1c, 0x0a, 0x01, + 0x17, 0x0e, 0x17, 0x1e, 0x0f, 0x44, 0x75, 0x4b, 0x69, 0x8f, 0x4a, 0x91, 0x88, 0x3a, 0x7e, 0x34, + 0x30, 0x76, 0x42, 0x7c, 0xb0, 0x5d, 0x3c, 0x71, 0x9e, 0x62, 0x6b, 0xa6, 0x5f, 0xfe, 0x0c, 0x2e, + 0x26, 0x32, 0x29, 0x04, 0x06, 0x0b, 0x1c, 0x11, 0x2f, 0x39, 0x19, 0x01, 0x66, 0x2e, 0x5a, 0x4a, + 0x2b, 0x23, 0x1c, 0x19, 0x26, 0x6b, 0x57, 0x43, 0x67, 0x3b, 0x11, 0x0a, 0xcd, 0x0a, 0x15, 0x03, + 0x29, 0x1b, 0x2d, 0x4b, 0x2d, 0x54, 0x75, 0x3e, 0x57, 0x96, 0x61, 0x87, 0x90, 0x1a, 0x13, 0x5e, + 0x14, 0x18, 0x58, 0xa5, 0x74, 0x5b, 0x9c, 0x75, 0x41, 0x56, 0xa0, 0xab, 0x37, 0x30, 0x49, 0x3b, + 0x6c, 0x02, 0x03, 0x29, 0x41, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb2, 0x02, 0xcd, 0x00, + 0x07, 0x00, 0x12, 0x00, 0x00, 0x21, 0x27, 0x21, 0x07, 0x23, 0x13, 0x33, 0x13, 0x01, 0x2e, 0x02, + 0x27, 0x0e, 0x02, 0x07, 0x07, 0x33, 0x02, 0x0f, 0x34, 0xfe, 0xfc, 0x34, 0xa3, 0xfc, 0xb9, 0xfd, + 0xfe, 0xd1, 0x05, 0x10, 0x10, 0x05, 0x05, 0x11, 0x0f, 0x04, 0x33, 0xba, 0xaa, 0xaa, 0x02, 0xcd, + 0xfd, 0x33, 0x01, 0xcf, 0x11, 0x34, 0x36, 0x14, 0x14, 0x3b, 0x35, 0x0b, 0xa6, 0x00, 0x03, 0x00, + 0x5a, 0x00, 0x00, 0x02, 0x6b, 0x02, 0xca, 0x00, 0x10, 0x00, 0x19, 0x00, 0x22, 0x00, 0x00, 0x01, + 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x23, 0x21, 0x11, 0x13, + 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x1d, 0x02, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, + 0x01, 0x38, 0x8f, 0x92, 0x39, 0x35, 0x24, 0x3a, 0x22, 0x8c, 0x7a, 0xfe, 0xf5, 0xef, 0x42, 0x33, + 0x3c, 0x41, 0x50, 0x63, 0x44, 0x36, 0x37, 0x48, 0x02, 0xca, 0x50, 0x65, 0x3d, 0x54, 0x09, 0x05, + 0x07, 0x24, 0x44, 0x38, 0x61, 0x6e, 0x02, 0xca, 0xfe, 0xe5, 0x2a, 0x28, 0x29, 0x24, 0x9f, 0x78, + 0xba, 0x35, 0x2c, 0x28, 0x31, 0x00, 0x01, 0x00, 0x3a, 0xff, 0xf6, 0x02, 0x5a, 0x02, 0xd4, 0x00, + 0x1b, 0x00, 0x00, 0x01, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x26, 0x26, 0x01, + 0x89, 0x57, 0x5c, 0x55, 0x5e, 0x2c, 0x57, 0x33, 0x2f, 0x5c, 0x39, 0x6e, 0x8f, 0x44, 0x4e, 0x95, + 0x6c, 0x35, 0x6b, 0x31, 0x31, 0x28, 0x51, 0x02, 0x56, 0x82, 0x71, 0x72, 0x7d, 0x14, 0x12, 0x7f, + 0x13, 0x12, 0x5b, 0xa5, 0x6e, 0x6c, 0xa6, 0x5e, 0x1b, 0x17, 0x7b, 0x13, 0x1c, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x02, 0xaa, 0x02, 0xca, 0x00, 0x09, 0x00, 0x11, 0x00, 0x00, 0x01, 0x14, 0x06, + 0x23, 0x23, 0x11, 0x33, 0x32, 0x16, 0x16, 0x07, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, 0x02, + 0xaa, 0xcd, 0xb9, 0xca, 0xe0, 0x70, 0xa5, 0x5b, 0x9d, 0x68, 0x63, 0x51, 0x41, 0xdb, 0x01, 0x6c, + 0xb5, 0xb7, 0x02, 0xca, 0x50, 0x9b, 0x77, 0x77, 0x6f, 0xfe, 0x2f, 0x00, 0x01, 0x00, 0x5a, 0x00, + 0x00, 0x01, 0xf5, 0x02, 0xca, 0x00, 0x0b, 0x00, 0x00, 0x21, 0x21, 0x11, 0x21, 0x15, 0x21, 0x15, + 0x33, 0x15, 0x23, 0x15, 0x21, 0x01, 0xf5, 0xfe, 0x65, 0x01, 0x9b, 0xfe, 0xfc, 0xf2, 0xf2, 0x01, + 0x04, 0x02, 0xca, 0x7c, 0x9d, 0x7c, 0xb8, 0x00, 0x01, 0x00, 0x5a, 0x00, 0x00, 0x01, 0xf3, 0x02, + 0xca, 0x00, 0x09, 0x00, 0x00, 0x33, 0x23, 0x11, 0x21, 0x15, 0x21, 0x15, 0x33, 0x15, 0x23, 0xef, + 0x95, 0x01, 0x99, 0xfe, 0xfc, 0xf2, 0xf2, 0x02, 0xca, 0x7c, 0xb8, 0x7c, 0x00, 0x01, 0x00, 0x3a, + 0xff, 0xf6, 0x02, 0x84, 0x02, 0xd4, 0x00, 0x20, 0x00, 0x00, 0x01, 0x21, 0x11, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x26, 0x26, 0x23, 0x22, 0x06, + 0x06, 0x15, 0x14, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, 0x01, 0x69, 0x01, 0x1b, 0x38, + 0x79, 0x4d, 0xa0, 0xac, 0x57, 0xa6, 0x78, 0x39, 0x6e, 0x2d, 0x32, 0x21, 0x54, 0x2e, 0x42, 0x61, + 0x35, 0x26, 0x52, 0x42, 0x20, 0x2d, 0x13, 0x87, 0x01, 0x91, 0xfe, 0x8e, 0x13, 0x16, 0xbc, 0xb4, + 0x70, 0xa4, 0x5a, 0x18, 0x14, 0x79, 0x11, 0x16, 0x3c, 0x6d, 0x4a, 0x46, 0x6c, 0x3d, 0x06, 0x04, + 0x95, 0x00, 0x01, 0x00, 0x5a, 0x00, 0x00, 0x02, 0xa3, 0x02, 0xca, 0x00, 0x0b, 0x00, 0x00, 0x21, + 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x02, 0xa3, 0x97, 0xfe, 0xe5, + 0x97, 0x97, 0x01, 0x1b, 0x97, 0x01, 0x34, 0xfe, 0xcc, 0x02, 0xca, 0xfe, 0xe8, 0x01, 0x18, 0x00, + 0x01, 0x00, 0x20, 0x00, 0x00, 0x01, 0x65, 0x02, 0xca, 0x00, 0x0b, 0x00, 0x00, 0x21, 0x21, 0x35, + 0x37, 0x11, 0x27, 0x35, 0x21, 0x15, 0x07, 0x11, 0x17, 0x01, 0x65, 0xfe, 0xbb, 0x57, 0x57, 0x01, + 0x45, 0x57, 0x57, 0x56, 0x28, 0x01, 0xce, 0x28, 0x56, 0x56, 0x28, 0xfe, 0x32, 0x28, 0x00, 0x01, + 0xff, 0xb6, 0xff, 0x2e, 0x00, 0xf1, 0x02, 0xca, 0x00, 0x11, 0x00, 0x00, 0x17, 0x22, 0x26, 0x27, + 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x06, 0x06, 0x0f, 0x1d, + 0x2c, 0x10, 0x10, 0x23, 0x14, 0x1a, 0x2b, 0x18, 0x97, 0x39, 0x66, 0xd2, 0x07, 0x04, 0x7e, 0x04, + 0x06, 0x14, 0x38, 0x34, 0x02, 0x9d, 0xfd, 0x64, 0x5c, 0x71, 0x33, 0x00, 0x01, 0x00, 0x5a, 0x00, + 0x00, 0x02, 0x98, 0x02, 0xca, 0x00, 0x0e, 0x00, 0x00, 0x21, 0x23, 0x03, 0x07, 0x15, 0x23, 0x11, + 0x33, 0x11, 0x36, 0x36, 0x37, 0x37, 0x33, 0x03, 0x02, 0x98, 0xac, 0xbb, 0x40, 0x97, 0x97, 0x0f, + 0x1e, 0x0f, 0xc1, 0xa8, 0xf9, 0x01, 0x2d, 0x2e, 0xff, 0x02, 0xca, 0xfe, 0xb9, 0x15, 0x2a, 0x15, + 0xf3, 0xfe, 0xc4, 0x00, 0x01, 0x00, 0x5a, 0x00, 0x00, 0x02, 0x13, 0x02, 0xca, 0x00, 0x05, 0x00, + 0x00, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x5a, 0x97, 0x01, 0x22, 0x02, 0xca, 0xfd, 0xb3, 0x7d, + 0x00, 0x01, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x55, 0x02, 0xca, 0x00, 0x17, 0x00, 0x00, 0x21, 0x03, + 0x23, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x33, 0x13, 0x33, 0x13, 0x33, 0x11, 0x23, 0x11, 0x34, + 0x36, 0x36, 0x37, 0x23, 0x03, 0x01, 0x88, 0xac, 0x04, 0x01, 0x04, 0x04, 0x87, 0xce, 0xa9, 0x03, + 0xb3, 0xce, 0x8d, 0x03, 0x03, 0x01, 0x04, 0xb8, 0x02, 0x30, 0x14, 0x50, 0x5b, 0x25, 0xfe, 0xb4, + 0x02, 0xca, 0xfd, 0xde, 0x02, 0x22, 0xfd, 0x36, 0x01, 0x52, 0x22, 0x58, 0x4f, 0x14, 0xfd, 0xd1, + 0x00, 0x01, 0x00, 0x5a, 0x00, 0x00, 0x02, 0xd3, 0x02, 0xca, 0x00, 0x11, 0x00, 0x00, 0x21, 0x23, + 0x01, 0x23, 0x16, 0x16, 0x17, 0x11, 0x23, 0x11, 0x33, 0x01, 0x33, 0x26, 0x26, 0x27, 0x11, 0x33, + 0x02, 0xd3, 0xc0, 0xfe, 0xc9, 0x04, 0x02, 0x05, 0x02, 0x87, 0xbf, 0x01, 0x36, 0x03, 0x01, 0x04, + 0x02, 0x88, 0x02, 0x1c, 0x33, 0x66, 0x33, 0xfe, 0xb0, 0x02, 0xca, 0xfd, 0xe9, 0x32, 0x62, 0x31, + 0x01, 0x52, 0x00, 0x02, 0x00, 0x3a, 0xff, 0xf6, 0x02, 0xe2, 0x02, 0xd5, 0x00, 0x0f, 0x00, 0x1b, + 0x00, 0x00, 0x01, 0x14, 0x06, 0x06, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x16, 0x05, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x02, 0xe2, + 0x49, 0x96, 0x75, 0x74, 0x97, 0x49, 0x49, 0x97, 0x75, 0x74, 0x96, 0x49, 0xfd, 0xf7, 0x56, 0x5f, + 0x61, 0x54, 0x54, 0x60, 0x60, 0x56, 0x01, 0x66, 0x6f, 0xa5, 0x5c, 0x5c, 0xa6, 0x6f, 0x6f, 0xa4, + 0x5b, 0x5b, 0xa5, 0x6f, 0x70, 0x81, 0x81, 0x70, 0x71, 0x80, 0x80, 0x00, 0x02, 0x00, 0x5a, 0x00, + 0x00, 0x02, 0x47, 0x02, 0xca, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x00, 0x01, 0x32, 0x16, 0x15, 0x14, + 0x06, 0x06, 0x23, 0x23, 0x15, 0x23, 0x11, 0x17, 0x23, 0x15, 0x33, 0x32, 0x36, 0x35, 0x34, 0x01, + 0x3e, 0x8a, 0x7f, 0x34, 0x79, 0x68, 0x41, 0x97, 0xdc, 0x45, 0x32, 0x40, 0x4b, 0x02, 0xca, 0x77, + 0x68, 0x3e, 0x6d, 0x42, 0xfe, 0x02, 0xca, 0x7c, 0xd4, 0x33, 0x39, 0x68, 0x00, 0x02, 0x00, 0x3a, + 0xff, 0x56, 0x02, 0xe2, 0x02, 0xd5, 0x00, 0x12, 0x00, 0x1e, 0x00, 0x00, 0x01, 0x14, 0x06, 0x07, + 0x17, 0x23, 0x27, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, 0x32, 0x16, 0x16, 0x05, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x02, 0xe2, 0x56, 0x5a, 0xac, + 0xc2, 0x83, 0x0b, 0x74, 0x97, 0x49, 0x49, 0x97, 0x75, 0x74, 0x96, 0x49, 0xfd, 0xf7, 0x56, 0x5f, + 0x61, 0x54, 0x54, 0x60, 0x60, 0x56, 0x01, 0x66, 0x78, 0xaf, 0x29, 0xc0, 0xa0, 0x5c, 0xa6, 0x6f, + 0x6f, 0xa4, 0x5b, 0x5b, 0xa5, 0x6f, 0x70, 0x81, 0x81, 0x70, 0x71, 0x80, 0x80, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x02, 0x94, 0x02, 0xca, 0x00, 0x0e, 0x00, 0x17, 0x00, 0x00, 0x01, 0x32, 0x16, + 0x15, 0x14, 0x06, 0x06, 0x07, 0x13, 0x23, 0x03, 0x23, 0x11, 0x23, 0x11, 0x17, 0x23, 0x15, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x26, 0x01, 0x2a, 0x92, 0x8b, 0x25, 0x3d, 0x23, 0xd2, 0xa8, 0xaa, 0x51, + 0x97, 0xc5, 0x2e, 0x31, 0x4b, 0x41, 0x45, 0x02, 0xca, 0x6a, 0x6c, 0x31, 0x49, 0x33, 0x10, 0xfe, + 0xc9, 0x01, 0x12, 0xfe, 0xee, 0x02, 0xca, 0x7c, 0xc1, 0x32, 0x31, 0x33, 0x2b, 0x00, 0x01, 0x00, + 0x2e, 0xff, 0xf6, 0x01, 0xff, 0x02, 0xd4, 0x00, 0x28, 0x00, 0x00, 0x25, 0x14, 0x06, 0x23, 0x22, + 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x26, 0x27, 0x2e, 0x03, 0x35, 0x34, + 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x1e, + 0x02, 0x01, 0xff, 0x89, 0x7e, 0x71, 0x59, 0x33, 0x6d, 0x36, 0x38, 0x2f, 0x25, 0x3e, 0x28, 0x19, + 0x3a, 0x35, 0x22, 0x82, 0x70, 0x38, 0x65, 0x37, 0x31, 0x31, 0x4e, 0x29, 0x2b, 0x2e, 0x44, 0x43, + 0x37, 0x4d, 0x2a, 0xc6, 0x5f, 0x71, 0x2b, 0x8d, 0x16, 0x25, 0x2b, 0x21, 0x1b, 0x26, 0x21, 0x13, + 0x0c, 0x21, 0x31, 0x46, 0x31, 0x60, 0x6b, 0x1a, 0x18, 0x76, 0x14, 0x16, 0x28, 0x20, 0x26, 0x2c, + 0x20, 0x1a, 0x38, 0x4c, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x02, 0x2f, 0x02, 0xca, 0x00, 0x07, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x01, 0x6d, 0x97, 0xc2, 0x02, 0x1b, + 0xc2, 0x02, 0x4c, 0x7e, 0x7e, 0x00, 0x01, 0x00, 0x55, 0xff, 0xf6, 0x02, 0x9f, 0x02, 0xca, 0x00, + 0x12, 0x00, 0x00, 0x25, 0x14, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x02, 0x9f, 0x41, 0x83, 0x64, 0x8e, 0x94, 0x97, 0x48, 0x47, + 0x4a, 0x43, 0x97, 0xfc, 0x4a, 0x77, 0x45, 0x91, 0x77, 0x01, 0xcc, 0xfe, 0x4b, 0x58, 0x48, 0x4e, + 0x53, 0x01, 0xb4, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8a, 0x02, 0xca, 0x00, 0x0e, 0x00, + 0x00, 0x01, 0x03, 0x23, 0x03, 0x33, 0x13, 0x1e, 0x02, 0x17, 0x3e, 0x02, 0x37, 0x13, 0x02, 0x8a, + 0xf3, 0xa5, 0xf2, 0x99, 0x86, 0x04, 0x0f, 0x10, 0x03, 0x03, 0x0f, 0x10, 0x03, 0x87, 0x02, 0xca, + 0xfd, 0x36, 0x02, 0xca, 0xfe, 0x57, 0x0b, 0x3b, 0x41, 0x16, 0x16, 0x41, 0x3b, 0x0b, 0x01, 0xa9, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, 0x02, 0xca, 0x00, 0x26, 0x00, 0x00, 0x01, 0x03, + 0x23, 0x03, 0x2e, 0x03, 0x27, 0x0e, 0x03, 0x07, 0x03, 0x23, 0x03, 0x33, 0x13, 0x1e, 0x02, 0x17, + 0x3e, 0x02, 0x37, 0x13, 0x33, 0x13, 0x1e, 0x02, 0x17, 0x3e, 0x02, 0x37, 0x13, 0x03, 0xc7, 0xb6, + 0xac, 0x61, 0x03, 0x09, 0x0b, 0x08, 0x02, 0x01, 0x09, 0x0a, 0x0a, 0x03, 0x60, 0xac, 0xb6, 0x95, + 0x5b, 0x06, 0x0e, 0x0c, 0x03, 0x03, 0x0c, 0x0d, 0x05, 0x68, 0x8f, 0x68, 0x05, 0x0d, 0x0c, 0x03, + 0x03, 0x0c, 0x0f, 0x05, 0x5b, 0x02, 0xca, 0xfd, 0x36, 0x01, 0x77, 0x0b, 0x2c, 0x34, 0x2f, 0x0d, + 0x0d, 0x2f, 0x33, 0x2d, 0x0c, 0xfe, 0x8a, 0x02, 0xca, 0xfe, 0x7a, 0x17, 0x46, 0x46, 0x18, 0x19, + 0x45, 0x41, 0x12, 0x01, 0x90, 0xfe, 0x70, 0x11, 0x42, 0x46, 0x18, 0x19, 0x45, 0x46, 0x17, 0x01, + 0x86, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9b, 0x02, 0xca, 0x00, 0x0b, 0x00, 0x00, 0x21, + 0x23, 0x03, 0x03, 0x23, 0x13, 0x03, 0x33, 0x13, 0x13, 0x33, 0x03, 0x02, 0x9b, 0xad, 0xa6, 0xa6, + 0xa2, 0xed, 0xde, 0xa7, 0x9a, 0x97, 0xa3, 0xe0, 0x01, 0x0e, 0xfe, 0xf2, 0x01, 0x70, 0x01, 0x5a, + 0xfe, 0xff, 0x01, 0x01, 0xfe, 0x9e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x70, 0x02, 0xca, + 0x00, 0x08, 0x00, 0x00, 0x01, 0x13, 0x33, 0x03, 0x11, 0x23, 0x11, 0x03, 0x33, 0x01, 0x38, 0x95, + 0xa3, 0xed, 0x96, 0xed, 0xa4, 0x01, 0xa4, 0x01, 0x26, 0xfe, 0x4c, 0xfe, 0xea, 0x01, 0x11, 0x01, + 0xb9, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x02, 0x2b, 0x02, 0xca, 0x00, 0x09, 0x00, 0x00, 0x21, + 0x21, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x02, 0x2b, 0xfd, 0xed, 0x01, 0x56, 0xfe, + 0xb3, 0x02, 0x01, 0xfe, 0xaa, 0x01, 0x5f, 0x62, 0x01, 0xeb, 0x7d, 0x62, 0xfe, 0x15, 0x00, 0x01, + 0x00, 0x46, 0xff, 0x62, 0x01, 0x32, 0x02, 0xca, 0x00, 0x07, 0x00, 0x00, 0x05, 0x23, 0x11, 0x33, + 0x15, 0x23, 0x11, 0x33, 0x01, 0x32, 0xec, 0xec, 0x6d, 0x6d, 0x9e, 0x03, 0x68, 0x67, 0xfd, 0x66, + 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x01, 0x97, 0x02, 0xca, 0x00, 0x03, 0x00, 0x00, 0x13, 0x01, + 0x23, 0x01, 0x8d, 0x01, 0x0a, 0x87, 0xfe, 0xf6, 0x02, 0xca, 0xfd, 0x36, 0x02, 0xca, 0x00, 0x01, + 0x00, 0x19, 0xff, 0x62, 0x01, 0x05, 0x02, 0xca, 0x00, 0x07, 0x00, 0x00, 0x17, 0x33, 0x11, 0x23, + 0x35, 0x33, 0x11, 0x23, 0x19, 0x6d, 0x6d, 0xec, 0xec, 0x37, 0x02, 0x9a, 0x67, 0xfc, 0x98, 0x00, + 0x01, 0x00, 0x17, 0x00, 0xfe, 0x02, 0x25, 0x02, 0xce, 0x00, 0x06, 0x00, 0x00, 0x37, 0x13, 0x33, + 0x13, 0x23, 0x03, 0x03, 0x17, 0xd6, 0x46, 0xf2, 0x75, 0x9d, 0x89, 0xfe, 0x01, 0xd0, 0xfe, 0x30, + 0x01, 0x3a, 0xfe, 0xc6, 0x00, 0x01, 0xff, 0xfe, 0xff, 0x62, 0x01, 0x9d, 0xff, 0xa6, 0x00, 0x03, + 0x00, 0x00, 0x05, 0x21, 0x35, 0x21, 0x01, 0x9d, 0xfe, 0x61, 0x01, 0x9f, 0x9e, 0x44, 0x00, 0x01, + 0x00, 0x28, 0x02, 0x5e, 0x01, 0x42, 0x02, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x13, 0x1e, 0x02, 0x17, + 0x15, 0x23, 0x2e, 0x03, 0x27, 0x35, 0xcf, 0x0f, 0x29, 0x2b, 0x10, 0x63, 0x13, 0x33, 0x35, 0x2e, + 0x0e, 0x02, 0xfe, 0x16, 0x37, 0x33, 0x13, 0x0d, 0x0d, 0x27, 0x2c, 0x28, 0x0e, 0x0a, 0x00, 0x02, + 0x00, 0x2a, 0xff, 0xf6, 0x02, 0x11, 0x02, 0x2d, 0x00, 0x1b, 0x00, 0x26, 0x00, 0x00, 0x01, 0x32, + 0x16, 0x15, 0x11, 0x23, 0x27, 0x23, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x37, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x13, 0x06, 0x06, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x35, 0x35, 0x01, 0x2e, 0x6e, 0x75, 0x68, 0x1d, 0x04, 0x23, 0x4e, 0x44, 0x49, + 0x60, 0x7a, 0x7a, 0x5f, 0x2d, 0x28, 0x28, 0x4c, 0x26, 0x31, 0x2c, 0x6b, 0x4f, 0x48, 0x38, 0x28, + 0x20, 0x30, 0x42, 0x02, 0x2d, 0x5f, 0x62, 0xfe, 0x94, 0x4a, 0x2c, 0x28, 0x55, 0x58, 0x57, 0x53, + 0x04, 0x03, 0x18, 0x2b, 0x28, 0x17, 0x11, 0x65, 0x17, 0x1a, 0xfe, 0xce, 0x02, 0x30, 0x27, 0x22, + 0x1d, 0x39, 0x34, 0x2d, 0x00, 0x02, 0x00, 0x4e, 0xff, 0xf6, 0x02, 0x4c, 0x02, 0xf8, 0x00, 0x15, + 0x00, 0x22, 0x00, 0x00, 0x13, 0x14, 0x06, 0x07, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, + 0x06, 0x23, 0x22, 0x26, 0x27, 0x23, 0x07, 0x23, 0x11, 0x33, 0x13, 0x22, 0x06, 0x07, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0xe3, 0x04, 0x02, 0x06, 0x16, 0x4a, 0x3b, 0x5c, 0x72, + 0x74, 0x5e, 0x3c, 0x45, 0x16, 0x0a, 0x19, 0x72, 0x95, 0x6b, 0x3a, 0x2f, 0x02, 0x2f, 0x3e, 0x2e, + 0x36, 0x37, 0x02, 0x47, 0x1f, 0x3c, 0x11, 0x22, 0x2f, 0x8f, 0x8b, 0x8c, 0x90, 0x2b, 0x1b, 0x3c, + 0x02, 0xf8, 0xfe, 0xbd, 0x48, 0x4a, 0x10, 0x4f, 0x55, 0x55, 0x50, 0x50, 0x51, 0x00, 0x01, 0x00, + 0x2d, 0xff, 0xf6, 0x01, 0xe3, 0x02, 0x2c, 0x00, 0x19, 0x00, 0x00, 0x05, 0x22, 0x26, 0x35, 0x34, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x15, 0x06, 0x06, 0x01, 0x2c, 0x7a, 0x85, 0x44, 0x79, 0x4f, 0x38, 0x53, 0x1f, 0x2c, + 0x23, 0x3d, 0x1e, 0x74, 0x3d, 0x37, 0x2f, 0x48, 0x22, 0x22, 0x4b, 0x0a, 0x87, 0x91, 0x64, 0x7e, + 0x3c, 0x16, 0x0f, 0x73, 0x0e, 0x12, 0xa5, 0x52, 0x4e, 0x19, 0x16, 0x7f, 0x16, 0x13, 0x00, 0x02, + 0x00, 0x2d, 0xff, 0xf6, 0x02, 0x2b, 0x02, 0xf8, 0x00, 0x15, 0x00, 0x22, 0x00, 0x00, 0x17, 0x22, + 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x33, 0x26, 0x26, 0x35, 0x35, 0x33, 0x11, 0x23, + 0x27, 0x23, 0x06, 0x06, 0x27, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x16, 0xfb, 0x5b, 0x73, 0x74, 0x5e, 0x3b, 0x4c, 0x16, 0x05, 0x03, 0x08, 0x95, 0x72, 0x1d, 0x06, + 0x16, 0x4a, 0x07, 0x3e, 0x32, 0x01, 0x31, 0x42, 0x31, 0x38, 0x38, 0x0a, 0x8f, 0x8b, 0x8c, 0x90, + 0x2e, 0x22, 0x10, 0x3d, 0x20, 0xaf, 0xfd, 0x08, 0x47, 0x22, 0x2f, 0x77, 0x49, 0x49, 0x10, 0x50, + 0x54, 0x55, 0x50, 0x50, 0x51, 0x00, 0x02, 0x00, 0x2d, 0xff, 0xf6, 0x02, 0x24, 0x02, 0x2c, 0x00, + 0x16, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x32, 0x16, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, + 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x17, 0x22, 0x06, 0x07, + 0x33, 0x26, 0x26, 0x01, 0x2f, 0x71, 0x84, 0xfe, 0xa0, 0x02, 0x47, 0x3f, 0x35, 0x56, 0x2e, 0x28, + 0x59, 0x3f, 0x52, 0x7e, 0x48, 0x41, 0x74, 0x4e, 0x2b, 0x39, 0x05, 0xd1, 0x01, 0x32, 0x02, 0x2c, + 0x81, 0x77, 0x48, 0x3f, 0x48, 0x15, 0x16, 0x73, 0x14, 0x13, 0x3d, 0x7c, 0x5e, 0x60, 0x7f, 0x40, + 0x6a, 0x38, 0x3b, 0x32, 0x41, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x01, 0xb0, 0x02, 0xfd, 0x00, + 0x18, 0x00, 0x00, 0x01, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x37, 0x35, 0x34, 0x36, 0x36, 0x33, + 0x32, 0x16, 0x17, 0x07, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x15, 0x33, 0x01, 0x7c, 0x81, 0x95, + 0x52, 0x52, 0x2f, 0x57, 0x3b, 0x2c, 0x47, 0x16, 0x26, 0x11, 0x28, 0x1a, 0x1f, 0x1d, 0x81, 0x01, + 0xb2, 0xfe, 0x4e, 0x01, 0xb2, 0x48, 0x28, 0x28, 0x46, 0x4d, 0x20, 0x0e, 0x09, 0x6d, 0x05, 0x09, + 0x26, 0x1d, 0x22, 0x00, 0x02, 0x00, 0x2d, 0xff, 0x10, 0x02, 0x2b, 0x02, 0x2c, 0x00, 0x1e, 0x00, + 0x29, 0x00, 0x00, 0x13, 0x32, 0x17, 0x33, 0x37, 0x33, 0x11, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x36, 0x37, 0x23, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x36, 0x17, 0x22, 0x15, 0x14, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0xff, 0x65, 0x39, + 0x04, 0x0c, 0x7e, 0x8a, 0x87, 0x3a, 0x63, 0x2f, 0x65, 0x70, 0x73, 0x03, 0x01, 0x04, 0x1c, 0x4e, + 0x31, 0x61, 0x6d, 0x70, 0x91, 0x69, 0x6b, 0x39, 0x37, 0x36, 0x02, 0x2c, 0x50, 0x46, 0xfd, 0xdd, + 0x75, 0x7a, 0x0e, 0x12, 0x77, 0x2a, 0x7c, 0x0b, 0x11, 0x24, 0x0e, 0x2b, 0x26, 0x95, 0x85, 0x86, + 0x96, 0x79, 0xa5, 0xa3, 0x41, 0x51, 0x12, 0x58, 0x4c, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x02, + 0x46, 0x02, 0xf8, 0x00, 0x16, 0x00, 0x00, 0x13, 0x14, 0x06, 0x07, 0x33, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x11, 0x33, 0xe3, 0x05, + 0x02, 0x08, 0x1a, 0x52, 0x32, 0x59, 0x6b, 0x95, 0x58, 0x43, 0x33, 0x95, 0x95, 0x02, 0x5d, 0x28, + 0x4a, 0x0f, 0x2a, 0x26, 0x5f, 0x69, 0xfe, 0x9c, 0x01, 0x3f, 0x76, 0x5d, 0x57, 0xfe, 0xff, 0x02, + 0xf8, 0x00, 0x02, 0x00, 0x48, 0x00, 0x00, 0x00, 0xea, 0x02, 0xf8, 0x00, 0x0b, 0x00, 0x0f, 0x00, + 0x00, 0x13, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x17, 0x11, 0x23, + 0x11, 0x99, 0x21, 0x30, 0x30, 0x21, 0x22, 0x2f, 0x2f, 0x6c, 0x95, 0x02, 0xf8, 0x1f, 0x2a, 0x29, + 0x20, 0x20, 0x29, 0x2a, 0x1f, 0xd6, 0xfd, 0xde, 0x02, 0x22, 0x00, 0x02, 0xff, 0xc0, 0xff, 0x10, + 0x00, 0xea, 0x02, 0xf8, 0x00, 0x0b, 0x00, 0x1c, 0x00, 0x00, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x03, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x11, 0x33, 0x11, 0x14, 0x06, 0x06, 0x48, 0x2f, 0x22, 0x21, 0x30, 0x30, 0x21, 0x22, 0x2f, + 0x26, 0x19, 0x37, 0x12, 0x12, 0x20, 0x14, 0x1e, 0x2a, 0x95, 0x26, 0x55, 0x02, 0xaf, 0x2a, 0x1f, + 0x1f, 0x2a, 0x29, 0x20, 0x20, 0xfc, 0x8a, 0x07, 0x05, 0x75, 0x04, 0x05, 0x22, 0x31, 0x02, 0x47, + 0xfd, 0xa3, 0x32, 0x52, 0x31, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x02, 0x6c, 0x02, 0xf8, 0x00, + 0x12, 0x00, 0x00, 0x13, 0x14, 0x06, 0x07, 0x33, 0x36, 0x36, 0x37, 0x37, 0x33, 0x07, 0x13, 0x23, + 0x27, 0x07, 0x15, 0x23, 0x11, 0x33, 0xe3, 0x05, 0x03, 0x02, 0x0f, 0x20, 0x12, 0x99, 0xa8, 0xd9, + 0xe6, 0xac, 0x9d, 0x40, 0x95, 0x95, 0x01, 0xa4, 0x1f, 0x3d, 0x1f, 0x15, 0x2b, 0x13, 0xa6, 0xed, + 0xfe, 0xcb, 0xdd, 0x33, 0xaa, 0x02, 0xf8, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xe3, 0x02, + 0xf8, 0x00, 0x03, 0x00, 0x00, 0x33, 0x23, 0x11, 0x33, 0xe3, 0x95, 0x95, 0x02, 0xf8, 0x00, 0x01, + 0x00, 0x4e, 0x00, 0x00, 0x03, 0x8b, 0x02, 0x2c, 0x00, 0x22, 0x00, 0x00, 0x01, 0x32, 0x16, 0x15, + 0x11, 0x23, 0x11, 0x34, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x11, 0x34, 0x23, 0x22, 0x06, 0x15, + 0x11, 0x23, 0x11, 0x33, 0x17, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x33, 0x36, 0x36, 0x02, + 0xcf, 0x5d, 0x5f, 0x95, 0x52, 0x3b, 0x32, 0x95, 0x52, 0x3e, 0x2f, 0x95, 0x72, 0x14, 0x08, 0x19, + 0x57, 0x2f, 0x3c, 0x54, 0x16, 0x0d, 0x19, 0x59, 0x02, 0x2c, 0x5f, 0x69, 0xfe, 0x9c, 0x01, 0x3f, + 0x76, 0x54, 0x4f, 0xfe, 0xee, 0x01, 0x3f, 0x76, 0x5d, 0x57, 0xfe, 0xff, 0x02, 0x22, 0x46, 0x2a, + 0x26, 0x27, 0x29, 0x2a, 0x26, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x02, 0x46, 0x02, 0x2c, 0x00, + 0x14, 0x00, 0x00, 0x01, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, + 0x11, 0x23, 0x11, 0x33, 0x17, 0x33, 0x36, 0x36, 0x01, 0x84, 0x58, 0x6a, 0x95, 0x2a, 0x2e, 0x44, + 0x32, 0x95, 0x72, 0x14, 0x08, 0x1a, 0x5b, 0x02, 0x2c, 0x5f, 0x69, 0xfe, 0x9c, 0x01, 0x3f, 0x3b, + 0x3b, 0x5d, 0x57, 0xfe, 0xff, 0x02, 0x22, 0x46, 0x2a, 0x26, 0x00, 0x02, 0x00, 0x2d, 0xff, 0xf6, + 0x02, 0x3e, 0x02, 0x2c, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x00, 0x01, 0x14, 0x06, 0x23, 0x22, 0x26, + 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x05, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x02, 0x3e, 0x8f, 0x7b, 0x4c, 0x77, 0x44, 0x8e, 0x7c, 0x4d, 0x76, 0x44, + 0xfe, 0x87, 0x35, 0x3c, 0x3b, 0x35, 0x35, 0x3c, 0x3b, 0x35, 0x01, 0x12, 0x88, 0x94, 0x42, 0x7f, + 0x5b, 0x88, 0x92, 0x42, 0x7d, 0x5b, 0x51, 0x53, 0x53, 0x51, 0x51, 0x51, 0x51, 0x00, 0x02, 0x00, + 0x4e, 0xff, 0x10, 0x02, 0x4c, 0x02, 0x2c, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x01, 0x32, 0x16, + 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x23, 0x16, 0x15, 0x15, 0x23, 0x11, 0x33, 0x17, 0x33, + 0x36, 0x36, 0x17, 0x22, 0x06, 0x07, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x01, 0x7e, + 0x5c, 0x72, 0x76, 0x5c, 0x3b, 0x46, 0x16, 0x08, 0x08, 0x95, 0x79, 0x15, 0x07, 0x16, 0x4a, 0x0b, + 0x3a, 0x2f, 0x02, 0x2f, 0x3e, 0x33, 0x31, 0x02, 0x2c, 0x8f, 0x8b, 0x8b, 0x91, 0x2b, 0x1b, 0x2a, + 0x26, 0xdc, 0x03, 0x12, 0x47, 0x21, 0x30, 0x77, 0x48, 0x4a, 0x10, 0x4f, 0x55, 0x55, 0x50, 0xa1, + 0x00, 0x02, 0x00, 0x2d, 0xff, 0x10, 0x02, 0x2b, 0x02, 0x2c, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, + 0x05, 0x34, 0x37, 0x23, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, + 0x33, 0x37, 0x33, 0x11, 0x23, 0x03, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, + 0x14, 0x01, 0x96, 0x06, 0x06, 0x15, 0x4a, 0x3c, 0x5c, 0x72, 0x74, 0x5d, 0x3c, 0x4b, 0x17, 0x04, + 0x0d, 0x7e, 0x95, 0x66, 0x3e, 0x31, 0x01, 0x31, 0x41, 0x35, 0x34, 0x0b, 0x2a, 0x28, 0x22, 0x2f, + 0x8f, 0x8b, 0x8c, 0x90, 0x2e, 0x22, 0x46, 0xfc, 0xee, 0x01, 0x5b, 0x49, 0x49, 0x12, 0x50, 0x54, + 0x55, 0x50, 0xa3, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x01, 0xb1, 0x02, 0x2c, 0x00, 0x13, 0x00, + 0x00, 0x01, 0x32, 0x16, 0x17, 0x07, 0x26, 0x26, 0x23, 0x22, 0x06, 0x06, 0x15, 0x11, 0x23, 0x11, + 0x33, 0x17, 0x33, 0x36, 0x36, 0x01, 0x7f, 0x0b, 0x1e, 0x09, 0x0b, 0x07, 0x1b, 0x0a, 0x26, 0x46, + 0x2b, 0x95, 0x71, 0x16, 0x07, 0x18, 0x54, 0x02, 0x2c, 0x02, 0x02, 0x8c, 0x02, 0x03, 0x1b, 0x3c, + 0x34, 0xfe, 0xea, 0x02, 0x22, 0x5c, 0x2a, 0x3c, 0x00, 0x01, 0x00, 0x2d, 0xff, 0xf6, 0x01, 0xcb, + 0x02, 0x2c, 0x00, 0x28, 0x00, 0x00, 0x25, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, + 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x26, 0x27, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x17, 0x07, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x16, 0x17, 0x1e, 0x02, 0x01, 0xcb, 0x75, + 0x74, 0x39, 0x52, 0x29, 0x2c, 0x66, 0x27, 0x2c, 0x25, 0x0f, 0x32, 0x35, 0x33, 0x42, 0x20, 0x76, + 0x62, 0x33, 0x5c, 0x31, 0x2d, 0x28, 0x48, 0x25, 0x42, 0x11, 0x31, 0x30, 0x2f, 0x44, 0x25, 0xa2, + 0x53, 0x59, 0x0f, 0x11, 0x7b, 0x14, 0x1a, 0x1a, 0x15, 0x0e, 0x16, 0x1c, 0x16, 0x16, 0x2b, 0x3d, + 0x2e, 0x4c, 0x4c, 0x14, 0x17, 0x6b, 0x11, 0x17, 0x24, 0x0d, 0x15, 0x18, 0x14, 0x13, 0x29, 0x3d, + 0x00, 0x01, 0x00, 0x17, 0xff, 0xf6, 0x01, 0x92, 0x02, 0x96, 0x00, 0x18, 0x00, 0x00, 0x25, 0x32, + 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x26, 0x35, 0x11, 0x23, 0x35, 0x37, 0x37, 0x33, + 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x01, 0x34, 0x19, 0x2e, 0x17, 0x18, 0x47, 0x2a, 0x31, + 0x4d, 0x2d, 0x47, 0x52, 0x2b, 0x5f, 0x99, 0x99, 0x24, 0x6d, 0x0a, 0x07, 0x6f, 0x0a, 0x0f, 0x20, + 0x4f, 0x46, 0x01, 0x07, 0x3f, 0x32, 0x73, 0x74, 0x70, 0xfe, 0xf9, 0x1f, 0x1f, 0x00, 0x01, 0x00, + 0x4b, 0xff, 0xf6, 0x02, 0x43, 0x02, 0x22, 0x00, 0x14, 0x00, 0x00, 0x01, 0x11, 0x23, 0x27, 0x23, + 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, + 0x02, 0x43, 0x72, 0x14, 0x08, 0x1a, 0x5b, 0x33, 0x58, 0x6a, 0x95, 0x2a, 0x2e, 0x44, 0x32, 0x02, + 0x22, 0xfd, 0xde, 0x46, 0x2a, 0x26, 0x5f, 0x69, 0x01, 0x64, 0xfe, 0xc1, 0x3a, 0x3c, 0x5d, 0x57, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x39, 0x02, 0x22, 0x00, 0x0c, 0x00, 0x00, + 0x33, 0x03, 0x33, 0x13, 0x16, 0x16, 0x17, 0x33, 0x36, 0x37, 0x13, 0x33, 0x03, 0xd0, 0xd0, 0x9c, + 0x69, 0x09, 0x0b, 0x01, 0x04, 0x03, 0x13, 0x69, 0x9c, 0xd0, 0x02, 0x22, 0xfe, 0xc9, 0x1c, 0x3c, + 0x18, 0x36, 0x3a, 0x01, 0x37, 0xfd, 0xde, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x03, 0x4e, 0x02, + 0x22, 0x00, 0x2a, 0x00, 0x00, 0x25, 0x2e, 0x03, 0x27, 0x23, 0x0e, 0x03, 0x07, 0x07, 0x23, 0x03, + 0x33, 0x17, 0x1e, 0x02, 0x17, 0x33, 0x3e, 0x03, 0x37, 0x13, 0x33, 0x13, 0x1e, 0x02, 0x15, 0x33, + 0x3e, 0x02, 0x37, 0x37, 0x33, 0x03, 0x23, 0x01, 0xe5, 0x04, 0x0f, 0x12, 0x10, 0x03, 0x04, 0x03, + 0x0f, 0x12, 0x10, 0x04, 0x2c, 0xa0, 0x9b, 0x94, 0x3f, 0x07, 0x0b, 0x0a, 0x02, 0x04, 0x01, 0x06, + 0x09, 0x07, 0x02, 0x43, 0xa4, 0x40, 0x04, 0x0b, 0x09, 0x04, 0x02, 0x0a, 0x0d, 0x07, 0x41, 0x92, + 0x9d, 0xa2, 0xbf, 0x11, 0x43, 0x4d, 0x41, 0x0f, 0x0f, 0x41, 0x4d, 0x44, 0x12, 0xbd, 0x02, 0x22, + 0xf2, 0x19, 0x46, 0x41, 0x13, 0x0e, 0x2f, 0x32, 0x29, 0x07, 0x01, 0x06, 0xfe, 0xfa, 0x0e, 0x3e, + 0x40, 0x13, 0x11, 0x41, 0x48, 0x19, 0xf2, 0xfd, 0xde, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x02, + 0x3d, 0x02, 0x22, 0x00, 0x0b, 0x00, 0x00, 0x13, 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x13, 0x23, + 0x27, 0x07, 0x23, 0xbe, 0xb0, 0xa9, 0x6a, 0x6b, 0xa9, 0xb2, 0xba, 0xa9, 0x73, 0x73, 0xa9, 0x01, + 0x17, 0x01, 0x0b, 0xae, 0xae, 0xfe, 0xf5, 0xfe, 0xe9, 0xbb, 0xbb, 0x00, 0x01, 0x00, 0x00, 0xff, + 0x10, 0x02, 0x39, 0x02, 0x22, 0x00, 0x1a, 0x00, 0x00, 0x11, 0x33, 0x13, 0x16, 0x16, 0x17, 0x33, + 0x36, 0x36, 0x37, 0x13, 0x33, 0x03, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x37, 0xa3, 0x67, 0x08, 0x08, 0x02, 0x03, 0x03, 0x0b, 0x07, 0x65, 0xa0, 0xe7, + 0x1f, 0x77, 0x4e, 0x19, 0x25, 0x0e, 0x0b, 0x1f, 0x11, 0x2f, 0x37, 0x0d, 0x09, 0x02, 0x22, 0xfe, + 0xcd, 0x16, 0x2f, 0x1a, 0x1a, 0x2f, 0x16, 0x01, 0x33, 0xfd, 0x98, 0x55, 0x55, 0x05, 0x03, 0x76, + 0x02, 0x04, 0x39, 0x28, 0x1b, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x01, 0xca, 0x02, 0x22, 0x00, + 0x09, 0x00, 0x00, 0x21, 0x21, 0x35, 0x13, 0x23, 0x35, 0x21, 0x15, 0x03, 0x33, 0x01, 0xca, 0xfe, + 0x51, 0xfd, 0xee, 0x01, 0x97, 0xf6, 0xff, 0x58, 0x01, 0x58, 0x72, 0x61, 0xfe, 0xb1, 0x00, 0x01, + 0x00, 0x0f, 0xff, 0x62, 0x01, 0x62, 0x02, 0xca, 0x00, 0x1f, 0x00, 0x00, 0x05, 0x22, 0x26, 0x26, + 0x35, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x36, 0x35, 0x35, 0x34, 0x36, 0x36, 0x33, 0x15, 0x06, + 0x06, 0x15, 0x15, 0x14, 0x07, 0x15, 0x16, 0x15, 0x15, 0x14, 0x16, 0x17, 0x01, 0x62, 0x55, 0x5d, + 0x24, 0x40, 0x3d, 0x3d, 0x40, 0x24, 0x5d, 0x55, 0x27, 0x2e, 0x72, 0x72, 0x2e, 0x27, 0x9e, 0x1c, + 0x3c, 0x30, 0x9a, 0x2f, 0x28, 0x75, 0x28, 0x2f, 0x9b, 0x30, 0x3c, 0x1c, 0x6e, 0x01, 0x1a, 0x2a, + 0x92, 0x5b, 0x11, 0x06, 0x11, 0x5b, 0x92, 0x2a, 0x1a, 0x01, 0x00, 0x01, 0x00, 0xde, 0xff, 0x1d, + 0x01, 0x49, 0x02, 0xf5, 0x00, 0x03, 0x00, 0x00, 0x13, 0x33, 0x11, 0x23, 0xde, 0x6b, 0x6b, 0x02, + 0xf5, 0xfc, 0x28, 0x00, 0x01, 0x00, 0x28, 0xff, 0x62, 0x01, 0x7b, 0x02, 0xca, 0x00, 0x1f, 0x00, + 0x00, 0x17, 0x36, 0x36, 0x35, 0x35, 0x34, 0x37, 0x35, 0x26, 0x35, 0x35, 0x34, 0x26, 0x27, 0x35, + 0x32, 0x16, 0x16, 0x15, 0x15, 0x14, 0x16, 0x33, 0x15, 0x22, 0x06, 0x15, 0x15, 0x14, 0x06, 0x06, + 0x23, 0x28, 0x27, 0x2e, 0x72, 0x72, 0x2e, 0x27, 0x56, 0x5c, 0x24, 0x40, 0x3d, 0x3d, 0x40, 0x24, + 0x5c, 0x56, 0x30, 0x01, 0x1a, 0x2a, 0x92, 0x5b, 0x11, 0x06, 0x11, 0x5b, 0x92, 0x2a, 0x1a, 0x01, + 0x6e, 0x1c, 0x3c, 0x30, 0x9b, 0x2f, 0x28, 0x75, 0x28, 0x2f, 0x9a, 0x30, 0x3c, 0x1c, 0x00, 0x01, + 0x00, 0x2b, 0x01, 0x0d, 0x02, 0x10, 0x01, 0xb4, 0x00, 0x17, 0x00, 0x00, 0x01, 0x26, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x35, 0x36, 0x33, 0x32, 0x16, 0x17, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, + 0x06, 0x23, 0x22, 0x26, 0x01, 0x0c, 0x25, 0x33, 0x17, 0x1c, 0x3d, 0x19, 0x32, 0x4b, 0x1d, 0x3b, + 0x2f, 0x25, 0x34, 0x16, 0x1d, 0x3c, 0x19, 0x32, 0x4b, 0x1d, 0x3b, 0x01, 0x2d, 0x10, 0x0b, 0x22, + 0x19, 0x71, 0x35, 0x0b, 0x14, 0x10, 0x0b, 0x22, 0x19, 0x71, 0x35, 0x0c, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf3, 0x66, 0xcb, 0x35, 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x03, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xdf, 0x93, 0x35, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x93, 0x35, 0xf6, + 0xfd, 0x68, 0xfe, 0x76, 0x0a, 0xf0, 0x05, 0x43, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd6, + 0xff, 0xb6, 0xff, 0xd3, 0x03, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x02, 0x58, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x39, + 0x01, 0xd8, 0x00, 0x41, 0x02, 0x86, 0x00, 0x16, 0x02, 0x3c, 0x00, 0x2b, 0x03, 0x85, 0x00, 0x1f, + 0x02, 0xee, 0x00, 0x28, 0x01, 0x0a, 0x00, 0x41, 0x01, 0x53, 0x00, 0x28, 0x01, 0x53, 0x00, 0x1e, + 0x02, 0x21, 0x00, 0x1f, 0x02, 0x3c, 0x00, 0x2b, 0x01, 0x1d, 0x00, 0x1f, 0x01, 0x42, 0x00, 0x1e, + 0x01, 0x1d, 0x00, 0x39, 0x01, 0x9d, 0x00, 0x07, 0x02, 0x3c, 0x00, 0x24, 0x02, 0x3c, 0x00, 0x3b, + 0x02, 0x3c, 0x00, 0x26, 0x02, 0x3c, 0x00, 0x26, 0x02, 0x3c, 0x00, 0x11, 0x02, 0x3c, 0x00, 0x31, + 0x02, 0x3c, 0x00, 0x23, 0x02, 0x3c, 0x00, 0x1b, 0x02, 0x3c, 0x00, 0x23, 0x02, 0x3c, 0x00, 0x20, + 0x01, 0x1d, 0x00, 0x39, 0x01, 0x1d, 0x00, 0x1f, 0x02, 0x3c, 0x00, 0x2b, 0x02, 0x3c, 0x00, 0x2b, + 0x02, 0x3c, 0x00, 0x2b, 0x01, 0xdd, 0x00, 0x03, 0x03, 0x81, 0x00, 0x32, 0x02, 0xb2, 0x00, 0x00, + 0x02, 0xa0, 0x00, 0x5a, 0x02, 0x7d, 0x00, 0x3a, 0x02, 0xe4, 0x00, 0x5a, 0x02, 0x30, 0x00, 0x5a, + 0x02, 0x25, 0x00, 0x5a, 0x02, 0xd4, 0x00, 0x3a, 0x02, 0xfd, 0x00, 0x5a, 0x01, 0x85, 0x00, 0x20, + 0x01, 0x4b, 0xff, 0xb6, 0x02, 0x98, 0x00, 0x5a, 0x02, 0x35, 0x00, 0x5a, 0x03, 0xaf, 0x00, 0x5a, + 0x03, 0x2d, 0x00, 0x5a, 0x03, 0x1c, 0x00, 0x3a, 0x02, 0x74, 0x00, 0x5a, 0x03, 0x1c, 0x00, 0x3a, + 0x02, 0x94, 0x00, 0x5a, 0x02, 0x27, 0x00, 0x2e, 0x02, 0x43, 0x00, 0x14, 0x02, 0xf4, 0x00, 0x55, + 0x02, 0x8a, 0x00, 0x00, 0x03, 0xc7, 0x00, 0x00, 0x02, 0x9b, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, + 0x02, 0x43, 0x00, 0x18, 0x01, 0x4b, 0x00, 0x46, 0x01, 0x9d, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x19, + 0x02, 0x3c, 0x00, 0x17, 0x01, 0x9b, 0xff, 0xfe, 0x01, 0x6a, 0x00, 0x28, 0x02, 0x5c, 0x00, 0x2a, + 0x02, 0x79, 0x00, 0x4e, 0x02, 0x02, 0x00, 0x2d, 0x02, 0x79, 0x00, 0x2d, 0x02, 0x4f, 0x00, 0x2d, + 0x01, 0x83, 0x00, 0x14, 0x02, 0x79, 0x00, 0x2d, 0x02, 0x91, 0x00, 0x4e, 0x01, 0x31, 0x00, 0x48, + 0x01, 0x31, 0xff, 0xc0, 0x02, 0x6c, 0x00, 0x4e, 0x01, 0x31, 0x00, 0x4e, 0x03, 0xd6, 0x00, 0x4e, + 0x02, 0x91, 0x00, 0x4e, 0x02, 0x6b, 0x00, 0x2d, 0x02, 0x79, 0x00, 0x4e, 0x02, 0x79, 0x00, 0x2d, + 0x01, 0xc6, 0x00, 0x4e, 0x01, 0xf1, 0x00, 0x2d, 0x01, 0xb2, 0x00, 0x17, 0x02, 0x91, 0x00, 0x4b, + 0x02, 0x39, 0x00, 0x00, 0x03, 0x58, 0x00, 0x0a, 0x02, 0x42, 0x00, 0x05, 0x02, 0x39, 0x00, 0x00, + 0x01, 0xe8, 0x00, 0x1b, 0x01, 0x8a, 0x00, 0x0f, 0x02, 0x27, 0x00, 0xde, 0x01, 0x8a, 0x00, 0x28, + 0x02, 0x3c, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x71, + 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x01, 0x8a, 0x00, 0x00, 0x02, 0x0f, + 0x00, 0x00, 0x02, 0xb8, 0x00, 0x00, 0x02, 0xd4, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x03, 0x3d, + 0x00, 0x00, 0x03, 0x7a, 0x00, 0x00, 0x03, 0xa3, 0x00, 0x00, 0x03, 0xca, 0x00, 0x00, 0x03, 0xe2, + 0x00, 0x00, 0x04, 0x0d, 0x00, 0x00, 0x04, 0x2c, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x04, 0xb1, + 0x00, 0x00, 0x05, 0x0d, 0x00, 0x00, 0x05, 0x8b, 0x00, 0x00, 0x05, 0xd6, 0x00, 0x00, 0x06, 0x36, + 0x00, 0x00, 0x06, 0xb9, 0x00, 0x00, 0x06, 0xdd, 0x00, 0x00, 0x07, 0x7e, 0x00, 0x00, 0x08, 0x02, + 0x00, 0x00, 0x08, 0x4d, 0x00, 0x00, 0x08, 0x95, 0x00, 0x00, 0x08, 0xbb, 0x00, 0x00, 0x08, 0xe1, + 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x09, 0x81, 0x00, 0x00, 0x0a, 0x59, 0x00, 0x00, 0x0a, 0xa1, + 0x00, 0x00, 0x0b, 0x09, 0x00, 0x00, 0x0b, 0x61, 0x00, 0x00, 0x0b, 0x9f, 0x00, 0x00, 0x0b, 0xcb, + 0x00, 0x00, 0x0b, 0xf0, 0x00, 0x00, 0x0c, 0x55, 0x00, 0x00, 0x0c, 0x83, 0x00, 0x00, 0x0c, 0xb2, + 0x00, 0x00, 0x0c, 0xef, 0x00, 0x00, 0x0d, 0x27, 0x00, 0x00, 0x0d, 0x44, 0x00, 0x00, 0x0d, 0x94, + 0x00, 0x00, 0x0d, 0xd6, 0x00, 0x00, 0x0e, 0x2f, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x0e, 0xd1, + 0x00, 0x00, 0x0f, 0x21, 0x00, 0x00, 0x0f, 0x98, 0x00, 0x00, 0x0f, 0xb9, 0x00, 0x00, 0x0f, 0xf7, + 0x00, 0x00, 0x10, 0x34, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x00, 0x10, 0xea, 0x00, 0x00, 0x11, 0x15, + 0x00, 0x00, 0x11, 0x42, 0x00, 0x00, 0x11, 0x64, 0x00, 0x00, 0x11, 0x82, 0x00, 0x00, 0x11, 0xa3, + 0x00, 0x00, 0x11, 0xc8, 0x00, 0x00, 0x11, 0xe2, 0x00, 0x00, 0x12, 0x12, 0x00, 0x00, 0x12, 0x88, + 0x00, 0x00, 0x12, 0xf1, 0x00, 0x00, 0x13, 0x42, 0x00, 0x00, 0x13, 0xa9, 0x00, 0x00, 0x14, 0x09, + 0x00, 0x00, 0x14, 0x57, 0x00, 0x00, 0x14, 0xcd, 0x00, 0x00, 0x15, 0x15, 0x00, 0x00, 0x15, 0x4e, + 0x00, 0x00, 0x15, 0xa9, 0x00, 0x00, 0x15, 0xeb, 0x00, 0x00, 0x16, 0x02, 0x00, 0x00, 0x16, 0x69, + 0x00, 0x00, 0x16, 0xae, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x17, 0x64, 0x00, 0x00, 0x17, 0xc7, + 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x18, 0x84, 0x00, 0x00, 0x18, 0xd1, 0x00, 0x00, 0x19, 0x16, + 0x00, 0x00, 0x19, 0x4b, 0x00, 0x00, 0x19, 0xcd, 0x00, 0x00, 0x19, 0xff, 0x00, 0x00, 0x1a, 0x59, + 0x00, 0x00, 0x1a, 0x82, 0x00, 0x00, 0x1a, 0xde, 0x00, 0x00, 0x1a, 0xf7, 0x00, 0x00, 0x1b, 0x52, + 0x00, 0x00, 0x1b, 0xa0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x10, 0x00, 0x04, 0x00, 0x00, 0xff, + 0x00, 0xff, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x11, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x2f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0d, + 0x00, 0x3f, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x4c, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x08, 0x00, 0x66, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, + 0x00, 0x03, 0x00, 0x3c, 0x00, 0x6e, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x1a, + 0x00, 0xaa, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0xc4, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x1a, 0x00, 0xca, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x42, 0x6f, 0x6c, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x3a, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x2e, 0x30, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x31, 0x2e, 0x30, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x00, 0x47, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x72, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, + 0x00, 0x42, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x64, 0x00, 0x47, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x74, 0x00, 0x20, 0x00, 0x42, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x64, 0x00, 0x3a, 0x00, 0x56, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x31, + 0x00, 0x2e, 0x00, 0x30, 0x00, 0x47, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x72, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x31, + 0x00, 0x2e, 0x00, 0x30, 0x00, 0x47, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x72, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x00, + 0x00, 0x03, 0x02, 0x68, 0x02, 0xbc, 0x00, 0x05, 0x00, 0x08, 0x02, 0x8a, 0x02, 0x58, 0x00, 0x00, + 0x00, 0x4b, 0x02, 0x8a, 0x02, 0x58, 0x00, 0x00, 0x01, 0x5e, 0x00, 0x32, 0x01, 0x48, 0x00, 0x00, + 0x02, 0x0b, 0x08, 0x02, 0x04, 0x05, 0x04, 0x02, 0x02, 0x04, 0xe0, 0x00, 0x82, 0xff, 0x40, 0x00, + 0x20, 0x5f, 0x08, 0x00, 0x00, 0x29, 0x00, 0x10, 0x00, 0x00, 0x47, 0x4f, 0x4f, 0x47, 0x00, 0xa0, + 0x00, 0x00, 0xff, 0xfd, 0x04, 0x2d, 0xfe, 0xdb, 0x00, 0x00, 0x05, 0x43, 0x01, 0x8b, 0x00, 0x00, + 0x01, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x22, 0x02, 0xca, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0xff, 0x85, 0xb0, 0x04, 0x8d, 0x00 +}; diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Colour_Wheel/Colour_Wheel.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Colour_Wheel/Colour_Wheel.ino new file mode 100644 index 00000000..acc5bc07 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Colour_Wheel/Colour_Wheel.ino @@ -0,0 +1,47 @@ +// Arc drawing example - draw a colour wheel + +#include // Include the graphics library +TFT_eSPI tft = TFT_eSPI(); // Create object "tft" + +uint16_t colors[12]; + +// ------------------------------------------------------------------------- +// Setup +// ------------------------------------------------------------------------- +void setup(void) { + Serial.begin(115200); + tft.init(); + tft.fillScreen(TFT_BLACK); + + // Create the outer ring colours + for (uint8_t c = 0; c < 2; c++) { + colors[c + 10] = tft.alphaBlend(128 + c * 127, TFT_RED, TFT_MAGENTA); + colors[c + 8] = tft.alphaBlend(128 + c * 127, TFT_MAGENTA, TFT_BLUE); + colors[c + 6] = tft.alphaBlend(128 + c * 127, TFT_BLUE, TFT_GREEN); + colors[c + 4] = tft.alphaBlend(128 + c * 127, TFT_GREEN, TFT_YELLOW); + colors[c + 2] = tft.alphaBlend(128 + c * 127, TFT_YELLOW, TFT_ORANGE); + colors[c + 0] = tft.alphaBlend(128 + c * 127, TFT_ORANGE, TFT_RED); + } +} + +// ------------------------------------------------------------------------- +// Main loop +// ------------------------------------------------------------------------- +void loop() { + uint16_t rDelta = (tft.width() - 1) / 10; + uint16_t x = tft.width() / 2; + uint16_t y = tft.height() / 2; + bool smooth = true; + + // Draw rings as a series of arcs, increasingly blend colour with white towards middle + for (uint16_t i = 5; i > 0; i--) { + for (uint16_t angle = 0; angle <= 330; angle += 30) { + uint16_t radius = i * rDelta; + uint16_t wheelColor = tft.alphaBlend((i * 255.0)/5.0, colors[angle / 30], TFT_WHITE); + tft.drawArc(x, y, radius, radius - rDelta, angle, angle + 30, wheelColor, TFT_BLACK, smooth); + } + smooth = false; // Only outer ring is smooth + } + + while (1) delay(100); +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Arc/Draw_Arc.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Arc/Draw_Arc.ino new file mode 100644 index 00000000..ee5823e8 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Arc/Draw_Arc.ino @@ -0,0 +1,53 @@ +// Example for drawArc function. This is intended for arc based meters. +// (See arcMeter example) + +// Draws arcs without smooth ends, suitable for dynamically changing arc +// angles to avoid residual anti-alias pixels at the arc segment joints. + +// The sides of the arc can optionally be smooth or not. Smooth arcs have +// a much better appearance, especially at small sizes. + +#include // Include the graphics library +TFT_eSPI tft = TFT_eSPI(); // Create object "tft" + +// ------------------------------------------------------------------------- +// Setup +// ------------------------------------------------------------------------- +void setup(void) { + Serial.begin(115200); + + tft.init(); + tft.setRotation(1); + tft.fillScreen(TFT_BLACK); +} + +// ------------------------------------------------------------------------- +// Main loop +// ------------------------------------------------------------------------- +void loop() +{ + static uint32_t count = 0; + + uint16_t fg_color = random(0x10000); + uint16_t bg_color = TFT_BLACK; // This is the background colour used for smoothing (anti-aliasing) + + uint16_t x = random(tft.width()); // Position of centre of arc + uint16_t y = random(tft.height()); + + uint8_t radius = random(20, tft.width() / 4); // Outer arc radius + uint8_t thickness = random(1, radius / 4); // Thickness + uint8_t inner_radius = radius - thickness; // Calculate inner radius (can be 0 for circle segment) + + // 0 degrees is at 6 o'clock position + // Arcs are drawn clockwise from start_angle to end_angle + // Start angle can be greater than end angle, the arc will then be drawn through 0 degrees + uint16_t start_angle = random(361); // Start angle must be in range 0 to 360 + uint16_t end_angle = random(361); // End angle must be in range 0 to 360 + + bool smooth = random(2); // true = smooth sides, false = no smooth sides + + tft.drawArc(x, y, radius, inner_radius, start_angle, end_angle, fg_color, bg_color, smooth); + + count++; + if (count < 30) delay(500); // After 15s draw as fast as possible! +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Smooth_Circles/Draw_Smooth_Circles.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Smooth_Circles/Draw_Smooth_Circles.ino new file mode 100644 index 00000000..32aa156b --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Draw_Smooth_Circles/Draw_Smooth_Circles.ino @@ -0,0 +1,98 @@ +// Example for drawSmoothCircle function. Which draws anti-aliased circles +// The circle periphery has a "thickness" of ~3 pixles to minimise the +// "braiding" effect present in narrow anti-aliased lines. + +// For thicker or thinner circle outlines use the drawArc function. + +#include // Include the graphics library +TFT_eSPI tft = TFT_eSPI(); // Create object "tft" + +// ------------------------------------------------------------------------- +// Setup +// ------------------------------------------------------------------------- +void setup(void) { + Serial.begin(115200); + tft.init(); + tft.fillScreen(TFT_BLACK); +} + +// ------------------------------------------------------------------------- +// Main loop +// ------------------------------------------------------------------------- +void loop() +{ + static uint32_t radius = 2; + static uint32_t index = 0; + + uint16_t fg_color = rainbow(index); + uint16_t bg_color = TFT_BLACK; // This is the background colour used for smoothing (anti-aliasing) + + uint16_t x = tft.width() / 2; // Position of centre of arc + uint16_t y = tft.height() / 2; + + tft.drawSmoothCircle(x, y, radius, fg_color, bg_color); + + radius += 11; + index += 5; + index = index%192; + + if (radius > tft.height()/2) { + delay (1000); + radius = 2; + } +} + + +// ------------------------------------------------------------------------- +// Return a 16-bit rainbow colour +// ------------------------------------------------------------------------- +unsigned int rainbow(byte value) +{ + // If 'value' is in the range 0-159 it is converted to a spectrum colour + // from 0 = red through to 127 = blue to 159 = violet + // Extending the range to 0-191 adds a further violet to red band + + value = value%192; + + byte red = 0; // Red is the top 5 bits of a 16-bit colour value + byte green = 0; // Green is the middle 6 bits, but only top 5 bits used here + byte blue = 0; // Blue is the bottom 5 bits + + byte sector = value >> 5; + byte amplit = value & 0x1F; + + switch (sector) + { + case 0: + red = 0x1F; + green = amplit; // Green ramps up + blue = 0; + break; + case 1: + red = 0x1F - amplit; // Red ramps down + green = 0x1F; + blue = 0; + break; + case 2: + red = 0; + green = 0x1F; + blue = amplit; // Blue ramps up + break; + case 3: + red = 0; + green = 0x1F - amplit; // Green ramps down + blue = 0x1F; + break; + case 4: + red = amplit; // Red ramps up + green = 0; + blue = 0x1F; + break; + case 5: + red = 0x1F; + green = 0; + blue = 0x1F - amplit; // Blue ramps down + break; + } + return red << 11 | green << 6 | blue; +} diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Arc/Smooth_Arc.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Arc/Smooth_Arc.ino new file mode 100644 index 00000000..9858fcd8 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Arc/Smooth_Arc.ino @@ -0,0 +1,46 @@ +// Example for drawSmoothArc function. +// Draws smooth arcs with rounded or square smooth ends + +#include // Include the graphics library +TFT_eSPI tft = TFT_eSPI(); // Create object "tft" + +// ------------------------------------------------------------------------- +// Setup +// ------------------------------------------------------------------------- +void setup(void) { + Serial.begin(115200); + + tft.init(); + tft.setRotation(1); + tft.fillScreen(TFT_BLACK); +} + +// ------------------------------------------------------------------------- +// Main loop +// ------------------------------------------------------------------------- +void loop() +{ + static uint32_t count = 0; + + uint16_t fg_color = random(0x10000); + uint16_t bg_color = TFT_BLACK; // This is the background colour used for smoothing (anti-aliasing) + + uint16_t x = random(tft.width()); // Position of centre of arc + uint16_t y = random(tft.height()); + + uint8_t radius = random(20, tft.width()/4); // Outer arc radius + uint8_t thickness = random(1, radius / 4); // Thickness + uint8_t inner_radius = radius - thickness; // Calculate inner radius (can be 0 for circle segment) + + // 0 degrees is at 6 o'clock position + // Arcs are drawn clockwise from start_angle to end_angle + uint16_t start_angle = random(361); // Start angle must be in range 0 to 360 + uint16_t end_angle = random(361); // End angle must be in range 0 to 360 + + bool arc_end = random(2); // true = round ends, false = square ends (arc_end parameter can be omitted, ends will then be square) + + tft.drawSmoothArc(x, y, radius, inner_radius, start_angle, end_angle, fg_color, bg_color, arc_end); + + count++; + if (count < 30) delay(500); // After 15s draw as fast as possible! +} diff --git a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino similarity index 94% rename from libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino index b8638e91..63073f08 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino @@ -1,4 +1,4 @@ -// Sketch to demonstrate smooth (anti-aliased) graphics funtions: +// Sketch to demonstrate smooth (anti-aliased) graphics functions: // Smooth graphics result in less pixel resolution jaggedness. #include // Master copy here: https://github.com/Bodmer/TFT_eSPI @@ -35,7 +35,7 @@ void loop() { // drawSpot is for small anti-aliased circles, coordinates and radius are // floating point to allow sub-pixel positioning (large circles will // be slow to draw). Use fillSmoothCircle() for large circles. - // In this case black is the backgorund colour for the anti-aliasing + // In this case black is the background colour for the anti-aliasing float x = 10.5; float y = 10.5; float r = 8.6; @@ -43,7 +43,7 @@ void loop() { // Fill sprite with a colour spr.fillSprite(TFT_RED); - // Draw spot in sprite, the backgorund colour is ommitted so function + // Draw spot in sprite, the background colour is omitted so function // reads background colour for aliasing. (To use this method with direct write // to TFT (tft.drawSpot...) requires the capability to read data from the TFT!) spr.drawSpot(x, y, r, TFT_WHITE); @@ -144,14 +144,14 @@ void getCoord(int16_t x, int16_t y, float *xp1, float *yp1, float *xp2, float *y } // ========================================================================= -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ========================================================================= unsigned int rainbow(byte value) { // Value is expected to be in range 0-127 // The value is converted to a spectrum colour from 0 = blue through to 127 = red - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Rounded_Rectangles/Smooth_Rounded_Rectangles.ino b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Rounded_Rectangles/Smooth_Rounded_Rectangles.ino new file mode 100644 index 00000000..802282f3 --- /dev/null +++ b/libraries/TFT_eSPI-2.5.43/examples/Smooth Graphics/Smooth_Rounded_Rectangles/Smooth_Rounded_Rectangles.ino @@ -0,0 +1,50 @@ +// Draw random coloured smooth (anti-aliased) rounded rectangles on the TFT + +#include + +TFT_eSPI tft = TFT_eSPI(); + +void setup(void) { + tft.init(); + tft.fillScreen(TFT_BLACK); // Background is black +} + +void loop() { + tft.fillScreen(TFT_BLACK); + tft.setCursor(0, 0); + + // Draw some random smooth rounded rectangles + for (int i = 0; i < 20; i++) + { + int radius = random(60); + int w = random(2 * radius, 160); + int h = random(2 * radius, 160); + int t = random(1, radius / 3); + int x = random(tft.width() - w); + int y = random(tft.height() - h); + + // Random colour is anti-aliased (blended) with background colour (black in this case) + tft.drawSmoothRoundRect(x, y, radius, radius - t, w, h, random(0x10000), TFT_BLACK); + } + tft.print("Variable thickness"); + delay(2000); + + tft.fillScreen(TFT_BLACK); + tft.setCursor(0, 0); + + // Draw some random minimum thickness smooth rounded rectangles + for (int i = 0; i < 20; i++) + { + int radius = random(60); + int w = random(2 * radius, 160); + int h = random(2 * radius, 160); + int t = 0; + int x = random(tft.width() - w); + int y = random(tft.height() - h); + + // Random colour is anti-aliased (blended) with background colour (black in this case) + tft.drawSmoothRoundRect(x, y, radius, radius - t, w, h, random(0x10000), TFT_BLACK); + } + tft.print("Minimum thickness"); + delay(2000); +} diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/Animated_dial.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/Animated_dial.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/Animated_dial.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/Animated_dial.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/NotoSansBold36.h b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/NotoSansBold36.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/NotoSansBold36.h rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/NotoSansBold36.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/data/dial.jpg b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/data/dial.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/data/dial.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/data/dial.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/dial.h b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/dial.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Animated_dial/dial.h rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Animated_dial/dial.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino index dacf64fe..33ce9bb5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino @@ -12,7 +12,7 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 1 bit Sprite occupies (width * height)/8 bytes in RAM. So, + A 1-bit Sprite occupies (width * height)/8 bytes in RAM. So, for example, a 320 x 240 pixel Sprite occupies 9600 bytes. */ // A new setBitmapColor(fg_color, bg_color) function allows diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/One_bit_Yin_Yang/One_bit_Yin_Yang.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/One_bit_Yin_Yang/One_bit_Yin_Yang.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/One_bit_Yin_Yang/One_bit_Yin_Yang.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/One_bit_Yin_Yang/One_bit_Yin_Yang.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Orrery/Orrery.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Orrery/Orrery.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Orrery/Orrery.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Orrery/Orrery.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Orrery/astronomy.c b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Orrery/astronomy.c similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Orrery/astronomy.c rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Orrery/astronomy.c diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Orrery/astronomy.h b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Orrery/astronomy.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Orrery/astronomy.h rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Orrery/astronomy.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino index a6a0a6a1..83ded139 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino @@ -10,7 +10,7 @@ // screen very simple. The rotation is clockwise with increasing angle. The angle is in // degrees, an angle of 0 means no Sprite rotation. -// The pushRotated() function works with 1, 4, 8 and 16 bit per pixel (bpp) Sprites. +// The pushRotated() function works with 1, 4, 8 and 16-bit per pixel (bpp) Sprites. // The original Sprite is unchanged so can be plotted again at a different angle. @@ -20,7 +20,7 @@ // For 1 bpp Sprites the foreground and background colours are defined with the // function spr.setBitmapColor(foregroundColor, backgroundColor). -// For 4 bpp Sprites the colour map index is used instead of the 16 bit colour +// For 4 bpp Sprites the colour map index is used instead of the 16-bit colour // e.g. spr.setTextColor(5); // Green text in default colour map // See "Transparent_Sprite_Demo_4bit" example for default colour map details diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino index bb27922e..e9fccb30 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino @@ -14,7 +14,7 @@ // The rotation angle is in degrees, an angle of 0 means no Sprite rotation. -// The pushRotated() function works with 1, 8 and 16 bit per pixel (bpp) Sprites. +// The pushRotated() function works with 1, 8 and 16-bit per pixel (bpp) Sprites. // For 1 bpp Sprites the foreground and background colours are defined with the // member function setBitmapColor(foregroundColor, backgroundColor). diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino index 2b93dc9f..5341be95 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino @@ -80,7 +80,7 @@ void setup() // Send jpeg info to serial port fex.jpegInfo("/Eye_80x64.jpg"); - // Draw jpeg iamge in Sprite spr at 0,0 + // Draw jpeg image in Sprite spr at 0,0 fex.drawJpeg("/Eye_80x64.jpg", 0 , 0, &spr); } @@ -105,7 +105,7 @@ void loop() delay(1000); // Push copies of Sprite rotated through increasing angles 0-360 degrees - // with 45 fegree increments + // with 45 degree increments for (int16_t angle = 0; angle <= 360; angle += 45) { spr.pushRotated(angle); delay(500); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/data/EagleEye.jpg b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/data/EagleEye.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/data/EagleEye.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/data/EagleEye.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/data/Eye_80x64.jpg b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/data/Eye_80x64.jpg similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Rotated_Sprite_3/data/Eye_80x64.jpg rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Rotated_Sprite_3/data/Eye_80x64.jpg diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino index 9d6cf8e8..406f0c08 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino @@ -9,7 +9,7 @@ ######################################################################### */ -// Specify sprite 160 x 128 pixels (needs 40Kbytes of RAM for 16 bit colour) +// Specify sprite 160 x 128 pixels (needs 40Kbytes of RAM for 16-bit colour) #define IWIDTH 160 #define IHEIGHT 128 diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_draw/Sprite_draw.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_draw/Sprite_draw.ino similarity index 95% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_draw/Sprite_draw.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_draw/Sprite_draw.ino index e167d680..ce3b06b5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_draw/Sprite_draw.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_draw/Sprite_draw.ino @@ -14,12 +14,12 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 16 bit Sprite occupies (2 * width * height) bytes in RAM. + A 16-bit Sprite occupies (2 * width * height) bytes in RAM. On a ESP8266 Sprite sizes up to 126 x 160 can be accommodated, - this size requires 40kBytes of RAM for a 16 bit colour depth. + this size requires 40kBytes of RAM for a 16-bit colour depth. - When 8 bit colour depth sprites are created they occupy + When 8-bit colour depth sprites are created they occupy (width * height) bytes in RAM, so larger sprites can be created, or the RAM required is halved. diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino similarity index 96% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino index ca3ebe4b..e4b27433 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino @@ -1,9 +1,9 @@ /* - Sketch to show how a 4 bit Sprite is created, how to draw pixels + Sketch to show how a 4-bit Sprite is created, how to draw pixels and text within the Sprite and then push the Sprite onto the display screen. - The advantage of 4 bit sprites is: + The advantage of 4-bit sprites is: 1. Small memory footprint 2. Any set of 16 colours can be specified 3. Colours can be changed without redrawing in Sprite @@ -21,7 +21,7 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 4 bit Sprite occupies (width * height)/2 bytes in RAM. + A 4-bit Sprite occupies (width * height)/2 bytes in RAM. */ @@ -64,7 +64,7 @@ void loop(void) // Fill the whole sprite with color 0 (Sprite is in memory so not visible yet) spr.fillSprite(0); - // create a color map with known colors (16 maximum for 4 bit Sprite + // create a color map with known colors (16 maximum for 4-bit Sprite uint16_t cmap[16]; diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino similarity index 91% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino index 53bd4fa2..63fa854b 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino @@ -14,12 +14,12 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 16 bit Sprite occupies (2 * width * height) bytes in RAM. + A 16-bit Sprite occupies (2 * width * height) bytes in RAM. On a ESP8266 Sprite sizes up to 126 x 160 can be accommodated, - this size requires 40kBytes of RAM for a 16 bit color depth. + this size requires 40kBytes of RAM for a 16-bit color depth. - When 8 bit color depth sprites are created they occupy + When 8-bit color depth sprites are created they occupy (width * height) bytes in RAM, so larger sprites can be created, or the RAM required is halved. @@ -39,7 +39,7 @@ TFT_eSPI tft = TFT_eSPI(); // Declare object "tft" TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object -byte red = 31; // Red is the top 5 bits of a 16 bit colour value +byte red = 31; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits byte state = 0; @@ -99,7 +99,7 @@ void loop(void) } // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow() { diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/sample_images.h b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/sample_images.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/sample_images.h rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/sample_images.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/starImage.cpp b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/starImage.cpp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_image_4bit/starImage.cpp rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_image_4bit/starImage.cpp diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll/Sprite_scroll.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll/Sprite_scroll.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll/Sprite_scroll.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll/Sprite_scroll.ino index 1968849a..61166be5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll/Sprite_scroll.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll/Sprite_scroll.ino @@ -14,9 +14,9 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 16 bit Sprite occupies (2 * width * height) bytes in RAM. + A 16-bit Sprite occupies (2 * width * height) bytes in RAM. - An 8 bit Sprite occupies (width * height) bytes in RAM. + An 8-bit Sprite occupies (width * height) bytes in RAM. */ diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino index 2ffbc531..f0cf1f42 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino @@ -126,7 +126,7 @@ void numberBox(int num, int x, int y) // Fill it with black img.fillSprite(TFT_BLACK); - // Draw a backgorund of 2 filled triangles + // Draw a background of 2 filled triangles img.fillTriangle( 0, 0, 0, 49, 40, 25, TFT_RED); img.fillTriangle( 79, 0, 79, 49, 40, 25, TFT_DARKGREEN); @@ -150,14 +150,14 @@ void numberBox(int num, int x, int y) // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow(byte value) { // Value is expected to be in range 0-127 // The value is converted to a spectrum colour from 0 = red through to 127 = blue - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino index dfdee88c..d79e4b8b 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino @@ -3,7 +3,7 @@ This sketch scrolls a 1 bit per pixel (1 bpp) Sprite. - In a 1 bit Sprite any colour except TFT_BLACK turns a pixel "ON" + In a 1-bit Sprite any colour except TFT_BLACK turns a pixel "ON" TFT_BLACK turns a pixel "OFF". ON and OFF pixels can be set to any two colours before @@ -24,7 +24,7 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 1 bit Sprite occupies (width * height)/8 bytes in RAM. + A 1-bit Sprite occupies (width * height)/8 bytes in RAM. */ diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino index aa29948e..b198c859 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino @@ -1,5 +1,5 @@ /* - Sketch to show scrolling of the graphics in 4 bit sprites. + Sketch to show scrolling of the graphics in 4-bit sprites. Scrolling in this way moves the pixels in a defined rectangle within the Sprite. By default the whole sprite is scrolled. The gap left by scrolling is filled with a defined colour. @@ -14,7 +14,7 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 4 bit Sprite occupies (width * height)/2 bytes in RAM. + A 4-bit Sprite occupies (width * height)/2 bytes in RAM. */ #include diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino similarity index 93% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino index a843589f..551f8755 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino @@ -1,7 +1,7 @@ /* Display "flicker free" scrolling text and updating number - This sketch uses 8 bit colour sprites to save RAM. + This sketch uses 8-bit colour sprites to save RAM. Example for library: https://github.com/Bodmer/TFT_eSPI @@ -16,15 +16,15 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 16 bit colour Sprite occupies (2 * width * height) bytes. + A 16-bit colour Sprite occupies (2 * width * height) bytes. - An 8 bit colour Sprite occupies (width * height) bytes. + An 8-bit colour Sprite occupies (width * height) bytes. - On a ESP8266, 16 bit Sprite sizes up to 128 x 160 can be accommodated, + On a ESP8266, 16-bit Sprite sizes up to 128 x 160 can be accommodated, this size requires 128*160*2 bytes (40kBytes) of RAM. This sketch sets the colour depth to 8 bits so larger sprites can be - created. 8 bit colour sprites use half amount of RAM. If the colour + created. 8-bit colour sprites use half amount of RAM. If the colour depth is not specified then 16 bits is assumed. You need to make the sprite small enough to fit, with RAM spare for @@ -137,7 +137,7 @@ void numberBox(int num, int x, int y) // Fill it with black img.fillSprite(TFT_BLACK); - // Draw a backgorund of 2 filled triangles + // Draw a background of 2 filled triangles img.fillTriangle( 0, 0, 0, 49, 40, 25, TFT_RED); img.fillTriangle( 79, 0, 79, 49, 40, 25, TFT_DARKGREEN); @@ -161,14 +161,14 @@ void numberBox(int num, int x, int y) // ######################################################################### -// Return a 16 bit rainbow colour +// Return a 16-bit rainbow colour // ######################################################################### unsigned int rainbow(byte value) { // Value is expected to be in range 0-127 // The value is converted to a spectrum colour from 0 = red through to 127 = blue - byte red = 0; // Red is the top 5 bits of a 16 bit colour value + byte red = 0; // Red is the top 5 bits of a 16-bit colour value byte green = 0;// Green is the middle 6 bits byte blue = 0; // Blue is the bottom 5 bits diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino similarity index 98% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino index 76fcfc63..d97d58b5 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino @@ -1,5 +1,5 @@ // This **ONLY** works for 1 bpp Sprites due to lack of bounds checking in the -// Sprite pushImage() function for 8 and 16 bit Sprites (it is on the TO DO list) +// Sprite pushImage() function for 8 and 16-bit Sprites (it is on the TO DO list) // Wrapping scroll example by Bodmer for the TFT_eSPI library diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino similarity index 93% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino index 37615acd..e492ab68 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino @@ -12,12 +12,12 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 16 bit Sprite occupies (2 * width * height) bytes in RAM. + A 16-bit Sprite occupies (2 * width * height) bytes in RAM. On a ESP8266 Sprite sizes up to 126 x 160 can be accommodated, - this size requires 40kBytes of RAM for a 16 bit colour depth. + this size requires 40kBytes of RAM for a 16-bit colour depth. - When 8 bit colour depth sprites are created they occupy + When 8-bit colour depth sprites are created they occupy (width * height) bytes in RAM, so larger sprites can be created, or the RAM required is halved. */ @@ -76,7 +76,7 @@ void loop() { // ######################################################################### void drawStar(int x, int y, int star_color) { - // Create an 8 bit sprite 70x 80 pixels (uses 5600 bytes of RAM) + // Create an 8-bit sprite 70x 80 pixels (uses 5600 bytes of RAM) img.setColorDepth(8); img.createSprite(70, 80); @@ -113,7 +113,7 @@ void numberBox(int x, int y, float num ) #define IWIDTH 80 #define IHEIGHT 35 - // Create a 8 bit sprite 80 pixels wide, 35 high (2800 bytes of RAM needed) + // Create a 8-bit sprite 80 pixels wide, 35 high (2800 bytes of RAM needed) img.setColorDepth(8); img.createSprite(IWIDTH, IHEIGHT); diff --git a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino similarity index 91% rename from libraries/TFT_eSPI-2.4.72/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino rename to libraries/TFT_eSPI-2.5.43/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino index c116ed4b..0840648c 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino @@ -1,5 +1,5 @@ /* - Sketch to show creation of a 4 bit sprite with a transparent + Sketch to show creation of a 4-bit sprite with a transparent background, then plot it on the TFT. The palette setup and palette update functions are also shown in this example. @@ -13,11 +13,11 @@ any position. If there is sufficient RAM then the Sprite can be the same size as the screen and used as a frame buffer. - A 4 bit Sprite occupies (width * height)/2 bytes in RAM. + A 4-bit Sprite occupies (width * height)/2 bytes in RAM. For example the "star" 70x80 Sprite uses 2800 bytes. */ -// This is the default palette for 4 bit colour sprites +// This is the default palette for 4-bit colour sprites // which is built into the library. You can create your // own palette (use a different array name!). The palette // is captured and stored in RAM by the Sprite class so a @@ -80,25 +80,25 @@ void loop() { // spr.createPalette(default_4bit_palette, 12); // After rendering a Sprite you can change the palette to increase the range of colours - // plotted to the screen to the full 16 bit set. + // plotted to the screen to the full 16-bit set. // Change palette colour 11 to violet spr.setPaletteColor(11, TFT_VIOLET); - uint16_t color15 = spr.getPaletteColor(15); // The 16 bit colour in a palette can be read back + uint16_t color15 = spr.getPaletteColor(15); // The 16-bit colour in a palette can be read back // Draw 50 sprites containing a "transparent" colour for (int i = 0; i < 50; i++) { int x = random(tft.width() - 70); int y = random(tft.height() - 80); - int c = random(15); // Random colour 0-14 (4 bit index into color map). Leave 15 for transparent. + int c = random(15); // Random colour 0-14 (4-bit index into color map). Leave 15 for transparent. drawStar(x, y, c); } delay(2000); - // Change the palette to a 16 bit grey scale colour + // Change the palette to a 16-bit grey scale colour for (uint8_t i = 0; i < 16; i++) { // (i*16+i) produces a value in range 0-255 for the RGB colours // Red Green Blue diff --git a/libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Colour_Test/Colour_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Colour_Test/Colour_Test.ino similarity index 69% rename from libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Colour_Test/Colour_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Colour_Test/Colour_Test.ino index 185df6de..bdae2c5b 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Colour_Test/Colour_Test.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Colour_Test/Colour_Test.ino @@ -58,25 +58,26 @@ void setup(void) { tft.init(); tft.fillScreen(TFT_BLACK); - + tft.drawRect(0, 0, tft.width(), tft.height(), TFT_GREEN); + // Set "cursor" at top left corner of display (0,0) and select font 4 - tft.setCursor(0, 0, 4); + tft.setCursor(0, 4, 4); // Set the font colour to be white with a black background - tft.setTextColor(TFT_WHITE, TFT_BLACK); + tft.setTextColor(TFT_WHITE); // We can now plot text on screen using the "print" class - tft.println("Initialised default\n"); - tft.println("White text"); + tft.println(" Initialised default\n"); + tft.println(" White text"); - tft.setTextColor(TFT_RED, TFT_BLACK); - tft.println("Red text"); + tft.setTextColor(TFT_RED); + tft.println(" Red text"); - tft.setTextColor(TFT_GREEN, TFT_BLACK); - tft.println("Green text"); + tft.setTextColor(TFT_GREEN); + tft.println(" Green text"); - tft.setTextColor(TFT_BLUE, TFT_BLACK); - tft.println("Blue text"); + tft.setTextColor(TFT_BLUE); + tft.println(" Blue text"); delay(5000); @@ -87,22 +88,23 @@ void loop() { tft.invertDisplay( false ); // Where i is true or false tft.fillScreen(TFT_BLACK); - - tft.setCursor(0, 0, 4); + tft.drawRect(0, 0, tft.width(), tft.height(), TFT_GREEN); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.println("Invert OFF\n"); + tft.setCursor(0, 4, 4); - tft.println("White text"); + tft.setTextColor(TFT_WHITE); + tft.println(" Invert OFF\n"); + + tft.println(" White text"); - tft.setTextColor(TFT_RED, TFT_BLACK); - tft.println("Red text"); + tft.setTextColor(TFT_RED); + tft.println(" Red text"); - tft.setTextColor(TFT_GREEN, TFT_BLACK); - tft.println("Green text"); + tft.setTextColor(TFT_GREEN); + tft.println(" Green text"); - tft.setTextColor(TFT_BLUE, TFT_BLACK); - tft.println("Blue text"); + tft.setTextColor(TFT_BLUE); + tft.println(" Blue text"); delay(5000); @@ -111,22 +113,23 @@ void loop() { tft.invertDisplay( true ); // Where i is true or false tft.fillScreen(TFT_BLACK); - - tft.setCursor(0, 0, 4); + tft.drawRect(0, 0, tft.width(), tft.height(), TFT_GREEN); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.println("Invert ON\n"); + tft.setCursor(0, 4, 4); - tft.println("White text"); + tft.setTextColor(TFT_WHITE); + tft.println(" Invert ON\n"); + + tft.println(" White text"); - tft.setTextColor(TFT_RED, TFT_BLACK); - tft.println("Red text"); + tft.setTextColor(TFT_RED); + tft.println(" Red text"); - tft.setTextColor(TFT_GREEN, TFT_BLACK); - tft.println("Green text"); + tft.setTextColor(TFT_GREEN); + tft.println(" Green text"); - tft.setTextColor(TFT_BLUE, TFT_BLACK); - tft.println("Blue text"); + tft.setTextColor(TFT_BLUE); + tft.println(" Blue text"); delay(5000); } diff --git a/libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino b/libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino similarity index 97% rename from libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino rename to libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino index 21b74ecd..8b5c9f59 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino @@ -19,7 +19,7 @@ TFT_eSPI tft = TFT_eSPI(); // Invoke library -#ifdef ESP8266 +#ifdef ARDUINO_ARCH_ESP8266 ADC_MODE(ADC_VCC); // Read the supply voltage #endif @@ -45,15 +45,15 @@ Serial.print("\n[code]\n"); Serial.print ("TFT_eSPI ver = "); Serial.println(user.version); printProcessorName(); -#if defined (ESP32) || defined (ESP8266) +#if defined (ESP32) || defined (ARDUINO_ARCH_ESP8266) if (user.esp < 0x32F000 || user.esp > 0x32FFFF) { Serial.print("Frequency = "); Serial.print(ESP.getCpuFreqMHz());Serial.println("MHz"); } #endif -#ifdef ESP8266 +#ifdef ARDUINO_ARCH_ESP8266 Serial.print("Voltage = "); Serial.print(ESP.getVcc() / 918.0); Serial.println("V"); // 918 empirically determined #endif Serial.print("Transactions = "); Serial.println((user.trans == 1) ? "Yes" : "No"); Serial.print("Interface = "); Serial.println((user.serial == 1) ? "SPI" : "Parallel"); -#ifdef ESP8266 +#ifdef ARDUINO_ARCH_ESP8266 if (user.serial == 1){ Serial.print("SPI overlap = "); Serial.println((user.overlap == 1) ? "Yes\n" : "No\n"); } #endif if (user.tft_driver != 0xE9D) // For ePaper displays the size is defined in the sketch @@ -78,7 +78,7 @@ if (user.pin_tft_mosi != -1) { Serial.print("MOSI = "); Serial.print("GPIO ") if (user.pin_tft_miso != -1) { Serial.print("MISO = "); Serial.print("GPIO "); Serial.println(getPinName(user.pin_tft_miso)); } if (user.pin_tft_clk != -1) { Serial.print("SCK = "); Serial.print("GPIO "); Serial.println(getPinName(user.pin_tft_clk)); } -#ifdef ESP8266 +#ifdef ARDUINO_ARCH_ESP8266 if (user.overlap == true) { Serial.println("Overlap selected, following pins MUST be used:"); @@ -92,7 +92,7 @@ if (user.overlap == true) } #endif String pinNameRef = "GPIO "; -#ifdef ESP8266 +#ifdef ARDUINO_ARCH_ESP8266 pinNameRef = "PIN_D"; #endif @@ -184,5 +184,5 @@ int8_t getPinName(int8_t pin) if (user.esp == 0x32F) return pin; - return -1; // Invalid pin + return pin; // Invalid pin } diff --git a/libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino b/libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino rename to libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Test_Touch_Controller/Test_Touch_Controller.ino b/libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Test_Touch_Controller/Test_Touch_Controller.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/Test and diagnostics/Test_Touch_Controller/Test_Touch_Controller.ino rename to libraries/TFT_eSPI-2.5.43/examples/Test and diagnostics/Test_Touch_Controller/Test_Touch_Controller.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/EPD_Support.h b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/EPD_Support.h similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/EPD_Support.h rename to libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/EPD_Support.h diff --git a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino similarity index 99% rename from libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino rename to libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino index a856d696..4c8adbba 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino @@ -106,7 +106,7 @@ void loop() { frame.fillSprite(PAPER); - // Draw 8 bit grey-scale bitmap using Floyd-Steinberg dithering at x,y + // Draw 8-bit grey-scale bitmap using Floyd-Steinberg dithering at x,y // /File name x y //drawFSBmp("/TestCard.bmp", 0, 0); // 176 x 264 pixels diff --git a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino similarity index 95% rename from libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino rename to libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino index e52dbe07..414365d3 100644 --- a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino +++ b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino @@ -27,14 +27,14 @@ SOFTWARE. Note: drawFSBmp() is a simplified function and does not handle all possible - BMP file header variants. It works OK with 8 bit per pixel grey-scale images + BMP file header variants. It works OK with 8-bit per pixel grey-scale images generated by MS Paint and IrfanView. */ // https://github.com/Bodmer/TFT_eSPI //==================================================================================== -// Draw an 8 bit grey-scale bitmap (*.BMP) on a Monochrome display using dithering +// Draw an 8-bit grey-scale bitmap (*.BMP) on a Monochrome display using dithering //==================================================================================== // Uses RAM for buffers (3 * width + 4) ( 532 bytes for 176 pixels) @@ -102,10 +102,10 @@ void drawFSBmp(const char *filename, int16_t x, int16_t y) { uint16_t padding = (4 - (w & 3)) & 3; // Calculate the BMP line padding - // Create an zero an 8 bit pixel line buffer + // Create an zero an 8-bit pixel line buffer uint8_t* lineBuffer = ( uint8_t*) calloc(w , sizeof(uint8_t)); - // Create a 16 bit signed line buffer for the quantisation error + // Create a 16-bit signed line buffer for the quantisation error // Diffusion spreads to x-1 and x+1 so w + 2 avoids a bounds check int16_t* qerrBuffer = ( int16_t*) calloc((w + 2)<<1, sizeof(uint8_t)); @@ -174,7 +174,7 @@ void drawFSBmp(const char *filename, int16_t x, int16_t y) { } //==================================================================================== -// Read a 16 bit value from the filing system +// Read a 16-bit value from the filing system //==================================================================================== uint16_t read16(fs::File &f) { uint16_t result; @@ -184,7 +184,7 @@ uint16_t read16(fs::File &f) { } //==================================================================================== -// Read a 32 bit value from the filing system +// Read a 32-bit value from the filing system //==================================================================================== uint32_t read32(fs::File &f) { uint32_t result; diff --git a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/SPIFFS.ino b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/SPIFFS.ino similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/SPIFFS.ino rename to libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/SPIFFS.ino diff --git a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/data/TestCard.bmp b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/data/TestCard.bmp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/data/TestCard.bmp rename to libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/data/TestCard.bmp diff --git a/libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/data/Tiger.bmp b/libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/data/Tiger.bmp similarity index 100% rename from libraries/TFT_eSPI-2.4.72/examples/ePaper/Floyd_Steinberg/data/Tiger.bmp rename to libraries/TFT_eSPI-2.5.43/examples/ePaper/Floyd_Steinberg/data/Tiger.bmp diff --git a/libraries/TFT_eSPI-2.4.72/keywords.txt b/libraries/TFT_eSPI-2.5.43/keywords.txt similarity index 95% rename from libraries/TFT_eSPI-2.4.72/keywords.txt rename to libraries/TFT_eSPI-2.5.43/keywords.txt index fb47c5e4..21439a9f 100644 --- a/libraries/TFT_eSPI-2.4.72/keywords.txt +++ b/libraries/TFT_eSPI-2.5.43/keywords.txt @@ -18,6 +18,9 @@ pushColor KEYWORD2 setRotation KEYWORD2 getRotation KEYWORD2 +setOrigin KEYWORD2 +getOriginX KEYWORD2 +getOriginY KEYWORD2 invertDisplay KEYWORD2 setAddrWindow KEYWORD2 @@ -44,6 +47,8 @@ end_SDA_Read KEYWORD2 fillScreen KEYWORD2 drawRect KEYWORD2 +fillRectHGradient KEYWORD2 +fillRectVGradient KEYWORD2 drawRoundRect KEYWORD2 fillRoundRect KEYWORD2 @@ -69,6 +74,7 @@ getPivotY KEYWORD2 readRect KEYWORD2 pushRect KEYWORD2 pushImage KEYWORD2 +pushMaskedImage KEYWORD2 readRectRGB KEYWORD2 drawNumber KEYWORD2 @@ -140,10 +146,12 @@ calibrateTouch KEYWORD2 setTouch KEYWORD2 # Smooth (anti-aliased) graphics functions -fillRectHGradient KEYWORD2 -fillRectVGradient KEYWORD2 +drawSmoothCircle KEYWORD2 fillSmoothCircle KEYWORD2 +drawSmoothRoundRect KEYWORD2 fillSmoothRoundRect KEYWORD2 +drawSmoothArc KEYWORD2 +drawArc KEYWORD2 drawSpot KEYWORD2 drawWideLine KEYWORD2 drawWedgeLine KEYWORD2 diff --git a/libraries/TFT_eSPI-2.4.72/library.json b/libraries/TFT_eSPI-2.5.43/library.json similarity index 77% rename from libraries/TFT_eSPI-2.4.72/library.json rename to libraries/TFT_eSPI-2.5.43/library.json index 91a9a73a..f590f3ec 100644 --- a/libraries/TFT_eSPI-2.4.72/library.json +++ b/libraries/TFT_eSPI-2.5.43/library.json @@ -1,8 +1,8 @@ { "name": "TFT_eSPI", - "version": "2.4.72", + "version": "2.5.43", "keywords": "Arduino, tft, display, ttgo, LilyPi, WT32-SC01, ePaper, display, Pico, RP2040 Nano Connect, RP2040, STM32, ESP8266, NodeMCU, ESP32, M5Stack, ILI9341, ST7735, ILI9163, S6D02A1, ILI9481, ILI9486, ILI9488, ST7789, ST7796, RM68140, SSD1351, SSD1963, ILI9225, HX8357D, GC9A01, R61581", - "description": "A TFT and ePaper SPI graphics library with optimisation for Raspberry Pi Pico, RP2040, ESP8266, ESP32 and STM32", + "description": "A TFT and ePaper (SPI or parallel interface) graphics library with optimisation for Raspberry Pi Pico, RP2040, ESP8266, ESP32 and STM32 processors", "repository": { "type": "git", diff --git a/libraries/TFT_eSPI-2.4.72/library.properties b/libraries/TFT_eSPI-2.5.43/library.properties similarity index 66% rename from libraries/TFT_eSPI-2.4.72/library.properties rename to libraries/TFT_eSPI-2.5.43/library.properties index 558fdb01..319d4ec6 100644 --- a/libraries/TFT_eSPI-2.4.72/library.properties +++ b/libraries/TFT_eSPI-2.5.43/library.properties @@ -1,9 +1,9 @@ name=TFT_eSPI -version=2.4.72 +version=2.5.43 author=Bodmer maintainer=Bodmer sentence=TFT graphics library for Arduino processors with performance optimisation for RP2040, STM32, ESP8266 and ESP32 -paragraph=Supports TFT displays using drivers (ILI9341 etc) that operate with hardware SPI or 8 bit parallel. +paragraph=Supports TFT displays using drivers (ILI9341 etc.) that operate with hardware SPI or 8/16-bit parallel. category=Display url=https://github.com/Bodmer/TFT_eSPI architectures=* diff --git a/libraries/TFT_eSPI-2.4.72/license.txt b/libraries/TFT_eSPI-2.5.43/license.txt similarity index 97% rename from libraries/TFT_eSPI-2.4.72/license.txt rename to libraries/TFT_eSPI-2.5.43/license.txt index 87db4c9d..e0b40d2c 100644 --- a/libraries/TFT_eSPI-2.4.72/license.txt +++ b/libraries/TFT_eSPI-2.5.43/license.txt @@ -94,9 +94,9 @@ graphics. In 2018 anti-aliased fonts were added along with a Processing font conversion sketch. -In 2019 the library was adapted to be able to use it with any 32 bit Arduino -compatible processor. It will run on 8 bit and 16 bit processors but will be -slow due to extensive use of 32 bit variables. +In 2019 the library was adapted to be able to use it with any 32-bit Arduino +compatible processor. It will run on 8-bit and 16-bit processors but will be +slow due to extensive use of 32-bit variables. Many of the example sketches are original work that contain code created for my own projects. For all the original code the FreeBSD licence applies @@ -105,7 +105,7 @@ and is compatible with the GNU GPL. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvStartvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Software License Agreement (FreeBSD License) -Copyright (c) 2022 Bodmer (https://github.com/Bodmer) +Copyright (c) 2023 Bodmer (https://github.com/Bodmer) All rights reserved. diff --git a/libraries/arduinoWebSockets-2.3.6/.piopm b/libraries/arduinoWebSockets-2.3.6/.piopm deleted file mode 100644 index fa56e4c2..00000000 --- a/libraries/arduinoWebSockets-2.3.6/.piopm +++ /dev/null @@ -1 +0,0 @@ -{"type": "library", "name": "WebSockets", "version": "2.3.6", "spec": {"owner": "links2004", "id": 549, "name": "WebSockets", "requirements": null, "url": null}} \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.3.6/.clang-format b/libraries/arduinoWebSockets-2.5.2/.clang-format similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/.clang-format rename to libraries/arduinoWebSockets-2.5.2/.clang-format diff --git a/libraries/arduinoWebSockets-2.3.6/.github/workflows/main.yml b/libraries/arduinoWebSockets-2.5.2/.github/workflows/main.yml similarity index 59% rename from libraries/arduinoWebSockets-2.3.6/.github/workflows/main.yml rename to libraries/arduinoWebSockets-2.5.2/.github/workflows/main.yml index d9f1b961..908c62ea 100644 --- a/libraries/arduinoWebSockets-2.3.6/.github/workflows/main.yml +++ b/libraries/arduinoWebSockets-2.5.2/.github/workflows/main.yml @@ -33,21 +33,20 @@ jobs: run: | source $GITHUB_WORKSPACE/travis/common.sh cd $GITHUB_WORKSPACE - echo -en "::set-output name=matrix::" - echo -en "[" - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266 esp8266 1.6.13 esp8266com:esp8266:generic:xtal=80 - echo -en "," + echo -en "matrix=" >> $GITHUB_OUTPUT + echo -en "[" >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266 esp8266 1.6.13 esp8266com:esp8266:generic:xtal=80,dbg=Serial1 - echo -en "," + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 0.35.3 esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Serial1,lvl=SSL,wipe=none,baud=115200 >> $GITHUB_OUTPUT + echo -en "," >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266 esp8266 1.8.13 esp8266com:esp8266:generic:xtal=80,eesz=1M,FlashMode=qio,FlashFreq=80 - echo -en "," + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 0.35.3 esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 >> $GITHUB_OUTPUT + echo -en "," >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 1.8.13 espressif:esp32:esp32:FlashFreq=80 + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 0.35.3 esp32:esp32:esp32:FlashFreq=80 >> $GITHUB_OUTPUT - echo -en "]" + echo -en "]" >> $GITHUB_OUTPUT + echo >> $GITHUB_OUTPUT outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} @@ -56,33 +55,35 @@ jobs: strategy: fail-fast: false matrix: - IDE_VERSION: [1.8.13, 1.6.13] + CLI_VERSION: [0.35.3] env: - IDE_VERSION: ${{ matrix.IDE_VERSION }} + CLI_VERSION: ${{ matrix.CLI_VERSION }} + ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide steps: - uses: actions/checkout@v2 - - name: Get Date - id: get-date + - name: Get hash + id: get-hash run: | - echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" + echo "hash=$(/bin/date -u "+%Y%m%d")-$(md5sum ".github/workflows/main.yml" | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT shell: bash - - uses: actions/cache@v2 + - uses: actions/cache@v3 id: cache_all with: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }} + key: ${{ runner.os }}-${{ steps.get-hash.outputs.hash }}-${{ matrix.CLI_VERSION }}-cli - name: download IDE if: steps.cache_all.outputs.cache-hit != 'true' run: | - wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz -q - tar xf arduino-$IDE_VERSION-linux64.tar.xz - mv arduino-$IDE_VERSION $HOME/arduino_ide + wget https://github.com/arduino/arduino-cli/releases/download/v${CLI_VERSION}/arduino-cli_${CLI_VERSION}_Linux_64bit.tar.gz -q + tar xf arduino-cli_${CLI_VERSION}_Linux_64bit.tar.gz + mkdir -p $ARDUINO_DIRECTORIES_DATA + mv arduino-cli $ARDUINO_DIRECTORIES_DATA/ - name: download ArduinoJson if: steps.cache_all.outputs.cache-hit != 'true' @@ -92,17 +93,12 @@ jobs: unzip 6.x.zip mv ArduinoJson-6.x $HOME/Arduino/libraries/ArduinoJson - - name: download esp8266 + - name: download cores if: steps.cache_all.outputs.cache-hit != 'true' run: | + export PATH="$ARDUINO_DIRECTORIES_DATA:$PATH" source $GITHUB_WORKSPACE/travis/common.sh - get_core esp8266 - - - name: download esp32 - if: steps.cache_all.outputs.cache-hit != 'true' && matrix.IDE_VERSION != '1.6.13' - run: | - source $GITHUB_WORKSPACE/travis/common.sh - get_core esp32 + get_core_cli build: needs: [prepare_ide, prepare_example_json] @@ -114,8 +110,9 @@ jobs: env: CPU: ${{ matrix.cpu }} BOARD: ${{ matrix.board }} - IDE_VERSION: ${{ matrix.ideversion }} + CLI_VERSION: ${{ matrix.cliversion }} SKETCH: ${{ matrix.sketch }} + ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -125,19 +122,19 @@ jobs: run: | sudo apt-get install -y libgtk2.0-0 - - name: Get Date - id: get-date + - name: Get hash + id: get-hash run: | - echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" + echo "hash=$(/bin/date -u "+%Y%m%d")-$(md5sum ".github/workflows/main.yml" | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT shell: bash - - uses: actions/cache@v2 + - uses: actions/cache@v3 id: cache_all with: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }} + key: ${{ runner.os }}-${{ steps.get-hash.outputs.hash }}-${{ matrix.cliversion }}-cli - name: install python serial if: matrix.cpu == 'esp32' @@ -146,38 +143,24 @@ jobs: sudo pip install pyserial # sudo apt install python-is-python3 - - name: start DISPLAY - run: | - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 - export DISPLAY=:1.0 - sleep 3 - - name: test IDE run: | - export PATH="$HOME/arduino_ide:$PATH" - which arduino + export PATH="$ARDUINO_DIRECTORIES_DATA:$PATH" + which arduino-cli - name: copy code run: | mkdir -p $HOME/Arduino/libraries/ cp -r $GITHUB_WORKSPACE $HOME/Arduino/libraries/arduinoWebSockets - - name: config IDE - run: | - export DISPLAY=:1.0 - export PATH="$HOME/arduino_ide:$PATH" - arduino --board $BOARD --save-prefs - arduino --get-pref sketchbook.path - arduino --pref update.check=false - - name: build example timeout-minutes: 20 run: | - export DISPLAY=:1.0 + set -ex export PATH="$HOME/arduino_ide:$PATH" source $GITHUB_WORKSPACE/travis/common.sh cd $GITHUB_WORKSPACE - build_sketch arduino $SKETCH + build_sketch_cli "$SKETCH" "$BOARD" done: needs: [prepare_ide, prepare_example_json, build, check_version_files] diff --git a/libraries/arduinoWebSockets-2.3.6/.gitignore b/libraries/arduinoWebSockets-2.5.2/.gitignore similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/.gitignore rename to libraries/arduinoWebSockets-2.5.2/.gitignore diff --git a/libraries/arduinoWebSockets-2.3.6/.travis.yml b/libraries/arduinoWebSockets-2.5.2/.travis.yml similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/.travis.yml rename to libraries/arduinoWebSockets-2.5.2/.travis.yml diff --git a/libraries/arduinoWebSockets-2.3.6/LICENSE b/libraries/arduinoWebSockets-2.5.2/LICENSE similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/LICENSE rename to libraries/arduinoWebSockets-2.5.2/LICENSE diff --git a/libraries/arduinoWebSockets-2.3.6/README.md b/libraries/arduinoWebSockets-2.5.2/README.md similarity index 70% rename from libraries/arduinoWebSockets-2.3.6/README.md rename to libraries/arduinoWebSockets-2.5.2/README.md index ae2497f0..f621d5de 100644 --- a/libraries/arduinoWebSockets-2.3.6/README.md +++ b/libraries/arduinoWebSockets-2.5.2/README.md @@ -1,4 +1,4 @@ -WebSocket Server and Client for Arduino [![Build Status](https://github.com/Links2004/arduinoWebSockets/workflows/CI/badge.svg?branch=master)](https://github.com/Links2004/arduinoWebSockets/actions?query=workflow%3ACI+branch%3Amaster) +WebSocket Server and Client for Arduino [![Build Status](https://github.com/Links2004/arduinoWebSockets/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/Links2004/arduinoWebSockets/actions?query=branch%3Amaster) =========================================== a WebSocket Server and Client for Arduino based on RFC6455. @@ -26,11 +26,13 @@ a WebSocket Server and Client for Arduino based on RFC6455. - ESP8266 [Arduino for ESP8266](https://github.com/esp8266/Arduino/) - ESP32 [Arduino for ESP32](https://github.com/espressif/arduino-esp32) - ESP31B + - Raspberry Pi Pico W [Arduino for Pico](https://github.com/earlephilhower/arduino-pico) - Particle with STM32 ARM Cortex M3 - ATmega328 with Ethernet Shield (ATmega branch) - ATmega328 with enc28j60 (ATmega branch) - ATmega2560 with Ethernet Shield (ATmega branch) - ATmega2560 with enc28j60 (ATmega branch) + - Arduino UNO [R4 WiFi](https://github.com/arduino/ArduinoCore-renesas) ###### Note: ###### @@ -47,6 +49,16 @@ a WebSocket Server and Client for Arduino based on RFC6455. by running the device behind an SSL proxy. See [Nginx](examples/Nginx/esp8266.ssl.reverse.proxy.conf) for a sample Nginx server configuration file to enable this. +### Root CA Cert Bundles for SSL/TLS connections ### + +Secure connections require the certificate of the server to be verified. One option is to provide a single certificate in the chain of trust. However, for flexibility and robustness, a certificate bundle is recommended. If a server changes the root CA from which it derives its certificates, this will not be a problem. With a single CA cert it will not connect. + + - For [technical details](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_crt_bundle.html) + - For a [PlatformIO setup](https://github.com/Duckle29/esp32-certBundle/) + - For an [example](examples/esp32/WebSocketClientSSLBundle/) + +Including a bundle with all CA certs will use 77.2 kB but this list can be reduced to 16.5 kB for the 41 most common. This results in 90% absolute usage coverage and 99% market share coverage according to [W3Techs](https://w3techs.com/technologies/overview/ssl_certificate). The bundle is inserted into the compiled firmware. The bundle is not loaded into RAM, only its index. + ### ESP Async TCP ### This libary can run in Async TCP mode on the ESP. @@ -62,19 +74,19 @@ The mode can be activated in the ```WebSockets.h``` (see WEBSOCKETS_NETWORK_TYPE ```c++ void begin(const char *host, uint16_t port, const char * url = "/", const char * protocol = "arduino"); void begin(String host, uint16_t port, String url = "/", String protocol = "arduino"); - ``` +``` - `onEvent`: Callback to handle for websocket events - ```c++ +```c++ void onEvent(WebSocketClientEvent cbEvent); - ``` +``` - `WebSocketClientEvent`: Handler for websocket events - ```c++ +```c++ void (*WebSocketClientEvent)(WStype_t type, uint8_t * payload, size_t length) - ``` +``` Where `WStype_t type` is defined as: - ```c++ +```c++ typedef enum { WStype_ERROR, WStype_DISCONNECTED, @@ -88,13 +100,11 @@ Where `WStype_t type` is defined as: WStype_PING, WStype_PONG, } WStype_t; - ``` +``` ### Issues ### Submit issues to: https://github.com/Links2004/arduinoWebSockets/issues -[![Join the chat at https://gitter.im/Links2004/arduinoWebSockets](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Links2004/arduinoWebSockets?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - ### License and credits ### The library is licensed under [LGPLv2.1](https://github.com/Links2004/arduinoWebSockets/blob/master/LICENSE) diff --git a/libraries/arduinoWebSockets-2.3.6/examples/Nginx/esp8266.ssl.reverse.proxy.conf b/libraries/arduinoWebSockets-2.5.2/examples/Nginx/esp8266.ssl.reverse.proxy.conf similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/Nginx/esp8266.ssl.reverse.proxy.conf rename to libraries/arduinoWebSockets-2.5.2/examples/Nginx/esp8266.ssl.reverse.proxy.conf diff --git a/libraries/arduinoWebSockets-2.5.2/examples/arduino_renesas/arduino_uno_r4_wifi/arduino_uno_r4_wifi.ino b/libraries/arduinoWebSockets-2.5.2/examples/arduino_renesas/arduino_uno_r4_wifi/arduino_uno_r4_wifi.ino new file mode 100644 index 00000000..2168a629 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/arduino_renesas/arduino_uno_r4_wifi/arduino_uno_r4_wifi.ino @@ -0,0 +1,109 @@ +#include +#include +#include + +#include "WiFiS3.h" +#include + +#define WIFI_SSID "" +#define WIFI_PASS "" + +WebSocketsClient webSocket; + +void webSocketEvent(WStype_t type, uint8_t *payload, size_t length) { + + switch (type) { + case WStype_DISCONNECTED: + Serial.println("[WSc] Disconnected!"); + break; + case WStype_CONNECTED: + Serial.println("[WSc] Connected!"); + + // send message to server when Connected + webSocket.sendTXT("Connected"); + break; + case WStype_TEXT: + Serial.print("[WSc] get text:"); + Serial.println((char *)payload); + + // send message to server + // webSocket.sendTXT("message here"); + break; + case WStype_BIN: + // send data to server + // webSocket.sendBIN(payload, length); + break; + case WStype_ERROR: + case WStype_FRAGMENT_TEXT_START: + case WStype_FRAGMENT_BIN_START: + case WStype_FRAGMENT: + case WStype_FRAGMENT_FIN: + break; + } +} + +void setup() { + Serial.begin(115200); + + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + Serial.println(); + Serial.println(); + Serial.println(); + + for (uint8_t t = 4; t > 0; t--) { + Serial.println("[SETUP] BOOT WAIT ..."); + Serial.flush(); + delay(1000); + } + + // check for the WiFi module: + if (WiFi.status() == WL_NO_MODULE) { + Serial.println("Communication with WiFi module failed!"); + // don't continue + while (true) + ; + } + + String fv = WiFi.firmwareVersion(); + if (fv < WIFI_FIRMWARE_LATEST_VERSION) { + Serial.println("Please upgrade the firmware"); + } + + Serial.println("[Wifi]: Connecting"); + + int status = WL_IDLE_STATUS; + + // attempt to connect to WiFi network: + while (status != WL_CONNECTED) { + Serial.print("[Wifi]: Attempting to connect to SSID: "); + Serial.println(WIFI_SSID); + + // Connect to WPA/WPA2 network. Change this line if using open or WEP network: + status = WiFi.begin(WIFI_SSID, WIFI_PASS); + + delay(1000); + } + + Serial.println("Connected!"); + + // print your board's IP address: + IPAddress ip = WiFi.localIP(); + Serial.print("IP Address: "); + Serial.println(ip); + + // server address, port and URL + webSocket.begin("192.168.0.123", 8011); + + // event handler + webSocket.onEvent(webSocketEvent); + + // try ever 5000 again if connection has failed + webSocket.setReconnectInterval(5000); +} + +void loop() { + webSocket.loop(); +} \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.3.6/examples/avr/WebSocketClientAVR/WebSocketClientAVR.ino b/libraries/arduinoWebSockets-2.5.2/examples/avr/WebSocketClientAVR/WebSocketClientAVR.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/avr/WebSocketClientAVR/WebSocketClientAVR.ino rename to libraries/arduinoWebSockets-2.5.2/examples/avr/WebSocketClientAVR/WebSocketClientAVR.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp32/WebSocketClient/WebSocketClient.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClient/WebSocketClient.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp32/WebSocketClient/WebSocketClient.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClient/WebSocketClient.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp32/WebSocketClientSSL/WebSocketClientSSL.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSSL/WebSocketClientSSL.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp32/WebSocketClientSSL/WebSocketClientSSL.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSSL/WebSocketClientSSL.ino diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSSLBundle/WebSocketClientSSLBundle.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSSLBundle/WebSocketClientSSLBundle.ino new file mode 100644 index 00000000..f64cc589 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSSLBundle/WebSocketClientSSLBundle.ino @@ -0,0 +1,135 @@ +/* + * main.cpp + * + * Created on: 15.06.2024 + * + */ + +#include +#include +#include + +#include + +// Use the incbin library to embedd the cert binary +// extern const uint8_t rootca_crt_bundle_start[] asm( +// "_binary_data_cert_x509_crt_bundle_bin_start"); + +WiFiMulti wifiMulti; +WebSocketsClient webSocket; + +#define USE_SERIAL Serial + +void setClock() { + configTime(0, 0, "pool.ntp.org", "time.nist.gov"); + + USE_SERIAL.print(F("Waiting for NTP time sync: ")); + time_t nowSecs = time(nullptr); + while(nowSecs < 8 * 3600 * 2) { + delay(500); + USE_SERIAL.print(F(".")); + yield(); + nowSecs = time(nullptr); + } + + USE_SERIAL.println(); + struct tm timeinfo; + gmtime_r(&nowSecs, &timeinfo); + USE_SERIAL.print(F("Current time: ")); + USE_SERIAL.print(asctime(&timeinfo)); +} + +void hexdump(const void * mem, uint32_t len, uint8_t cols = 16) { + const uint8_t * src = (const uint8_t *)mem; + USE_SERIAL.printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len); + for(uint32_t i = 0; i < len; i++) { + if(i % cols == 0) { + USE_SERIAL.printf("\n[0x%08X] 0x%08X: ", (ptrdiff_t)src, i); + } + USE_SERIAL.printf("%02X ", *src); + src++; + } + USE_SERIAL.printf("\n"); +} + +void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { + switch(type) { + case WStype_DISCONNECTED: + USE_SERIAL.printf("[WSc] Disconnected!\n"); + break; + case WStype_CONNECTED: + USE_SERIAL.printf("[WSc] Connected to url: %s\n", payload); + + // send message to server when Connected + webSocket.sendTXT("Connected"); + break; + case WStype_TEXT: + USE_SERIAL.printf("[WSc] get text: %s\n", payload); + + // send message to server + // webSocket.sendTXT("message here"); + break; + case WStype_BIN: + USE_SERIAL.printf("[WSc] get binary length: %u\n", length); + hexdump(payload, length); + + // send data to server + // webSocket.sendBIN(payload, length); + break; + case WStype_ERROR: + case WStype_FRAGMENT_TEXT_START: + case WStype_FRAGMENT_BIN_START: + case WStype_FRAGMENT: + case WStype_FRAGMENT_FIN: + break; + } +} + +void setup() { + USE_SERIAL.begin(115200); + + USE_SERIAL.setDebugOutput(true); + + USE_SERIAL.println(); + USE_SERIAL.println(); + USE_SERIAL.println(); + + for(uint8_t t = 4; t > 0; t--) { + USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t); + USE_SERIAL.flush(); + delay(1000); + } + + wifiMulti.addAP("SSID", "WIFI_PASSPHRASE"); + + // WiFi.disconnect(); + while(wifiMulti.run() != WL_CONNECTED) { + delay(100); + } + + setClock(); + + // server address, port and URL. This server can be flakey. + // Expected response: Request served by 0123456789abcdef + // webSocket.beginSslWithBundle("echo.websocket.org", 443, "/", rootca_crt_bundle_start, ""); + // ESP32 3.0.4 or higher needs the size of the bundle + // webSocket.beginSslWithBundle("echo.websocket.org", 443, "/", rootca_crt_bundle_start, sizeof(rootca_crt_bundle_start), ""); +#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4) + webSocket.beginSslWithBundle("echo.websocket.org", 443, "/", NULL, 0, ""); +#else + webSocket.beginSslWithBundle("echo.websocket.org", 443, "/", NULL, ""); +#endif + + // event handler + webSocket.onEvent(webSocketEvent); + + // use HTTP Basic Authorization this is optional enable if needed + // webSocket.setAuthorization("user", "Password"); + + // try ever 5000 again if connection has failed + webSocket.setReconnectInterval(5000); +} + +void loop() { + webSocket.loop(); +} diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino new file mode 100644 index 00000000..af3572f9 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino @@ -0,0 +1,155 @@ +/* + * WebSocketClientSocketIOack.ino + * + * Created on: 20.07.2019 + * + */ + +#include + +#include +#include +#include + +#include + +#include +#include + +WiFiMulti WiFiMulti; +SocketIOclient socketIO; + +#define USE_SERIAL Serial + + +void socketIOEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) { + switch(type) { + case sIOtype_DISCONNECT: + USE_SERIAL.printf("[IOc] Disconnected!\n"); + break; + case sIOtype_CONNECT: + USE_SERIAL.printf("[IOc] Connected to url: %s\n", payload); + + // join default namespace (no auto join in Socket.IO V3) + socketIO.send(sIOtype_CONNECT, "/"); + break; + case sIOtype_EVENT: + { + char * sptr = NULL; + int id = strtol((char *)payload, &sptr, 10); + USE_SERIAL.printf("[IOc] get event: %s id: %d\n", payload, id); + if(id) { + payload = (uint8_t *)sptr; + } + DynamicJsonDocument doc(1024); + DeserializationError error = deserializeJson(doc, payload, length); + if(error) { + USE_SERIAL.print(F("deserializeJson() failed: ")); + USE_SERIAL.println(error.c_str()); + return; + } + + String eventName = doc[0]; + USE_SERIAL.printf("[IOc] event name: %s\n", eventName.c_str()); + + // Message Includes a ID for a ACK (callback) + if(id) { + // creat JSON message for Socket.IO (ack) + DynamicJsonDocument docOut(1024); + JsonArray array = docOut.to(); + + // add payload (parameters) for the ack (callback function) + JsonObject param1 = array.createNestedObject(); + param1["now"] = millis(); + + // JSON to String (serializion) + String output; + output += id; + serializeJson(docOut, output); + + // Send event + socketIO.send(sIOtype_ACK, output); + } + } + break; + case sIOtype_ACK: + USE_SERIAL.printf("[IOc] get ack: %u\n", length); + break; + case sIOtype_ERROR: + USE_SERIAL.printf("[IOc] get error: %u\n", length); + break; + case sIOtype_BINARY_EVENT: + USE_SERIAL.printf("[IOc] get binary: %u\n", length); + break; + case sIOtype_BINARY_ACK: + USE_SERIAL.printf("[IOc] get binary ack: %u\n", length); + break; + } +} + +void setup() { + //USE_SERIAL.begin(921600); + USE_SERIAL.begin(115200); + + //Serial.setDebugOutput(true); + USE_SERIAL.setDebugOutput(true); + + USE_SERIAL.println(); + USE_SERIAL.println(); + USE_SERIAL.println(); + + for(uint8_t t = 4; t > 0; t--) { + USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t); + USE_SERIAL.flush(); + delay(1000); + } + + WiFiMulti.addAP("SSID", "passpasspass"); + + //WiFi.disconnect(); + while(WiFiMulti.run() != WL_CONNECTED) { + delay(100); + } + + String ip = WiFi.localIP().toString(); + USE_SERIAL.printf("[SETUP] WiFi Connected %s\n", ip.c_str()); + + // server address, port and URL + socketIO.begin("10.11.100.100", 8880, "/socket.io/?EIO=4"); + + // event handler + socketIO.onEvent(socketIOEvent); +} + +unsigned long messageTimestamp = 0; +void loop() { + socketIO.loop(); + + uint64_t now = millis(); + + if(now - messageTimestamp > 2000) { + messageTimestamp = now; + + // creat JSON message for Socket.IO (event) + DynamicJsonDocument doc(1024); + JsonArray array = doc.to(); + + // add evnet name + // Hint: socket.on('event_name', .... + array.add("event_name"); + + // add payload (parameters) for the event + JsonObject param1 = array.createNestedObject(); + param1["now"] = (uint32_t) now; + + // JSON to String (serializion) + String output; + serializeJson(doc, output); + + // Send event + socketIO.sendEVENT(output); + + // Print JSON for debugging + USE_SERIAL.println(output); + } +} diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp32/WebSocketServer/WebSocketServer.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketServer/WebSocketServer.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp32/WebSocketServer/WebSocketServer.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp32/WebSocketServer/WebSocketServer.ino diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/.gitignore b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/.gitignore new file mode 100644 index 00000000..75999378 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/.gitignore @@ -0,0 +1,8 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch +*secret* +!*secrets.hpp.template +*x509_crt_bundle.bin \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cacrt_all.pem b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cacrt_all.pem new file mode 100644 index 00000000..f78a6101 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cacrt_all.pem @@ -0,0 +1,3581 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Mon Mar 11 15:25:27 2024 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.29. +## SHA256: 4d96bd539f4719e9ace493757afbe4a23ee8579de1c97fbebc50bba3c12e8c1e +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +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 +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +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 +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GB CA +=============================== +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG +EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw +MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds +b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX +scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP +rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk +9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o +Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg +GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI +hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD +dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 +VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui +HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +SZAFIR ROOT CA2 +=============== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV +BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ +BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD +VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q +qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK +DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE +2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ +ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi +ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC +AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 +O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 +oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul +4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 ++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +Certum Trusted Network CA 2 +=========================== +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE +BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 +bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y +ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ +TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB +IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 +7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o +CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b +Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p +uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 +GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ +9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB +Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye +hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM +BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW +Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA +L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo +clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM +pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb +w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo +J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm +ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX +is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 +zAYspsbiDrW5viSP +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2015 +======================================================= +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT +BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 +aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx +MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg +QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV +BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw +MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv +bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh +iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ +6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd +FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr +i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F +GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 +fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu +iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI +hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ +D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM +d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y +d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn +82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb +davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F +Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt +J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa +JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q +p/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions ECC RootCA 2015 +=========================================================== +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 +aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw +MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj +IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD +VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 +Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP +dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK +Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA +GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn +dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +ISRG Root X1 +============ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE +BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD +EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG +EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT +DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r +Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 +3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K +b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN +Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ +4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf +1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH +usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r +OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY +9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV +0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt +hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw +TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx +e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA +JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD +YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n +JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ +m+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM +================ +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +Amazon Root CA 1 +================ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 +MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH +FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ +gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t +dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce +VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 +DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM +CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy +8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa +2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 +xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +Amazon Root CA 2 +================ +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 +MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 +kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp +N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 +AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd +fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx +kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS +btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 +Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN +c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ +3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw +DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA +A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE +YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW +xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ +gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW +aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV +Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 +KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi +JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= +-----END CERTIFICATE----- + +Amazon Root CA 3 +================ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB +f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr +Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 +rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc +eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +Amazon Root CA 4 +================ +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN +/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri +83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA +MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 +AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT +D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr +IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g +TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp +ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD +VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt +c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth +bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 +IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 +6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc +wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 +3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 +WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU +ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc +lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R +e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j +q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +GDCA TrustAUTH R5 ROOT +====================== +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw +BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD +DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow +YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs +AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p +OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr +pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ +9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ +xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM +R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ +D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 +oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx +9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 +H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 +6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd ++PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ +HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD +F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ +8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv +/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT +aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +SSL.com Root Certification Authority RSA +======================================== +-----BEGIN CERTIFICATE----- +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 +WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +SSL.com Root Certification Authority ECC +======================================== +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv +BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy +MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO +BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ +8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR +hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT +jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW +e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z +5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority RSA R2 +============================================== +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w +DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u +MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI +DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD +VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh +hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w +cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO +Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ +B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh +CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim +9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto +RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm +JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 ++qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp +qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 +++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx +Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G +guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz +OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 +CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq +lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR +rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 +hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX +9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority ECC +=========================================== +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy +BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw +MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM +LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy +3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O +BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe +5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ +N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm +m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +GlobalSign Root CA - R6 +======================= +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX +R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i +YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs +U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss +grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE +3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF +vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM +PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ +azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O +WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy +CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP +0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN +b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE +AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV +HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 +lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY +BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym +Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr +3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 +0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T +uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK +oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t +JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GC CA +=============================== +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD +SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo +MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa +Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL +ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr +VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab +NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E +AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk +AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +UCA Global G2 Root +================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x +NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU +cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT +oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV +8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS +h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o +LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ +R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe +KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa +4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc +OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 +8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo +5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A +Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 +yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX +c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo +jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk +bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x +ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn +RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== +-----END CERTIFICATE----- + +UCA Extended Validation Root +============================ +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u +IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G +A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs +iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF +Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu +eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR +59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH +0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR +el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv +B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth +WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS +NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS +3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL +BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM +aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 +dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb ++7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW +F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi +GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc +GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi +djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr +dhh2n1ax +-----END CERTIFICATE----- + +Certigna Root CA +================ +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE +BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ +MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda +MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz +MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX +stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz +KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 +JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 +XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq +4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej +wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ +lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI +jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ +/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy +dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h +LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl +cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt +OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP +TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq +7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 +4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd +8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS +6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY +tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS +aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde +E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +emSign Root CA - G1 +=================== +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET +MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl +ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx +ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk +aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN +LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1 +cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW +DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ +6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH +hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2 +vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q +NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q ++Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih +U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +emSign ECC Root CA - G3 +======================= +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG +A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg +MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4 +MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11 +ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc +58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr +MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D +CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7 +jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +emSign Root CA - C1 +=================== +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx +EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp +Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE +BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD +ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up +ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/ +Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX +OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V +I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms +lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+ +XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD +ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp +/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1 +NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9 +wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ +BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +emSign ECC Root CA - C3 +======================= +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG +A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF +Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE +BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD +ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd +6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9 +SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA +B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA +MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU +ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 3 +======================= +-----BEGIN CERTIFICATE----- +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 +dBb9HxEGmpv0 +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G4 +========================================= +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu +bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 +dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT +AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D +umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV +3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds +8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ +e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 +ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X +xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV +7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW +Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n +MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q +jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht +7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK +YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt +jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ +m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW +RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA +JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G ++TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT +kcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- + +Microsoft ECC Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND +IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4 +MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6 +thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB +eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM ++Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf +Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR +eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +Microsoft RSA Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg +UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw +NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml +7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e +S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7 +1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+ +dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F +yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS +MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr +lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ +0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ +ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og +6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80 +dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk ++ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex +/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy +AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW +ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE +7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT +c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D +5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +e-Szigno Root CA 2017 +===================== +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw +DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt +MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa +Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE +CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp +Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx +s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G +A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv +vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA +tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO +svxyqltZ+efcMQ== +-----END CERTIFICATE----- + +certSIGN Root CA G2 +=================== +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw +EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy +MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH +TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05 +N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk +abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg +wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp +dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh +ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732 +jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf +95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc +z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL +iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud +DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB +ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB +/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5 +8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5 +BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW +atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU +Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M +NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N +0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +Trustwave Global Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +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 +29FpHOTKyeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +Trustwave Global ECC P256 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1 +NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj +43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm +P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt +0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz +RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +Trustwave Global ECC P384 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4 +NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH +Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr +/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV +HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn +ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl +CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw== +-----END CERTIFICATE----- + +NAVER Global Root Certification Authority +========================================= +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG +A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD +DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4 +NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT +UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb +UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW ++j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7 +XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2 +aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4 +Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z +VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B +A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai +cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy +YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV +HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK +21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB +jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx +hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg +E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH +D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ +A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY +qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG +I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg +kpzNNIaRkPpkUZ3+/uul9XXeifdy +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM SERVIDORES SEGUROS +=================================== +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF +UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy +NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 +MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt +UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB +QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 +LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG +SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD +zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= +-----END CERTIFICATE----- + +GlobalSign Root R46 +=================== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv +b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX +BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es +CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ +r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje +2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt +bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj +K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 +12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on +ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls +eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 +vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM +BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy +gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 +CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm +OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq +JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye +qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz +nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 +DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 +QEUxeCp6 +-----END CERTIFICATE----- + +GlobalSign Root E46 +=================== +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT +AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg +RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV +BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB +jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj +QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL +gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk +vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ +CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +GLOBALTRUST 2020 +================ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx +IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT +VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh +BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy +MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi +D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO +VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM +CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm +fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA +A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR +JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG +DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU +clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ +mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud +IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw +4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 +iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS +8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 +HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS +vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 +oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF +YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl +gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + +ANF Secure Server Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNVBAUTCUc2MzI4 +NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lv +bjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNVBAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3Qg +Q0EwHhcNMTkwOTA0MTAwMDM4WhcNMzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEw +MQswCQYDVQQGEwJFUzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQw +EgYDVQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9vdCBDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCjcqQZAZ2cC4Ffc0m6p6zz +BE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9qyGFOtibBTI3/TO80sh9l2Ll49a2pcbnv +T1gdpd50IJeh7WhM3pIXS7yr/2WanvtH2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcv +B2VSAKduyK9o7PQUlrZXH1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXse +zx76W0OLzc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyRp1RM +VwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQzW7i1o0TJrH93PB0j +7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/SiOL9V8BY9KHcyi1Swr1+KuCLH5z +JTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJnLNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe +8TZBAQIvfXOn3kLMTOmJDVb3n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVO +Hj1tyRRM4y5Bu8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj +o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAOBgNVHQ8BAf8E +BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEATh65isagmD9uw2nAalxJ +UqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzx +j6ptBZNscsdW699QIyjlRRA96Gejrw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDt +dD+4E5UGUcjohybKpFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM +5gf0vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjqOknkJjCb +5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ/zo1PqVUSlJZS2Db7v54 +EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ92zg/LFis6ELhDtjTO0wugumDLmsx2d1H +hk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI+PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGy +g77FGr8H6lnco4g175x2MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3 +r5+qPeoott7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= +-----END CERTIFICATE----- + +Certum EC-384 CA +================ +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ +TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2 +MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh +dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx +GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq +vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn +iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo +ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0 +QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +Certum Trusted Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6MQswCQYDVQQG +EwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0g +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0Ew +HhcNMTgwMzE2MTIxMDEzWhcNNDMwMzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMY +QXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZn0EGze2jusDbCSzBfN8p +fktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/qp1x4EaTByIVcJdPTsuclzxFUl6s1wB52 +HO8AU5853BSlLCIls3Jy/I2z5T4IHhQqNwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2 +fJmItdUDmj0VDT06qKhF8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGt +g/BKEiJ3HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGamqi4 +NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi7VdNIuJGmj8PkTQk +fVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSFytKAQd8FqKPVhJBPC/PgP5sZ0jeJ +P/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0PqafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSY +njYJdmZm/Bo/6khUHL4wvYBQv3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHK +HRzQ+8S1h9E6Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 +vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBAEii1QAL +LtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4WxmB82M+w85bj/UvXgF2Ez8s +ALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvozMrnadyHncI013nR03e4qllY/p0m+jiGPp2K +h2RX5Rc64vmNueMzeMGQ2Ljdt4NR5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8 +CYyqOhNf6DR5UMEQGfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA +4kZf5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq0Uc9Nneo +WWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7DP78v3DSk+yshzWePS/Tj +6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTMqJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmT +OPQD8rv7gmsHINFSH5pkAnuYZttcTVoP0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZck +bxJF0WddCajJFdr60qZfE2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb +-----END CERTIFICATE----- + +TunTrust Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG +A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj +dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw +NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD +ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz +2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b +bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7 +NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd +gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW +VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f +Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ +juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas +DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS +VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI +04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl +0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd +Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY +YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp +adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x +xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP +jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM +MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z +ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r +AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +HARICA TLS RSA Root CA 2021 +=========================== +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG +EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz +OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl +bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB +IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN +JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu +a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y +Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K +5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv +dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR +0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH +GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm +haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ +CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU +EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq +QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD +QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR +j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5 +vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0 +qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6 +Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/ +PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn +kf3/W9b3raYvAwtt41dU63ZTGI0RmLo= +-----END CERTIFICATE----- + +HARICA TLS ECC Root CA 2021 +=========================== +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH +UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD +QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX +DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj +IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv +b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l +AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b +ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW +0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi +rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw +CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud +DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w +gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A +bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL +4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb +LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il +I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP +cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA +LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A +lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH +9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf +NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE +ZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +vTrus ECC Root CA +================= +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE +BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS +b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa +BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c +ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n +TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT +QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL +YgmRWAD5Tfs0aNoJrSEGGJTO +-----END CERTIFICATE----- + +vTrus Root CA +============= +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG +A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv +b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG +A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots +SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI +ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF +XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA +YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70 +kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2 +AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu +/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu +1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO +9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg +scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC +AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr +jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4 +8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn +xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg +icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4 +sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW +nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc +SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H +l3s= +-----END CERTIFICATE----- + +ISRG Root X2 +============ +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV +UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT +UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT +MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS +RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H +ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb +d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF +cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5 +U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +HiPKI Root CA - G1 +================== +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ +IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT +AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg +Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0 +o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k +wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE +YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA +GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd +hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj +1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4 +9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/ +Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF +8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD +AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl +tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE +wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q +JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv +5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz +jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg +hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb +yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/ +yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i +YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i +YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW +ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E +BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI +KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg +UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +GTS Root R1 +=========== +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM +f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0 +xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w +B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW +nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk +9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq +kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A +K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX +V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW +cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD +ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi +ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar +J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci +NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me +LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF +fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+ +7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3 +FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3 +gm3c +-----END CERTIFICATE----- + +GTS Root R2 +=========== +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv +CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl +e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb +a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS ++LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M +kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG +r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q +S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV +J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL +dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD +ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 +0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh +swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel +/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn +jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5 +9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M +7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8 +0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR +WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW +HYbL +-----END CERTIFICATE----- + +GTS Root R3 +=========== +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi +MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw +HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ +R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO +PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout +736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA +MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq +Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT +L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV +11RZt+cRLInUue4X +-----END CERTIFICATE----- + +GTS Root R4 +=========== +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi +MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw +HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ +R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO +PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu +hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA +MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1 +PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C +r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh +4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +Telia Root CA v2 +================ +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT +AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2 +MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK +DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7 +6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q +9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn +pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl +tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW +5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr +RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E +BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4 +M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau +BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W +xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5 +tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H +eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C +y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC +QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15 +h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70 +sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9 +xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ +raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc= +-----END CERTIFICATE----- + +D-TRUST BR Root CA 1 2020 +========================= +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE +RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy +MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV +BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7 +dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu +QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t +MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu +bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP +PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD +AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom +AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +D-TRUST EV Root CA 1 2020 +========================= +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE +RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy +MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV +BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8 +ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ +raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL +MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu +bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP +PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD +AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR +AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +DigiCert TLS ECC P384 Root G5 +============================= +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4 +NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg +Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd +lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj +n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB +/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds +Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx +AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +DigiCert TLS RSA4096 Root G5 +============================ +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG +EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0 +MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2 +IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8 +7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU +AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces +tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa +zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV +DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q +TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy +z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/ +MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk +wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E +FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN +lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN +MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/ +u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G +OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh +47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU +FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ +yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP +bEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +Certainly Root R1 +================= +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE +BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN +MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy +dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O +5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl +8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl +DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI +XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN +KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ +AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb +rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1 +VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS +p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz +HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v +MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB +GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+ +gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH +JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7 +fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw +x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S +X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +Certainly Root E1 +================= +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV +UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0 +MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu +bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4 +fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9 +YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E +AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 +rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +Security Communication RootCA3 +============================== +-----BEGIN CERTIFICATE----- +MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw +IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD +b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw +CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE +AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r +hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE +NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 +/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm +npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY +XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK +p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC +3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf +GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw +CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS +YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu +Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O +H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx +YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ +XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml ++LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn +KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 +dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm +6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== +-----END CERTIFICATE----- + +Security Communication ECC RootCA1 +================================== +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD +VQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t +dW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL +MAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV +BAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo +5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW +BBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK +BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L +snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e +N9k= +-----END CERTIFICATE----- + +BJCA Global Root CA1 +==================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQG +EwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJK +Q0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAzMTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkG +A1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQD +DBRCSkNBIEdsb2JhbCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFm +CL3ZxRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZspDyRhyS +sTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O558dnJCNPYwpj9mZ9S1Wn +P3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgRat7GGPZHOiJBhyL8xIkoVNiMpTAK+BcW +yqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRj +eulumijWML3mG90Vr4TqnMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNn +MoH1V6XKV0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/pj+b +OT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZOz2nxbkRs1CTqjSSh +GL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXnjSXWgXSHRtQpdaJCbPdzied9v3pK +H9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMB +AAGjQjBAMB0GA1UdDgQWBBTF7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3KliawLwQ8hOnThJ +dMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u+2D2/VnGKhs/I0qUJDAnyIm8 +60Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuh +TaRjAv04l5U/BXCga99igUOLtFkNSoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW +4AB+dAb/OMRyHdOoP2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmp +GQrI+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRzznfSxqxx +4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9eVzYH6Eze9mCUAyTF6ps +3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4S +SPfSKcOYKMryMguTjClPPGAyzQWWYezyr/6zcCwupvI= +-----END CERTIFICATE----- + +BJCA Global Root CA2 +==================== +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQswCQYDVQQGEwJD +TjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJKQ0Eg +R2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgyMVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UE +BhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRC +SkNBIEdsb2JhbCBSb290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jl +SR9BIgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK++kpRuDCK +/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJKsVF/BvDRgh9Obl+rg/xI +1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8 +W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8g +UXOQwKhbYdDFUDn9hf7B43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +Sectigo Public Server Authentication Root E46 +============================================= +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQswCQYDVQQGEwJH +QjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBTZXJ2 +ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5 +WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0 +aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUr +gQQAIgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccCWvkEN/U0 +NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+6xnOQ6OjQjBAMB0GA1Ud +DgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAKBggqhkjOPQQDAwNnADBkAjAn7qRaqCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RH +lAFWovgzJQxC36oCMB3q4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21U +SAGKcw== +-----END CERTIFICATE----- + +Sectigo Public Server Authentication Root R46 +============================================= +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1 +OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3 +DQEBAQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDaef0rty2k +1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnzSDBh+oF8HqcIStw+Kxwf +GExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xfiOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMP +FF1bFOdLvt30yNoDN9HWOaEhUTCDsG3XME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vu +ZDCQOc2TZYEhMbUjUDM3IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5Qaz +Yw6A3OASVYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgESJ/A +wSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu+Zd4KKTIRJLpfSYF +plhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt8uaZFURww3y8nDnAtOFr94MlI1fZ +EoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+LHaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW +6aWWrL3DkJiy4Pmi1KZHQ3xtzwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWI +IUkwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQYKlJfp/imTYp +E0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52gDY9hAaLMyZlbcp+nv4fjFg4 +exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZAFv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M +0ejf5lG5Nkc/kLnHvALcWxxPDkjBJYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI +84HxZmduTILA7rpXDhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9m +pFuiTdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5dHn5Hrwd +Vw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65LvKRRFHQV80MNNVIIb/b +E/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmm +J1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAYQqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +SSL.com TLS RSA Root CA 2022 +============================ +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQG +EwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBSU0Eg +Um9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloXDTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMC +VVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u +9nTPL3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OYt6/wNr/y +7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0insS657Lb85/bRi3pZ7Qcac +oOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3PnxEX4MN8/HdIGkWCVDi1FW24IBydm5M +R7d1VVm0U3TZlMZBrViKMWYPHqIbKUBOL9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDG +D6C1vBdOSHtRwvzpXGk3R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEW +TO6Af77wdr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS+YCk +8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYSd66UNHsef8JmAOSq +g+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoGAtUjHBPW6dvbxrB6y3snm/vg1UYk +7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2fgTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsu +N+7jhHonLs0ZNbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsMQtfhWsSWTVTN +j8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvfR4iyrT7gJ4eLSYwfqUdYe5by +iB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJDPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjU +o3KUQyxi4U5cMj29TH0ZR6LDSeeWP4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqo +ENjwuSfr98t67wVylrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7Egkaib +MOlqbLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2wAgDHbICi +vRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3qr5nsLFR+jM4uElZI7xc7 +P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sjiMho6/4UIyYOf8kpIEFR3N+2ivEC+5BB0 +9+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +SSL.com TLS ECC Root CA 2022 +============================ +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV +UzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBFQ0MgUm9v +dCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMx +GDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWy +JGYmacCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFNSeR7T5v1 +5wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSJjy+j6CugFFR7 +81a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NWuCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGG +MAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w +7deedWo1dlJF4AIxAMeNb0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5 +Zn6g6g== +-----END CERTIFICATE----- + +Atos TrustedRoot Root CA ECC TLS 2021 +===================================== +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4wLAYDVQQDDCVB +dG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQswCQYD +VQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3Mg +VHJ1c3RlZFJvb3QgUm9vdCBDQSBFQ0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYT +AkRFMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6K +DP/XtXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4AjJn8ZQS +b+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2KCXWfeBmmnoJsmo7jjPX +NtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIwW5kp85wxtolrbNa9d+F851F+ +uDrNozZffPc8dz7kUK2o59JZDCaOMDtuCCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGY +a3cpetskz2VAv9LcjBHo9H1/IISpQuQo +-----END CERTIFICATE----- + +Atos TrustedRoot Root CA RSA TLS 2021 +===================================== +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBMMS4wLAYDVQQD +DCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQsw +CQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0 +b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNV +BAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BB +l01Z4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYvYe+W/CBG +vevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZkmGbzSoXfduP9LVq6hdK +ZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDsGY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt +0xU6kGpn8bRrZtkh68rZYnxGEFzedUlnnkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVK +PNe0OwANwI8f4UDErmwh3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMY +sluMWuPD0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzygeBY +Br3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8ANSbhqRAvNncTFd+ +rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezBc6eUWsuSZIKmAMFwoW4sKeFYV+xa +fJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lIpw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUdEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0G +CSqGSIb3DQEBDAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPso0UvFJ/1TCpl +Q3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJqM7F78PRreBrAwA0JrRUITWX +AdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuywxfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9G +slA9hGCZcbUztVdF5kJHdWoOsAgMrr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2Vkt +afcxBPTy+av5EzH4AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9q +TFsR0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuYo7Ey7Nmj +1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5dDTedk+SKlOxJTnbPP/l +PqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcEoji2jbDwN/zIIX8/syQbPYtuzE2wFg2W +HYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +TrustAsia Global Root CA G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEMBQAwWjELMAkG +A1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMM +G1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAeFw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEw +MTlaMFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMu +MSQwIgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNST1QY4Sxz +lZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqKAtCWHwDNBSHvBm3dIZwZ +Q0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/V +P68czH5GX6zfZBCK70bwkPAPLfSIC7Epqq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1Ag +dB4SQXMeJNnKziyhWTXAyB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm +9WAPzJMshH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gXzhqc +D0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAvkV34PmVACxmZySYg +WmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msTf9FkPz2ccEblooV7WIQn3MSAPmea +mseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jAuPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCF +TIcQcf+eQxuulXUtgQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj +7zjKsK5Xf/IhMBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4wM8zAQLpw6o1 +D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2XFNFV1pF1AWZLy4jVe5jaN/T +G3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNj +duMNhXJEIlU/HHzp/LgV6FL6qj6jITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstl +cHboCoWASzY9M/eVVHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys ++TIxxHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1onAX1daBli +2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d7XB4tmBZrOFdRWOPyN9y +aFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2NtjjgKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsAS +ZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV+Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFR +JQJ6+N1rZdVtTTDIZbpoFGWsJwt0ivKH +-----END CERTIFICATE----- + +TrustAsia Global Root CA G4 +=========================== +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMwWjELMAkGA1UE +BhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMMG1Ry +dXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0yMTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJa +MFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQw +IgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATxs8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbwLxYI+hW8 +m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJijYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mDpm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/ +pDHel4NZg6ZvccveMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AA +bbd+NvBNEU/zy4k6LHiRUKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xk +dUfFVZDj/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +CommScope Public Trust ECC Root-01 +================================== +-----BEGIN CERTIFICATE----- +MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMwTjELMAkGA1UE +BhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz +dCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNaFw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYT +AlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg +RUNDIFJvb3QtMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLx +eP0CflfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJEhRGnSjot +6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggqhkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2 +Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liW +pDVfG2XqYZpwI7UNo5uSUm9poIyNStDuiw7LR47QjRE= +-----END CERTIFICATE----- + +CommScope Public Trust ECC Root-02 +================================== +-----BEGIN CERTIFICATE----- +MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMwTjELMAkGA1UE +BhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz +dCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRaFw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYT +AlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg +RUNDIFJvb3QtMDIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/M +MDALj2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmUv4RDsNuE +SgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggqhkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9 +Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/nich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs7 +3u1Z/GtMMH9ZzkXpc2AVmkzw5l4lIhVtwodZ0LKOag== +-----END CERTIFICATE----- + +CommScope Public Trust RSA Root-01 +================================== +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQELBQAwTjELMAkG +A1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU +cnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNV +BAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1 +c3QgUlNBIFJvb3QtMDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45Ft +nYSkYZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslhsuitQDy6 +uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0alDrJLpA6lfO741GIDuZNq +ihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3OjWiE260f6GBfZumbCk6SP/F2krfxQapWs +vCQz0b2If4b19bJzKo98rwjyGpg/qYFlP8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/c +Zip8UlF1y5mO6D1cv547KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTif +BSeolz7pUcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/kQO9 +lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JOHg9O5j9ZpSPcPYeo +KFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkBEa801M/XrmLTBQe0MXXgDW1XT2mH ++VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6UCBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm4 +5P3luG0wDQYJKoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6 +NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQnmhUQo8mUuJM +3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+QgvfKNmwrZggvkN80V4aCRck +jXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2vtrV0KnahP/t1MJ+UXjulYPPLXAziDslg+Mkf +Foom3ecnf+slpoq9uC02EJqxWE2aaE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/W +NyVntHKLr4W96ioDj8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+ +o/E4Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0wlREQKC6/ +oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHnYfkUyq+Dj7+vsQpZXdxc +1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVocicCMb3SgazNNtQEo/a2tiRc7ppqEvOuM +6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw +-----END CERTIFICATE----- + +CommScope Public Trust RSA Root-02 +================================== +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQELBQAwTjELMAkG +A1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU +cnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNV +BAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1 +c3QgUlNBIFJvb3QtMDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3V +rCLENQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0kyI9p+Kx +7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1CrWDaSWqVcN3SAOLMV2MC +e5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxzhkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2W +Wy09X6GDRl224yW4fKcZgBzqZUPckXk2LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rp +M9kzXzehxfCrPfp4sOcsn/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIf +hs1w/tkuFT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5kQMr +eyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3wNemKfrb3vOTlycE +VS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6vwQcQeKwRoi9C8DfF8rhW3Q5iLc4t +Vn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7Gx +cJXvYXowDQYJKoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB +KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3+VGXu6TwYofF +1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbymeAPnCKfWxkxlSaRosTKCL4BWa +MS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3NyqpgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xd +gSGn2rtO/+YHqP65DSdsu3BaVXoT6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2O +HG1QAk8mGEPej1WFsQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+Nm +YWvtPjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2dlklyALKr +dVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670v64fG9PiO/yzcnMcmyiQ +iRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17Org3bhzjlP1v9mxnhMUF6cKojawHhRUzN +lM47ni3niAIi9G7oyOzWPPO5std3eqx7 +-----END CERTIFICATE----- + +Telekom Security TLS ECC Root 2020 +================================== +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQswCQYDVQQGEwJE +RTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBHbWJIMSswKQYDVQQDDCJUZWxl +a29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIwMB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIz +NTk1OVowYzELMAkGA1UEBhMCREUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkg +R21iSDErMCkGA1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqG +SM49AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/OtdKPD/M1 +2kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDPf8iAC8GXs7s1J8nCG6NC +MEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6fMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZ +Mo7k+5Dck2TOrbRBR2Diz6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdU +ga/sf+Rn27iQ7t0l +-----END CERTIFICATE----- + +Telekom Security TLS RSA Root 2023 +================================== +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQG +EwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBHbWJIMSswKQYDVQQDDCJU +ZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAyMDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMy +NzIzNTk1OVowYzELMAkGA1UEBhMCREUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJp +dHkgR21iSDErMCkGA1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9cUD/h3VC +KSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHVcp6R+SPWcHu79ZvB7JPP +GeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMAU6DksquDOFczJZSfvkgdmOGjup5czQRx +UX11eKvzWarE4GC+j4NSuHUaQTXtvPM6Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWo +l8hHD/BeEIvnHRz+sTugBTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9 +FIS3R/qy8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73Jco4v +zLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg8qKrBC7m8kwOFjQg +rIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8rFEz0ciD0cmfHdRHNCk+y7AO+oML +KFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7S +WWO/gLCMk3PLNaaZlSJhZQNg+y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUtqeXgj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQpGv7qHBFfLp+ +sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm9S3ul0A8Yute1hTWjOKWi0Fp +kzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErwM807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy +/SKE8YXJN3nptT+/XOR0so8RYgDdGGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4 +mZqTuXNnQkYRIer+CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtz +aL1txKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+w6jv/naa +oqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aKL4x35bcF7DvB7L6Gs4a8 +wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+ljX273CXE2whJdV/LItM3z7gLfEdxquVeE +HVlNjM7IDiPCtyaaEBRx/pOyiriA8A4QntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0 +o82bNSQ3+pCTE4FCxpgmdTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cmn_crt_authorities.csv b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cmn_crt_authorities.csv new file mode 100644 index 00000000..249ecf42 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/cmn_crt_authorities.csv @@ -0,0 +1,39 @@ +Owner,Common Name or Certificate Name +Amazon Trust Services,Amazon Root CA 1 +Amazon Trust Services,Amazon Root CA 2 +Amazon Trust Services,Amazon Root CA 3 +Amazon Trust Services,Amazon Root CA 4 +Amazon Trust Services,Starfield Services Root Certificate Authority - G2 +DigiCert,Baltimore CyberTrust Root +DigiCert,Cybertrust Global Root +DigiCert,DigiCert Assured ID Root CA +DigiCert,DigiCert Assured ID Root G2 +DigiCert,DigiCert Assured ID Root G3 +DigiCert,DigiCert Global Root CA +DigiCert,DigiCert Global Root G2 +DigiCert,DigiCert Global Root G3 +DigiCert,DigiCert High Assurance EV Root CA +DigiCert,DigiCert Trusted Root G4 +GlobalSign,GlobalSign ECC Root CA - R5 +GlobalSign,GlobalSign Root CA - R3 +GlobalSign,GlobalSign Root CA - R6 +GlobalSign,GlobalSign Root CA +GoDaddy,Go Daddy Class 2 CA +GoDaddy,Go Daddy Root Certificate Authority - G2 +GoDaddy,Starfield Class 2 CA +GoDaddy,Starfield Root Certificate Authority - G2 +Google Trust Services LLC (GTS),GlobalSign ECC Root CA - R4 +Google Trust Services LLC (GTS),GlobalSign Root CA - R2 +Google Trust Services LLC (GTS),GTS Root R1 +Google Trust Services LLC (GTS),GTS Root R2 +Google Trust Services LLC (GTS),GTS Root R3 +Google Trust Services LLC (GTS),GTS Root R4 +"IdenTrust Services, LLC",DST Root CA X3 +"IdenTrust Services, LLC",IdenTrust Commercial Root CA 1 +"IdenTrust Services, LLC",IdenTrust Public Sector Root CA 1 +Sectigo,Comodo AAA Services root +Sectigo,COMODO Certification Authority +Sectigo,COMODO ECC Certification Authority +Sectigo,COMODO RSA Certification Authority +Sectigo,USERTrust ECC Certification Authority +Sectigo,USERTrust RSA Certification Authority diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/gen_crt_bundle.py b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/gen_crt_bundle.py new file mode 100644 index 00000000..87e29e61 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/gen_crt_bundle.py @@ -0,0 +1,227 @@ +#!/usr/bin/env python +# +# ESP32 x509 certificate bundle generation utility +# +# Converts PEM and DER certificates to a custom bundle format which stores just the +# subject name and public key to reduce space +# +# The bundle will have the format: number of certificates; crt 1 subject name length; crt 1 public key length; +# crt 1 subject name; crt 1 public key; crt 2... +# +# Copyright 2018-2019 Espressif Systems (Shanghai) PTE LTD +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import with_statement + +import argparse +import csv +import os +import re +import struct +import sys +from io import open + +try: + from cryptography import x509 + from cryptography.hazmat.backends import default_backend + from cryptography.hazmat.primitives import serialization +except ImportError: + print('The cryptography package is not installed.' + 'Please refer to the Get Started section of the ESP-IDF Programming Guide for ' + 'setting up the required packages.') + raise + +ca_bundle_bin_file = 'x509_crt_bundle' + +quiet = False + + +def status(msg): + """ Print status message to stderr """ + if not quiet: + critical(msg) + + +def critical(msg): + """ Print critical message to stderr """ + sys.stderr.write('gen_crt_bundle.py: ') + sys.stderr.write(msg) + sys.stderr.write('\n') + + +class CertificateBundle: + def __init__(self): + self.certificates = [] + self.compressed_crts = [] + + if os.path.isfile(ca_bundle_bin_file): + os.remove(ca_bundle_bin_file) + + def add_from_path(self, crts_path): + + found = False + for file_path in os.listdir(crts_path): + found |= self.add_from_file(os.path.join(crts_path, file_path)) + + if found is False: + raise InputError('No valid x509 certificates found in %s' % crts_path) + + def add_from_file(self, file_path): + try: + if file_path.endswith('.pem'): + status('Parsing certificates from %s' % file_path) + with open(file_path, 'r', encoding='utf-8') as f: + crt_str = f.read() + self.add_from_pem(crt_str) + return True + + elif file_path.endswith('.der'): + status('Parsing certificates from %s' % file_path) + with open(file_path, 'rb') as f: + crt_str = f.read() + self.add_from_der(crt_str) + return True + + except ValueError: + critical('Invalid certificate in %s' % file_path) + raise InputError('Invalid certificate') + + return False + + def add_from_pem(self, crt_str): + """ A single PEM file may have multiple certificates """ + + crt = '' + count = 0 + start = False + + for strg in crt_str.splitlines(True): + if strg == '-----BEGIN CERTIFICATE-----\n' and start is False: + crt = '' + start = True + elif strg == '-----END CERTIFICATE-----\n' and start is True: + crt += strg + '\n' + start = False + self.certificates.append(x509.load_pem_x509_certificate(crt.encode(), default_backend())) + count += 1 + if start is True: + crt += strg + + if(count == 0): + raise InputError('No certificate found') + + status('Successfully added %d certificates' % count) + + def add_from_der(self, crt_str): + self.certificates.append(x509.load_der_x509_certificate(crt_str, default_backend())) + status('Successfully added 1 certificate') + + def create_bundle(self): + # Sort certificates in order to do binary search when looking up certificates + self.certificates = sorted(self.certificates, key=lambda cert: cert.subject.public_bytes(default_backend())) + + bundle = struct.pack('>H', len(self.certificates)) + + for crt in self.certificates: + """ Read the public key as DER format """ + pub_key = crt.public_key() + pub_key_der = pub_key.public_bytes(serialization.Encoding.DER, serialization.PublicFormat.SubjectPublicKeyInfo) + + """ Read the subject name as DER format """ + sub_name_der = crt.subject.public_bytes(default_backend()) + + name_len = len(sub_name_der) + key_len = len(pub_key_der) + len_data = struct.pack('>HH', name_len, key_len) + + bundle += len_data + bundle += sub_name_der + bundle += pub_key_der + + return bundle + + def add_with_filter(self, crts_path, filter_path): + + filter_set = set() + with open(filter_path, 'r', encoding='utf-8') as f: + csv_reader = csv.reader(f, delimiter=',') + + # Skip header + next(csv_reader) + for row in csv_reader: + filter_set.add(row[1]) + + status('Parsing certificates from %s' % crts_path) + crt_str = [] + with open(crts_path, 'r', encoding='utf-8') as f: + crt_str = f.read() + + # Split all certs into a list of (name, certificate string) tuples + pem_crts = re.findall(r'(^.+?)\n(=+\n[\s\S]+?END CERTIFICATE-----\n)', crt_str, re.MULTILINE) + + filtered_crts = '' + for name, crt in pem_crts: + if name in filter_set: + filtered_crts += crt + + self.add_from_pem(filtered_crts) + + +class InputError(RuntimeError): + def __init__(self, e): + super(InputError, self).__init__(e) + + +def main(): + global quiet + + parser = argparse.ArgumentParser(description='ESP-IDF x509 certificate bundle utility') + + parser.add_argument('--quiet', '-q', help="Don't print non-critical status messages to stderr", action='store_true') + parser.add_argument('--input', '-i', nargs='+', required=True, + help='Paths to the custom certificate folders or files to parse, parses all .pem or .der files') + parser.add_argument('--filter', '-f', help='Path to CSV-file where the second columns contains the name of the certificates \ + that should be included from cacrt_all.pem') + + args = parser.parse_args() + + quiet = args.quiet + + bundle = CertificateBundle() + + for path in args.input: + if os.path.isfile(path): + if os.path.basename(path) == 'cacrt_all.pem' and args.filter: + bundle.add_with_filter(path, args.filter) + else: + bundle.add_from_file(path) + elif os.path.isdir(path): + bundle.add_from_path(path) + else: + raise InputError('Invalid --input=%s, is neither file nor folder' % args.input) + + status('Successfully added %d certificates in total' % len(bundle.certificates)) + + crt_bundle = bundle.create_bundle() + + with open(ca_bundle_bin_file, 'wb') as f: + f.write(crt_bundle) + + +if __name__ == '__main__': + try: + main() + except InputError as e: + print(e) + sys.exit(2) diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/lib/README b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/lib/README new file mode 100644 index 00000000..6debab1e --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/platformio.ini b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/platformio.ini new file mode 100644 index 00000000..c4e94e4b --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/platformio.ini @@ -0,0 +1,25 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino +monitor_speed = 115200 +upload_speed = 921600 +build_flags = + -DCORE_DEBUG_LEVEL=5 +lib_deps = ../../../src + +extra_scripts = + pre:run_gen_script.py + +board_build.embed_txtfiles = + data/cert/x509_crt_bundle.bin diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/readme.md b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/readme.md new file mode 100644 index 00000000..ad9c19b2 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/readme.md @@ -0,0 +1,12 @@ +This is a PlatformIO project that uses a modified WiFiClientSecure library (in `lib`) to +implement proper SSL support using root certificates as discussed +[here](https://github.com/espressif/arduino-esp32/issues/3646#issuecomment-648292677) + +It is based on the work by [meltdonw03](https://github.com/meltdown03) in that thread, and the +[BasicHttpsClient example](https://github.com/espressif/arduino-esp32/blob/1.0.4/libraries/HTTPClient/examples/BasicHttpsClient/BasicHttpsClient.ino) from the arduino-esp32 project. + +Just copy `include/secrets.hpp.template` to `include/secrets.hpp` and fill in your WiFi details. +Then it should be pretty much ready to go. The local WiFiClientSecure library should take priority. +Debug is set to verbose, so you'll see a lot of noise, but there should also be this readme on success :) + +To get a current CA cert bundle download it from [curl's website](https://curl.se/docs/caextract.html). \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/run_gen_script.py b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/run_gen_script.py new file mode 100644 index 00000000..88505dbd --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/run_gen_script.py @@ -0,0 +1,6 @@ +Import("env") + +env.Execute("$PYTHONEXE -m pip install cryptography") +env.Execute("$PYTHONEXE gen_crt_bundle.py --input cacrt_all.pem") +env.Execute("mkdir -p data/cert") +env.Execute("mv -f x509_crt_bundle data/cert/x509_crt_bundle.bin") diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/src/main.cpp b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/src/main.cpp new file mode 100644 index 00000000..17656144 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp32_pio/WebSocketClientSSLBundle/src/main.cpp @@ -0,0 +1,127 @@ +/* + * main.cpp + * + * Created on: 15.06.2024 + * + */ + +#include +#include +#include + +#include + +extern const uint8_t rootca_crt_bundle_start[] asm( + "_binary_data_cert_x509_crt_bundle_bin_start"); + +WiFiMulti wifiMulti; +WebSocketsClient webSocket; + +#define USE_SERIAL Serial + +void setClock() { + configTime(0, 0, "pool.ntp.org", "time.nist.gov"); + + USE_SERIAL.print(F("Waiting for NTP time sync: ")); + time_t nowSecs = time(nullptr); + while(nowSecs < 8 * 3600 * 2) { + delay(500); + USE_SERIAL.print(F(".")); + yield(); + nowSecs = time(nullptr); + } + + USE_SERIAL.println(); + struct tm timeinfo; + gmtime_r(&nowSecs, &timeinfo); + USE_SERIAL.print(F("Current time: ")); + USE_SERIAL.print(asctime(&timeinfo)); +} + +void hexdump(const void * mem, uint32_t len, uint8_t cols = 16) { + const uint8_t * src = (const uint8_t *)mem; + USE_SERIAL.printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len); + for(uint32_t i = 0; i < len; i++) { + if(i % cols == 0) { + USE_SERIAL.printf("\n[0x%08X] 0x%08X: ", (ptrdiff_t)src, i); + } + USE_SERIAL.printf("%02X ", *src); + src++; + } + USE_SERIAL.printf("\n"); +} + +void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { + switch(type) { + case WStype_DISCONNECTED: + USE_SERIAL.printf("[WSc] Disconnected!\n"); + break; + case WStype_CONNECTED: + USE_SERIAL.printf("[WSc] Connected to url: %s\n", payload); + + // send message to server when Connected + webSocket.sendTXT("Connected"); + break; + case WStype_TEXT: + USE_SERIAL.printf("[WSc] get text: %s\n", payload); + + // send message to server + // webSocket.sendTXT("message here"); + break; + case WStype_BIN: + USE_SERIAL.printf("[WSc] get binary length: %u\n", length); + hexdump(payload, length); + + // send data to server + // webSocket.sendBIN(payload, length); + break; + case WStype_ERROR: + case WStype_FRAGMENT_TEXT_START: + case WStype_FRAGMENT_BIN_START: + case WStype_FRAGMENT: + case WStype_FRAGMENT_FIN: + break; + } +} + +void setup() { + USE_SERIAL.begin(115200); + + USE_SERIAL.setDebugOutput(true); + + USE_SERIAL.println(); + USE_SERIAL.println(); + USE_SERIAL.println(); + + for(uint8_t t = 4; t > 0; t--) { + USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t); + USE_SERIAL.flush(); + delay(1000); + } + + wifiMulti.addAP("SSID", "WIFI_PASSPHRASE"); + + // WiFi.disconnect(); + while(wifiMulti.run() != WL_CONNECTED) { + delay(100); + } + + setClock(); + + // server address, port and URL. This server can be flakey. + // Expected response: Request served by 0123456789abcdef + webSocket.beginSslWithBundle("echo.websocket.org", 443, "/", rootca_crt_bundle_start, ""); + + // event handler + webSocket.onEvent(webSocketEvent); + + // use HTTP Basic Authorization this is optional enable if needed + // webSocket.setAuthorization("user", "Password"); + + // try ever 5000 again if connection has failed + webSocket.setReconnectInterval(5000); +} + +void loop() { + webSocket.loop(); +} diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClient/WebSocketClient.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClient/WebSocketClient.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClient/WebSocketClient.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClient/WebSocketClient.ino diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/README.md b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/README.md new file mode 100644 index 00000000..496eef25 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/README.md @@ -0,0 +1,27 @@ +## Minimal example of WebsocketClientOTA and Python server + +Take this as small example, how achieve OTA update on ESP8266 and ESP32. + +Python server was wrote from train so take it only as bare example. +It's working, but it's not mean to run in production. + + +### Usage: + +Start server: +```bash +cd python_ota_server +python3 -m venv .venv +source .venv/bin/activate +pip3 install -r requirements.txt +python3 main.py +``` + +Flash ESP with example sketch and start it. + +Change version inside example sketch to higher and compile it and save it to bin file. + +Rename it to `mydevice-1.0.1-esp8266.bin` and place it inside new folder firmware (server create it). + +When the ESP connect to server, it check if version flashed is equal to fw in firmware folder. If higher FW version is present, +start the flash process. \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/WebSocketClientOTA.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/WebSocketClientOTA.ino new file mode 100644 index 00000000..3a988a58 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/WebSocketClientOTA.ino @@ -0,0 +1,264 @@ +/* + * WebSocketClientOTA.ino + * + * Created on: 25.10.2021 + * + */ + +#include +#include + +#if defined(ESP8266) + #include + #include + #include + #include + #include + + ESP8266WiFiMulti WiFiMulti; +#elif defined(ESP32) + #include + #include + #include "ESPmDNS.h" + #include + + WiFiMulti WiFiMulti; +#else + #error Unsupported device +#endif + +#include +#include + + +WebSocketsClient webSocket; + +#define USE_SERIAL Serial + +// Variables: +// Settable: +const char *version = "1.0.0"; +const char *name = "mydevice"; + +// Others: +#ifdef ESP8266 + const char *chip = "esp8266"; +#endif +#ifdef ESP32 + const char *chip = "esp32"; +#endif + +uint32_t maxSketchSpace = 0; +int SketchSize = 0; +bool ws_conn = false; + + +void greetings_(){ + StaticJsonDocument<200> doc; + doc["type"] = "greetings"; + doc["mac"] = WiFi.macAddress().c_str(); + doc["ip"] = WiFi.localIP().toString().c_str(); + doc["version"] = version; + doc["name"] = name; + doc["chip"] = chip; + + char data[200]; + serializeJson(doc, data); + webSocket.sendTXT(data); +} + +void register_(){ + StaticJsonDocument<200> doc; + doc["type"] = "register"; + doc["mac"] = WiFi.macAddress().c_str(); + + char data[200]; + serializeJson(doc, data); + webSocket.sendTXT(data); + ws_conn = true; +} + +typedef void (*CALLBACK_FUNCTION)(JsonDocument &msg); + +typedef struct { + char type[50]; + CALLBACK_FUNCTION func; +} RESPONSES_STRUCT; + +void OTA_RESPONSES(JsonDocument &msg){ + USE_SERIAL.print(F("[WSc] OTA mode: ")); + String val = msg["value"]; + if(val == "go") { + USE_SERIAL.print(F("go\n")); + SketchSize = int(msg["size"]); + maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; + USE_SERIAL.printf("[WSc] Max sketch size: %u\n", maxSketchSpace); + USE_SERIAL.printf("[WSc] Sketch size: %d\n", SketchSize); + USE_SERIAL.setDebugOutput(true); + if (!Update.begin(maxSketchSpace)) { //start with max available size + Update.printError(Serial); + ESP.restart(); + } + } else if (val == "ok") { + USE_SERIAL.print(F("OK\n")); + register_(); + } else { + USE_SERIAL.print(F("unknown value : ")); + USE_SERIAL.print(val); + USE_SERIAL.print(F("\n")); + } +} + +void STA_RESPONSES(JsonDocument &msg){ + // Do something with message +} + +// Count of responses handled by RESPONSES_STRUCT +// increase increase if another response handler is added +const int nrOfResponses = 2; + +RESPONSES_STRUCT responses[nrOfResponses] = { + {"ota", OTA_RESPONSES}, + {"state", STA_RESPONSES}, +}; + +void text(uint8_t * payload, size_t length){ + // Convert message to something usable + char msgch[length]; + for (unsigned int i = 0; i < length; i++) + { + USE_SERIAL.print((char)payload[i]); + msgch[i] = ((char)payload[i]); + } + msgch[length] = '\0'; + + // Parse Json + StaticJsonDocument<200> doc_in; + DeserializationError error = deserializeJson(doc_in, msgch); + + if (error) { + USE_SERIAL.print(F("deserializeJson() failed: ")); + USE_SERIAL.println(error.c_str()); + return; + } + + // Handle each TYPE of message + int b = 0; + + String t = doc_in["type"]; + for( b=0 ; b 0; t--) { + USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t); + USE_SERIAL.flush(); + delay(1000); + } + + WiFiMulti.addAP("SSID", "PASS"); + + //WiFi.disconnect(); + while(WiFiMulti.run() != WL_CONNECTED) { + delay(100); + } + + // server address, port and URL + webSocket.begin("10.0.1.5", 8081, "/"); + + // event handler + webSocket.onEvent(webSocketEvent); + + // use HTTP Basic Authorization this is optional remove if not needed + // webSocket.setAuthorization("USER", "PASS"); + + // try ever 5000 again if connection has failed + webSocket.setReconnectInterval(5000); + + // start heartbeat (optional) + // ping server every 15000 ms + // expect pong from server within 3000 ms + // consider connection disconnected if pong is not received 2 times + webSocket.enableHeartbeat(15000, 3000, 2); + +} + +void loop() { + webSocket.loop(); +} diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/main.py b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/main.py new file mode 100644 index 00000000..92acc95c --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/main.py @@ -0,0 +1,235 @@ +"""Minimal example of Python websocket server +handling OTA updates for ESP32 amd ESP8266 + +Check and upload of firmware works. +Register and state function are jus for example. +""" +# pylint: disable=W0703,E1101 +import asyncio +import copy +import json +import logging +import subprocess +import threading +import time +from os import listdir +from os.path import join as join_pth +from pathlib import Path + +import websockets +from packaging import version + +# Logger settings +logging.basicConfig(filename="ws_server.log") +Logger = logging.getLogger('WS-OTA') +Logger.addHandler(logging.StreamHandler()) +Logger.setLevel(logging.INFO) + +# Path to directory with FW +fw_path = join_pth(Path().absolute(), "firmware") + + +def create_path(path: str) -> None: + """Check if path exist or create it""" + Path(path).mkdir(parents=True, exist_ok=True) + + +def shell(command): + """Handle execution of shell commands""" + with subprocess.Popen(command, shell=True, + stdout=subprocess.PIPE, + universal_newlines=True + ) as process: + for stdout_line in iter(process.stdout.readline, ""): + Logger.debug(stdout_line) + process.stdout.close() + return_code = process.wait() + Logger.debug("Shell returned: %s", return_code) + + return process.returncode + return None + + +async def binary_send(websocket, fw_file): + """Read firmware file, divide it to chunks and send them""" + with open(fw_file, "rb") as binaryfile: + + while True: + chunk = binaryfile.read(4096) + if not chunk: + break + try: + await websocket.send(chunk) + except Exception as exception: + Logger.exception(exception) + return False + asyncio.sleep(0.2) + + +def version_checker(name, vdev, vapp): + """Parse and compare FW version""" + + if version.parse(vdev) < version.parse(vapp): + Logger.info("Client(%s) version %s is smaller than %s: Go for update", name, vdev, vapp) + return True + Logger.info("Client(%s) version %s is greater or equal to %s: Not updating", name, vdev, vapp) + return False + + +class WsOtaHandler (threading.Thread): + """Thread handling ota update + + Running ota directly from message would kill WS + as message bus would timeout. + """ + def __init__(self, name, message, websocket): + threading.Thread.__init__(self, daemon=True) + self.name = name + self.msg = message + self.websocket = websocket + + def run(self, ): + try: + asyncio.run(self.start_()) + except Exception as exception: + Logger.exception(exception) + finally: + pass + + async def start_(self): + """Start _ota se asyncio future""" + msg_task = asyncio.ensure_future( + self._ota()) + + done, pending = await asyncio.wait( + [msg_task], + return_when=asyncio.FIRST_COMPLETED, + ) + Logger.info("WS Ota Handler done: %s", done) + for task in pending: + task.cancel() + + async def _ota(self): + """Check for new fw and update or pass""" + device_name = self.msg['name'] + device_chip = self.msg['chip'] + device_version = self.msg['version'] + fw_version = '' + fw_name = '' + fw_device = '' + + for filename in listdir(fw_path): + fw_info = filename.split("-") + fw_device = fw_info[0] + if fw_device == device_name: + fw_version = fw_info[1] + fw_name = filename + break + + if not fw_version: + Logger.info("Client(%s): No fw found!", device_name) + msg = '{"type": "ota", "value":"ok"}' + await self.websocket.send(msg) + return + + if not version_checker(device_name, device_version, fw_version): + return + + fw_file = join_pth(fw_path, fw_name) + if device_chip == 'esp8266' and not fw_file.endswith('.gz'): + # We can compress fw to make it smaller for upload + fw_cpress = fw_file + fw_file = fw_cpress + ".gz" + cpress = f"gzip -9 {fw_cpress}" + cstate = shell(cpress) + if cstate: + Logger.error("Cannot compress firmware: %s", fw_name) + return + + # Get size of fw + size = Path(fw_file).stat().st_size + + # Request ota mode + msg = '{"type": "ota", "value":"go", "size":' + str(size) + '}' + await self.websocket.send(msg) + + # send file by chunks trough websocket + await binary_send(self.websocket, fw_file) + + +async def _register(websocket, message): + mac = message.get('mac') + name = message.get('name') + Logger.info("Client(%s) mac: %s", name, mac) + # Some code + + response = {'type': 'registry', 'state': 'ok'} + await websocket.send(json.dumps(response)) + + +async def _state(websocket, message): + mac = message.get('mac') + name = message.get('name') + Logger.info("Client(%s) mac: %s", name, mac) + # Some code + + response = {'type': 'state', 'state': 'ok'} + await websocket.send(json.dumps(response)) + + +async def _unhandled(websocket, msg): + Logger.info("Unhandled message from device: %s", str(msg)) + response = {'type': 'response', 'state': 'nok'} + await websocket.send(json.dumps(response)) + + +async def _greetings(websocket, message): + WsOtaHandler('thread_ota', copy.deepcopy(message), websocket).start() + + +async def message_received(websocket, message) -> None: + """Handle incoming messages + + Check if message contain json and run waned function + """ + switcher = {"greetings": _greetings, + "register": _register, + "state": _state + } + + if message[0:1] == "{": + try: + msg_json = json.loads(message) + except Exception as exception: + Logger.error(exception) + return + + type_ = msg_json.get('type') + name = msg_json.get('name') + func = switcher.get(type_, _unhandled) + Logger.debug("Client(%s)said: %s", name, type_) + + try: + await func(websocket, msg_json) + except Exception as exception: + Logger.error(exception) + + +# pylint: disable=W0613 +async def ws_server(websocket, path) -> None: + """Run in cycle and wait for new messages""" + async for message in websocket: + await message_received(websocket, message) + + +async def main(): + """Server starter + + Normal user can bind only port numbers greater than 1024 + """ + async with websockets.serve(ws_server, "10.0.1.5", 8081): + await asyncio.Future() # run forever + + +create_path(fw_path) +asyncio.run(main()) diff --git a/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/requirements.txt b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/requirements.txt new file mode 100644 index 00000000..4fc2553f --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientOTA/python_ota_server/requirements.txt @@ -0,0 +1,2 @@ +packaging +websockets \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSSL/WebSocketClientSSL.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSSL/WebSocketClientSSL.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSSL/WebSocketClientSSL.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSSL/WebSocketClientSSL.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSSLWithCA/WebSocketClientSSLWithCA.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSSLWithCA/WebSocketClientSSLWithCA.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSSLWithCA/WebSocketClientSSLWithCA.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSSLWithCA/WebSocketClientSSLWithCA.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSocketIO/WebSocketClientSocketIO.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSocketIO/WebSocketClientSocketIO.ino similarity index 97% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSocketIO/WebSocketClientSocketIO.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSocketIO/WebSocketClientSocketIO.ino index b0568f41..5ceacea4 100644 --- a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSocketIO/WebSocketClientSocketIO.ino +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSocketIO/WebSocketClientSocketIO.ino @@ -88,7 +88,7 @@ void setup() { USE_SERIAL.printf("[SETUP] WiFi Connected %s\n", ip.c_str()); // server address, port and URL - socketIO.begin("10.11.100.100", 8880); + socketIO.begin("10.11.100.100", 8880, "/socket.io/?EIO=4"); // event handler socketIO.onEvent(socketIOEvent); @@ -106,7 +106,7 @@ void loop() { // creat JSON message for Socket.IO (event) DynamicJsonDocument doc(1024); JsonArray array = doc.to(); - + // add evnet name // Hint: socket.on('event_name', .... array.add("event_name"); @@ -119,7 +119,7 @@ void loop() { String output; serializeJson(doc, output); - // Send event + // Send event socketIO.sendEVENT(output); // Print JSON for debugging diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino similarity index 96% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino index ab9ff684..3e4f87e1 100644 --- a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino +++ b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientSocketIOack/WebSocketClientSocketIOack.ino @@ -49,7 +49,7 @@ void socketIOEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) USE_SERIAL.println(error.c_str()); return; } - + String eventName = doc[0]; USE_SERIAL.printf("[IOc] event name: %s\n", eventName.c_str()); @@ -58,7 +58,7 @@ void socketIOEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) // creat JSON message for Socket.IO (ack) DynamicJsonDocument docOut(1024); JsonArray array = docOut.to(); - + // add payload (parameters) for the ack (callback function) JsonObject param1 = array.createNestedObject(); param1["now"] = millis(); @@ -68,7 +68,7 @@ void socketIOEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) output += id; serializeJson(docOut, output); - // Send event + // Send event socketIO.send(sIOtype_ACK, output); } } @@ -125,7 +125,7 @@ void setup() { USE_SERIAL.printf("[SETUP] WiFi Connected %s\n", ip.c_str()); // server address, port and URL - socketIO.begin("10.11.100.100", 8880); + socketIO.begin("10.11.100.100", 8880, "/socket.io/?EIO=4"); // event handler socketIO.onEvent(socketIOEvent); @@ -143,7 +143,7 @@ void loop() { // creat JSON message for Socket.IO (event) DynamicJsonDocument doc(1024); JsonArray array = doc.to(); - + // add evnet name // Hint: socket.on('event_name', .... array.add("event_name"); @@ -156,7 +156,7 @@ void loop() { String output; serializeJson(doc, output); - // Send event + // Send event socketIO.sendEVENT(output); // Print JSON for debugging diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientStomp/WebSocketClientStomp.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientStomp/WebSocketClientStomp.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientStomp/WebSocketClientStomp.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientStomp/WebSocketClientStomp.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientStompOverSockJs/WebSocketClientStompOverSockJs.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientStompOverSockJs/WebSocketClientStompOverSockJs.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketClientStompOverSockJs/WebSocketClientStompOverSockJs.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketClientStompOverSockJs/WebSocketClientStompOverSockJs.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServer/WebSocketServer.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServer/WebSocketServer.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServer/WebSocketServer.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServer/WebSocketServer.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerAllFunctionsDemo/WebSocketServerAllFunctionsDemo.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerAllFunctionsDemo/WebSocketServerAllFunctionsDemo.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerAllFunctionsDemo/WebSocketServerAllFunctionsDemo.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerAllFunctionsDemo/WebSocketServerAllFunctionsDemo.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerFragmentation/WebSocketServerFragmentation.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerFragmentation/WebSocketServerFragmentation.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerFragmentation/WebSocketServerFragmentation.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerFragmentation/WebSocketServerFragmentation.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHooked/WebSocketServerHooked.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHooked/WebSocketServerHooked.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHooked/WebSocketServerHooked.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHooked/WebSocketServerHooked.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHooked/emu b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHooked/emu similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHooked/emu rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHooked/emu diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHooked/ws-testclient.py b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHooked/ws-testclient.py similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHooked/ws-testclient.py rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHooked/ws-testclient.py diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHttpHeaderValidation/WebSocketServerHttpHeaderValidation.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHttpHeaderValidation/WebSocketServerHttpHeaderValidation.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServerHttpHeaderValidation/WebSocketServerHttpHeaderValidation.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServerHttpHeaderValidation/WebSocketServerHttpHeaderValidation.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServer_LEDcontrol/WebSocketServer_LEDcontrol.ino b/libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServer_LEDcontrol/WebSocketServer_LEDcontrol.ino similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/esp8266/WebSocketServer_LEDcontrol/WebSocketServer_LEDcontrol.ino rename to libraries/arduinoWebSockets-2.5.2/examples/esp8266_pico/WebSocketServer_LEDcontrol/WebSocketServer_LEDcontrol.ino diff --git a/libraries/arduinoWebSockets-2.3.6/examples/particle/ParticleWebSocketClient/application.cpp b/libraries/arduinoWebSockets-2.5.2/examples/particle/ParticleWebSocketClient/application.cpp similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/examples/particle/ParticleWebSocketClient/application.cpp rename to libraries/arduinoWebSockets-2.5.2/examples/particle/ParticleWebSocketClient/application.cpp diff --git a/libraries/arduinoWebSockets-2.3.6/library.json b/libraries/arduinoWebSockets-2.5.2/library.json similarity index 84% rename from libraries/arduinoWebSockets-2.3.6/library.json rename to libraries/arduinoWebSockets-2.5.2/library.json index 2f7aec6a..6869b8c0 100644 --- a/libraries/arduinoWebSockets-2.3.6/library.json +++ b/libraries/arduinoWebSockets-2.5.2/library.json @@ -16,10 +16,10 @@ "keywords": "wifi, http, web, server, client, websocket", "license": "LGPL-2.1", "name": "WebSockets", - "platforms": "atmelavr, espressif8266, espressif32", + "platforms": "atmelavr, espressif8266, espressif32, raspberrypi, renesas_uno", "repository": { "type": "git", "url": "https://github.com/Links2004/arduinoWebSockets.git" }, - "version": "2.3.6" + "version": "2.5.2" } \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.3.6/library.properties b/libraries/arduinoWebSockets-2.5.2/library.properties similarity index 94% rename from libraries/arduinoWebSockets-2.3.6/library.properties rename to libraries/arduinoWebSockets-2.5.2/library.properties index b9899d0c..ceb4a3f4 100644 --- a/libraries/arduinoWebSockets-2.3.6/library.properties +++ b/libraries/arduinoWebSockets-2.5.2/library.properties @@ -1,5 +1,5 @@ name=WebSockets -version=2.3.6 +version=2.5.2 author=Markus Sattler maintainer=Markus Sattler sentence=WebSockets for Arduino (Server + Client) diff --git a/libraries/arduinoWebSockets-2.3.6/src/SocketIOclient.cpp b/libraries/arduinoWebSockets-2.5.2/src/SocketIOclient.cpp similarity index 85% rename from libraries/arduinoWebSockets-2.3.6/src/SocketIOclient.cpp rename to libraries/arduinoWebSockets-2.5.2/src/SocketIOclient.cpp index a06efa28..1533316f 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/SocketIOclient.cpp +++ b/libraries/arduinoWebSockets-2.5.2/src/SocketIOclient.cpp @@ -15,39 +15,39 @@ SocketIOclient::SocketIOclient() { SocketIOclient::~SocketIOclient() { } -void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol) { +void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIO(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::begin(String host, uint16_t port, String url, String protocol) { +void SocketIOclient::begin(String host, uint16_t port, String url, String protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIO(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(HAS_SSL) -void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol) { +void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol) { +void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(SSL_BARESSL) -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } @@ -85,6 +85,18 @@ bool SocketIOclient::isConnected(void) { return WebSocketsClient::isConnected(); } +void SocketIOclient::setExtraHeaders(const char * extraHeaders) { + return WebSocketsClient::setExtraHeaders(extraHeaders); +} + +void SocketIOclient::setReconnectInterval(unsigned long time) { + return WebSocketsClient::setReconnectInterval(time); +} + +void SocketIOclient::disconnect(void) { + WebSocketsClient::disconnect(); +} + /** * send text data to client * @param num uint8_t client id diff --git a/libraries/arduinoWebSockets-2.3.6/src/SocketIOclient.h b/libraries/arduinoWebSockets-2.5.2/src/SocketIOclient.h similarity index 79% rename from libraries/arduinoWebSockets-2.3.6/src/SocketIOclient.h rename to libraries/arduinoWebSockets-2.5.2/src/SocketIOclient.h index 6deb168b..e33a6fd6 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/SocketIOclient.h +++ b/libraries/arduinoWebSockets-2.5.2/src/SocketIOclient.h @@ -9,6 +9,7 @@ #define SOCKETIOCLIENT_H_ #include "WebSockets.h" +#include "WebSocketsClient.h" #define EIO_HEARTBEAT_INTERVAL 20000 @@ -46,15 +47,15 @@ class SocketIOclient : protected WebSocketsClient { SocketIOclient(void); virtual ~SocketIOclient(void); - void begin(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino"); - void begin(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino"); + void begin(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); + void begin(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); #ifdef HAS_SSL - void beginSSL(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino"); - void beginSSL(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino"); + void beginSSL(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); + void beginSSL(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); #ifndef SSL_AXTLS - void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * CA_cert = NULL, const char * protocol = "arduino"); - void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", BearSSL::X509List * CA_cert = NULL, const char * protocol = "arduino"); + void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * CA_cert = NULL, const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); + void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", BearSSL::X509List * CA_cert = NULL, const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); void setSSLClientCertKey(const char * clientCert = NULL, const char * clientPrivateKey = NULL); void setSSLClientCertKey(BearSSL::X509List * clientCert = NULL, BearSSL::PrivateKey * clientPrivateKey = NULL); #endif @@ -62,6 +63,7 @@ class SocketIOclient : protected WebSocketsClient { bool isConnected(void); void onEvent(SocketIOclientEvent cbEvent); + void disconnect(void); bool sendEVENT(uint8_t * payload, size_t length = 0, bool headerToPayload = false); bool sendEVENT(const uint8_t * payload, size_t length = 0); @@ -75,6 +77,9 @@ class SocketIOclient : protected WebSocketsClient { bool send(socketIOmessageType_t type, const char * payload, size_t length = 0); bool send(socketIOmessageType_t type, String & payload); + void setExtraHeaders(const char * extraHeaders = NULL); + void setReconnectInterval(unsigned long time); + void loop(void); void configureEIOping(bool disableHeartbeat = false); diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp b/libraries/arduinoWebSockets-2.5.2/src/WebSockets.cpp similarity index 86% rename from libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp rename to libraries/arduinoWebSockets-2.5.2/src/WebSockets.cpp index 132e0576..d4f11cbc 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSockets.cpp +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSockets.cpp @@ -42,7 +42,11 @@ extern "C" { #include #if ESP_IDF_VERSION_MAJOR >= 4 -#include +#if(ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(1, 0, 6)) +#include "sha/sha_parallel_engine.h" +#else +#include +#endif #else #include #endif @@ -62,8 +66,7 @@ extern "C" { * @param reason ptr to the disconnect reason message * @param reasonLen length of the disconnect reason message */ -void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * reason, size_t reasonLen) -{ +void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * reason, size_t reasonLen) { DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] clientDisconnect code: %u\n", client->num, code); if(client->status == WSC_CONNECTED && code) { if(reason) { @@ -87,8 +90,7 @@ void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * rea * @param maskkey uint8_t[4] key used for payload * @param fin bool can be used to send data in more then one frame (set fin on the last frame) */ -uint8_t WebSockets::createHeader(uint8_t * headerPtr, WSopcode_t opcode, size_t length, bool mask, uint8_t maskKey[4], bool fin) -{ +uint8_t WebSockets::createHeader(uint8_t * headerPtr, WSopcode_t opcode, size_t length, bool mask, uint8_t maskKey[4], bool fin) { uint8_t headerSize; // calculate header Size if(length < 126) { @@ -172,8 +174,7 @@ uint8_t WebSockets::createHeader(uint8_t * headerPtr, WSopcode_t opcode, size_t * @param fin bool can be used to send data in more then one frame (set fin on the last frame) * @return true if ok */ -bool WebSockets::sendFrameHeader(WSclient_t * client, WSopcode_t opcode, size_t length, bool fin) -{ +bool WebSockets::sendFrameHeader(WSclient_t * client, WSopcode_t opcode, size_t length, bool fin) { uint8_t maskKey[4] = { 0x00, 0x00, 0x00, 0x00 }; uint8_t buffer[WEBSOCKETS_MAX_HEADER_SIZE] = { 0 }; @@ -196,8 +197,7 @@ bool WebSockets::sendFrameHeader(WSclient_t * client, WSopcode_t opcode, size_t * @param headerToPayload bool set true if the payload has reserved 14 Byte at the beginning to dynamically add the Header (payload neet to be in RAM!) * @return true if ok */ -bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool fin, bool headerToPayload) -{ +bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool fin, bool headerToPayload) { if(client->tcp && !client->tcp->connected()) { DEBUG_WEBSOCKETS("[WS][%d][sendFrame] not Connected!?\n", client->num); return false; @@ -324,8 +324,7 @@ bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * pay * callen when HTTP header is done * @param client WSclient_t * ptr to the client struct */ -void WebSockets::headerDone(WSclient_t * client) -{ +void WebSockets::headerDone(WSclient_t * client) { client->status = WSC_CONNECTED; client->cWsRXsize = 0; DEBUG_WEBSOCKETS("[WS][%d][headerDone] Header Handling Done.\n", client->num); @@ -339,8 +338,7 @@ void WebSockets::headerDone(WSclient_t * client) * handle the WebSocket stream * @param client WSclient_t * ptr to the client struct */ -void WebSockets::handleWebsocket(WSclient_t * client) -{ +void WebSockets::handleWebsocket(WSclient_t * client) { if(client->cWsRXsize == 0) { handleWebsocketCb(client); } @@ -351,8 +349,7 @@ void WebSockets::handleWebsocket(WSclient_t * client) * @param client * @param size */ -bool WebSockets::handleWebsocketWaitFor(WSclient_t * client, size_t size) -{ +bool WebSockets::handleWebsocketWaitFor(WSclient_t * client, size_t size) { if(!client->tcp || !client->tcp->connected()) { return false; } @@ -379,12 +376,11 @@ bool WebSockets::handleWebsocketWaitFor(WSclient_t * client, size_t size) server->clientDisconnect(client, 1002); } }, - this, size, std::placeholders::_1, std::placeholders::_2)); + this, size, std::placeholders::_1, std::placeholders::_2)); return false; } -void WebSockets::handleWebsocketCb(WSclient_t * client) -{ +void WebSockets::handleWebsocketCb(WSclient_t * client) { if(!client->tcp || !client->tcp->connected()) { return; } @@ -469,15 +465,14 @@ void WebSockets::handleWebsocketCb(WSclient_t * client) } } -void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t * payload) -{ +void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t * payload) { WSMessageHeader_t * header = &client->cWsHeaderDecode; if(ok) { if(header->payloadLen > 0) { payload[header->payloadLen] = 0x00; if(header->mask) { - //decode XOR + // decode XOR for(size_t i = 0; i < header->payloadLen; i++) { payload[i] = (payload[i] ^ header->maskKey[i % 4]); } @@ -485,44 +480,43 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t } switch(header->opCode) { - case WSop_text: - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] text: %s\n", client->num, payload); - // no break here! - case WSop_binary: - case WSop_continuation: - messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); - break; - case WSop_ping: - // send pong back - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] ping received (%s)\n", client->num, payload ? (const char *)payload : ""); - sendFrame(client, WSop_pong, payload, header->payloadLen); - messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); - break; - case WSop_pong: - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get pong (%s)\n", client->num, payload ? (const char *)payload : ""); - client->pongReceived = true; - messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); - break; - case WSop_close: { + case WSop_text: + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] text: %s\n", client->num, payload); + // fallthrough + case WSop_binary: + case WSop_continuation: + messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); + break; + case WSop_ping: + // send pong back + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] ping received (%s)\n", client->num, payload ? (const char *)payload : ""); + sendFrame(client, WSop_pong, payload, header->payloadLen); + messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); + break; + case WSop_pong: + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get pong (%s)\n", client->num, payload ? (const char *)payload : ""); + client->pongReceived = true; + messageReceived(client, header->opCode, payload, header->payloadLen, header->fin); + break; + case WSop_close: { #ifndef NODEBUG_WEBSOCKETS - uint16_t reasonCode = 1000; - if(header->payloadLen >= 2) { - reasonCode = payload[0] << 8 | payload[1]; - } + uint16_t reasonCode = 1000; + if(header->payloadLen >= 2) { + reasonCode = payload[0] << 8 | payload[1]; + } #endif - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get ask for close. Code: %d\n", client->num, reasonCode); - if(header->payloadLen > 2) { - DEBUG_WEBSOCKETS(" (%s)\n", (payload + 2)); - } else { - DEBUG_WEBSOCKETS("\n"); - } - clientDisconnect(client, 1000); - } - break; - default: - DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] got unknown opcode: %d\n", client->num, header->opCode); - clientDisconnect(client, 1002); - break; + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get ask for close. Code: %d\n", client->num, reasonCode); + if(header->payloadLen > 2) { + DEBUG_WEBSOCKETS(" (%s)\n", (payload + 2)); + } else { + DEBUG_WEBSOCKETS("\n"); + } + clientDisconnect(client, 1000); + } break; + default: + DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] got unknown opcode: %d\n", client->num, header->opCode); + clientDisconnect(client, 1002); + break; } if(payload) { @@ -532,7 +526,7 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t // reset input client->cWsRXsize = 0; #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) - //register callback for next message + // register callback for next message handleWebsocketWaitFor(client, 2); #endif @@ -548,8 +542,7 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t * @param clientKey String * @return String Accept Key */ -String WebSockets::acceptKey(String & clientKey) -{ +String WebSockets::acceptKey(String & clientKey) { uint8_t sha1HashBin[20] = { 0 }; #ifdef ESP8266 sha1(clientKey + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", &sha1HashBin[0]); @@ -576,9 +569,9 @@ String WebSockets::acceptKey(String & clientKey) * @param length size_t * @return base64 encoded String */ -String WebSockets::base64_encode(uint8_t * data, size_t length) -{ +String WebSockets::base64_encode(uint8_t * data, size_t length) { size_t size = ((length * 1.6f) + 1); + size = std::max(size, (size_t)5); // minimum buffer size char * buffer = (char *)malloc(size); if(buffer) { base64_encodestate _state; @@ -600,8 +593,7 @@ String WebSockets::base64_encode(uint8_t * data, size_t length) * @param n size_t byte count * @return true if ok */ -bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWaitCb cb) -{ +bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWaitCb cb) { #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) if(!client->tcp || !client->tcp->connected()) { return false; @@ -612,7 +604,7 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait cb(client, ok); } }, - client, std::placeholders::_1, cb)); + client, std::placeholders::_1, cb)); #else unsigned long t = millis(); @@ -653,9 +645,9 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait t = millis(); out += len; n -= len; - //DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n); + // DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n); } else { - //DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n); + // DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n); } if(n > 0) { WEBSOCKETS_YIELD(); @@ -676,14 +668,11 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait * @param n size_t byte count * @return bytes send */ -size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) -{ - if(out == NULL) { +size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) { + if(out == NULL) return 0; - } - if(client == NULL) { + if(client == NULL) return 0; - } unsigned long t = millis(); size_t len = 0; size_t total = 0; @@ -710,7 +699,7 @@ size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) out += len; n -= len; total += len; - //DEBUG_WEBSOCKETS("write %d left %d!\n", len, n); + // DEBUG_WEBSOCKETS("write %d left %d!\n", len, n); } else { DEBUG_WEBSOCKETS("WS write %d failed left %d!\n", len, n); } @@ -722,14 +711,11 @@ size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) return total; } -size_t WebSockets::write(WSclient_t * client, const char * out) -{ - if(client == NULL) { +size_t WebSockets::write(WSclient_t * client, const char * out) { + if(client == NULL) return 0; - } - if(out == NULL) { + if(out == NULL) return 0; - } return write(client, (uint8_t *)out, strlen(out)); } @@ -740,11 +726,9 @@ size_t WebSockets::write(WSclient_t * client, const char * out) * @param pongTimeout uint32_t millis after which pong should timout if not received * @param disconnectTimeoutCount uint8_t how many timeouts before disconnect, 0=> do not disconnect */ -void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) -{ - if(client == NULL) { +void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { + if(client == NULL) return; - } client->pingInterval = pingInterval; client->pongTimeout = pongTimeout; client->disconnectTimeoutCount = disconnectTimeoutCount; @@ -755,8 +739,7 @@ void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uin * handle ping/pong heartbeat timeout process * @param client WSclient_t * */ -void WebSockets::handleHBTimeout(WSclient_t * client) -{ +void WebSockets::handleHBTimeout(WSclient_t * client) { if(client->pingInterval) { // if heartbeat is enabled uint32_t pi = millis() - client->lastPing; @@ -767,7 +750,7 @@ void WebSockets::handleHBTimeout(WSclient_t * client) client->pongTimeoutCount++; client->lastPing = millis() - client->pingInterval - 500; // force ping on the next run - DEBUG_WEBSOCKETS("[HBtimeout] pong TIMEOUT! lp=%d millis=%d pi=%d count=%d\n", client->lastPing, millis(), pi, client->pongTimeoutCount); + DEBUG_WEBSOCKETS("[HBtimeout] pong TIMEOUT! lp=%d millis=%lu pi=%d count=%d\n", client->lastPing, millis(), pi, client->pongTimeoutCount); if(client->disconnectTimeoutCount && client->pongTimeoutCount >= client->disconnectTimeoutCount) { DEBUG_WEBSOCKETS("[HBtimeout] count=%d, DISCONNECTING\n", client->pongTimeoutCount); diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSockets.h b/libraries/arduinoWebSockets-2.5.2/src/WebSockets.h similarity index 88% rename from libraries/arduinoWebSockets-2.3.6/src/WebSockets.h rename to libraries/arduinoWebSockets-2.5.2/src/WebSockets.h index db16b0a7..20a6ab5b 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSockets.h +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSockets.h @@ -50,7 +50,7 @@ DEBUG_ESP_PORT.flush(); \ } #else -//#define DEBUG_WEBSOCKETS(...) os_printf( __VA_ARGS__ ) +// #define DEBUG_WEBSOCKETS(...) os_printf( __VA_ARGS__ ) #endif #endif @@ -67,7 +67,7 @@ #define WEBSOCKETS_USE_BIG_MEM #define GET_FREE_HEAP ESP.getFreeHeap() // moves all Header strings to Flash (~300 Byte) -//#define WEBSOCKETS_SAVE_RAM +// #define WEBSOCKETS_SAVE_RAM #if defined(ESP8266) #define WEBSOCKETS_YIELD() delay(0) @@ -84,9 +84,24 @@ #define GET_FREE_HEAP System.freeMemory() #define WEBSOCKETS_YIELD() #define WEBSOCKETS_YIELD_MORE() + +#elif defined(ARDUINO_ARCH_RP2040) + +#define WEBSOCKETS_MAX_DATA_SIZE (15 * 1024) +#define WEBSOCKETS_USE_BIG_MEM +#define GET_FREE_HEAP rp2040.getFreeHeap() +#define WEBSOCKETS_YIELD() yield() +#define WEBSOCKETS_YIELD_MORE() delay(1) + +#elif defined(ARDUINO_UNOWIFIR4) + +#define WEBSOCKETS_MAX_DATA_SIZE (15 * 1024) +#define WEBSOCKETS_YIELD() yield() +#define WEBSOCKETS_YIELD_MORE() delay(1) + #else -//atmega328p has only 2KB ram! +// atmega328p has only 2KB ram! #define WEBSOCKETS_MAX_DATA_SIZE (1024) // moves all Header strings to Flash #define WEBSOCKETS_SAVE_RAM @@ -94,7 +109,9 @@ #define WEBSOCKETS_YIELD_MORE() #endif +#ifndef WEBSOCKETS_TCP_TIMEOUT #define WEBSOCKETS_TCP_TIMEOUT (5000) +#endif #define NETWORK_ESP8266_ASYNC (0) #define NETWORK_ESP8266 (1) @@ -102,6 +119,8 @@ #define NETWORK_ENC28J60 (3) #define NETWORK_ESP32 (4) #define NETWORK_ESP32_ETH (5) +#define NETWORK_RP2040 (6) +#define NETWORK_UNOWIFIR4 (7) // max size of the WS Message Header #define WEBSOCKETS_MAX_HEADER_SIZE (14) @@ -110,12 +129,19 @@ // select Network type based #if defined(ESP8266) || defined(ESP31B) #define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266 -//#define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266_ASYNC -//#define WEBSOCKETS_NETWORK_TYPE NETWORK_W5100 +// #define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266_ASYNC +// #define WEBSOCKETS_NETWORK_TYPE NETWORK_W5100 #elif defined(ESP32) #define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP32 -//#define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP32_ETH +// #define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP32_ETH + +#elif defined(ARDUINO_ARCH_RP2040) +#define WEBSOCKETS_NETWORK_TYPE NETWORK_RP2040 + +#elif defined(ARDUINO_UNOWIFIR4) +#define WEBSOCKETS_NETWORK_TYPE NETWORK_UNOWIFIR4 + #else #define WEBSOCKETS_NETWORK_TYPE NETWORK_W5100 @@ -199,6 +225,22 @@ #define WEBSOCKETS_NETWORK_CLASS WiFiClient #define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer +#elif(WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) + +#include +#include +#define SSL_BARESSL +#define WEBSOCKETS_NETWORK_CLASS WiFiClient +#define WEBSOCKETS_NETWORK_SSL_CLASS WiFiClientSecure +#define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer + +#elif(WEBSOCKETS_NETWORK_TYPE == NETWORK_UNOWIFIR4) + +#include + +#define WEBSOCKETS_NETWORK_CLASS WiFiClient +#define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer + #else #error "no network type selected!" #endif diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSockets4WebServer.h b/libraries/arduinoWebSockets-2.5.2/src/WebSockets4WebServer.h similarity index 82% rename from libraries/arduinoWebSockets-2.3.6/src/WebSockets4WebServer.h rename to libraries/arduinoWebSockets-2.5.2/src/WebSockets4WebServer.h index a542f1ea..b9bfb99a 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSockets4WebServer.h +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSockets4WebServer.h @@ -28,23 +28,29 @@ #include #include -#if WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266 && WEBSERVER_HAS_HOOK +#if((WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040)) && WEBSERVER_HAS_HOOK class WebSockets4WebServer : public WebSocketsServerCore { +#if defined(ESP8266) + using WebServerClass = ESP8266WebServer; +#else + using WebServerClass = WebServer; +#endif + public: WebSockets4WebServer(const String & origin = "", const String & protocol = "arduino") : WebSocketsServerCore(origin, protocol) { begin(); } - ESP8266WebServer::HookFunction hookForWebserver(const String & wsRootDir, WebSocketServerEvent event) { + WebServerClass::HookFunction hookForWebserver(const String & wsRootDir, WebSocketServerEvent event) { onEvent(event); - return [&, wsRootDir](const String & method, const String & url, WiFiClient * tcpClient, ESP8266WebServer::ContentTypeFunction contentType) { + return [&, wsRootDir](const String & method, const String & url, WiFiClient * tcpClient, WebServerClass::ContentTypeFunction contentType) { (void)contentType; if(!(method == "GET" && url.indexOf(wsRootDir) == 0)) { - return ESP8266WebServer::CLIENT_REQUEST_CAN_CONTINUE; + return WebServerClass::CLIENT_REQUEST_CAN_CONTINUE; } // allocate a WiFiClient copy (like in WebSocketsServer::handleNewClients()) @@ -63,7 +69,7 @@ class WebSockets4WebServer : public WebSocketsServerCore { } // tell webserver to not close but forget about this client - return ESP8266WebServer::CLIENT_IS_GIVEN; + return WebServerClass::CLIENT_IS_GIVEN; }; } }; diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsClient.cpp b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsClient.cpp similarity index 93% rename from libraries/arduinoWebSockets-2.3.6/src/WebSocketsClient.cpp rename to libraries/arduinoWebSockets-2.5.2/src/WebSocketsClient.cpp index a2a4782a..dcabf610 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsClient.cpp +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsClient.cpp @@ -48,6 +48,12 @@ void WebSocketsClient::begin(const char * host, uint16_t port, const char * url, #if defined(HAS_SSL) _fingerprint = SSL_FINGERPRINT_NULL; _CA_cert = NULL; +#ifdef ESP32 + _CA_bundle = NULL; +#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4) + _CA_bundle_size = 0; +#endif +#endif #endif _client.num = 0; @@ -76,6 +82,8 @@ void WebSocketsClient::begin(const char * host, uint16_t port, const char * url, #ifdef ESP8266 randomSeed(RANDOM_REG32); +#elif defined(ARDUINO_ARCH_RP2040) + randomSeed(rp2040.hwrand32()); #else // todo find better seed randomSeed(millis()); @@ -105,6 +113,7 @@ void WebSocketsClient::beginSSL(const char * host, uint16_t port, const char * u _client.isSSL = true; _fingerprint = fingerprint; _CA_cert = NULL; + _CA_bundle = NULL; } void WebSocketsClient::beginSSL(String host, uint16_t port, String url, String fingerprint, String protocol) { @@ -116,7 +125,28 @@ void WebSocketsClient::beginSslWithCA(const char * host, uint16_t port, const ch _client.isSSL = true; _fingerprint = SSL_FINGERPRINT_NULL; _CA_cert = CA_cert; + _CA_bundle = NULL; } + +#if defined(ESP32) && ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4) +void WebSocketsClient::beginSslWithBundle(const char * host, uint16_t port, const char * url, const uint8_t * CA_bundle, size_t CA_bundle_size, const char * protocol) { + begin(host, port, url, protocol); + _client.isSSL = true; + _fingerprint = SSL_FINGERPRINT_NULL; + _CA_cert = NULL; + _CA_bundle = CA_bundle; + _CA_bundle_size = CA_bundle_size; +} +#else +void WebSocketsClient::beginSslWithBundle(const char * host, uint16_t port, const char * url, const uint8_t * CA_bundle, const char * protocol) { + begin(host, port, url, protocol); + _client.isSSL = true; + _fingerprint = SSL_FINGERPRINT_NULL; + _CA_cert = NULL; + _CA_bundle = CA_bundle; +} +#endif + #else void WebSocketsClient::beginSSL(const char * host, uint16_t port, const char * url, const uint8_t * fingerprint, const char * protocol) { begin(host, port, url, protocol); @@ -224,12 +254,19 @@ void WebSocketsClient::loop(void) { _client.ssl->setCACert(_CA_cert); #elif defined(ESP8266) && defined(SSL_AXTLS) _client.ssl->setCACert((const uint8_t *)_CA_cert, strlen(_CA_cert) + 1); -#elif defined(ESP8266) && defined(SSL_BARESSL) +#elif(defined(ESP8266) || defined(ARDUINO_ARCH_RP2040)) && defined(SSL_BARESSL) _client.ssl->setTrustAnchors(_CA_cert); #else #error setCACert not implemented #endif #if defined(ESP32) + } else if(_CA_bundle) { + DEBUG_WEBSOCKETS("[WS-Client] setting CA bundle"); +#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4) + _client.ssl->setCACertBundle(_CA_bundle, _CA_bundle_size); +#else + _client.ssl->setCACertBundle(_CA_bundle); +#endif } else if(!SSL_FINGERPRINT_IS_SET) { _client.ssl->setInsecure(); #elif defined(SSL_BARESSL) @@ -426,9 +463,9 @@ bool WebSocketsClient::isConnected(void) { return (_client.status == WSC_CONNECTED); } -//################################################################################# -//################################################################################# -//################################################################################# +// ################################################################################# +// ################################################################################# +// ################################################################################# /** * @@ -473,7 +510,7 @@ void WebSocketsClient::messageReceived(WSclient_t * client, WSopcode_t opcode, u void WebSocketsClient::clientDisconnect(WSclient_t * client) { bool event = false; -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) if(client->isSSL && client->ssl) { if(client->ssl->connected()) { client->ssl->flush(); @@ -733,7 +770,7 @@ void WebSocketsClient::handleHeader(WSclient_t * client, String * headerLine) { client->cExtensions = headerValue; } else if(headerName.equalsIgnoreCase(WEBSOCKETS_STRING("Sec-WebSocket-Version"))) { client->cVersion = headerValue.toInt(); - } else if(headerName.equalsIgnoreCase(WEBSOCKETS_STRING("Set-Cookie"))) { + } else if(headerName.equalsIgnoreCase(WEBSOCKETS_STRING("Set-Cookie")) && headerValue.indexOf(" io=") > -1) { if(headerValue.indexOf(';') > -1) { client->cSessionId = headerValue.substring(headerValue.indexOf('=') + 1, headerValue.indexOf(";")); } else { @@ -784,9 +821,11 @@ void WebSocketsClient::handleHeader(WSclient_t * client, String * headerLine) { if(client->isSocketIO) { break; } + // falls through case 403: ///< Forbidden - // todo handle login - default: ///< Server dont unterstand requrst + // todo handle login + // falls through + default: ///< Server dont unterstand requrst ok = false; DEBUG_WEBSOCKETS("[WS-Client][handleHeader] serverCode is not 101 (%d)\n", client->cCode); clientDisconnect(client); @@ -862,7 +901,7 @@ void WebSocketsClient::connectedCb() { _client.tcp->setTimeout(WEBSOCKETS_TCP_TIMEOUT); #endif -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) _client.tcp->setNoDelay(true); #endif diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsClient.h b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsClient.h similarity index 89% rename from libraries/arduinoWebSockets-2.3.6/src/WebSocketsClient.h rename to libraries/arduinoWebSockets-2.5.2/src/WebSocketsClient.h index 64213767..362f4af7 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsClient.h +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsClient.h @@ -53,6 +53,13 @@ class WebSocketsClient : protected WebSockets { void setSSLClientCertKey(const char * clientCert = NULL, const char * clientPrivateKey = NULL); #endif void beginSslWithCA(const char * host, uint16_t port, const char * url = "/", const char * CA_cert = NULL, const char * protocol = "arduino"); +#ifdef ESP32 +#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4) + void beginSslWithBundle(const char * host, uint16_t port, const char * url = "/", const uint8_t * CA_bundle = NULL, size_t CA_bundle_size = 0, const char * protocol = "arduino"); +#else + void beginSslWithBundle(const char * host, uint16_t port, const char * url = "/", const uint8_t * CA_bundle = NULL, const char * protocol = "arduino"); +#endif +#endif #endif void beginSocketIO(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino"); @@ -112,6 +119,12 @@ class WebSocketsClient : protected WebSockets { #ifdef SSL_AXTLS String _fingerprint; const char * _CA_cert; + const uint8_t * _CA_bundle; +#if defined(ESP32) +#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4) + size_t _CA_bundle_size; +#endif +#endif #define SSL_FINGERPRINT_IS_SET (_fingerprint.length()) #define SSL_FINGERPRINT_NULL "" #else @@ -154,11 +167,11 @@ class WebSocketsClient : protected WebSockets { #endif /** - * called for sending a Event to the app - * @param type WStype_t - * @param payload uint8_t * - * @param length size_t - */ + * called for sending a Event to the app + * @param type WStype_t + * @param payload uint8_t * + * @param length size_t + */ virtual void runCbEvent(WStype_t type, uint8_t * payload, size_t length) { if(_cbEvent) { _cbEvent(type, payload, length); diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsServer.cpp b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsServer.cpp similarity index 95% rename from libraries/arduinoWebSockets-2.3.6/src/WebSocketsServer.cpp rename to libraries/arduinoWebSockets-2.5.2/src/WebSocketsServer.cpp index 3fd25c51..c582f714 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsServer.cpp +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsServer.cpp @@ -65,6 +65,7 @@ WebSocketsServerCore::~WebSocketsServerCore() { } WebSocketsServer::~WebSocketsServer() { + delete _server; } /** @@ -84,7 +85,10 @@ void WebSocketsServerCore::begin(void) { randomSeed(RANDOM_REG32); #elif defined(ESP32) #define DR_REG_RNG_BASE 0x3ff75144 - randomSeed(READ_PERI_REG(DR_REG_RNG_BASE)); + randomSeed(millis()); + //randomSeed(READ_PERI_REG(DR_REG_RNG_BASE)); +#elif defined(ARDUINO_ARCH_RP2040) + randomSeed(rp2040.hwrand32()); #else // TODO find better seed randomSeed(millis()); @@ -394,7 +398,7 @@ bool WebSocketsServerCore::clientIsConnected(uint8_t num) { return clientIsConnected(client); } -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) /** * get an IP for a client * @param num uint8_t client id @@ -426,8 +430,16 @@ WSclient_t * WebSocketsServerCore::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclien for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) { client = &_clients[i]; - // state is not connected or tcp connection is lost - if(!clientIsConnected(client)) { + // look for match to existing socket before creating a new one + if(clientIsConnected(client)) { +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_W5100) + // Check to see if it is the same socket - if so, return it + if(client->tcp->getSocketNumber() == TCPclient->getSocketNumber()) { + return client; + } +#endif + } else { + // state is not connected or tcp connection is lost client->tcp = TCPclient; #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) @@ -439,7 +451,7 @@ WSclient_t * WebSocketsServerCore::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclien client->tcp->setTimeout(WEBSOCKETS_TCP_TIMEOUT); #endif client->status = WSC_HEADER; -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) #ifndef NODEBUG_WEBSOCKETS IPAddress ip = client->tcp->remoteIP(); #endif @@ -516,9 +528,12 @@ void WebSocketsServerCore::messageReceived(WSclient_t * client, WSopcode_t opcod * @param client WSclient_t * ptr to the client struct contaning the native client "->tcp" */ void WebSocketsServerCore::dropNativeClient(WSclient_t * client) { + if(!client) { + return; + } if(client->tcp) { if(client->tcp->connected()) { -#if(WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC) && (WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC) && (WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP32) && (WEBSOCKETS_NETWORK_TYPE != NETWORK_RP2040) client->tcp->flush(); #endif client->tcp->stop(); @@ -537,7 +552,7 @@ void WebSocketsServerCore::dropNativeClient(WSclient_t * client) { * @param client WSclient_t * ptr to the client struct */ void WebSocketsServerCore::clientDisconnect(WSclient_t * client) { -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) if(client->isSSL && client->ssl) { if(client->ssl->connected()) { client->ssl->flush(); @@ -611,7 +626,7 @@ WSclient_t * WebSocketsServerCore::handleNewClient(WEBSOCKETS_NETWORK_CLASS * tc if(!client) { // no free space to handle client -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) #ifndef NODEBUG_WEBSOCKETS IPAddress ip = tcpClient->remoteIP(); #endif @@ -619,7 +634,12 @@ WSclient_t * WebSocketsServerCore::handleNewClient(WEBSOCKETS_NETWORK_CLASS * tc #else DEBUG_WEBSOCKETS("[WS-Server] no free space new client\n"); #endif + // no client! => create dummy! + WSclient_t dummy = WSclient_t(); + client = &dummy; + client->tcp = tcpClient; dropNativeClient(client); + return nullptr; } WEBSOCKETS_YIELD(); @@ -631,7 +651,7 @@ WSclient_t * WebSocketsServerCore::handleNewClient(WEBSOCKETS_NETWORK_CLASS * tc * Handle incoming Connection Request */ void WebSocketsServer::handleNewClients(void) { -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) while(_server->hasClient()) { #endif @@ -644,7 +664,7 @@ void WebSocketsServer::handleNewClients(void) { handleNewClient(tcpClient); -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) } #endif } @@ -915,7 +935,7 @@ void WebSocketsServer::begin(void) { void WebSocketsServer::close(void) { WebSocketsServerCore::close(); -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) _server->close(); #elif(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) _server->end(); diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsServer.h b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsServer.h similarity index 83% rename from libraries/arduinoWebSockets-2.3.6/src/WebSocketsServer.h rename to libraries/arduinoWebSockets-2.5.2/src/WebSocketsServer.h index e0fa7599..a47f5592 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsServer.h +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsServer.h @@ -90,7 +90,7 @@ class WebSocketsServerCore : protected WebSockets { void enableHeartbeat(uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount); void disableHeartbeat(); -#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_RP2040) IPAddress remoteIP(uint8_t num); #endif @@ -132,10 +132,10 @@ class WebSocketsServerCore : protected WebSockets { void handleHBPing(WSclient_t * client); // send ping in specified intervals /** - * called if a non Websocket connection is coming in. - * Note: can be override - * @param client WSclient_t * ptr to the client struct - */ + * called if a non Websocket connection is coming in. + * Note: can be override + * @param client WSclient_t * ptr to the client struct + */ virtual void handleNonWebsocketConnection(WSclient_t * client) { DEBUG_WEBSOCKETS("[WS-Server][%d][handleHeader] no Websocket connection close.\n", client->num); client->tcp->write( @@ -151,10 +151,10 @@ class WebSocketsServerCore : protected WebSockets { } /** - * called if a non Authorization connection is coming in. - * Note: can be override - * @param client WSclient_t * ptr to the client struct - */ + * called if a non Authorization connection is coming in. + * Note: can be override + * @param client WSclient_t * ptr to the client struct + */ virtual void handleAuthorizationFailed(WSclient_t * client) { client->tcp->write( "HTTP/1.1 401 Unauthorized\r\n" @@ -170,12 +170,12 @@ class WebSocketsServerCore : protected WebSockets { } /** - * called for sending a Event to the app - * @param num uint8_t - * @param type WStype_t - * @param payload uint8_t * - * @param length size_t - */ + * called for sending a Event to the app + * @param num uint8_t + * @param type WStype_t + * @param payload uint8_t * + * @param length size_t + */ virtual void runCbEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) { if(_cbEvent) { _cbEvent(num, type, payload, length); @@ -183,19 +183,19 @@ class WebSocketsServerCore : protected WebSockets { } /* - * Called at client socket connect handshake negotiation time for each http header that is not - * a websocket specific http header (not Connection, Upgrade, Sec-WebSocket-*) - * If the custom httpHeaderValidationFunc returns false for any headerName / headerValue passed, the - * socket negotiation is considered invalid and the upgrade to websockets request is denied / rejected - * This mechanism can be used to enable custom authentication schemes e.g. test the value - * of a session cookie to determine if a user is logged on / authenticated - */ + * Called at client socket connect handshake negotiation time for each http header that is not + * a websocket specific http header (not Connection, Upgrade, Sec-WebSocket-*) + * If the custom httpHeaderValidationFunc returns false for any headerName / headerValue passed, the + * socket negotiation is considered invalid and the upgrade to websockets request is denied / rejected + * This mechanism can be used to enable custom authentication schemes e.g. test the value + * of a session cookie to determine if a user is logged on / authenticated + */ virtual bool execHttpHeaderValidation(String headerName, String headerValue) { if(_httpHeaderValidationFunc) { - //return the value of the custom http header validation function + // return the value of the custom http header validation function return _httpHeaderValidationFunc(headerName, headerValue); } - //no custom http header validation so just assume all is good + // no custom http header validation so just assume all is good return true; } @@ -205,14 +205,14 @@ class WebSocketsServerCore : protected WebSockets { /** * drop native tcp connection (client->tcp) - */ + */ void dropNativeClient(WSclient_t * client); private: /* - * returns an indicator whether the given named header exists in the configured _mandatoryHttpHeaders collection - * @param headerName String ///< the name of the header being checked - */ + * returns an indicator whether the given named header exists in the configured _mandatoryHttpHeaders collection + * @param headerName String ///< the name of the header being checked + */ bool hasMandatoryHeader(String headerName); }; diff --git a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsVersion.h b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsVersion.h similarity index 86% rename from libraries/arduinoWebSockets-2.3.6/src/WebSocketsVersion.h rename to libraries/arduinoWebSockets-2.5.2/src/WebSocketsVersion.h index e0ab39c6..76baceff 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/WebSocketsVersion.h +++ b/libraries/arduinoWebSockets-2.5.2/src/WebSocketsVersion.h @@ -1,6 +1,6 @@ /** * @file WebSocketsVersion.h - * @date 08.03.2021 + * @date 29.07.2024 * @author Markus Sattler * * Copyright (c) 2015 Markus Sattler. All rights reserved. @@ -25,12 +25,12 @@ #ifndef WEBSOCKETSVERSION_H_ #define WEBSOCKETSVERSION_H_ -#define WEBSOCKETS_VERSION "2.3.6" +#define WEBSOCKETS_VERSION "2.5.2" #define WEBSOCKETS_VERSION_MAJOR 2 -#define WEBSOCKETS_VERSION_MINOR 3 -#define WEBSOCKETS_VERSION_PATCH 6 +#define WEBSOCKETS_VERSION_MINOR 5 +#define WEBSOCKETS_VERSION_PATCH 2 -#define WEBSOCKETS_VERSION_INT 2003006 +#define WEBSOCKETS_VERSION_INT 2005002 #endif /* WEBSOCKETSVERSION_H_ */ diff --git a/libraries/arduinoWebSockets-2.3.6/src/libb64/AUTHORS b/libraries/arduinoWebSockets-2.5.2/src/libb64/AUTHORS similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/src/libb64/AUTHORS rename to libraries/arduinoWebSockets-2.5.2/src/libb64/AUTHORS diff --git a/libraries/arduinoWebSockets-2.3.6/src/libb64/LICENSE b/libraries/arduinoWebSockets-2.5.2/src/libb64/LICENSE similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/src/libb64/LICENSE rename to libraries/arduinoWebSockets-2.5.2/src/libb64/LICENSE diff --git a/libraries/arduinoWebSockets-2.3.6/src/libb64/cdecode.c b/libraries/arduinoWebSockets-2.5.2/src/libb64/cdecode.c similarity index 98% rename from libraries/arduinoWebSockets-2.3.6/src/libb64/cdecode.c rename to libraries/arduinoWebSockets-2.5.2/src/libb64/cdecode.c index e135da24..615068ac 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/libb64/cdecode.c +++ b/libraries/arduinoWebSockets-2.5.2/src/libb64/cdecode.c @@ -9,7 +9,7 @@ For details, see http://sourceforge.net/projects/libb64 #include #endif -#if defined(ESP32) +#if defined(ESP32) || defined(ARDUINO_ARCH_RP2040) #define CORE_HAS_LIBB64 #endif diff --git a/libraries/arduinoWebSockets-2.3.6/src/libb64/cdecode_inc.h b/libraries/arduinoWebSockets-2.5.2/src/libb64/cdecode_inc.h similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/src/libb64/cdecode_inc.h rename to libraries/arduinoWebSockets-2.5.2/src/libb64/cdecode_inc.h diff --git a/libraries/arduinoWebSockets-2.3.6/src/libb64/cencode.c b/libraries/arduinoWebSockets-2.5.2/src/libb64/cencode.c similarity index 98% rename from libraries/arduinoWebSockets-2.3.6/src/libb64/cencode.c rename to libraries/arduinoWebSockets-2.5.2/src/libb64/cencode.c index afe1463c..cdc0f67b 100644 --- a/libraries/arduinoWebSockets-2.3.6/src/libb64/cencode.c +++ b/libraries/arduinoWebSockets-2.5.2/src/libb64/cencode.c @@ -9,7 +9,7 @@ For details, see http://sourceforge.net/projects/libb64 #include #endif -#if defined(ESP32) +#if defined(ESP32) || defined(ARDUINO_ARCH_RP2040) #define CORE_HAS_LIBB64 #endif diff --git a/libraries/arduinoWebSockets-2.3.6/src/libb64/cencode_inc.h b/libraries/arduinoWebSockets-2.5.2/src/libb64/cencode_inc.h similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/src/libb64/cencode_inc.h rename to libraries/arduinoWebSockets-2.5.2/src/libb64/cencode_inc.h diff --git a/libraries/arduinoWebSockets-2.3.6/src/libsha1/libsha1.c b/libraries/arduinoWebSockets-2.5.2/src/libsha1/libsha1.c similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/src/libsha1/libsha1.c rename to libraries/arduinoWebSockets-2.5.2/src/libsha1/libsha1.c diff --git a/libraries/arduinoWebSockets-2.3.6/src/libsha1/libsha1.h b/libraries/arduinoWebSockets-2.5.2/src/libsha1/libsha1.h similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/src/libsha1/libsha1.h rename to libraries/arduinoWebSockets-2.5.2/src/libsha1/libsha1.h diff --git a/libraries/arduinoWebSockets-2.5.2/tests/webSocket.html b/libraries/arduinoWebSockets-2.5.2/tests/webSocket.html new file mode 100644 index 00000000..66a27089 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/tests/webSocket.html @@ -0,0 +1,49 @@ + + + + + + + +LED Control:
                +
                +R:
                +G:
                +B:
                + + \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/index.js b/libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/index.js new file mode 100644 index 00000000..389e1930 --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/index.js @@ -0,0 +1,57 @@ +#!/usr/bin/env node +var WebSocketServer = require('websocket').server; +var http = require('http'); + +var server = http.createServer(function(request, response) { + console.log((new Date()) + ' Received request for ' + request.url); + response.writeHead(404); + response.end(); +}); +server.listen(8011, function() { + console.log((new Date()) + ' Server is listening on port 8011'); +}); + +wsServer = new WebSocketServer({ + httpServer: server, + // You should not use autoAcceptConnections for production + // applications, as it defeats all standard cross-origin protection + // facilities built into the protocol and the browser. You should + // *always* verify the connection's origin and decide whether or not + // to accept it. + autoAcceptConnections: false +}); + +function originIsAllowed(origin) { + // put logic here to detect whether the specified origin is allowed. + return true; +} + +wsServer.on('request', function(request) { + + if (!originIsAllowed(request.origin)) { + // Make sure we only accept requests from an allowed origin + request.reject(); + console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.'); + return; + } + + var connection = request.accept('arduino', request.origin); + console.log((new Date()) + ' Connection accepted.'); + + connection.on('message', function(message) { + if (message.type === 'utf8') { + console.log('Received Message: ' + message.utf8Data); + // connection.sendUTF(message.utf8Data); + } + else if (message.type === 'binary') { + console.log('Received Binary Message of ' + message.binaryData.length + ' bytes'); + //connection.sendBytes(message.binaryData); + } + }); + + connection.on('close', function(reasonCode, description) { + console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.'); + }); + + connection.sendUTF("Hallo Client!"); +}); diff --git a/libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/package.json b/libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/package.json new file mode 100644 index 00000000..9538323e --- /dev/null +++ b/libraries/arduinoWebSockets-2.5.2/tests/webSocketServer/package.json @@ -0,0 +1,27 @@ +{ + "name": "webSocketServer", + "version": "1.0.0", + "description": "WebSocketServer for testing", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/Links2004/arduinoWebSockets" + }, + "keywords": [ + "esp8266", + "websocket", + "arduino" + ], + "author": "Markus Sattler", + "license": "LGPLv2", + "bugs": { + "url": "https://github.com/Links2004/arduinoWebSockets/issues" + }, + "homepage": "https://github.com/Links2004/arduinoWebSockets", + "dependencies": { + "websocket": "^1.0.18" + } +} diff --git a/libraries/arduinoWebSockets-2.3.6/travis/common.sh b/libraries/arduinoWebSockets-2.5.2/travis/common.sh similarity index 71% rename from libraries/arduinoWebSockets-2.3.6/travis/common.sh rename to libraries/arduinoWebSockets-2.5.2/travis/common.sh index 234b1f68..3c270d2a 100644 --- a/libraries/arduinoWebSockets-2.3.6/travis/common.sh +++ b/libraries/arduinoWebSockets-2.5.2/travis/common.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e function build_sketches() { @@ -27,11 +28,28 @@ function build_sketches() done } +function build_sketch_cli() +{ + local sketch=$1 + local board=$2 + arduino-cli --log --log-level info compile -b "$board" "$sketch" + result=$? + if [ $result -ne 0 ]; then + echo "Build failed ($sketch) build verbose..." + arduino-cli --log --log-level debug compile -b "$board" "$sketch" + result=$? + fi + if [ $result -ne 0 ]; then + echo "Build failed ($1) $sketch" + return $result + fi +} + function build_sketch() -{ +{ local arduino=$1 local sketch=$2 - $arduino --verify $sketch; + $arduino --verify --verbose $sketch; local result=$? if [ $result -ne 0 ]; then echo "Build failed ($sketch) build verbose..." @@ -60,7 +78,7 @@ function get_sketches_json() if [[ $sketch != ${sketches[-1]} ]] ; then echo -en "," fi - + done echo -en "]" } @@ -70,7 +88,7 @@ function get_sketches_json_matrix() local arduino=$1 local srcpath=$2 local platform=$3 - local ideversion=$4 + local cliversion=$4 local board=$5 local sketches=($(find $srcpath -name *.ino)) for sketch in "${sketches[@]}" ; do @@ -79,24 +97,34 @@ function get_sketches_json_matrix() if [[ -f "$sketchdir/.$platform.skip" ]]; then continue fi - echo -en "{\"name\":\"$sketchname\",\"board\":\"$board\",\"ideversion\":\"$ideversion\",\"cpu\":\"$platform\",\"sketch\":\"$sketch\"}" + echo -en "{\"name\":\"$sketchname\",\"board\":\"$board\",\"cliversion\":\"$cliversion\",\"cpu\":\"$platform\",\"sketch\":\"$sketch\"}" if [[ $sketch != ${sketches[-1]} ]] ; then echo -en "," fi done } +function get_core_cli() { + export ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS="https://arduino.esp8266.com/stable/package_esp8266com_index.json https://espressif.github.io/arduino-esp32/package_esp32_index.json https://github.com/earlephilhower/arduino-pico/releases/download/3.9.2/package_rp2040_index.json" + arduino-cli core update-index + arduino-cli core install esp8266:esp8266 + arduino-cli core install esp32:esp32 + arduino-cli core install rp2040:rp2040 +} + function get_core() { echo Setup core for $1 - cd $HOME/arduino_ide/hardware + mkdir -p $HOME/arduino_ide/packages/hardware + cd $HOME/arduino_ide/packages/hardware if [ "$1" = "esp8266" ] ; then mkdir esp8266com cd esp8266com git clone --depth 1 https://github.com/esp8266/Arduino.git esp8266 cd esp8266/ + git submodule update --init rm -rf .git cd tools python get.py @@ -127,5 +155,5 @@ function clone_library() { function hash_library_names() { cd $HOME/Arduino/libraries - ls | sha1sum -z | cut -c1-5 + ls | sha1sum -z | cut -c1-5 } \ No newline at end of file diff --git a/libraries/arduinoWebSockets-2.3.6/travis/version.py b/libraries/arduinoWebSockets-2.5.2/travis/version.py similarity index 100% rename from libraries/arduinoWebSockets-2.3.6/travis/version.py rename to libraries/arduinoWebSockets-2.5.2/travis/version.py diff --git a/platformio.ini b/platformio.ini index 03b35db4..2898b066 100644 --- a/platformio.ini +++ b/platformio.ini @@ -17,7 +17,7 @@ data_dir = esp3d/data default_envs = esp32dev [env:esp32dev] -platform = espressif32@6.2.0 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32dev framework = arduino monitor_speed = 115200 @@ -36,9 +36,11 @@ build_flags = -DCORE_DEBUG_LEVEL=0 board_build.partitions = min_spiffs.csv upload_speed = 460800 extra_scripts = pre:platformIO/extra_script.py +lib_ignore = + TFT_eSPI [env:esp32cam] -platform = espressif32@6.0.1 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32dev framework = arduino monitor_speed = 115200 @@ -59,10 +61,12 @@ build_flags = -DCORE_DEBUG_LEVEL=0 board_build.partitions = min_spiffs.csv upload_speed = 460800 extra_scripts = pre:platformIO/extra_script.py +lib_ignore = + TFT_eSPI ;TTGO_T_Display with ST7789 [env:esp32-TTGO_T_Display] -platform = espressif32@6.0.1 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32dev framework = arduino monitor_speed = 115200 @@ -109,7 +113,7 @@ extra_scripts = pre:platformIO/extra_script.py ;TTGO_T_Display with ST7789 [env:esp32-ST7789] -platform = espressif32@6.0.1 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32dev framework = arduino monitor_speed = 115200 @@ -155,7 +159,7 @@ upload_speed = 460800 extra_scripts = pre:platformIO/extra_script.py [env:esp32-s2] -platform = espressif32@6.0.1 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32-s2-saola-1 framework = arduino monitor_speed = 115200 @@ -173,13 +177,14 @@ board_build.flash_mode = qio ; None build_flags = -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -DCONFIG_IDF_TARGET_ESP32S2=1 board_build.partitions = min_spiffs.csv +extra_scripts = pre:platformIO/extra_script.py upload_speed = 460800 lib_ignore = TFT_eSPI ;https://github.com/Bodmer/TFT_eSPI/issues/1246 [env:esp32-s3] -platform = espressif32@6.0.1 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 @@ -188,19 +193,21 @@ monitor_filters = send_on_enter, colorize, esp32_exception_decoder board_build.f_cpu = 240000000L board_build.mcu = esp32s3 board_build.variant = esp32s3 +board_build.arduino.memory_type = qio_opi ; set frequency to 80MHz board_build.f_flash = 80000000L board_build.flash_mode = qio +extra_scripts = pre:platformIO/extra_script.py ;uncomment and modify if board is not 4MB ;board_upload.flash_size = 16MB ;board_build.partitions = default_16MB.csv ; None -build_flags = -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -DCONFIG_IDF_TARGET_ESP32S3=1 +build_flags = -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -DCONFIG_IDF_TARGET_ESP32S3=1 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DBOARD_HAS_PSRAM board_build.partitions = min_spiffs.csv upload_speed = 460800 [env:esp32-c3] -platform = espressif32@6.0.1 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip board = esp32-c3-devkitm-1 board_build.mcu = esp32c3 board_build.variant = esp32c3 @@ -215,8 +222,31 @@ build_flags = -DCORE_DEBUG_LEVEL=0 -DCONFIG_IDF_TARGET_ESP32C3=1 ;on 4MB flash use ;board_build.partitions = min_spiffs.csv ;uncomment and modify if board is not 4MB -board_upload.flash_size = 2MB -board_build.partitions = minimal.csv +;board_upload.flash_size = 2MB +board_build.partitions = min_spiffs.csv +upload_speed = 460800 +extra_scripts = pre:platformIO/extra_script.py +lib_ignore = + TFT_eSPI + +[env:esp32-c6] +platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.04/platform-espressif32.zip +board = esp32-c6-devkitc-1 +board_build.mcu = esp32c6 +board_build.variant = esp32c6 +framework = arduino +board_build.f_cpu = 160000000L +board_build.f_flash = 80000000L +board_build.flash_mode = qio +monitor_speed = 115200 +monitor_echo = yes +monitor_filters = send_on_enter, colorize, esp32_exception_decoder +build_flags = -DCORE_DEBUG_LEVEL=0 -DCONFIG_IDF_TARGET_ESP32C6=1 +;on 4MB flash use +;board_build.partitions = min_spiffs.csv +;uncomment and modify if board is not 4MB +;board_upload.flash_size = 8MB +board_build.partitions = min_spiffs.csv upload_speed = 460800 extra_scripts = pre:platformIO/extra_script.py lib_ignore = @@ -245,7 +275,8 @@ build_flags = upload_speed = 115200 extra_scripts = pre:platformIO/extra_script.py lib_ignore = - ESP32SSDP + ESP32SSDP + TFT_eSPI [env:esp01s_160mhz] platform = espressif8266@4.1.0 @@ -271,6 +302,7 @@ upload_speed = 115200 extra_scripts = pre:platformIO/extra_script.py lib_ignore = ESP32SSDP + TFT_eSPI [env:esp8285] platform = espressif8266@4.1.0 @@ -296,3 +328,4 @@ upload_speed = 115200 extra_scripts = pre:platformIO/extra_script.py lib_ignore = ESP32SSDP + TFT_eSPI

                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%0DZE)eUA=EXXt4kQ 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 c+F6j45NzO{?p-Iq=lp;XOp*4z*lAvWeND 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%0Dq#Ai{1ul5IE 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 z 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 z%0D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ฝ(dTm2Y}7pYK{rhxTyl@KgXX;6 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 Kbf-G_zyAZvo5U~x literal 0 HcmV?d00001 diff --git a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h.html b/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h.html deleted file mode 100644 index cbf164f9..00000000 --- a/extra-libraries/ESP8266/ESP8266SdFat/doc/html/_arduino_stream_8h.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/iostream/ArduinoStream.h File Reference - - - - - - - - - -

        2. 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%0DZE)eUA=EXXt4kQ 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 c+F6j45NzO{?p-Iq=lp;XOp*4z*lAvWeND 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%0Dq#Ai{1ul5IE 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 z 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 z%0D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ฝ(dTm2Y}7pYK{rhxTyl@KgXX;6 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 Kbf-G_zyAZvo5U~x literal 0 HcmV?d00001 diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/html/index.html b/extra-libraries/ESP32/SdFat-2.2.3/doc/html/index.html similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/html/index.html rename to extra-libraries/ESP32/SdFat-2.2.3/doc/html/index.html diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/mainpage.h b/extra-libraries/ESP32/SdFat-2.2.3/doc/mainpage.h similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/mainpage.h rename to extra-libraries/ESP32/SdFat-2.2.3/doc/mainpage.h index d8d7a3ac..19312b7b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/doc/mainpage.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/doc/mainpage.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2021 Bill Greiman + * Copyright (c) 2011-2024 Bill Greiman * This file is part of the SdFat library for SD memory cards. * * MIT License @@ -31,19 +31,19 @@ This is a major new version of SdFat. It is mostly backward compatible with SdFat Version 1 for FAT16/FAT32 cards. You should edit SdFatConfig.h to select features. The default version of -SdFatConfig.h is suitable for UNO and other small AVR boards. +SdFatConfig.h is suitable for UNO and other small AVR boards. \section Intro Introduction - -The Arduino %SdFat library supports FAT16, FAT32, and exFAT file systems + +The Arduino %SdFat library supports FAT16, FAT32, and exFAT file systems on Standard SD, SDHC, and SDXC cards. - + In %SdFat version 1, SdFat and File are the main classes. In %SdFat version 2, SdFat and File are defined by typedefs in terms of the -following classes. +following classes. -The file system classes in the %SdFat library are SdFat32, SdExFat, and SdFs. +The file system classes in the %SdFat library are SdFat32, SdExFat, and SdFs. SdFat32 supports FAT16 and FAT32. SdExFat supports exFAT, SdFs supports FAT16, FAT32, and exFAT. @@ -69,7 +69,7 @@ boards. #endif // defined(__AVR__) && FLASHEND < 0X8000 \endcode -It is possible to use option three, support or FAT16/FAT32 and exFat +It is possible to use option three, support or FAT16/FAT32 and exFat on an Uno or other AVR board with 32KB flash and 2KB SRAM but memory will be very limited. @@ -79,7 +79,7 @@ Uno memory use for a simple data logger is: > > option 2, exFAT, 14942 bytes of flash and 895 bytes of SRAM. > -> option 3, FAT16/FAT32 and exFAT, 21834 bytes of flash and 908 bytes of SRAM. +> option 3, FAT16/FAT32 and exFAT, 21834 bytes of flash and 908 bytes of SRAM. Please read documentation under the above classes tab for more information. @@ -113,8 +113,8 @@ multi-block write. Relative paths in %SdFat are resolved in a manner similar to Windows. -Each instance of SdFat32, SdExFat, and SdFs has a current directory. -This directory is called the volume working directory, vwd. +Each instance of SdFat32, SdExFat, and SdFs has a current directory. +This directory is called the volume working directory, vwd. Initially this directory is the root directory for the volume. The volume working directory is changed by calling the chdir(path). @@ -149,9 +149,9 @@ will open "/music/BigBand.wav" on sd2. \section Install Installation -You must manually install %SdFat by renaming the download folder %SdFat +You must manually install %SdFat by renaming the download folder %SdFat and copy the %SdFat folder to the Arduino libraries folder in your -sketchbook folder. +sketchbook folder. It will be necessary to unzip and rename the folder if you download a zip file from GitHub. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/AvrAdcLogger/AvrAdcLogger.h b/extra-libraries/ESP32/SdFat-2.2.3/examples/AvrAdcLogger/AvrAdcLogger.h similarity index 81% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/AvrAdcLogger/AvrAdcLogger.h rename to extra-libraries/ESP32/SdFat-2.2.3/examples/AvrAdcLogger/AvrAdcLogger.h index 054f1994..55f26747 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/AvrAdcLogger/AvrAdcLogger.h +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/AvrAdcLogger/AvrAdcLogger.h @@ -3,7 +3,8 @@ const size_t BLOCK_SIZE = 64; //------------------------------------------------------------------------------ // First block of file. -const size_t PIN_NUM_DIM = BLOCK_SIZE - 3*sizeof(uint32_t) - 2*sizeof(uint8_t); +const size_t PIN_NUM_DIM = + BLOCK_SIZE - 3 * sizeof(uint32_t) - 2 * sizeof(uint8_t); struct metadata_t { uint32_t adcFrequency; // ADC clock frequency uint32_t cpuFrequency; // CPU clock frequency @@ -14,15 +15,16 @@ struct metadata_t { }; //------------------------------------------------------------------------------ // Data block for 8-bit ADC mode. -const size_t DATA_DIM8 = (BLOCK_SIZE - 2*sizeof(uint16_t))/sizeof(uint8_t); +const size_t DATA_DIM8 = (BLOCK_SIZE - 2 * sizeof(uint16_t)) / sizeof(uint8_t); struct block8_t { uint16_t count; // count of data values uint16_t overrun; // count of overruns since last block - uint8_t data[DATA_DIM8]; + uint8_t data[DATA_DIM8]; }; //------------------------------------------------------------------------------ // Data block for 10-bit ADC mode. -const size_t DATA_DIM16 = (BLOCK_SIZE - 2*sizeof(uint16_t))/sizeof(uint16_t); +const size_t DATA_DIM16 = + (BLOCK_SIZE - 2 * sizeof(uint16_t)) / sizeof(uint16_t); struct block16_t { unsigned short count; // count of data values unsigned short overrun; // count of overruns since last block diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/AvrAdcLogger/AvrAdcLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/AvrAdcLogger/AvrAdcLogger.ino similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/AvrAdcLogger/AvrAdcLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/AvrAdcLogger/AvrAdcLogger.ino index 064edebc..6c70af8b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/AvrAdcLogger/AvrAdcLogger.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/AvrAdcLogger/AvrAdcLogger.ino @@ -20,10 +20,11 @@ */ #ifdef __AVR__ #include -#include "SdFat.h" + +#include "AvrAdcLogger.h" #include "BufferedPrint.h" #include "FreeStack.h" -#include "AvrAdcLogger.h" +#include "SdFat.h" // Save SRAM if 328. #ifdef __AVR_ATmega328P__ @@ -73,7 +74,7 @@ const float SAMPLE_RATE = 5000; // Must be 0.25 or greater. // constant instead of being calculated from SAMPLE_RATE. SAMPLE_RATE is not // used in the code below. For example, setting SAMPLE_INTERVAL = 2.0e-4 // will result in a 200 microsecond sample interval. -const float SAMPLE_INTERVAL = 1.0/SAMPLE_RATE; +const float SAMPLE_INTERVAL = 1.0 / SAMPLE_RATE; // Setting ROUND_SAMPLE_INTERVAL non-zero will cause the sample interval to // be rounded to a a multiple of the ADC clock period and will reduce sample @@ -109,11 +110,11 @@ const size_t NAME_DIM = 40; #elif RAMEND < 0X10FF const size_t FIFO_SIZE_BYTES = 512; #elif RAMEND < 0X20FF -const size_t FIFO_SIZE_BYTES = 4*512; +const size_t FIFO_SIZE_BYTES = 4 * 512; #elif RAMEND < 0X40FF -const size_t FIFO_SIZE_BYTES = 12*512; -#else // RAMEND -const size_t FIFO_SIZE_BYTES = 16*512; +const size_t FIFO_SIZE_BYTES = 12 * 512; +#else // RAMEND +const size_t FIFO_SIZE_BYTES = 16 * 512; #endif // RAMEND //------------------------------------------------------------------------------ // ADC clock rate. @@ -136,7 +137,7 @@ const size_t FIFO_SIZE_BYTES = 16*512; #define TMP_FILE_NAME "tmp_adc.bin" // Number of analog pins to log. -const uint8_t PIN_COUNT = sizeof(PIN_LIST)/sizeof(PIN_LIST[0]); +const uint8_t PIN_COUNT = sizeof(PIN_LIST) / sizeof(PIN_LIST[0]); // Minimum ADC clock cycles per sample interval const uint16_t MIN_ADC_CYCLES = 15; @@ -151,6 +152,7 @@ const uint32_t MAX_FILE_SIZE = MAX_FILE_SIZE_MiB << 20; // Max SPI rate for AVR is 10 MHz for F_CPU 20 MHz, 8 MHz for F_CPU 16 MHz. #define SPI_CLOCK SD_SCK_MHZ(10) + // Select fastest interface. #if ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) @@ -180,19 +182,19 @@ file_t csvFile; char binName[] = LOG_FILE_NAME; #if RECORD_EIGHT_BITS -const size_t BLOCK_MAX_COUNT = PIN_COUNT*(DATA_DIM8/PIN_COUNT); +const size_t BLOCK_MAX_COUNT = PIN_COUNT * (DATA_DIM8 / PIN_COUNT); typedef block8_t block_t; -#else // RECORD_EIGHT_BITS -const size_t BLOCK_MAX_COUNT = PIN_COUNT*(DATA_DIM16/PIN_COUNT); +#else // RECORD_EIGHT_BITS +const size_t BLOCK_MAX_COUNT = PIN_COUNT * (DATA_DIM16 / PIN_COUNT); typedef block16_t block_t; -#endif // RECORD_EIGHT_BITS +#endif // RECORD_EIGHT_BITS // Size of FIFO in blocks. -size_t const FIFO_DIM = FIFO_SIZE_BYTES/sizeof(block_t); +size_t const FIFO_DIM = FIFO_SIZE_BYTES / sizeof(block_t); block_t* fifoData; -volatile size_t fifoCount = 0; // volatile - shared, ISR and background. -size_t fifoHead = 0; // Only accessed by ISR during logging. -size_t fifoTail = 0; // Only accessed by writer during logging. +volatile size_t fifoCount = 0; // volatile - shared, ISR and background. +size_t fifoHead = 0; // Only accessed by ISR during logging. +size_t fifoTail = 0; // Only accessed by writer during logging. //============================================================================== // Interrupt Service Routines @@ -219,7 +221,7 @@ ISR(ADC_vect) { // Read ADC data. #if RECORD_EIGHT_BITS uint8_t d = ADCH; -#else // RECORD_EIGHT_BITS +#else // RECORD_EIGHT_BITS // This will access ADCL first. uint16_t d = ADC; #endif // RECORD_EIGHT_BITS @@ -245,7 +247,7 @@ ISR(ADC_vect) { if (adcindex == 0) { timerFlag = false; } - adcindex = adcindex < (PIN_COUNT - 1) ? adcindex + 1 : 0; + adcindex = adcindex < (PIN_COUNT - 1) ? adcindex + 1 : 0; } else { timerFlag = false; } @@ -277,7 +279,7 @@ ISR(TIMER1_COMPB_vect) { } //============================================================================== // Error messages stored in flash. -#define error(msg) (Serial.println(F(msg)),errorHalt()) +#define error(msg) (Serial.println(F(msg)), errorHalt()) #define assert(e) ((e) ? (void)0 : error("assert: " #e)) //------------------------------------------------------------------------------ // @@ -336,12 +338,13 @@ void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { #error unexpected ADC prescaler bits #endif //------------------------------------------------------------------------------ -inline bool adcActive() {return (1 << ADIE) & ADCSRA;} +inline bool adcActive() { return (1 << ADIE) & ADCSRA; } //------------------------------------------------------------------------------ // initialize ADC and timer1 void adcInit(metadata_t* meta) { uint8_t adps; // prescaler bits for ADCSRA - uint32_t ticks = F_CPU*SAMPLE_INTERVAL + 0.5; // Sample interval cpu cycles. + uint32_t ticks = + F_CPU * SAMPLE_INTERVAL + 0.5; // Sample interval cpu cycles. if (ADC_REF & ~((1 << REFS0) | (1 << REFS1))) { error("Invalid ADC reference"); @@ -351,9 +354,9 @@ void adcInit(metadata_t* meta) { error("Invalid ADC prescaler"); } adps = ADC_PRESCALER; -#else // ADC_PRESCALER +#else // ADC_PRESCALER // Allow extra cpu cycles to change ADC settings if more than one pin. - int32_t adcCycles = (ticks - ISR_TIMER0)/PIN_COUNT - ISR_SETUP_ADC; + int32_t adcCycles = (ticks - ISR_TIMER0) / PIN_COUNT - ISR_SETUP_ADC; for (adps = 7; adps > 0; adps--) { if (adcCycles >= (MIN_ADC_CYCLES << adps)) { @@ -410,19 +413,19 @@ void adcInit(metadata_t* meta) { // no prescale, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); tshift = 0; - } else if (ticks < 0X10000*8) { + } else if (ticks < 0X10000 * 8) { // prescale 8, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11); tshift = 3; - } else if (ticks < 0X10000*64) { + } else if (ticks < 0X10000 * 64) { // prescale 64, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10); tshift = 6; - } else if (ticks < 0X10000*256) { + } else if (ticks < 0X10000 * 256) { // prescale 256, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12); tshift = 8; - } else if (ticks < 0X10000*1024) { + } else if (ticks < 0X10000 * 1024) { // prescale 1024, CTC mode TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12) | (1 << CS10); tshift = 10; @@ -442,7 +445,7 @@ void adcInit(metadata_t* meta) { // Sample interval in CPU clock ticks. meta->sampleInterval = ticks; meta->cpuFrequency = F_CPU; - float sampleRate = (float)meta->cpuFrequency/meta->sampleInterval; + float sampleRate = (float)meta->cpuFrequency / meta->sampleInterval; Serial.print(F("Sample pins:")); for (uint8_t i = 0; i < meta->pinCount; i++) { Serial.print(' '); @@ -452,11 +455,11 @@ void adcInit(metadata_t* meta) { Serial.print(F("ADC bits: ")); Serial.println(meta->recordEightBits ? 8 : 10); Serial.print(F("ADC clock kHz: ")); - Serial.println(meta->adcFrequency/1000); + Serial.println(meta->adcFrequency / 1000); Serial.print(F("Sample Rate: ")); Serial.println(sampleRate); Serial.print(F("Sample interval usec: ")); - Serial.println(1000000.0/sampleRate); + Serial.println(1000000.0 / sampleRate); } //------------------------------------------------------------------------------ // enable ADC and timer1 interrupts @@ -508,7 +511,7 @@ void binaryToCsv() { if (nb < 0) { error("read binFile failed"); } - size_t nd = nb/sizeof(block_t); + size_t nd = nb / sizeof(block_t); if (nd < 1) { break; } @@ -519,7 +522,8 @@ void binaryToCsv() { error("Invalid pinCount"); } bp.print(F("Interval,")); - float intervalMicros = 1.0e6*pm->sampleInterval/(float)pm->cpuFrequency; + float intervalMicros = + 1.0e6 * pm->sampleInterval / (float)pm->cpuFrequency; bp.print(intervalMicros, 4); bp.println(F(",usec")); for (uint8_t i = 0; i < PIN_COUNT; i++) { @@ -541,14 +545,15 @@ void binaryToCsv() { } for (size_t j = 0; j < pd->count; j += PIN_COUNT) { for (size_t i = 0; i < PIN_COUNT; i++) { - if (!bp.printField(pd->data[i + j], i == (PIN_COUNT-1) ? '\n' : ',')) { + if (!bp.printField(pd->data[i + j], + i == (PIN_COUNT - 1) ? '\n' : ',')) { error("printField failed"); } } } } if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); + uint8_t pct = binFile.curPosition() / (binFile.fileSize() / 100); if (pct != lastPct) { tPct = millis(); lastPct = pct; @@ -561,7 +566,7 @@ void binaryToCsv() { error("close csvFile failed"); } Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); + Serial.print(0.001 * (millis() - t0)); Serial.println(F(" Seconds")); } //------------------------------------------------------------------------------ @@ -619,7 +624,7 @@ bool createCsvFile() { error("no dot in binName"); } strcpy(dot + 1, "csv"); - if (!csvFile.open(csvName, O_WRONLY|O_CREAT|O_TRUNC)) { + if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { error("open csvFile failed"); } Serial.print(F("Writing: ")); @@ -632,7 +637,7 @@ bool createCsvFile() { void logData() { uint32_t t0; uint32_t t1; - uint32_t overruns =0; + uint32_t overruns = 0; uint32_t count = 0; uint32_t maxLatencyUsec = 0; size_t maxFifoUse = 0; @@ -676,7 +681,7 @@ void logData() { if (m > maxLatencyUsec) { maxLatencyUsec = m; } - if (tmpFifoCount >maxFifoUse) { + if (tmpFifoCount > maxFifoUse) { maxFifoUse = tmpFifoCount; } count += pBlock->count; @@ -711,7 +716,7 @@ void logData() { isrStop = true; } if (fifoCount == 0 && !adcActive()) { - break; + break; } } Serial.println(); @@ -726,9 +731,9 @@ void logData() { Serial.print(F("Max write latency usec: ")); Serial.println(maxLatencyUsec); Serial.print(F("Record time sec: ")); - Serial.println(0.001*(t1 - t0), 3); + Serial.println(0.001 * (t1 - t0), 3); Serial.print(F("Sample count: ")); - Serial.println(count/PIN_COUNT); + Serial.println(count / PIN_COUNT); Serial.print(F("Overruns: ")); Serial.println(overruns); Serial.print(F("FIFO_DIM: ")); @@ -767,13 +772,13 @@ void printData() { return; } binFile.rewind(); - if (binFile.read(&buf , sizeof(buf)) != sizeof(buf)) { + if (binFile.read(&buf, sizeof(buf)) != sizeof(buf)) { error("Read metadata failed"); } Serial.println(F("Type any character to stop")); delay(1000); while (!Serial.available() && - binFile.read(&buf , sizeof(buf)) == sizeof(buf)) { + binFile.read(&buf, sizeof(buf)) == sizeof(buf)) { if (buf.count == 0) { break; } @@ -783,7 +788,7 @@ void printData() { } for (size_t i = 0; i < buf.count; i++) { Serial.print(buf.data[i], DEC); - if ((i+1)%PIN_COUNT) { + if ((i + 1) % PIN_COUNT) { Serial.print(','); } else { Serial.println(); @@ -795,7 +800,7 @@ void printData() { //------------------------------------------------------------------------------ bool serialReadLine(char* str, size_t size) { size_t n = 0; - while(!Serial.available()) { + while (!Serial.available()) { } while (true) { int c = Serial.read(); @@ -806,7 +811,8 @@ bool serialReadLine(char* str, size_t size) { return false; } uint32_t m = millis(); - while (!Serial.available() && (millis() - m) < 100){} + while (!Serial.available() && (millis() - m) < 100) { + } if (!Serial.available()) break; } str[n] = 0; @@ -818,9 +824,11 @@ void setup(void) { pinMode(ERROR_LED_PIN, OUTPUT); } Serial.begin(9600); - while(!Serial) {} + while (!Serial) { + } Serial.println(F("Type any character to begin.")); - while(!Serial.available()) {} + while (!Serial.available()) { + } FillStack(); @@ -828,9 +836,9 @@ void setup(void) { analogRead(PIN_LIST[0]); #if !ENABLE_DEDICATED_SPI - Serial.println(F( - "\nFor best performance edit SdFatConfig.h\n" - "and set ENABLE_DEDICATED_SPI nonzero")); + Serial.println( + F("\nFor best performance edit SdFatConfig.h\n" + "and set ENABLE_DEDICATED_SPI nonzero")); #endif // !ENABLE_DEDICATED_SPI // Initialize SD. if (!sd.begin(SD_CONFIG)) { @@ -864,7 +872,7 @@ void loop(void) { Serial.println(F("p - print data to Serial")); Serial.println(F("r - record ADC data")); - while(!Serial.available()) { + while (!Serial.available()) { yield(); } char c = tolower(Serial.read()); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/BackwardCompatibility/BackwardCompatibility.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/BackwardCompatibility/BackwardCompatibility.ino similarity index 97% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/BackwardCompatibility/BackwardCompatibility.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/BackwardCompatibility/BackwardCompatibility.ino index 8e7299cc..9729695d 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/BackwardCompatibility/BackwardCompatibility.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/BackwardCompatibility/BackwardCompatibility.ino @@ -28,11 +28,12 @@ File myFile; void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } #if USE_SD_H Serial.println(F("Using SD.h. Set USE_SD_H zero to use SdFat.h.")); -#else // USE_SD_H +#else // USE_SD_H Serial.println(F("Using SdFat.h. Set USE_SD_H nonzero to use SD.h.")); #endif // USE_SD_H Serial.println(F("\nType any character to begin.")); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/BufferedPrint/BufferedPrint.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/BufferedPrint/BufferedPrint.ino similarity index 67% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/BufferedPrint/BufferedPrint.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/BufferedPrint/BufferedPrint.ino index f889c1a6..5a924eb6 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/BufferedPrint/BufferedPrint.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/BufferedPrint/BufferedPrint.ino @@ -1,12 +1,12 @@ // Test and benchmark of the fast bufferedPrint class. // // Mainly for AVR but may improve print performance with other CPUs. -#include "SdFat.h" #include "BufferedPrint.h" +#include "SdFat.h" // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -19,7 +19,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -30,7 +30,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -71,49 +71,48 @@ void benchmark() { bp.begin(&file); } uint32_t t = millis(); - switch(test) { - case 0: - Serial.println(F("Test of println(uint16_t)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - file.println(i); - } - break; + switch (test) { + case 0: + Serial.println(F("Test of println(uint16_t)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + file.println(i); + } + break; - case 1: - Serial.println(F("Test of printField(uint16_t, char)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - bp.printField(i, '\n'); - } - break; + case 1: + Serial.println(F("Test of printField(uint16_t, char)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + bp.printField(i, '\n'); + } + break; - case 2: - Serial.println(F("Test of println(uint32_t)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - file.println(12345678UL + i); - } - break; + case 2: + Serial.println(F("Test of println(uint32_t)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + file.println(12345678UL + i); + } + break; - case 3: - Serial.println(F("Test of printField(uint32_t, char)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - bp.printField(12345678UL + i, '\n'); - } - break; + case 3: + Serial.println(F("Test of printField(uint32_t, char)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + bp.printField(12345678UL + i, '\n'); + } + break; - case 4: - Serial.println(F("Test of println(double)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - file.println((double)0.01*i); - } - break; - - case 5: - Serial.println(F("Test of printField(double, char)")); - for (uint16_t i = 0; i < N_PRINT; i++) { - bp.printField((double)0.01*i, '\n'); - } - break; + case 4: + Serial.println(F("Test of println(double)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + file.println((double)0.01 * i); + } + break; + case 5: + Serial.println(F("Test of printField(double, char)")); + for (uint16_t i = 0; i < N_PRINT; i++) { + bp.printField((double)0.01 * i, '\n'); + } + break; } if (test & 1) { bp.sync(); @@ -125,13 +124,13 @@ void benchmark() { file.close(); t = millis() - t; Serial.print(F("Time ")); - Serial.print(0.001*t, 3); + Serial.print(0.001 * t, 3); Serial.println(F(" sec")); Serial.print(F("File size ")); - Serial.print(0.001*s); + Serial.print(0.001 * s); Serial.println(F(" KB")); Serial.print(F("Write ")); - Serial.print(s/t); + Serial.print(s / t); Serial.println(F(" KB/sec")); Serial.println(); } @@ -139,23 +138,23 @@ void benchmark() { //------------------------------------------------------------------------------ void testMemberFunctions() { BufferedPrint bp(&Serial); - char c = 'c'; // char + char c = 'c'; // char //#define BASIC_TYPES #ifdef BASIC_TYPES - signed char sc = -1; // signed 8-bit - unsigned char uc = 1; // unsiged 8-bit - signed short ss = -2; // signed 16-bit - unsigned short us = 2; // unsigned 16-bit - signed long sl = -4; // signed 32-bit - unsigned long ul = 4; // unsigned 32-bit -#else // BASIC_TYPES - int8_t sc = -1; // signed 8-bit - uint8_t uc = 1; // unsiged 8-bit - int16_t ss = -2; // signed 16-bit - uint16_t us = 2; // unsigned 16-bit - int32_t sl = -4; // signed 32-bit - uint32_t ul = 4; // unsigned 32-bit -#endif // BASIC_TYPES + signed char sc = -1; // signed 8-bit + unsigned char uc = 1; // unsiged 8-bit + signed short ss = -2; // signed 16-bit + unsigned short us = 2; // unsigned 16-bit + signed long sl = -4; // signed 32-bit + unsigned long ul = 4; // unsigned 32-bit +#else // BASIC_TYPES + int8_t sc = -1; // signed 8-bit + uint8_t uc = 1; // unsiged 8-bit + int16_t ss = -2; // signed 16-bit + uint16_t us = 2; // unsigned 16-bit + int32_t sl = -4; // signed 32-bit + uint32_t ul = 4; // unsigned 32-bit +#endif // BASIC_TYPES float f = -1.234; double d = -5.678; bp.println(); @@ -216,9 +215,11 @@ void testMemberFunctions() { //------------------------------------------------------------------------------ void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } Serial.println("Type any character to begin."); - while(!Serial.available()) {} + while (!Serial.available()) { + } if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } @@ -226,10 +227,10 @@ void setup() { Serial.println(F("Test member funcions:")); testMemberFunctions(); Serial.println(); - Serial.println(F("Benchmark performance for uint16_t, uint32_t, and double:")); + Serial.println( + F("Benchmark performance for uint16_t, uint32_t, and double:")); benchmark(); Serial.println("Done"); } //------------------------------------------------------------------------------ -void loop() { -} \ No newline at end of file +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/DirectoryFunctions/DirectoryFunctions.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/DirectoryFunctions/DirectoryFunctions.ino similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/DirectoryFunctions/DirectoryFunctions.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/DirectoryFunctions/DirectoryFunctions.ino index 008d1fb9..455578e9 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/DirectoryFunctions/DirectoryFunctions.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/DirectoryFunctions/DirectoryFunctions.ino @@ -6,7 +6,7 @@ // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -18,19 +18,19 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +const uint8_t SD_CS_PIN = 4; +#else // SDCARD_SS_PIN // Assume built-in SD is used. -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +const uint8_t SD_CS_PIN = 4; #endif // SDCARD_SS_PIN // Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. -#define SPI_CLOCK SD_SCK_MHZ(50) +#define SPI_CLOCK SD_SCK_MHZ(16) // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -78,9 +78,8 @@ void setup() { if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } - if (sd.exists("Folder1") - || sd.exists("Folder1/file1.txt") - || sd.exists("Folder1/File2.txt")) { + if (sd.exists("Folder1") || sd.exists("Folder1/file1.txt") || + sd.exists("Folder1/File2.txt")) { error("Please remove existing Folder1, file1.txt, and File2.txt"); } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/ExFatLogger/ExFatLogger.h b/extra-libraries/ESP32/SdFat-2.2.3/examples/ExFatLogger/ExFatLogger.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/ExFatLogger/ExFatLogger.h rename to extra-libraries/ESP32/SdFat-2.2.3/examples/ExFatLogger/ExFatLogger.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/ExFatLogger/ExFatLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/ExFatLogger/ExFatLogger.ino similarity index 94% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/ExFatLogger/ExFatLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/ExFatLogger/ExFatLogger.ino index aa11284c..f3a6c55d 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/ExFatLogger/ExFatLogger.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/ExFatLogger/ExFatLogger.ino @@ -3,9 +3,9 @@ // // The maximum data rate will depend on the quality of your SD, // the size of the FIFO, and using dedicated SPI. -#include "SdFat.h" -#include "FreeStack.h" #include "ExFatLogger.h" +#include "FreeStack.h" +#include "SdFat.h" //------------------------------------------------------------------------------ // This example was designed for exFAT but will support FAT16/FAT32. // Note: Uno will not support SD_FAT_TYPE = 3. @@ -45,7 +45,7 @@ const uint32_t LOG_INTERVAL_USEC = 2000; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -71,7 +71,7 @@ const uint32_t PREALLOCATE_SIZE_MiB = 1024UL; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -127,11 +127,11 @@ void printRecord(Print* pr, data_t* data) { } } //============================================================================== -const uint64_t PREALLOCATE_SIZE = (uint64_t)PREALLOCATE_SIZE_MiB << 20; +const uint64_t PREALLOCATE_SIZE = (uint64_t)PREALLOCATE_SIZE_MiB << 20; // Max length of file name including zero byte. #define FILE_NAME_DIM 40 // Max number of records to buffer while SD is busy. -const size_t FIFO_DIM = 512*FIFO_SIZE_SECTORS/sizeof(data_t); +const size_t FIFO_DIM = 512 * FIFO_SIZE_SECTORS / sizeof(data_t); #if SD_FAT_TYPE == 0 typedef SdFat sd_t; @@ -191,22 +191,22 @@ void binaryToCsv() { data_t binData[FIFO_DIM]; if (!binFile.seekSet(512)) { - error("binFile.seek failed"); + error("binFile.seek failed"); } uint32_t tPct = millis(); printRecord(&csvFile, nullptr); while (!Serial.available() && binFile.available()) { int nb = binFile.read(binData, sizeof(binData)); - if (nb <= 0 ) { + if (nb <= 0) { error("read binFile failed"); } - size_t nr = nb/sizeof(data_t); + size_t nr = nb / sizeof(data_t); for (size_t i = 0; i < nr; i++) { printRecord(&csvFile, &binData[i]); } if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); + uint8_t pct = binFile.curPosition() / (binFile.fileSize() / 100); if (pct != lastPct) { tPct = millis(); lastPct = pct; @@ -221,7 +221,7 @@ void binaryToCsv() { } csvFile.close(); Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); + Serial.print(0.001 * (millis() - t0)); Serial.println(F(" Seconds")); } //------------------------------------------------------------------------------ @@ -302,7 +302,7 @@ void logData() { uint16_t overrun = 0; uint16_t maxOverrun = 0; uint32_t totalOverrun = 0; - uint32_t fifoBuf[128*FIFO_SIZE_SECTORS]; + uint32_t fifoBuf[128 * FIFO_SIZE_SECTORS]; data_t* fifoData = (data_t*)fifoBuf; // Write dummy sector to start multi-block write. @@ -315,7 +315,8 @@ void logData() { Serial.println(F("Type any character to stop")); // Wait until SD is not busy. - while (sd.card()->isBusy()) {} + while (sd.card()->isBusy()) { + } // Start time for log file. uint32_t m = millis(); @@ -370,9 +371,9 @@ void logData() { if (!sd.card()->isBusy()) { size_t nw = fifoHead > fifoTail ? fifoCount : FIFO_DIM - fifoTail; // Limit write time by not writing more than 512 bytes. - const size_t MAX_WRITE = 512/sizeof(data_t); + const size_t MAX_WRITE = 512 / sizeof(data_t); if (nw > MAX_WRITE) nw = MAX_WRITE; - size_t nb = nw*sizeof(data_t); + size_t nb = nw * sizeof(data_t); uint32_t usec = micros(); if (nb != binFile.write(fifoData + fifoTail, nb)) { error("write binFile failed"); @@ -392,7 +393,7 @@ void logData() { } } Serial.print(F("\nLog time: ")); - Serial.print(0.001*(millis() - m)); + Serial.print(0.001 * (millis() - m)); Serial.println(F(" Seconds")); binFile.truncate(); binFile.sync(); @@ -469,7 +470,7 @@ void printUnusedStack() { //------------------------------------------------------------------------------ bool serialReadLine(char* str, size_t size) { size_t n = 0; - while(!Serial.available()) { + while (!Serial.available()) { yield(); } while (true) { @@ -481,7 +482,8 @@ bool serialReadLine(char* str, size_t size) { return false; } uint32_t m = millis(); - while (!Serial.available() && (millis() - m) < 100){} + while (!Serial.available() && (millis() - m) < 100) { + } if (!Serial.available()) break; } str[n] = 0; @@ -525,9 +527,9 @@ void setup() { } FillStack(); #if !ENABLE_DEDICATED_SPI - Serial.println(F( - "\nFor best performance edit SdFatConfig.h\n" - "and set ENABLE_DEDICATED_SPI nonzero")); + Serial.println( + F("\nFor best performance edit SdFatConfig.h\n" + "and set ENABLE_DEDICATED_SPI nonzero")); #endif // !ENABLE_DEDICATED_SPI Serial.print(FIFO_DIM); @@ -567,7 +569,7 @@ void loop() { Serial.println(F("p - print data to Serial")); Serial.println(F("r - record data")); Serial.println(F("t - test without logging")); - while(!Serial.available()) { + while (!Serial.available()) { yield(); } char c = tolower(Serial.read()); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino similarity index 73% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino index 3b03eb6f..1e8a7e9d 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/MinimumSizeSdReader/MinimumSizeSdReader.ino @@ -14,7 +14,8 @@ File file; #include "SdFat.h" // Setting ENABLE_DEDICATED_SPI to zero saves over 200 more bytes. #if ENABLE_DEDICATED_SPI -#warning "Set ENABLE_DEDICATED_SPI zero in SdFat/src/SdFatConfig.h for minimum size" +#warning \ + "Set ENABLE_DEDICATED_SPI zero in SdFat/src/SdFatConfig.h for minimum size" #endif // ENABLE_DEDICATED_SPI // Insure FAT16/FAT32 only. SdFat32 SD; @@ -24,17 +25,19 @@ FatFile file; void error(const char* msg) { Serial.println(msg); - while(true); + while (true) { + } } - void setup() { int n; char buf[4]; Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } Serial.println("Type any character to begin"); - while (!Serial.available()) {} + while (!Serial.available()) { + } if (!SD.begin(CS_PIN)) error("SD.begin"); @@ -47,12 +50,11 @@ void setup() { if (!file.openExistingSFN(SFN_PATH)) error("open"); #endif while ((n = file.read(buf, sizeof(buf)))) { - Serial.write(buf, n); + Serial.write(buf, n); } -// close() is only needed if you write to the file. For example, read -// config data, modify the data, rewind the file and write the data. -// file.close(); + // close() is only needed if you write to the file. For example, read + // config data, modify the data, rewind the file and write the data. + // file.close(); } -void loop() { -} +void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/OpenNext/OpenNext.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/OpenNext/OpenNext.ino similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/OpenNext/OpenNext.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/OpenNext/OpenNext.ino index 6ca5426f..16687260 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/OpenNext/OpenNext.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/OpenNext/OpenNext.ino @@ -5,7 +5,7 @@ // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -17,19 +17,19 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +const uint8_t SD_CS_PIN = 4; +#else // SDCARD_SS_PIN // Assume built-in SD is used. -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +const uint8_t SD_CS_PIN = 4; #endif // SDCARD_SS_PIN // Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. -#define SPI_CLOCK SD_SCK_MHZ(50) +#define SPI_CLOCK SD_SCK_MHZ(30) // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -75,8 +75,12 @@ void setup() { if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } - // Open root directory - if (!dir.open("/")){ + +} +//------------------------------------------------------------------------------ +void loop() { + // Open root directory + if (!dir.open("/")) { error("dir.open failed"); } // Open next file in root. @@ -100,6 +104,7 @@ void setup() { } else { Serial.println("Done!"); } -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file + dir.close(); + delay(2000); + + } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/QuickStart/QuickStart.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/QuickStart/QuickStart.ino similarity index 78% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/QuickStart/QuickStart.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/QuickStart/QuickStart.ino index f69adf93..eb884ab7 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/QuickStart/QuickStart.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/QuickStart/QuickStart.ino @@ -1,6 +1,7 @@ // Quick hardware test for SPI card access. // #include + #include "SdFat.h" #include "sdios.h" @@ -81,17 +82,17 @@ void setup() { if (DISABLE_CHIP_SELECT < 0) { cout << F( - "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" - "a second SPI device. For example, with the Ethernet\n" - "shield, DISABLE_CHIP_SELECT should be set to 10\n" - "to disable the Ethernet controller.\n"); + "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" + "a second SPI device. For example, with the Ethernet\n" + "shield, DISABLE_CHIP_SELECT should be set to 10\n" + "to disable the Ethernet controller.\n"); } cout << F( - "\nSD chip select is the key hardware option.\n" - "Common values are:\n" - "Arduino Ethernet shield, pin 4\n" - "Sparkfun SD shield, pin 8\n" - "Adafruit SD shields and modules, pin 10\n"); + "\nSD chip select is the key hardware option.\n" + "Common values are:\n" + "Arduino Ethernet shield, pin 4\n" + "Sparkfun SD shield, pin 8\n" + "Adafruit SD shields and modules, pin 10\n"); } bool firstTry = true; @@ -117,8 +118,8 @@ void loop() { } if (DISABLE_CHIP_SELECT < 0) { cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); + "\nAssuming the SD is the only SPI device.\n" + "Edit DISABLE_CHIP_SELECT to disable another device.\n"); } else { cout << F("\nDisabling SPI device on pin "); cout << int(DISABLE_CHIP_SELECT) << endl; @@ -128,12 +129,12 @@ void loop() { if (!sd.begin(chipSelect, SPI_SPEED)) { if (sd.card()->errorCode()) { cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is chipSelect set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - "Is there a wiring/soldering problem?\n"); + "\nSD initialization failed.\n" + "Do not reformat the card!\n" + "Is the card correctly inserted?\n" + "Is chipSelect set to the correct value?\n" + "Does another SPI device need to be disabled?\n" + "Is there a wiring/soldering problem?\n"); cout << F("\nerrorCode: ") << hex << showbase; cout << int(sd.card()->errorCode()); cout << F(", errorData: ") << int(sd.card()->errorData()); @@ -142,7 +143,7 @@ void loop() { } cout << F("\nCard successfully initialized.\n"); if (sd.vol()->fatType() == 0) { - cout << F("Can't find a valid FAT16/FAT32 partition.\n"); + cout << F("Can't find a valid FAT16/FAT32/exFAT partition.\n"); reformatMsg(); return; } @@ -162,15 +163,19 @@ void loop() { cout << F("Card size: ") << sizeMB; cout << F(" MB (MB = 1,000,000 bytes)\n"); cout << endl; - cout << F("Volume is FAT") << int(sd.vol()->fatType()); + if (sd.fatType() <= 32) { + cout << F("\nVolume is FAT") << int(sd.fatType()); + } else { + cout << F("\nVolume is exFAT"); + } cout << F(", Cluster size (bytes): ") << sd.vol()->bytesPerCluster(); cout << endl << endl; cout << F("Files found (date time size name):\n"); sd.ls(LS_R | LS_DATE | LS_SIZE); - if ((sizeMB > 1100 && sd.vol()->sectorsPerCluster() < 64) - || (sizeMB < 2200 && sd.vol()->fatType() == 32)) { + if ((sizeMB > 1100 && sd.vol()->sectorsPerCluster() < 64) || + (sizeMB < 2200 && sd.vol()->fatType() == 32)) { cout << F("\nThis card should be reformatted for best performance.\n"); cout << F("Use a cluster size of 32 KB for cards larger than 1 GB.\n"); cout << F("Only cards larger than 2 GB should be formatted FAT32.\n"); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/ReadCsvFile/ReadCsvFile.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/ReadCsvFile/ReadCsvFile.ino similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/ReadCsvFile/ReadCsvFile.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/ReadCsvFile/ReadCsvFile.ino index efe20ab3..7fb61cad 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/ReadCsvFile/ReadCsvFile.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/ReadCsvFile/ReadCsvFile.ino @@ -2,7 +2,7 @@ // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -15,7 +15,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -26,7 +26,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -127,10 +127,10 @@ void setup() { error("open failed"); } // Write test data. - file.print(F( - "abc,123,456,7.89\r\n" - "def,-321,654,-9.87\r\n" - "ghi,333,0xff,5.55")); + file.print( + F("abc,123,456,7.89\r\n" + "def,-321,654,-9.87\r\n" + "ghi,333,0xff,5.55")); // Rewind file for read. file.rewind(); @@ -140,7 +140,7 @@ void setup() { if (n <= 0) { error("fgets failed"); } - if (line[n-1] != '\n' && n == (sizeof(line) - 1)) { + if (line[n - 1] != '\n' && n == (sizeof(line) - 1)) { error("line too long"); } if (!parseLine(line)) { @@ -152,5 +152,4 @@ void setup() { Serial.println(F("Done")); } -void loop() { -} +void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/RtcTimestampTest/RtcTimestampTest.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/RtcTimestampTest/RtcTimestampTest.ino similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/RtcTimestampTest/RtcTimestampTest.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/RtcTimestampTest/RtcTimestampTest.ino index f18f00c6..3e5e5a74 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/RtcTimestampTest/RtcTimestampTest.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/RtcTimestampTest/RtcTimestampTest.ino @@ -13,7 +13,7 @@ // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -26,7 +26,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -37,7 +37,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -59,7 +59,6 @@ FsFile file; #error Invalid SD_FAT_TYPE #endif // SD_FAT_TYPE - #if RTC_TYPE == 0 RTC_Millis rtc; #elif RTC_TYPE == 1 @@ -108,12 +107,12 @@ void getLine(char* line, size_t size) { while (true) { t = millis() + 10; while (!Serial.available()) { - if (millis() > t){ + if (millis() > t) { return; } } int c = Serial.read(); - if (i >= (size - 1) || c == '\r' || c == '\n' ) { + if (i >= (size - 1) || c == '\r' || c == '\n') { return; } line[i++] = c; @@ -134,11 +133,11 @@ void printField(Print* pr, char sep, uint8_t v) { void printNow(Print* pr) { DateTime now = rtc.now(); pr->print(now.year()); - printField(pr, '-',now.month()); - printField(pr, '-',now.day()); - printField(pr, ' ',now.hour()); - printField(pr, ':',now.minute()); - printField(pr, ':',now.second()); + printField(pr, '-', now.month()); + printField(pr, '-', now.day()); + printField(pr, ' ', now.hour()); + printField(pr, ':', now.minute()); + printField(pr, ':', now.second()); } //------------------------------------------------------------------------------ bool setRtc() { @@ -180,7 +179,7 @@ void setup() { } #if RTC_TYPE == 0 rtc.begin(DateTime(F(__DATE__), F(__TIME__))); -#else // RTC_TYPE +#else // RTC_TYPE if (!rtc.begin()) { Serial.println(F("rtc.begin failed")); return; @@ -201,7 +200,8 @@ void setup() { Serial.println(); clearSerialInput(); Serial.println(F("Type Y to set RTC, any other character to continue")); - while (!Serial.available()) {} + while (!Serial.available()) { + } if (Serial.read() != 'Y') break; if (setRtc()) break; } @@ -232,5 +232,4 @@ void setup() { Serial.println(F("Done")); } //------------------------------------------------------------------------------ -void loop() { -} \ No newline at end of file +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/SdErrorCodes/SdErrorCodes.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/SdErrorCodes/SdErrorCodes.ino similarity index 95% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/SdErrorCodes/SdErrorCodes.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/SdErrorCodes/SdErrorCodes.ino index bd22217f..458d37c7 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/SdErrorCodes/SdErrorCodes.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/SdErrorCodes/SdErrorCodes.ino @@ -2,7 +2,8 @@ #include "SdFat.h" void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } delay(1000); Serial.println(); Serial.println(F("Code,Symbol - failed operation")); diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/SdFormatter/SdFormatter.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/SdFormatter/SdFormatter.ino similarity index 80% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/SdFormatter/SdFormatter.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/SdFormatter/SdFormatter.ino index 18db8cfb..6cfd37be 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/SdFormatter/SdFormatter.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/SdFormatter/SdFormatter.ino @@ -31,7 +31,7 @@ const int8_t DISABLE_CS_PIN = -1; // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -42,7 +42,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -52,14 +52,18 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; ArduinoOutStream cout(Serial); //------------------------------------------------------------------------------ uint32_t cardSectorCount = 0; -uint8_t sectorBuffer[512]; +uint8_t sectorBuffer[512]; //------------------------------------------------------------------------------ // SdCardFactory constructs and initializes the appropriate card. SdCardFactory cardFactory; // Pointer to generic SD card. SdCard* m_card = nullptr; //------------------------------------------------------------------------------ -#define sdError(msg) {cout << F("error: ") << F(msg) << endl; sdErrorHalt();} +#define sdError(msg) \ + { \ + cout << F("error: ") << F(msg) << endl; \ + sdErrorHalt(); \ + } //------------------------------------------------------------------------------ void sdErrorHalt() { if (!m_card) { @@ -73,7 +77,8 @@ void sdErrorHalt() { cout << F(" = ") << int(m_card->errorCode()) << endl; cout << F("SD errorData = ") << int(m_card->errorData()) << endl; } - while (true) {} + while (true) { + } } //------------------------------------------------------------------------------ void clearSerialInput() { @@ -102,7 +107,7 @@ void eraseCard() { sdError("erase failed"); } cout << '.'; - if ((n++)%64 == 63) { + if ((n++) % 64 == 63) { cout << endl; } firstBlock += ERASE_SIZE; @@ -123,9 +128,9 @@ void formatCard() { FatFormatter fatFormatter; // Format exFAT if larger than 32GB. - bool rtn = cardSectorCount > 67108864 ? - exFatFormatter.format(m_card, sectorBuffer, &Serial) : - fatFormatter.format(m_card, sectorBuffer, &Serial); + bool rtn = cardSectorCount > 67108864 + ? exFatFormatter.format(m_card, sectorBuffer, &Serial) + : fatFormatter.format(m_card, sectorBuffer, &Serial); if (!rtn) { sdErrorHalt(); @@ -136,8 +141,8 @@ void formatCard() { void printConfig(SdSpiConfig config) { if (DISABLE_CS_PIN < 0) { cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CS_PIN to disable an SPI device.\n"); + "\nAssuming the SD is the only SPI device.\n" + "Edit DISABLE_CS_PIN to disable an SPI device.\n"); } else { cout << F("\nDisabling SPI device on pin "); cout << int(DISABLE_CS_PIN) << endl; @@ -169,19 +174,19 @@ void setup() { clearSerialInput(); cout << F( - "\n" - "This program can erase and/or format SD/SDHC/SDXC cards.\n" - "\n" - "Erase uses the card's fast flash erase command.\n" - "Flash erase sets all data to 0X00 for most cards\n" - "and 0XFF for a few vendor's cards.\n" - "\n" - "Cards up to 2 GiB (GiB = 2^30 bytes) will be formated FAT16.\n" - "Cards larger than 2 GiB and up to 32 GiB will be formatted\n" - "FAT32. Cards larger than 32 GiB will be formatted exFAT.\n" - "\n" - "Warning, all data on the card will be erased.\n" - "Enter 'Y' to continue: "); + "\n" + "This program can erase and/or format SD/SDHC/SDXC cards.\n" + "\n" + "Erase uses the card's fast flash erase command.\n" + "Flash erase sets all data to 0X00 for most cards\n" + "and 0XFF for a few vendor's cards.\n" + "\n" + "Cards up to 2 GiB (GiB = 2^30 bytes) will be formated FAT16.\n" + "Cards larger than 2 GiB and up to 32 GiB will be formatted\n" + "FAT32. Cards larger than 32 GiB will be formatted exFAT.\n" + "\n" + "Warning, all data on the card will be erased.\n" + "Enter 'Y' to continue: "); while (!Serial.available()) { yield(); } @@ -207,9 +212,9 @@ void setup() { return; } - cout << F("\nCard size: ") << cardSectorCount*5.12e-7; + cout << F("\nCard size: ") << cardSectorCount * 5.12e-7; cout << F(" GB (GB = 1E9 bytes)\n"); - cout << F("Card size: ") << cardSectorCount/2097152.0; + cout << F("Card size: ") << cardSectorCount / 2097152.0; cout << F(" GiB (GiB = 2^30 bytes)\n"); cout << F("Card will be formated "); @@ -221,13 +226,13 @@ void setup() { cout << F("FAT16\n"); } cout << F( - "\n" - "Options are:\n" - "E - erase the card and skip formatting.\n" - "F - erase and then format the card. (recommended)\n" - "Q - quick format the card without erase.\n" - "\n" - "Enter option: "); + "\n" + "Options are:\n" + "E - erase the card and skip formatting.\n" + "F - erase and then format the card. (recommended)\n" + "Q - quick format the card without erase.\n" + "\n" + "Enter option: "); while (!Serial.available()) { yield(); @@ -245,5 +250,4 @@ void setup() { formatCard(); } } -void loop() { -} \ No newline at end of file +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/SdInfo/SdInfo.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/SdInfo/SdInfo.ino similarity index 67% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/SdInfo/SdInfo.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/SdInfo/SdInfo.ino index 44410b60..5edbbad4 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/SdInfo/SdInfo.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/SdInfo/SdInfo.ino @@ -1,5 +1,10 @@ /* * This program attempts to initialize an SD card and analyze its structure. + * The CID and CSD registers are also printed in HEX for use in online + * decoders like these. + * + * https://gurumeditation.org/1342/sd-memory-card-register-decoder/ + * https://archive.goughlui.com/static/multicid.htm */ #include "SdFat.h" #include "sdios.h" @@ -19,9 +24,9 @@ const int8_t DISABLE_CS_PIN = -1; */ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN -const uint8_t SD_CS_PIN = SDCARD_SS_PIN; +const uint8_t SD_CS_PIN = 4; +#else // SDCARD_SS_PIN +const uint8_t SD_CS_PIN = 4; #endif // SDCARD_SS_PIN // Try to select the best SD card configuration. @@ -35,28 +40,28 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; //------------------------------------------------------------------------------ SdFs sd; -cid_t m_cid; -csd_t m_csd; -uint32_t m_eraseSize; -uint32_t m_ocr; +cid_t cid; +csd_t csd; +scr_t scr; +uint8_t cmd6Data[64]; +uint32_t eraseSize; +uint32_t ocr; static ArduinoOutStream cout(Serial); //------------------------------------------------------------------------------ -bool cidDmp() { +void cidDmp() { cout << F("\nManufacturer ID: "); - cout << uppercase << showbase << hex << int(m_cid.mid) << dec << endl; - cout << F("OEM ID: ") << m_cid.oid[0] << m_cid.oid[1] << endl; + cout << uppercase << showbase << hex << int(cid.mid) << dec << endl; + cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; cout << F("Product: "); for (uint8_t i = 0; i < 5; i++) { - cout << m_cid.pnm[i]; + cout << cid.pnm[i]; } - cout << F("\nVersion: "); - cout << int(m_cid.prv_n) << '.' << int(m_cid.prv_m) << endl; - cout << F("Serial number: ") << hex << m_cid.psn << dec << endl; + cout << F("\nRevision: ") << cid.prvN() << '.' << cid.prvM() << endl; + cout << F("Serial number: ") << hex << cid.psn() << dec << endl; cout << F("Manufacturing date: "); - cout << int(m_cid.mdt_month) << '/'; - cout << (2000 + 16*m_cid.mdt_year_high + m_cid.mdt_year_low) << endl; - cout << endl; - return true; + cout << cid.mdtMonth() << '/' << cid.mdtYear() << endl; + cout << F("CID HEX: "); + hexDmp(&cid, sizeof(cid)); } //------------------------------------------------------------------------------ void clearSerialInput() { @@ -68,30 +73,26 @@ void clearSerialInput() { } while (micros() - m < 10000); } //------------------------------------------------------------------------------ -bool csdDmp() { - bool eraseSingleBlock; - if (m_csd.v1.csd_ver == 0) { - eraseSingleBlock = m_csd.v1.erase_blk_en; - m_eraseSize = (m_csd.v1.sector_size_high << 1) | m_csd.v1.sector_size_low; - } else if (m_csd.v2.csd_ver == 1) { - eraseSingleBlock = m_csd.v2.erase_blk_en; - m_eraseSize = (m_csd.v2.sector_size_high << 1) | m_csd.v2.sector_size_low; - } else { - cout << F("m_csd version error\n"); - return false; - } - m_eraseSize++; - cout << F("cardSize: ") << 0.000512 * sdCardCapacity(&m_csd); +void csdDmp() { + eraseSize = csd.eraseSize(); + cout << F("\ncardSize: ") << 0.000512 * csd.capacity(); cout << F(" MB (MB = 1,000,000 bytes)\n"); - cout << F("flashEraseSize: ") << int(m_eraseSize) << F(" blocks\n"); + cout << F("flashEraseSize: ") << int(eraseSize) << F(" blocks\n"); cout << F("eraseSingleBlock: "); - if (eraseSingleBlock) { + if (csd.eraseSingleBlock()) { cout << F("true\n"); } else { cout << F("false\n"); } - return true; + cout << F("dataAfterErase: "); + if (scr.dataAfterErase()) { + cout << F("ones\n"); + } else { + cout << F("zeros\n"); + } + cout << F("CSD HEX: "); + hexDmp(&csd, sizeof(csd)); } //------------------------------------------------------------------------------ void errorPrint() { @@ -99,10 +100,19 @@ void errorPrint() { cout << F("SD errorCode: ") << hex << showbase; printSdErrorSymbol(&Serial, sd.sdErrorCode()); cout << F(" = ") << int(sd.sdErrorCode()) << endl; - cout << F("SD errorData = ") << int(sd.sdErrorData()) << endl; + cout << F("SD errorData = ") << int(sd.sdErrorData()) << dec << endl; } } //------------------------------------------------------------------------------ +void hexDmp(void* reg, uint8_t size) { + uint8_t* u8 = reinterpret_cast(reg); + cout << hex << noshowbase; + for (size_t i = 0; i < size; i++) { + cout << setw(2) << setfill('0') << int(u8[i]); + } + cout << dec << endl; +} +//------------------------------------------------------------------------------ bool mbrDmp() { MbrSector_t mbr; bool valid = true; @@ -114,18 +124,18 @@ bool mbrDmp() { cout << F("\nSD Partition Table\n"); cout << F("part,boot,bgnCHS[3],type,endCHS[3],start,length\n"); for (uint8_t ip = 1; ip < 5; ip++) { - MbrPart_t *pt = &mbr.part[ip - 1]; + MbrPart_t* pt = &mbr.part[ip - 1]; if ((pt->boot != 0 && pt->boot != 0X80) || - getLe32(pt->relativeSectors) > sdCardCapacity(&m_csd)) { + getLe32(pt->relativeSectors) > csd.capacity()) { valid = false; } cout << int(ip) << ',' << uppercase << showbase << hex; cout << int(pt->boot) << ','; - for (int i = 0; i < 3; i++ ) { + for (int i = 0; i < 3; i++) { cout << int(pt->beginCHS[i]) << ','; } cout << int(pt->type) << ','; - for (int i = 0; i < 3; i++ ) { + for (int i = 0; i < 3; i++) { cout << int(pt->endCHS[i]) << ','; } cout << dec << getLe32(pt->relativeSectors) << ','; @@ -139,25 +149,26 @@ bool mbrDmp() { //------------------------------------------------------------------------------ void dmpVol() { cout << F("\nScanning FAT, please wait.\n"); - uint32_t freeClusterCount = sd.freeClusterCount(); + int32_t freeClusterCount = sd.freeClusterCount(); if (sd.fatType() <= 32) { cout << F("\nVolume is FAT") << int(sd.fatType()) << endl; } else { cout << F("\nVolume is exFAT\n"); } cout << F("sectorsPerCluster: ") << sd.sectorsPerCluster() << endl; - cout << F("clusterCount: ") << sd.clusterCount() << endl; - cout << F("freeClusterCount: ") << freeClusterCount << endl; cout << F("fatStartSector: ") << sd.fatStartSector() << endl; cout << F("dataStartSector: ") << sd.dataStartSector() << endl; - if (sd.dataStartSector() % m_eraseSize) { - cout << F("Data area is not aligned on flash erase boundary!\n"); - cout << F("Download and use formatter from www.sdcard.org!\n"); + cout << F("clusterCount: ") << sd.clusterCount() << endl; + cout << F("freeClusterCount: "); + if (freeClusterCount >= 0) { + cout << freeClusterCount << endl; + } else { + cout << F("failed\n"); + errorPrint(); } } //------------------------------------------------------------------------------ void printCardType() { - cout << F("\nCard type: "); switch (sd.card()->type()) { @@ -170,7 +181,7 @@ void printCardType() { break; case SD_CARD_TYPE_SDHC: - if (sdCardCapacity(&m_csd) < 70000000) { + if (csd.capacity() < 70000000) { cout << F("SDHC\n"); } else { cout << F("SDXC\n"); @@ -185,8 +196,8 @@ void printCardType() { void printConfig(SdSpiConfig config) { if (DISABLE_CS_PIN < 0) { cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CS_PIN to disable an SPI device.\n"); + "\nAssuming the SD is the only SPI device.\n" + "Edit DISABLE_CS_PIN to disable an SPI device.\n"); } else { cout << F("\nDisabling SPI device on pin "); cout << int(DISABLE_CS_PIN) << endl; @@ -210,7 +221,6 @@ void setup() { } cout << F("SdFat version: ") << SD_FAT_VERSION_STR << endl; printConfig(SD_CONFIG); - } //------------------------------------------------------------------------------ void loop() { @@ -225,34 +235,40 @@ void loop() { uint32_t t = millis(); if (!sd.cardBegin(SD_CONFIG)) { cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is there a wiring/soldering problem?\n"); + "\nSD initialization failed.\n" + "Do not reformat the card!\n" + "Is the card correctly inserted?\n" + "Is there a wiring/soldering problem?\n"); if (isSpi(SD_CONFIG)) { cout << F( - "Is SD_CS_PIN set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - ); + "Is SD_CS_PIN set to the correct value?\n" + "Does another SPI device need to be disabled?\n"); } errorPrint(); return; } t = millis() - t; - cout << F("init time: ") << t << " ms" << endl; + cout << F("init time: ") << dec << t << " ms" << endl; - if (!sd.card()->readCID(&m_cid) || - !sd.card()->readCSD(&m_csd) || - !sd.card()->readOCR(&m_ocr)) { + if (!sd.card()->readCID(&cid) || !sd.card()->readCSD(&csd) || + !sd.card()->readOCR(&ocr) || !sd.card()->readSCR(&scr)) { cout << F("readInfo failed\n"); errorPrint(); return; } printCardType(); + cout << F("sdSpecVer: ") << 0.01 * scr.sdSpecVer() << endl; + cout << F("HighSpeedMode: "); + if (scr.sdSpecVer() > 101 && sd.card()->cardCMD6(0X00FFFFFF, cmd6Data) && + (2 & cmd6Data[13])) { + cout << F("true\n"); + } else { + cout << F("false\n"); + } cidDmp(); csdDmp(); cout << F("\nOCR: ") << uppercase << showbase; - cout << hex << m_ocr << dec << endl; + cout << hex << ocr << dec << endl; if (!mbrDmp()) { return; } @@ -262,4 +278,4 @@ void loop() { return; } dmpVol(); -} \ No newline at end of file +} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/SoftwareSpi/SoftwareSpi.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/SoftwareSpi/SoftwareSpi.ino similarity index 96% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/SoftwareSpi/SoftwareSpi.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/SoftwareSpi/SoftwareSpi.ino index b9559658..1300cfa0 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/SoftwareSpi/SoftwareSpi.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/SoftwareSpi/SoftwareSpi.ino @@ -8,7 +8,7 @@ // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 // // Chip select may be constant or RAM variable. const uint8_t SD_CS_PIN = 10; @@ -16,7 +16,7 @@ const uint8_t SD_CS_PIN = 10; // Pin numbers in templates must be constants. const uint8_t SOFT_MISO_PIN = 12; const uint8_t SOFT_MOSI_PIN = 11; -const uint8_t SOFT_SCK_PIN = 13; +const uint8_t SOFT_SCK_PIN = 13; // SdFat software SPI template SoftSpiDriver softSpi; @@ -77,4 +77,4 @@ void setup() { void loop() {} #else // SPI_DRIVER_SELECT #error SPI_DRIVER_SELECT must be two in SdFat/SdFatConfig.h -#endif //SPI_DRIVER_SELECT \ No newline at end of file +#endif // SPI_DRIVER_SELECT \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.2.3/examples/SpiLoopBackTest/SpiLoopBackTest.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/SpiLoopBackTest/SpiLoopBackTest.ino new file mode 100644 index 00000000..88101a08 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/SpiLoopBackTest/SpiLoopBackTest.ino @@ -0,0 +1,66 @@ +// This is a simple SPI loop-back test. +// +// Connect SD_MISO to SD_MOSI +// +// Modify these defines for your configuration. +#define SD_SPI SPI +#define SD_MISO MISO +#define SD_MOSI MOSI + +#include "SPI.h" +void setup() { + uint8_t rx, tx; + Serial.begin(9600); + while (!Serial) { + yield(); + } + Serial.println(F("\nType any character to start")); + while (!Serial.available()) { + yield(); + } + Serial.print("Begin, SD_MISO: "); + Serial.print(SD_MISO), Serial.print(", SD_MOSI: "); + Serial.println(SD_MOSI); + pinMode(SD_MISO, INPUT_PULLUP); + pinMode(SD_MOSI, OUTPUT); + digitalWrite(SD_MOSI, HIGH); + if (!digitalRead(SD_MISO)) { + Serial.println("Error: SD_MISO not HIGH"); + goto fail; + } + digitalWrite(SD_MOSI, LOW); + if (digitalRead(SD_MISO)) { + Serial.println("Error: SD_MISO not LOW"); + goto fail; + } + pinMode(SD_MISO, INPUT); + pinMode(SD_MOSI, INPUT); + + // Modify if SD_SPI.begin has arguments and use this style SdFat begin call: + // sd.begin(SdSpiConfig(CS_PIN, USER_SPI_BEGIN | , &SD_SPI)); + SD_SPI.begin(); + + // Start with a 400 kHz clock. Try full speed if success for 400 kHz. + SD_SPI.beginTransaction(SPISettings(400000, MSBFIRST, SPI_MODE0)); + tx = 0; + do { + rx = SD_SPI.transfer(tx); + if (tx != rx) { + Serial.print("Error rx: 0x"); + Serial.print(rx, HEX); + Serial.print(" != tx: 0x"); + Serial.println(tx, HEX); + SD_SPI.endTransaction(); + goto fail; + } + } while (tx++ < 255); + SD_SPI.endTransaction(); + Serial.println("Success!"); + return; + +fail: + SD_SPI.endTransaction(); + Serial.println("Is SD_MISO connected to SD_MOSI?"); + Serial.println("Are SD_MISO and SD_MOSI correct?"); +} +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino similarity index 56% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino index f017a19e..ad491f4a 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensyDmaAdcLogger/TeensyDmaAdcLogger.ino @@ -1,14 +1,20 @@ // Test of Teensy exFAT DMA ADC logger. // This is mainly to test use of RingBuf in an ISR. +// This example only supports pins on the first ADC. +// it has only been tested on Teensy 3.6 and 4.1. // You should modify it for serious use as a data logger. // +#include "ADC.h" #include "DMAChannel.h" -#include "SdFat.h" #include "FreeStack.h" #include "RingBuf.h" +#include "SdFat.h" + +// Pin must be on first ADC. +#define ADC_PIN A0 // 400 sector RingBuf - could be larger on Teensy 4.1. -const size_t RING_BUF_SIZE = 400*512; +const size_t RING_BUF_SIZE = 400 * 512; // Preallocate 8GiB file. const uint64_t PRE_ALLOCATE_SIZE = 8ULL << 30; @@ -16,15 +22,19 @@ const uint64_t PRE_ALLOCATE_SIZE = 8ULL << 30; // Use FIFO SDIO. #define SD_CONFIG SdioConfig(FIFO_SDIO) +ADC adc; + DMAChannel dma(true); SdFs sd; FsFile file; -//------------------------------------------------------------------------------ + // Ping-pong DMA buffer. DMAMEM static uint16_t __attribute__((aligned(32))) dmaBuf[2][256]; -size_t dmaCount; + +// Count of DMA interrupts. +volatile size_t dmaCount; // RingBuf for 512 byte sectors. RingBuf rb; @@ -32,18 +42,26 @@ RingBuf rb; // Shared between ISR and background. volatile size_t maxBytesUsed; +// Overrun error for write to RingBuf. volatile bool overrun; //------------------------------------------------------------------------------ -//ISR. +// ISR for DMA. static void isr() { - if (rb.bytesFreeIsr() >= 512 && !overrun) { - rb.memcpyIn(dmaBuf[dmaCount & 1], 512); - dmaCount++; - if (rb.bytesUsed() > maxBytesUsed) { - maxBytesUsed = rb.bytesUsed(); + if (!overrun) { + // Clear cache for buffer filled by DMA to insure read from DMA memory. + arm_dcache_delete((void*)dmaBuf[dmaCount & 1], 512); + // Enable RingBuf functions to be called in ISR. + rb.beginISR(); + if (rb.write(dmaBuf[dmaCount & 1], 512) == 512) { + dmaCount++; + if (rb.bytesUsed() > maxBytesUsed) { + maxBytesUsed = rb.bytesUsed(); + } + } else { + overrun = true; } - } else { - overrun = true; + // End use of RingBuf functions in ISR. + rb.endISR(); } dma.clearComplete(); dma.clearInterrupt(); @@ -53,39 +71,7 @@ static void isr() { #endif // defined(__IMXRT1062__) } //------------------------------------------------------------------------------ -// Over-clocking will degrade quality - use only for stress testing. -void overclock() { -#if defined(__IMXRT1062__) // Teensy 4.0 - ADC1_CFG = - // High Speed Configuration - ADC_CFG_ADHSC | - // Sample period 3 clocks - ADC_CFG_ADSTS(0) | - // Input clock - ADC_CFG_ADIV(0) | - // Not selected - Long Sample Time Configuration - // ADC_CFG_ADLSMP | - // 12-bit - ADC_CFG_MODE(2) | - // Asynchronous clock - ADC_CFG_ADICLK(3); -#else // defined(__IMXRT1062__) - // Set 12 bit mode and max over-clock - ADC0_CFG1 = - // Clock divide select, 0=direct, 1=div2, 2=div4, 3=div8 - ADC_CFG1_ADIV(0) | - // Sample time configuration, 0=Short, 1=Long - // ADC_CFG1_ADLSMP | - // Conversion mode, 0=8 bit, 1=12 bit, 2=10 bit, 3=16 bit - ADC_CFG1_MODE(1) | - // Input clock, 0=bus, 1=bus/2, 2=OSCERCLK, 3=async - ADC_CFG1_ADICLK(0); - - ADC0_CFG2 = ADC_CFG2_MUXSEL | ADC_CFG2_ADLSTS(3); -#endif // defined(__IMXRT1062__) -} -//------------------------------------------------------------------------------ -#if defined(__IMXRT1062__) // Teensy 4.0 +#if defined(__IMXRT1062__) // Teensy 4.x #define SOURCE_SADDR ADC1_R0 #define SOURCE_EVENT DMAMUX_SOURCE_ADC1 #else @@ -93,54 +79,26 @@ void overclock() { #define SOURCE_EVENT DMAMUX_SOURCE_ADC0 #endif //------------------------------------------------------------------------------ -// Should replace ADC stuff with calls to Teensy ADC library. -// https://github.com/pedvide/ADC static void init(uint8_t pin) { - uint32_t adch; - uint32_t i, sum = 0; - // Actually, do many normal reads, to start with a nice DC level - for (i=0; i < 1024; i++) { - sum += analogRead(pin); - } -#if defined(__IMXRT1062__) // Teensy 4.0 - // save channel - adch = ADC1_HC0 & 0x1F; - // Continuous conversion , DMA enable - ADC1_GC = ADC_GC_ADCO | ADC_GC_DMAEN; - // start conversion - ADC1_HC0 = adch; -#else // defined(__IMXRT1062__) // Teensy 4.0 - // save channel - adch = ADC0_SC1A & 0x1F; - // DMA enable - ADC0_SC2 |= ADC_SC2_DMAEN; - // Continuous conversion enable - ADC0_SC3 = ADC_SC3_ADCO; - // Start ADC - ADC0_SC1A = adch; - #endif // defined(__IMXRT1062__) // Teensy 4.0 - // set up a DMA channel to store the ADC data - dma.attachInterrupt(isr); - dma.begin(); - dma.source((volatile const signed short &)SOURCE_SADDR); + dma.begin(); + dma.attachInterrupt(isr); + dma.source((volatile const signed short&)SOURCE_SADDR); dma.destinationBuffer((volatile uint16_t*)dmaBuf, sizeof(dmaBuf)); dma.interruptAtHalf(); dma.interruptAtCompletion(); - dma.triggerAtHardwareEvent(SOURCE_EVENT); - dma.enable(); + dma.triggerAtHardwareEvent(SOURCE_EVENT); + dma.enable(); + adc.adc0->enableDMA(); + adc.adc0->startContinuous(pin); } //------------------------------------------------------------------------------ void stopDma() { -#if defined(__IMXRT1062__) // Teensy 4.0 - ADC1_GC = 0; -#else // defined(__IMXRT1062__) - ADC0_SC3 = 0; -#endif // defined(__IMXRT1062__) + adc.adc0->disableDMA(); dma.disable(); } //------------------------------------------------------------------------------ void printTest(Print* pr) { - if (file.fileSize() < 1024*2) { + if (file.fileSize() < 1024 * 2) { return; } file.rewind(); @@ -153,7 +111,8 @@ void printTest(Print* pr) { for (size_t i = 0; i < 1024; i++) { pr->print(i); pr->print(','); - rb.memcpyOut(&data, 2); + // Test read with: template bool read(Type* data). + rb.read(&data); pr->println(data); } } @@ -192,36 +151,42 @@ void runTest(uint8_t pin) { } } stopDma(); - samplingTime = (micros() - samplingTime); + samplingTime = micros() - samplingTime; + if (!rb.sync()) { + Serial.println("sync() failed"); + file.close(); + return; + } if (!file.truncate()) { sd.errorHalt("truncate failed"); } if (overrun) { Serial.println("Overrun ERROR!!"); } + Serial.print("dmsCount "); + Serial.println(dmaCount); Serial.print("RingBufSize "); Serial.println(RING_BUF_SIZE); Serial.print("maxBytesUsed "); Serial.println(maxBytesUsed); Serial.print("fileSize "); - Serial.println((uint32_t)file.fileSize()); - Serial.print(0.000001*samplingTime); + file.printFileSize(&Serial); + Serial.println(); + Serial.print(0.000001 * samplingTime); Serial.println(" seconds"); - Serial.print(1.0*file.fileSize()/samplingTime, 3); + Serial.print(1.0 * file.fileSize() / samplingTime, 3); Serial.println(" MB/sec\n"); printTest(&Serial); file.close(); } //------------------------------------------------------------------------------ void waitSerial(const char* msg) { - uint32_t m = micros(); do { - if (Serial.read() >= 0) { - m = micros(); - } - } while (micros() - m < 10000); + delay(10); + } while (Serial.read() >= 0); Serial.println(msg); - while (!Serial.available()) {} + while (!Serial.available()) { + } Serial.println(); } //------------------------------------------------------------------------------ @@ -239,9 +204,11 @@ void loop() { if (!sd.begin(SD_CONFIG)) { sd.initErrorHalt(&Serial); } -//analogReadAveraging(1); -//analogReadResolution(12); -//overclock(); // 3 Msps on Teensy 3.6 - requires high quality card. - runTest(A0); + // Try for max speed. + adc.adc0->setAveraging(1); + adc.adc0->setResolution(10); + adc.adc0->setConversionSpeed(ADC_CONVERSION_SPEED::VERY_HIGH_SPEED); + adc.adc0->setSamplingSpeed(ADC_SAMPLING_SPEED::VERY_HIGH_SPEED); + runTest(ADC_PIN); waitSerial("Type any character to run test again"); } diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino similarity index 95% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino index 9358644c..496c1d02 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensyRtcTimestamp/TeensyRtcTimestamp.ino @@ -1,9 +1,10 @@ // Test of time-stamp callback with Teensy 3/4. // The upload time will be used to set the RTC. // You must arrange for syncing the RTC. -#include "SdFat.h" #include +#include "SdFat.h" + // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. #define SD_FAT_TYPE 3 @@ -19,7 +20,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -30,7 +31,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -55,7 +56,6 @@ FsFile file; //------------------------------------------------------------------------------ // Call back for file timestamps. Only called for file create and sync(). void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { - // Return date using FS_DATE macro to format fields. *date = FS_DATE(year(), month(), day()); @@ -66,10 +66,7 @@ void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) { *ms10 = second() & 1 ? 100 : 0; } //------------------------------------------------------------------------------ -time_t getTeensy3Time() -{ - return Teensy3Clock.get(); -} +time_t getTeensy3Time() { return Teensy3Clock.get(); } //------------------------------------------------------------------------------ void printField(Print* pr, char sep, uint8_t v) { if (sep) { @@ -102,7 +99,7 @@ void setup() { while (!Serial.available()) { yield(); } - if (timeStatus()!= timeSet) { + if (timeStatus() != timeSet) { Serial.println("Unable to sync with the RTC"); return; } @@ -135,5 +132,4 @@ void setup() { Serial.println(F("Done")); } //------------------------------------------------------------------------------ -void loop() { -} \ No newline at end of file +void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensySdioDemo/TeensySdioDemo.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensySdioDemo/TeensySdioDemo.ino similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/TeensySdioDemo/TeensySdioDemo.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/TeensySdioDemo/TeensySdioDemo.ino index cf79f7e2..6dfbd9d8 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensySdioDemo/TeensySdioDemo.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensySdioDemo/TeensySdioDemo.ino @@ -7,7 +7,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -20,7 +20,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; const size_t BUF_DIM = 32768; // 8 MiB file. -const uint32_t FILE_SIZE = 256UL*BUF_DIM; +const uint32_t FILE_SIZE = 256UL * BUF_DIM; #if SD_FAT_TYPE == 0 SdFat sd; @@ -72,13 +72,12 @@ void errorHalt(const char* msg) { Serial.print(", ErrorData: 0X"); Serial.println(sd.sdErrorData(), HEX); } - while (true) {} + while (true) { + } } bool ready = false; //------------------------------------------------------------------------------ -bool sdBusy() { - return ready ? sd.card()->isBusy() : false; -} +bool sdBusy() { return ready ? sd.card()->isBusy() : false; } //------------------------------------------------------------------------------ // Replace "weak" system yield() function. void yield() { @@ -110,7 +109,7 @@ void runTest() { Serial.println("\nsize,write,read"); Serial.println("bytes,KB/sec,KB/sec"); for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { - uint32_t nRdWr = FILE_SIZE/nb; + uint32_t nRdWr = FILE_SIZE / nb; if (!file.truncate(0)) { errorHalt("truncate failed"); } @@ -121,14 +120,14 @@ void runTest() { for (uint32_t n = 0; n < nRdWr; n++) { // Set start and end of buffer. buf32[0] = n; - buf32[nb/4 - 1] = n; + buf32[nb / 4 - 1] = n; if (nb != file.write(buf, nb)) { errorHalt("write failed"); } } t = micros() - t; totalMicros += t; - Serial.print(1000.0*FILE_SIZE/t); + Serial.print(1000.0 * FILE_SIZE / t); Serial.print(','); file.rewind(); t = micros(); @@ -138,13 +137,13 @@ void runTest() { errorHalt("read failed"); } // crude check of data. - if (buf32[0] != n || buf32[nb/4 - 1] != n) { + if (buf32[0] != n || buf32[nb / 4 - 1] != n) { errorHalt("data check"); } } t = micros() - t; totalMicros += t; - Serial.println(1000.0*FILE_SIZE/t); + Serial.println(1000.0 * FILE_SIZE / t); } file.close(); Serial.print("\ntotalMicros "); @@ -155,8 +154,8 @@ void runTest() { Serial.println(yieldCalls); Serial.print("yieldMaxUsec "); Serial.println(yieldMaxUsec); -// Serial.print("kHzSdClk "); -// Serial.println(kHzSdClk()); + // Serial.print("kHzSdClk "); + // Serial.println(kHzSdClk()); Serial.println("Done"); } //------------------------------------------------------------------------------ @@ -171,22 +170,22 @@ void loop() { if (warn) { warn = false; Serial.println( - "SD cards must be power cycled to leave\n" - "SPI mode so do SDIO tests first.\n" - "\nCycle power on the card if an error occurs."); + "SD cards must be power cycled to leave\n" + "SPI mode so do SDIO tests first.\n" + "\nCycle power on the card if an error occurs."); } clearSerialInput(); Serial.println( - "\nType '1' for FIFO SDIO" - "\n '2' for DMA SDIO" - "\n '3' for Dedicated SPI" - "\n '4' for Shared SPI"); + "\nType '1' for FIFO SDIO" + "\n '2' for DMA SDIO" + "\n '3' for Dedicated SPI" + "\n '4' for Shared SPI"); while (!Serial.available()) { } char c = Serial.read(); - if (c =='1') { + if (c == '1') { if (!sd.begin(SdioConfig(FIFO_SDIO))) { errorHalt("begin failed"); } @@ -202,7 +201,7 @@ void loop() { errorHalt("begin failed"); } Serial.println("\nDedicated SPI mode."); -#else // ENABLE_DEDICATED_SPI +#else // ENABLE_DEDICATED_SPI Serial.println("ENABLE_DEDICATED_SPI must be non-zero."); return; #endif // ENABLE_DEDICATED_SPI diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensySdioLogger/TeensySdioLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensySdioLogger/TeensySdioLogger.ino similarity index 92% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/TeensySdioLogger/TeensySdioLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/TeensySdioLogger/TeensySdioLogger.ino index 8638f5d1..36a51b93 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/TeensySdioLogger/TeensySdioLogger.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/TeensySdioLogger/TeensySdioLogger.ino @@ -6,20 +6,20 @@ // Teensy 4.1. About 5 usec is required to write a sector when the // controller is in write mode. -#include "SdFat.h" #include "RingBuf.h" +#include "SdFat.h" // Use Teensy SDIO -#define SD_CONFIG SdioConfig(FIFO_SDIO) +#define SD_CONFIG SdioConfig(FIFO_SDIO) // Interval between points for 25 ksps. #define LOG_INTERVAL_USEC 40 // Size to log 10 byte lines at 25 kHz for more than ten minutes. -#define LOG_FILE_SIZE 10*25000*600 // 150,000,000 bytes. +#define LOG_FILE_SIZE 10 * 25000 * 600 // 150,000,000 bytes. // Space to hold more than 800 ms of data for 10 byte lines at 25 ksps. -#define RING_BUF_CAPACITY 400*512 +#define RING_BUF_CAPACITY 400 * 512 #define LOG_FILENAME "SdioLogger.csv" SdFs sd; @@ -41,9 +41,9 @@ void logData() { // File must be pre-allocated to avoid huge // delays searching for free clusters. if (!file.preAllocate(LOG_FILE_SIZE)) { - Serial.println("preAllocate failed\n"); - file.close(); - return; + Serial.println("preAllocate failed\n"); + file.close(); + return; } // initialize the RingBuf. rb.begin(&file); @@ -88,7 +88,8 @@ void logData() { break; } // Wait until time to log data. - while (micros() < logTime) {} + while (micros() < logTime) { + } // Read ADC0 - about 17 usec on Teensy 4, Teensy 3.6 is faster. uint16_t adc = analogRead(0); @@ -134,7 +135,8 @@ void clearSerialInput() { } void setup() { Serial.begin(9600); - while (!Serial) {} + while (!Serial) { + } // Go faster or log more channels. ADC quality will suffer. // analogReadAveraging(1); } @@ -142,7 +144,8 @@ void setup() { void loop() { clearSerialInput(); Serial.println("Type any character to start"); - while (!Serial.available()) {}; + while (!Serial.available()) { + } clearSerialInput(); logData(); } \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/UnicodeFilenames/UnicodeFilenames.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/UnicodeFilenames/UnicodeFilenames.ino similarity index 98% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/UnicodeFilenames/UnicodeFilenames.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/UnicodeFilenames/UnicodeFilenames.ino index 94d2fe7f..a1524070 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/UnicodeFilenames/UnicodeFilenames.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/UnicodeFilenames/UnicodeFilenames.ino @@ -18,7 +18,7 @@ const char* names[] = {u8"россиянин", u8"très élégant", u8"狗.txt", // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -91,8 +91,7 @@ void setup() { #endif // REMOVE_UTF8_FILES Serial.println("Done!"); } -void loop() { -} +void loop() {} #else // USE_UTF8_LONG_NAMES #error USE_UTF8_LONG_NAMES must be non-zero in SdFat/src/SdFatCongfig.h #endif // USE_UTF8_LONG_NAMES \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/UserChipSelectFunction/UserChipSelectFunction.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/UserChipSelectFunction/UserChipSelectFunction.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/UserChipSelectFunction/UserChipSelectFunction.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/UserChipSelectFunction/UserChipSelectFunction.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/UserSPIDriver/UserSPIDriver.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/UserSPIDriver/UserSPIDriver.ino similarity index 90% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/UserSPIDriver/UserSPIDriver.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/UserSPIDriver/UserSPIDriver.ino index c86e32ec..568db423 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/UserSPIDriver/UserSPIDriver.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/UserSPIDriver/UserSPIDriver.ino @@ -1,7 +1,7 @@ // An example of an external SPI driver. // -#include "SdFat.h" #include "SPI.h" // Only required if you use features in the SPI library. +#include "SdFat.h" #if SPI_DRIVER_SELECT == 3 // Must be set in SdFat/SdFatConfig.h @@ -16,22 +16,16 @@ class MySpiClass : public SdSpiBaseClass { public: // Activate SPI hardware with correct speed and mode. - void activate() { - SPI.beginTransaction(m_spiSettings); - } + void activate() { SPI.beginTransaction(m_spiSettings); } // Initialize the SPI bus. void begin(SdSpiConfig config) { (void)config; SPI.begin(); } // Deactivate SPI hardware. - void deactivate() { - SPI.endTransaction(); - } + void deactivate() { SPI.endTransaction(); } // Receive a byte. - uint8_t receive() { - return SPI.transfer(0XFF); - } + uint8_t receive() { return SPI.transfer(0XFF); } // Receive multiple bytes. // Replace this function if your board has multiple byte receive. uint8_t receive(uint8_t* buf, size_t count) { @@ -41,9 +35,7 @@ class MySpiClass : public SdSpiBaseClass { return 0; } // Send a byte. - void send(uint8_t data) { - SPI.transfer(data); - } + void send(uint8_t data) { SPI.transfer(data); } // Send multiple bytes. // Replace this function if your board has multiple byte send. void send(const uint8_t* buf, size_t count) { @@ -73,9 +65,11 @@ void setup() { sd.initErrorHalt(&Serial); } sd.ls(&Serial, LS_SIZE); + Serial.println("Done"); } //------------------------------------------------------------------------------ void loop() {} #else // SPI_DRIVER_SELECT #error SPI_DRIVER_SELECT must be three in SdFat/SdFatConfig.h #endif // SPI_DRIVER_SELECT + diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/bench/bench.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/bench/bench.ino similarity index 86% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/bench/bench.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/bench/bench.ino index 53b3d6d9..36a577c5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/bench/bench.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/bench/bench.ino @@ -2,12 +2,12 @@ * This program is a simple binary write/read benchmark. */ #include "SdFat.h" -#include "sdios.h" #include "FreeStack.h" +#include "sdios.h" // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and your hardware does not use the default value, SS. @@ -19,7 +19,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -58,10 +58,10 @@ const uint8_t READ_COUNT = 2; // End of configuration constants. //------------------------------------------------------------------------------ // File size in bytes. -const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; +const uint32_t FILE_SIZE = 1000000UL * FILE_SIZE_MB; // Insure 4-byte alignment. -uint32_t buf32[(BUF_SIZE + 3)/4]; +uint32_t buf32[(BUF_SIZE + 3) / 4]; uint8_t* buf = (uint8_t*)buf32; #if SD_FAT_TYPE == 0 @@ -89,22 +89,19 @@ ArduinoOutStream cout(Serial); void cidDmp() { cid_t cid; if (!sd.card()->readCID(&cid)) { - error("readCID failed"); } cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; + cout << uppercase << showbase << hex << int(cid.mid) << dec << endl; cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; cout << F("Product: "); for (uint8_t i = 0; i < 5; i++) { cout << cid.pnm[i]; } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; + cout << F("\nRevision: ") << cid.prvN() << '.' << cid.prvM() << endl; + cout << F("Serial number: ") << hex << cid.psn() << dec << endl; cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; + cout << cid.mdtMonth() << '/' << cid.mdtYear() << endl; cout << endl; } //------------------------------------------------------------------------------ @@ -128,8 +125,8 @@ void setup() { cout << F("\nUse a freshly formatted SD for best performance.\n"); if (!ENABLE_DEDICATED_SPI) { cout << F( - "\nSet ENABLE_DEDICATED_SPI nonzero in\n" - "SdFatConfig.h for best SPI performance.\n"); + "\nSet ENABLE_DEDICATED_SPI nonzero in\n" + "SdFatConfig.h for best SPI performance.\n"); } // use uppercase in hex and use 0X base prefix cout << uppercase << showbase << endl; @@ -164,7 +161,7 @@ void loop() { cout << F("Type is FAT") << int(sd.fatType()) << endl; } - cout << F("Card size: ") << sd.card()->sectorCount()*512E-9; + cout << F("Card size: ") << sd.card()->sectorCount() * 512E-9; cout << F(" GB (GB = 1E9 bytes)") << endl; cidDmp(); @@ -179,17 +176,17 @@ void loop() { for (size_t i = 0; i < (BUF_SIZE - 2); i++) { buf[i] = 'A' + (i % 26); } - buf[BUF_SIZE-2] = '\r'; + buf[BUF_SIZE - 2] = '\r'; } - buf[BUF_SIZE-1] = '\n'; + buf[BUF_SIZE - 1] = '\n'; cout << F("FILE_SIZE_MB = ") << FILE_SIZE_MB << endl; cout << F("BUF_SIZE = ") << BUF_SIZE << F(" bytes\n"); cout << F("Starting write test, please wait.") << endl << endl; // do write test - uint32_t n = FILE_SIZE/BUF_SIZE; - cout <= 0) { + m = micros(); + } + } while (micros() - m < 10000); +} +//------------------------------------------------------------------------------ +void setup() { + Serial.begin(9600); + + // Wait for USB Serial + while (!Serial) { + yield(); + } + delay(1000); +//------------------------------------------------------------------------------ +} +void loop() { + clearSerialInput(); + Serial.println(F("\nType any character to start\n")); + while (!Serial.available()) { + yield(); + } + // Initialize the SD card. + if (!sd.begin(SD_CONFIG)) { + sd.initErrorHalt(); + } + if (!file.open("SdBusyTest.bin", O_RDWR | O_CREAT |O_TRUNC)) { + error("file open failed"); + } + if (!file.preAllocate(FILE_SIZE)) { + error("preallocate failed"); + } + Serial.print(F("Starting write of ")); + Serial.print(FILE_SIZE_MiB); + Serial.println(F(" MiB.")); + uint32_t maxWrite = 0; + uint32_t minWrite = 99999999; + uint32_t ms = millis(); + uint32_t maxBusy = 0; + uint32_t minBusy = UINT32_MAX; + + // Write a dummy sector to start a multi-sector write. + if(file.write(buf, sizeof(buf)) != sizeof(buf)) { + error("write failed for first sector"); + } + + while (file.position() < FILE_SIZE) { + uint32_t m = micros(); + if (waitBusy) { + m = micros(); + while (sd.card()->isBusy()) {} + m = micros() - m; + if (m < minBusy) { + minBusy = m; + } + if (m > maxBusy) { + maxBusy = m; + } + } + m = micros(); + if (file.write(buf, sizeof(buf)) != sizeof(buf)) { + error("write failed"); + } + m = micros() - m; + if (m < minWrite) { + minWrite = m; + } + if (m > maxWrite) { + maxWrite = m; + } + } + file.close(); + ms = millis() - ms; + Serial.println(F("\nTimes in micros")); + if (waitBusy) { + Serial.print(F("minBusy: ")); + Serial.println(minBusy); + Serial.print(F("maxBusy: ")); + Serial.println(maxBusy); + } + Serial.print(F("minWrite: ")); + Serial.println(minWrite); + Serial.print(F("maxWrite: ")); + Serial.println(maxWrite); + Serial.print(1e-3*ms); + Serial.println(F(" Seconds")); + Serial.print(1.0*FILE_SIZE/ms); + Serial.println(F(" KB/sec")); + +} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino new file mode 100644 index 00000000..165bf604 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/ExFatDbgDmp/ExFatDbgDmp.ino @@ -0,0 +1,51 @@ +#include "SdFat.h" +#define DUMP_RAW 0 +#define DUMP_UPCASE 0 +const uint8_t CS_PIN = SS; +//#define SD_CONFIG SdioConfig(FIFO_SDIO) +#define SD_CONFIG SdSpiConfig(CS_PIN) + +SdExFat sd; +#define error(s) sd.errorHalt(&Serial, F(s)) +void setup() { + Serial.begin(9600); + while (!Serial) { + yield(); + } + Serial.println(F("Type any character to begin")); + while (!Serial.available()) { + yield(); + } + if (!sd.begin(SD_CONFIG)){ + error("begin failed"); + } +#if DUMP_RAW + sd.dmpSector(&Serial, 0); + for (uint8_t i = 0; i < 24; i++) { + sd.dmpSector(&Serial, 0X8000 + i); + Serial.println(); + } + return; + #endif // DUMP_RAW + ExFatFile root; + if (!root.openRoot(&sd)) { + error("openRoot failed"); + } + sd.printDir(&Serial, &root); + // startSector = 0, sectorCount = 1. + sd.dmpFat(&Serial, 0, 1); + sd.dmpBitmap(&Serial); + sd.printVolInfo(&Serial); + + sd.checkUpcase(&Serial); +#if DUMP_UPCASE + sd.printUpcase(&Serial); +#endif // DUMP_UPCASE + // sd.dmpCluster(&Serial, 8, 0, 4); + Serial.println("Done"); +} + +void loop() { + // put your main code here, to run repeatedly: + +} \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestGetName/TestGetName.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestGetName/TestGetName.ino new file mode 100644 index 00000000..48cfb533 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestGetName/TestGetName.ino @@ -0,0 +1,43 @@ +#include "SdFat.h" +SdFs sd; +FsFile file; +const char* name[] = { + "SFN.TXT", + "LongFilename.txt", +#if USE_UTF8_LONG_NAMES + u8"très élégant.txt", +#endif // USE_UTF8_LONG_NAMES + nullptr}; +char buf[32]; +void setup() { + Serial.begin(9600); + while (!Serial) {} + Serial.println("Type any character to begin"); + while (!Serial.available()) {} + if (!sd.begin(SS)) { + sd.initErrorHalt(); + } + for (uint8_t i = 0; name[i]; i++) { + if (!file.open(name[i], O_CREAT |O_RDWR)) { + sd.errorHalt("open"); + } + size_t len = strlen(name[i]); + size_t rtn = file.getName(buf, len); + if (rtn != 0) { + Serial.println("fail len"); + } + rtn = file.getName(buf, len + 1); + if (rtn != len) { + Serial.println("fail len + 1"); + } + Serial.print(rtn); + Serial.print(' '); + Serial.println(buf); + if (!file.remove()) { + sd.errorHalt("remove"); + } + } + Serial.println("Done"); +} + +void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestMkdir/TestMkdir.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestMkdir/TestMkdir.ino new file mode 100644 index 00000000..3101d7a4 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestMkdir/TestMkdir.ino @@ -0,0 +1,140 @@ +/* + * This sketch is a test of subdirectory and file creation. + * It also tests allocation of clusters to directories. + * + * It will create two subdirectories and create enough files + * to force the allocation of a cluster to each directory. + * + * More than 3000 files may be created on a FAT32 volume. + * + * Note: Some cards may 'stutter' others just get slow due + * to the number of flash erases this program causes. + */ +#include + +const uint8_t SD_CHIP_SELECT = SS; + +SdFat sd; +typedef File file_t; + +// store error strings in flash to save RAM +#define error(s) sd.errorHalt(&Serial, F(s)) + +/* + * create enough files to force a cluster to be allocated to dir. + */ +void dirAllocTest(file_t* dir) { + char buf[32], name[32]; + file_t file; + uint16_t n; + uint32_t size = dir->dirSize(); + + // create files and write name to file + for (n = 0; ; n++){ + // make file name + sprintf(name, "%u.TXT", n); + + // open start time + uint32_t t0 = millis(); + if (!file.open(dir, name, O_WRONLY | O_CREAT | O_EXCL)) { + error("open for write failed"); + } + + // open end time and write start time + uint32_t t1 = millis(); + // write file name to file + file.print(name); + if (!file.close()) error("close write"); + + // write end time + uint32_t t2 = millis(); + Serial.print(F("WR ")); + Serial.print(n); + Serial.write(' '); + + // print time to create file + Serial.print(t1 - t0); + Serial.write(' '); + + // print time to write file + Serial.println(t2 - t1); + + // directory size will change when a cluster is added + if (dir->curPosition() > size) break; + } + + // read files and check content + for (uint16_t i = 0; i <= n; i++) { + sprintf(name, "%u.TXT", i); + + // open start time + uint32_t t0 = millis(); + if (!file.open(dir, name, O_RDONLY)) { + error("open for read failed"); + } + + // open end time and read start time + uint32_t t1 = millis(); + int16_t nr = file.read(buf, sizeof(buf)); + if (nr < 5) error("file.read failed"); + + // read end time + uint32_t t2 = millis(); + + // check file content + if (strlen(name) != (size_t)nr || strncmp(name, buf, nr)) { + error("content compare failed"); + } + if (!file.close()) error("close read failed"); + + Serial.print(F("RD ")); + Serial.print(i); + Serial.write(' '); + + // print open time + Serial.print(t1 - t0); + Serial.write(' '); + + // print read time + Serial.println(t2 - t1); + } +} + +void setup() { + file_t root; + Serial.begin(9600); + while (!Serial) {} // wait for Leonardo + Serial.println(F("Type any character to start")); + while (Serial.read() <= 0) {} + delay(200); // Catch Due reset problem + + // initialize the SD card at SPI_FULL_SPEED for best performance. + // try lower speed if bus errors occur. + if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) { + sd.initErrorHalt(&Serial); + } + root.openRoot(&sd); + uint32_t m = millis(); + // write files to root if not FAT16 + if (sd.fatType() != 16) { + Serial.println(F("Writing files to root")); + dirAllocTest(&root); + } + + // create sub1 and write files + file_t sub1; + if (!sub1.mkdir(&root, "SUB1")) error("makdeDir SUB1 failed"); + Serial.println(F("Writing files to SUB1")); + dirAllocTest(&sub1); + + // create sub2 and write files + file_t sub2; + if (!sub2.mkdir(&sub1, "SUB2")) error("mkdir SUB2 failed"); + Serial.println(F("Writing files to SUB2")); + dirAllocTest(&sub2); + m = millis() - m; + Serial.print(F("Done millis: ")); + Serial.println(m); +} + +void loop() { } \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestRmdir/TestRmdir.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestRmdir/TestRmdir.ino new file mode 100644 index 00000000..90e29875 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TestRmdir/TestRmdir.ino @@ -0,0 +1,99 @@ +/* + * This sketch will remove the files and directories + * created by the SdFatMakeDir.pde sketch. + * + * Performance is erratic due to the large number + * of flash erase operations caused by many random + * writes to file structures. + */ +#include + +const uint8_t SD_CHIP_SELECT = SS; + +SdFat sd; +typedef File file_t; + +// store error strings in flash to save RAM +#define error(s) sd.errorHalt(&Serial, F(s)) + +/* + * remove all files in dir. + */ +void deleteFiles(FatFile* dir) { + char name[32]; + file_t file; + + // open and delete files + for (uint16_t n = 0; ; n++){ + sprintf(name, "%u.TXT", n); + + // open start time + uint32_t t0 = millis(); + + // assume done if open fails + if (!file.open(dir, name, O_WRONLY)) return; + + // open end time and remove start time + uint32_t t1 = millis(); + if (!file.remove()) error("file.remove failed"); + + // remove end time + uint32_t t2 = millis(); + + Serial.print(F("RM ")); + Serial.print(n); + Serial.write(' '); + + // open time + Serial.print(t1 - t0); + Serial.write(' '); + + // remove time + Serial.println(t2 - t1); + } +} + +void setup() { + file_t root; + Serial.begin(9600); + while (!Serial) {} // wait for Leonardo + Serial.println(F("Type any character to start")); + while (Serial.read() <= 0) {} + delay(200); // Catch Due reset problem + + // initialize the SD card at SPI_FULL_SPEED for best performance. + // try lower speed if bus errors occur. + if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) { + sd.initErrorHalt(&Serial); + } + root.openRoot(&sd); + // delete files in root if not FAT16. + if (sd.fatType() != 16) { + Serial.println(F("Remove files in root")); + deleteFiles(&root); + } + + // open SUB1 and delete files + file_t sub1; + if (!sub1.open("SUB1", O_RDONLY)) error("open SUB1 failed"); + Serial.println(F("Remove files in SUB1")); + deleteFiles(&sub1); + + // open SUB2 and delete files + file_t sub2; + if (!sub2.open(&sub1, "SUB2", O_RDONLY)) error("open SUB2 failed"); + Serial.println(F("Remove files in SUB2")); + deleteFiles(&sub2); + + // remove SUB2 + if (!sub2.rmdir()) error("sub2.rmdir failed"); + Serial.println(F("SUB2 removed")); + + // remove SUB1 + if (!sub1.rmdir()) error("sub1.rmdir failed"); + Serial.println(F("SUB1 removed")); + + Serial.println(F("Done")); +} + +void loop() { } \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TimestampTest/TimestampTest.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TimestampTest/TimestampTest.ino new file mode 100644 index 00000000..520084af --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/debug/TimestampTest/TimestampTest.ino @@ -0,0 +1,162 @@ +/* + * This program tests the dateTimeCallback() function + * and the timestamp() function. + */ +#include +#include "SdFat.h" +#include "sdios.h" +SdFs sd; + +FsFile file; + +// Default SD chip select is SS pin +const uint8_t chipSelect = SS; + +// create Serial stream +ArduinoOutStream cout(Serial); +//------------------------------------------------------------------------------ +// store error strings in flash to save RAM +#define error(s) sd.errorHalt(F(s)) +//------------------------------------------------------------------------------ +/* + * date/time values for debug + * normally supplied by a real-time clock or GPS + */ +// date 1-Oct-21 +uint16_t year = 2021; +uint8_t month = 10; +uint8_t day = 1; + +// time 20:30:40 +uint8_t hour = 20; +uint8_t minute = 30; +uint8_t second = 40; +//------------------------------------------------------------------------------ +/* + * User provided date time callback function. + * See SdFile::dateTimeCallback() for usage. + */ +void dateTime(uint16_t* date, uint16_t* time) { + // User gets date and time from GPS or real-time + // clock in real callback function + + // return date using FAT_DATE macro to format fields + *date = FAT_DATE(year, month, day); + + // return time using FAT_TIME macro to format fields + *time = FAT_TIME(hour, minute, second); +} +//------------------------------------------------------------------------------ +/* + * Function to print all timestamps. + */ +void printTimestamps(FsFile& f) { + cout << F("Creation: "); + f.printCreateDateTime(&Serial); + cout << endl << F("Modify: "); + f.printModifyDateTime(&Serial); + cout << endl << F("Access: "); + f.printAccessDateTime(&Serial); + cout << endl; +} +//------------------------------------------------------------------------------ +void setup(void) { + Serial.begin(9600); + // Wait for USB Serial + while (!Serial) { + yield(); + } + cout << F("Type any character to start\n"); + while (!Serial.available()) { + yield(); + } + // Initialize at the highest speed supported by the board that is + // not over 50 MHz. Try a lower speed if SPI errors occur. + if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { + sd.initErrorHalt(); + } + + // remove files if they exist + sd.remove("callback.txt"); + sd.remove("default.txt"); + sd.remove("stamp.txt"); + + // create a new file with default timestamps + if (!file.open("default.txt", O_WRONLY | O_CREAT)) { + error("open default.txt failed"); + } + cout << F("\nOpen with default times\n"); + printTimestamps(file); + + // close file + file.close(); + /* + * Test the date time callback function. + * + * dateTimeCallback() sets the function + * that is called when a file is created + * or when a file's directory entry is + * modified by sync(). + * + * The callback can be disabled by the call + * SdFile::dateTimeCallbackCancel() + */ + // set date time callback function + SdFile::dateTimeCallback(dateTime); + + // create a new file with callback timestamps + if (!file.open("callback.txt", O_WRONLY | O_CREAT)) { + error("open callback.txt failed"); + } + cout << ("\nOpen with callback times\n"); + printTimestamps(file); + + // change call back date + day += 1; + + // must add two to see change since FAT second field is 5-bits + second += 2; + + // modify file by writing a byte + file.write('t'); + + // force dir update + file.sync(); + + cout << F("\nTimes after write\n"); + printTimestamps(file); + + // close file + file.close(); + /* + * Test timestamp() function + * + * Cancel callback so sync will not + * change access/modify timestamp + */ + SdFile::dateTimeCallbackCancel(); + + // create a new file with default timestamps + if (!file.open("stamp.txt", O_WRONLY | O_CREAT)) { + error("open stamp.txt failed"); + } + // set creation date time + if (!file.timestamp(T_CREATE, 2021, 11, 10, 1, 2, 3)) { + error("set create time failed"); + } + // set write/modification date time + if (!file.timestamp(T_WRITE, 2021, 11, 11, 4, 5, 6)) { + error("set write time failed"); + } + // set access date + if (!file.timestamp(T_ACCESS, 2021, 11, 12, 7, 8, 9)) { + error("set access time failed"); + } + cout << F("\nTimes after timestamp() calls\n"); + printTimestamps(file); + + file.close(); + cout << F("\nDone\n"); +} + +void loop() {} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/AnalogLogger/AnalogLogger.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/BaseExtCaseTest/BaseExtCaseTest.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/HelloWorld/HelloWorld.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/MiniSerial/MiniSerial.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/MiniSerial/MiniSerial.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/MiniSerial/MiniSerial.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/MiniSerial/MiniSerial.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/SD_Size/SD_Size.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/SD_Size/SD_Size.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/SD_Size/SD_Size.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/SD_Size/SD_Size.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/SdFatSize/SdFatSize.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/StreamParseInt/StreamParseInt.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/append/append.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/append/append.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/append/append.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/append/append.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/average/average.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/average/average.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/average/average.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/average/average.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/benchSD/benchSD.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/benchSD/benchSD.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/benchSD/benchSD.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/benchSD/benchSD.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/bufstream/bufstream.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/bufstream/bufstream.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/bufstream/bufstream.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/bufstream/bufstream.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/cin_cout/cin_cout.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/cin_cout/cin_cout.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/cin_cout/cin_cout.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/cin_cout/cin_cout.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/eventlog/eventlog.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/eventlog/eventlog.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/eventlog/eventlog.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/eventlog/eventlog.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/fgetsRewrite/fgetsRewrite.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/readlog/readlog.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/readlog/readlog.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/readlog/readlog.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/readlog/readlog.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/readme.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/readme.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/#attic/readme.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/#attic/readme.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.h b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.h rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino similarity index 99% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino index a9edab1d..28346288 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/AnalogBinLogger/AnalogBinLogger.ino @@ -22,6 +22,7 @@ #ifdef __AVR__ #include #include "SdFat.h" +#include "sdios.h" #include "FreeStack.h" #include "AnalogBinLogger.h" //------------------------------------------------------------------------------ @@ -648,7 +649,7 @@ void logData() { bgnErase = endErase + 1; } // Start a multiple block write. - if (!sd.card()->writeStart(bgnBlock, FILE_BLOCK_COUNT)) { + if (!sd.card()->writeStart(bgnBlock)) { error("writeBegin failed"); } // Write metadata. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/LongFileName.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/LongFileName.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/LongFileName.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/LongFileName.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/A long name can be 255 characters.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/A long name can be 255 characters.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/A long name can be 255 characters.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/A long name can be 255 characters.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/LFN,NAME.TXT b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/LFN,NAME.TXT similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/LFN,NAME.TXT rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/LFN,NAME.TXT diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/MIXCASE.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/MIXCASE.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/MIXCASE.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/MIXCASE.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/Not_8_3.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/Not_8_3.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/Not_8_3.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/Not_8_3.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/OK%83.TXT b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/OK%83.TXT similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/OK%83.TXT rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/OK%83.TXT diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/STD_8_3.TXT b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/STD_8_3.TXT similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/STD_8_3.TXT rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/STD_8_3.TXT diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/With Blank.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/With Blank.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/With Blank.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/With Blank.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/With.Two dots.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/With.Two dots.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/With.Two dots.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/With.Two dots.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/lower.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/lower.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/lower.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/lower.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/mixed.TXT b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/mixed.TXT similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LongFileName/testFiles/mixed.TXT rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LongFileName/testFiles/mixed.TXT diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLogger/LowLatencyLogger.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLogger/UserFunctions.cpp b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLogger/UserFunctions.cpp similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLogger/UserFunctions.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLogger/UserFunctions.cpp diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLogger/UserTypes.h b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLogger/UserTypes.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLogger/UserTypes.h rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLogger/UserTypes.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLogger.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/UserFunctions.cpp b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/UserFunctions.cpp similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/UserFunctions.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/UserFunctions.cpp diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/UserTypes.h b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/UserTypes.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/UserTypes.h rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/UserTypes.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/readme.txt b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/readme.txt similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerADXL345/readme.txt rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerADXL345/readme.txt diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLogger.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/UserFunctions.cpp b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/UserFunctions.cpp similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/UserFunctions.cpp rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/UserFunctions.cpp diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/UserTypes.h b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/UserTypes.h similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/LowLatencyLoggerMPU6050/UserTypes.h rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/LowLatencyLoggerMPU6050/UserTypes.h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/PrintBenchmark/PrintBenchmark.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/RawWrite/RawWrite.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/RawWrite/RawWrite.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/RawWrite/RawWrite.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/RawWrite/RawWrite.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadCsv/ReadCsv.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadCsv/ReadCsv.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadCsv/ReadCsv.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadCsv/ReadCsv.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadCsvArray/ReadCsvArray.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadCsvStream/ReadCsvStream.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadWrite/ReadWrite.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadWrite/ReadWrite.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/ReadWrite/ReadWrite.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/ReadWrite/ReadWrite.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/STM32Test/STM32Test.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/STM32Test/STM32Test.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/STM32Test/STM32Test.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/STM32Test/STM32Test.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/StdioBench/StdioBench.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/StdioBench/StdioBench.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/StdioBench/StdioBench.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/StdioBench/StdioBench.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/Timestamp/Timestamp.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/Timestamp/Timestamp.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/Timestamp/Timestamp.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/Timestamp/Timestamp.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/TwoCards/TwoCards.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/TwoCards/TwoCards.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/TwoCards/TwoCards.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/TwoCards/TwoCards.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/VolumeFreeSpace/VolumeFreeSpace.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/dataLogger/dataLogger.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/dataLogger/dataLogger.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/dataLogger/dataLogger.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/dataLogger/dataLogger.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/fgets/fgets.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/fgets/fgets.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/fgets/fgets.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/fgets/fgets.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/formatting/formatting.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/formatting/formatting.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/formatting/formatting.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/formatting/formatting.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/getline/getline.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/getline/getline.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/getline/getline.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/getline/getline.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/wipe/wipe.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/wipe/wipe.ino similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/examplesV1/wipe/wipe.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/examplesV1/wipe/wipe.ino diff --git a/extra-libraries/ESP32/SdFat-2.1.2/examples/rename/rename.ino b/extra-libraries/ESP32/SdFat-2.2.3/examples/rename/rename.ino similarity index 95% rename from extra-libraries/ESP32/SdFat-2.1.2/examples/rename/rename.ino rename to extra-libraries/ESP32/SdFat-2.2.3/examples/rename/rename.ino index aed94c5b..3995fce5 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/examples/rename/rename.ino +++ b/extra-libraries/ESP32/SdFat-2.2.3/examples/rename/rename.ino @@ -6,7 +6,7 @@ // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. -#define SD_FAT_TYPE 0 +#define SD_FAT_TYPE 3 /* Change the value of SD_CS_PIN if you are using SPI and @@ -20,7 +20,7 @@ // SDCARD_SS_PIN is defined for the built-in SD on some boards. #ifndef SDCARD_SS_PIN const uint8_t SD_CS_PIN = SS; -#else // SDCARD_SS_PIN +#else // SDCARD_SS_PIN // Assume built-in SD is used. const uint8_t SD_CS_PIN = SDCARD_SS_PIN; #endif // SDCARD_SS_PIN @@ -31,7 +31,7 @@ const uint8_t SD_CS_PIN = SDCARD_SS_PIN; // Try to select the best SD card configuration. #if HAS_SDIO_CLASS #define SD_CONFIG SdioConfig(FIFO_SDIO) -#elif ENABLE_DEDICATED_SPI +#elif ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK) #else // HAS_SDIO_CLASS #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK) @@ -80,8 +80,7 @@ void setup() { // Remove file/dirs from previous run. if (sd.exists("dir2/DIR3/NAME3.txt")) { cout << F("Removing /dir2/DIR3/NAME3.txt") << endl; - if (!sd.remove("dir2/DIR3/NAME3.txt") || - !sd.rmdir("dir2/DIR3/") || + if (!sd.remove("dir2/DIR3/NAME3.txt") || !sd.rmdir("dir2/DIR3/") || !sd.rmdir("dir2/")) { error("remove/rmdir failed"); } diff --git a/extra-libraries/ESP32/SdFat-2.2.3/extras/AvrPrintStimmer.cpp b/extra-libraries/ESP32/SdFat-2.2.3/extras/AvrPrintStimmer.cpp new file mode 100644 index 00000000..188db166 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/extras/AvrPrintStimmer.cpp @@ -0,0 +1,567 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + many modifications, by Paul Stoffregen + + This library 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.1 of the License, or (at your option) any later version. + + This library 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 library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include +#include "Arduino.h" // (was wiring.h) + +#include "Print.h" + + +#if ARDUINO >= 100 +#else +void Print::write(const char *str) +{ + write((const uint8_t *)str, strlen(str)); +} +#endif + + +#if ARDUINO >= 100 +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t count = 0; + while (size--) count += write(*buffer++); + return count; +} +#else +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) write(*buffer++); +} +#endif + + +#if ARDUINO >= 100 +size_t Print::print(const String &s) +{ + uint8_t buffer[33]; + size_t count = 0; + unsigned int index = 0; + unsigned int len = s.length(); + while (len > 0) { + s.getBytes(buffer, sizeof(buffer), index); + unsigned int nbytes = len; + if (nbytes > sizeof(buffer)-1) nbytes = sizeof(buffer)-1; + index += nbytes; + len -= nbytes; + count += write(buffer, nbytes); + } + return count; +} +#else +void Print::print(const String &s) +{ + unsigned int len = s.length(); + for (unsigned int i=0; i < len; i++) { + write(s[i]); + } +} +#endif + + +#if ARDUINO >= 100 +size_t Print::print(const __FlashStringHelper *ifsh) +{ + uint8_t buffer[32]; + size_t count = 0; + const char PROGMEM *p = (const char PROGMEM *)ifsh; + unsigned int len = strlen_P(p); + while (len > 0) { + unsigned int nbytes = len; + if (nbytes > sizeof(buffer)) nbytes = sizeof(buffer); + memcpy_P(buffer, p, nbytes); + p += nbytes; + len -= nbytes; + count += write(buffer, nbytes); + } + return count; +} +#else +void Print::print(const __FlashStringHelper *ifsh) +{ + const char PROGMEM *p = (const char PROGMEM *)ifsh; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) return; + write(c); + } +} +#endif + + +#if ARDUINO >= 100 +size_t Print::print(long n) +{ + uint8_t sign=0; + + if (n < 0) { + sign = 1; + n = -n; + } + return printNumber(n, sign, 10); +} +#else +void Print::print(long n) +{ + uint8_t sign=0; + + if (n < 0) { + sign = 1; + n = -n; + } + printNumber(n, sign, 10); +} +#endif + + +#if ARDUINO >= 100 +size_t Print::println(void) +{ + uint8_t buf[2]={'\r', '\n'}; + return write(buf, 2); +} +#else +void Print::println(void) +{ + uint8_t buf[2]={'\r', '\n'}; + write(buf, 2); +} +#endif + + +//#define USE_HACKER_DELIGHT_OPTIMIZATION +#define USE_STIMMER_OPTIMIZATION +#define USE_BENCHMARK_CODE + + +#ifdef USE_HACKER_DELIGHT_OPTIMIZATION +// Adapted from Hacker's Delight (Henry Warren, ISBN 0321842685) www.hackersdelight.org +// by Rob Tillaart, Tom Carpenter, "genom2" with input from others... +// http://forum.arduino.cc/index.php?topic=167414.0 +// +#define divmod10_asm(in32, tmp32, mod8) \ +asm volatile ( \ + "mov %2, %A0 \n\t" /* mod = in */ \ + "ori %A0, 1 \n\t" /* q = in | 1 */ \ + "movw %A1, %A0 \n\t" /* x = q */ \ + "movw %C1, %C0 \n\t" \ + "lsr %D1 \n\t" /* x = x >> 2 */ \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "sub %A0, %A1 \n\t" /* q = q - x */ \ + "sbc %B0, %B1 \n\t" \ + "sbc %C0, %C1 \n\t" \ + "sbc %D0, %D1 \n\t" \ + "movw %A1, %A0 \n\t" /* x = q */ \ + "movw %C1, %C0 \n\t" \ + "lsr %D1 \n\t" /* x = x >> 4 */ \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "lsr %D1 \n\t" \ + "ror %C1 \n\t" \ + "ror %B1 \n\t" \ + "ror %A1 \n\t" \ + "add %A1, %A0 \n\t" /* x = x + q */ \ + "adc %B1, %B0 \n\t" \ + "adc %C1, %C0 \n\t" \ + "adc %D1, %D0 \n\t" \ + "movw %A0, %A1 \n\t" /* q = x */ \ + "movw %C0, %C1 \n\t" \ + "add %A0, %B1 \n\t" /* q = q + (x >> 8) */ \ + "adc %B0, %C1 \n\t" \ + "adc %C0, %D1 \n\t" \ + "adc %D0, r1 \n\t" \ + "mov %A0, %B0 \n\t" /* q = q >> 8 */ \ + "mov %B0, %C0 \n\t" \ + "mov %C0, %D0 \n\t" \ + "eor %D0, %D0 \n\t" \ + "add %A0, %A1 \n\t" /* q = q + x */ \ + "adc %B0, %B1 \n\t" \ + "adc %C0, %C1 \n\t" \ + "adc %D0, %D1 \n\t" \ + "mov %A0, %B0 \n\t" /* q = q >> 8 */ \ + "mov %B0, %C0 \n\t" \ + "mov %C0, %D0 \n\t" \ + "eor %D0, %D0 \n\t" \ + "add %A0, %A1 \n\t" /* q = q + x */ \ + "adc %B0, %B1 \n\t" \ + "adc %C0, %C1 \n\t" \ + "adc %D0, %D1 \n\t" \ + "mov %A0, %B0 \n\t" /* q = q >> 8 */ \ + "mov %B0, %C0 \n\t" \ + "mov %C0, %D0 \n\t" \ + "eor %D0, %D0 \n\t" \ + "add %A0, %A1 \n\t" /* q = q + x */ \ + "adc %B0, %B1 \n\t" \ + "adc %C0, %C1 \n\t" \ + "adc %D0, %D1 \n\t" \ + "andi %A0, 0xF8 \n\t" /* q = q & ~0x7 */ \ + "sub %2, %A0 \n\t" /* mod = mod - q */ \ + "lsr %D0 \n\t" /* q = q >> 2 */ \ + "ror %C0 \n\t" \ + "ror %B0 \n\t" \ + "ror %A0 \n\t" \ + "lsr %D0 \n\t" \ + "ror %C0 \n\t" \ + "ror %B0 \n\t" \ + "ror %A0 \n\t" \ + "sub %2, %A0 \n\t" /* mod = mod - q */ \ + "lsr %D0 \n\t" /* q = q >> 1 */ \ + "ror %C0 \n\t" \ + "ror %B0 \n\t" \ + "ror %A0 \n\t" \ + : "+d" (in32), "=r" (tmp32), "=r" (mod8) : : "r0" \ +) +#endif // USE_HACKER_DELIGHT_OPTIMIZATION + +#ifdef USE_STIMMER_OPTIMIZATION +// http://forum.arduino.cc/index.php?topic=167414.msg1293679#msg1293679 +#define divmod10_asm32(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " mul %C0,%2 \n\t" \ + " clr %C0 \n\t" \ + " add %B0,r0 \n\t" \ + " adc %C0,r1 \n\t" \ + " mul %D0,%2 \n\t" \ + " clr %D0 \n\t" \ + " add %C0,r0 \n\t" \ + " adc %D0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,%C0 \n\t" \ + " adc %C0,%D0 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,%C0 \n\t" \ + " adc %B0,%D0 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " add %1,%D0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " adc %C0,r1 \n\t" \ + " adc %D0,r1 \n\t" \ + " lsr %D0 \n\t" \ + " ror %C0 \n\t" \ + " ror %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") + +#define divmod10_asm24(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " mul %C0,%2 \n\t" \ + " clr %C0 \n\t" \ + " add %B0,r0 \n\t" \ + " adc %C0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,%C0 \n\t" \ + " adc %C0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,%C0 \n\t" \ + " adc %B0,r1 \n\t" \ + " adc %C0,r1 \n\t" \ + " lsr %C0 \n\t" \ + " ror %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") + +#define divmod10_asm16(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " mul %B0,%2 \n\t" \ + " clr %B0 \n\t" \ + " add %A0,r0 \n\t" \ + " adc %B0,r1 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,%B0 \n\t" \ + " adc %B0,r1 \n\t" \ + " add %1,%B0 \n\t" \ + " adc %A0,r1 \n\t" \ + " adc %B0,r1 \n\t" \ + " lsr %B0 \n\t" \ + " ror %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") + +#define divmod10_asm8(in32, mod8, tmp8) \ +asm volatile ( \ + " ldi %2,51 \n\t" \ + " mul %A0,%2 \n\t" \ + " clr %A0 \n\t" \ + " add r0,%2 \n\t" \ + " adc %A0,r1 \n\t" \ + " mov %1,r0 \n\t" \ + " clr r1 \n\t" \ + " add %1,%A0 \n\t" \ + " adc %A0,r1 \n\t" \ + " lsr %A0 \n\t" \ + " ror %1 \n\t" \ + " ldi %2,10 \n\t" \ + " mul %1,%2 \n\t" \ + " mov %1,r1 \n\t" \ + " clr r1 \n\t" \ + :"+r"(in32),"=d"(mod8),"=d"(tmp8) : : "r0") +#endif // USE_STIMMER_OPTIMIZATION + + + +#ifdef USE_BENCHMARK_CODE +uint32_t usec_print = 0; +#endif + + +#if ARDUINO >= 100 +size_t Print::printNumberDec(unsigned long n, uint8_t sign) +#else +void Print::printNumberDec(unsigned long n, uint8_t sign) +#endif +{ + uint8_t digit, buf[11], *p; + uint32_t tmp32; + uint8_t tmp8; + +#ifdef USE_BENCHMARK_CODE + uint32_t usec = micros(); +#endif + p = buf + (sizeof(buf)-1); + + #if defined(USE_STIMMER_OPTIMIZATION) + + while(n & 0xff000000){divmod10_asm32(n, digit, tmp8);*--p = digit + '0';} + while(n & 0xff0000){divmod10_asm24(n, digit, tmp8);*--p = digit + '0';} + while(n & 0xff00){divmod10_asm16(n, digit, tmp8);*--p = digit + '0';} + while((n & 0xff)>9){divmod10_asm8(n, digit, tmp8);*--p = digit + '0';} + *--p = n + '0'; + + #else + do { + #if defined(USE_HACKER_DELIGHT_OPTIMIZATION) + divmod10_asm(n, tmp32, digit); + #else + tmp32 = n; + n = n / 10; + digit = tmp32 - n * 10; + #endif + *--p = digit + '0'; + } while (n); + #endif + if (sign) *--p = '-'; +#ifdef USE_BENCHMARK_CODE + usec_print += micros() - usec; +#endif +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + +#if ARDUINO >= 100 +size_t Print::printNumberHex(unsigned long n) +#else +void Print::printNumberHex(unsigned long n) +#endif +{ + uint8_t digit, buf[8], *p; + + p = buf + (sizeof(buf)-1); + do { + digit = n & 15; + *--p = (digit < 10) ? '0' + digit : 'A' + digit - 10; + n >>= 4; + } while (n); +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + +#if ARDUINO >= 100 +size_t Print::printNumberBin(unsigned long n) +#else +void Print::printNumberBin(unsigned long n) +#endif +{ + uint8_t buf[32], *p; + + p = buf + (sizeof(buf)-1); + do { + *--p = '0' + ((uint8_t)n & 1); + n >>= 1; + } while (n); +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + +#if ARDUINO >= 100 +size_t Print::printNumberAny(unsigned long n, uint8_t base) +#else +void Print::printNumberAny(unsigned long n, uint8_t base) +#endif +{ + uint8_t digit, buf[21], *p; + uint32_t tmp; + //uint32_t usec; + + //usec = micros(); + p = buf + (sizeof(buf)-1); + do { + tmp = n; + n = n / base; + digit = tmp - n * base; + *--p = (digit < 10) ? '0' + digit : 'A' + digit - 10; + } while (n); + //usec_print += micros() - usec; +#if ARDUINO >= 100 + return write(p, sizeof(buf)-1 - (p - buf)); +#else + write(p, sizeof(buf)-1 - (p - buf)); +#endif +} + + + + +#if ARDUINO >= 100 +size_t Print::printFloat(double number, uint8_t digits) +#else +void Print::printFloat(double number, uint8_t digits) +#endif +{ + uint8_t sign=0; +#if ARDUINO >= 100 + size_t count=0; +#endif + + // Handle negative numbers + if (number < 0.0) { + sign = 1; + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i= 100 + count += printNumber(int_part, sign, 10); +#else + printNumber(int_part, sign, 10); +#endif + + // Print the decimal point, but only if there are digits beyond + if (digits > 0) { + uint8_t n, buf[8], count=1; + buf[0] = '.'; + + // Extract digits from the remainder one at a time + if (digits > sizeof(buf) - 1) digits = sizeof(buf) - 1; + + while (digits-- > 0) { + remainder *= 10.0; + n = (uint8_t)(remainder); + buf[count++] = '0' + n; + remainder -= n; + } +#if ARDUINO >= 100 + count += write(buf, count); +#else + write(buf, count); +#endif + } +#if ARDUINO >= 100 + return count; +#endif +} + + diff --git a/extra-libraries/ESP32/SdFat-2.2.3/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip b/extra-libraries/ESP32/SdFat-2.2.3/extras/USB_Host_Shield/USB_Host_Shield_2.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..72b3069c450eb76bf9498010a7660e802acaff77 GIT binary patch literal 476902 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 z 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

    2. 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%0DpaTir(|a5kpKwX@JC0;t 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 ZSf$-J^<1}8@;LGp+fMXjULakD0=6hAU1?x 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 G$NvE}53*MP diff --git a/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.cpp b/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.cpp deleted file mode 100644 index 7ba957e4..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/extras/attic/PrintBasic.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (c) 2011-2020 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "PrintBasic.h" -#include - -size_t PrintBasic::print(long n, uint8_t base) { - if (n < 0 && base == 10) { - return print('-') + printNum(-n, base); - } - return printNum(n, base); -} -size_t PrintBasic::printNum(unsigned long n, uint8_t base) { - const uint8_t DIM = 8*sizeof(long); - char buf[DIM]; - char *str = &buf[DIM]; - - if (base < 2) return 0; - - do { - char c = n%base; - n /= base; - *--str = c + (c < 10 ? '0' : 'A' - 10); - } while (n); - return write(str, &buf[DIM] - str); -} - -size_t PrintBasic::printDouble(double n, uint8_t prec) { - // Max printable 32-bit floating point number. AVR uses 32-bit double. - const double maxfp = static_cast(0XFFFFFF00UL); - size_t rtn = 0; - - if (isnan(n)) { - return write("NaN"); - } - if (n < 0) { - n = -n; - rtn += print('-'); - } - if (isinf(n)) { - return rtn + write("Inf"); - } - if (n > maxfp) { - return rtn + write("Ovf"); - } - - double round = 0.5; - for (uint8_t i = 0; i < prec; ++i) { - round *= 0.1; - } - - n += round; - - uint32_t whole = (uint32_t)n; - rtn += print(whole); - - if (prec) { - rtn += print('.'); - double fraction = n - static_cast(whole); - for (uint8_t i = 0; i < prec; i++) { - fraction *= 10.0; - uint8_t digit = fraction; - rtn += print(digit); - fraction -= digit; - } - } - return rtn; -} diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.h b/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.h deleted file mode 100644 index 42e9df5c..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdCardInfo.h +++ /dev/null @@ -1,490 +0,0 @@ -/** - * Copyright (c) 2011-2021 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdCardInfo_h -#define SdCardInfo_h -#include -#include "../common/SysCall.h" -// Based on the document: -// -// SD Specifications -// Part 1 -// Physical Layer -// Simplified Specification -// Version 5.00 -// Aug 10, 2016 -// -// https://www.sdcard.org/downloads/pls/ -//------------------------------------------------------------------------------ -// SD card errors -// See the SD Specification for command info. -#define SD_ERROR_CODE_LIST\ - SD_CARD_ERROR(NONE, "No error")\ - SD_CARD_ERROR(CMD0, "Card reset failed")\ - SD_CARD_ERROR(CMD2, "SDIO read CID")\ - SD_CARD_ERROR(CMD3, "SDIO publish RCA")\ - SD_CARD_ERROR(CMD6, "Switch card function")\ - SD_CARD_ERROR(CMD7, "SDIO card select")\ - SD_CARD_ERROR(CMD8, "Send and check interface settings")\ - SD_CARD_ERROR(CMD9, "Read CSD data")\ - SD_CARD_ERROR(CMD10, "Read CID data")\ - SD_CARD_ERROR(CMD12, "Stop multiple block read")\ - SD_CARD_ERROR(CMD13, "Read card status")\ - SD_CARD_ERROR(CMD17, "Read single block")\ - SD_CARD_ERROR(CMD18, "Read multiple blocks")\ - SD_CARD_ERROR(CMD24, "Write single block")\ - SD_CARD_ERROR(CMD25, "Write multiple blocks")\ - SD_CARD_ERROR(CMD32, "Set first erase block")\ - SD_CARD_ERROR(CMD33, "Set last erase block")\ - SD_CARD_ERROR(CMD38, "Erase selected blocks")\ - SD_CARD_ERROR(CMD58, "Read OCR register")\ - SD_CARD_ERROR(CMD59, "Set CRC mode")\ - SD_CARD_ERROR(ACMD6, "Set SDIO bus width")\ - SD_CARD_ERROR(ACMD13, "Read extended status")\ - SD_CARD_ERROR(ACMD23, "Set pre-erased count")\ - SD_CARD_ERROR(ACMD41, "Activate card initialization")\ - SD_CARD_ERROR(READ_TOKEN, "Bad read data token")\ - SD_CARD_ERROR(READ_CRC, "Read CRC error")\ - SD_CARD_ERROR(READ_FIFO, "SDIO fifo read timeout")\ - SD_CARD_ERROR(READ_REG, "Read CID or CSD failed.")\ - SD_CARD_ERROR(READ_START, "Bad readStart argument")\ - SD_CARD_ERROR(READ_TIMEOUT, "Read data timeout")\ - SD_CARD_ERROR(STOP_TRAN, "Multiple block stop failed")\ - SD_CARD_ERROR(TRANSFER_COMPLETE, "SDIO transfer complete")\ - SD_CARD_ERROR(WRITE_DATA, "Write data not accepted")\ - SD_CARD_ERROR(WRITE_FIFO, "SDIO fifo write timeout")\ - SD_CARD_ERROR(WRITE_START, "Bad writeStart argument")\ - SD_CARD_ERROR(WRITE_PROGRAMMING, "Flash programming")\ - SD_CARD_ERROR(WRITE_TIMEOUT, "Write timeout")\ - SD_CARD_ERROR(DMA, "DMA transfer failed")\ - SD_CARD_ERROR(ERASE, "Card did not accept erase commands")\ - SD_CARD_ERROR(ERASE_SINGLE_SECTOR, "Card does not support erase")\ - SD_CARD_ERROR(ERASE_TIMEOUT, "Erase command timeout")\ - SD_CARD_ERROR(INIT_NOT_CALLED, "Card has not been initialized")\ - SD_CARD_ERROR(INVALID_CARD_CONFIG, "Invalid card config")\ - SD_CARD_ERROR(FUNCTION_NOT_SUPPORTED, "Unsupported SDIO command") - -enum { -#define SD_CARD_ERROR(e, m) SD_CARD_ERROR_##e, - SD_ERROR_CODE_LIST -#undef SD_CARD_ERROR - SD_CARD_ERROR_UNKNOWN -}; -void printSdErrorSymbol(print_t* pr, uint8_t code); -void printSdErrorText(print_t* pr, uint8_t code); -//------------------------------------------------------------------------------ -// card types -/** Standard capacity V1 SD card */ -const uint8_t SD_CARD_TYPE_SD1 = 1; -/** Standard capacity V2 SD card */ -const uint8_t SD_CARD_TYPE_SD2 = 2; -/** High Capacity SD card */ -const uint8_t SD_CARD_TYPE_SDHC = 3; -//------------------------------------------------------------------------------ -// SD operation timeouts -/** CMD0 retry count */ -const uint8_t SD_CMD0_RETRY = 10; -/** command timeout ms */ -const uint16_t SD_CMD_TIMEOUT = 300; -/** erase timeout ms */ -const uint16_t SD_ERASE_TIMEOUT = 10000; -/** init timeout ms */ -const uint16_t SD_INIT_TIMEOUT = 2000; -/** read timeout ms */ -const uint16_t SD_READ_TIMEOUT = 300; -/** write time out ms */ -const uint16_t SD_WRITE_TIMEOUT = 600; -//------------------------------------------------------------------------------ -// SD card commands -/** GO_IDLE_STATE - init card in spi mode if CS low */ -const uint8_t CMD0 = 0X00; -/** ALL_SEND_CID - Asks any card to send the CID. */ -const uint8_t CMD2 = 0X02; -/** SEND_RELATIVE_ADDR - Ask the card to publish a new RCA. */ -const uint8_t CMD3 = 0X03; -/** SWITCH_FUNC - Switch Function Command */ -const uint8_t CMD6 = 0X06; -/** SELECT/DESELECT_CARD - toggles between the stand-by and transfer states. */ -const uint8_t CMD7 = 0X07; -/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ -const uint8_t CMD8 = 0X08; -/** SEND_CSD - read the Card Specific Data (CSD register) */ -const uint8_t CMD9 = 0X09; -/** SEND_CID - read the card identification information (CID register) */ -const uint8_t CMD10 = 0X0A; -/** VOLTAGE_SWITCH -Switch to 1.8V bus signaling level. */ -const uint8_t CMD11 = 0X0B; -/** STOP_TRANSMISSION - end multiple sector read sequence */ -const uint8_t CMD12 = 0X0C; -/** SEND_STATUS - read the card status register */ -const uint8_t CMD13 = 0X0D; -/** READ_SINGLE_SECTOR - read a single data sector from the card */ -const uint8_t CMD17 = 0X11; -/** READ_MULTIPLE_SECTOR - read multiple data sectors from the card */ -const uint8_t CMD18 = 0X12; -/** WRITE_SECTOR - write a single data sector to the card */ -const uint8_t CMD24 = 0X18; -/** WRITE_MULTIPLE_SECTOR - write sectors of data until a STOP_TRANSMISSION */ -const uint8_t CMD25 = 0X19; -/** ERASE_WR_BLK_START - sets the address of the first sector to be erased */ -const uint8_t CMD32 = 0X20; -/** ERASE_WR_BLK_END - sets the address of the last sector of the continuous - range to be erased*/ -const uint8_t CMD33 = 0X21; -/** ERASE - erase all previously selected sectors */ -const uint8_t CMD38 = 0X26; -/** APP_CMD - escape for application specific command */ -const uint8_t CMD55 = 0X37; -/** READ_OCR - read the OCR register of a card */ -const uint8_t CMD58 = 0X3A; -/** CRC_ON_OFF - enable or disable CRC checking */ -const uint8_t CMD59 = 0X3B; -/** SET_BUS_WIDTH - Defines the data bus width for data transfer. */ -const uint8_t ACMD6 = 0X06; -/** SD_STATUS - Send the SD Status. */ -const uint8_t ACMD13 = 0X0D; -/** SET_WR_BLK_ERASE_COUNT - Set the number of write sectors to be - pre-erased before writing */ -const uint8_t ACMD23 = 0X17; -/** SD_SEND_OP_COMD - Sends host capacity support information and - activates the card's initialization process */ -const uint8_t ACMD41 = 0X29; -//============================================================================== -// CARD_STATUS -/** The command's argument was out of the allowed range for this card. */ -const uint32_t CARD_STATUS_OUT_OF_RANGE = 1UL << 31; -/** A misaligned address which did not match the sector length. */ -const uint32_t CARD_STATUS_ADDRESS_ERROR = 1UL << 30; -/** The transferred sector length is not allowed for this card. */ -const uint32_t CARD_STATUS_SECTOR_LEN_ERROR = 1UL << 29; -/** An error in the sequence of erase commands occurred. */ -const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL <<28; -/** An invalid selection of write-sectors for erase occurred. */ -const uint32_t CARD_STATUS_ERASE_PARAM = 1UL << 27; -/** Set when the host attempts to write to a protected sector. */ -const uint32_t CARD_STATUS_WP_VIOLATION = 1UL << 26; -/** When set, signals that the card is locked by the host. */ -const uint32_t CARD_STATUS_CARD_IS_LOCKED = 1UL << 25; -/** Set when a sequence or password error has been detected. */ -const uint32_t CARD_STATUS_LOCK_UNLOCK_FAILED = 1UL << 24; -/** The CRC check of the previous command failed. */ -const uint32_t CARD_STATUS_COM_CRC_ERROR = 1UL << 23; -/** Command not legal for the card state. */ -const uint32_t CARD_STATUS_ILLEGAL_COMMAND = 1UL << 22; -/** Card internal ECC was applied but failed to correct the data. */ -const uint32_t CARD_STATUS_CARD_ECC_FAILED = 1UL << 21; -/** Internal card controller error */ -const uint32_t CARD_STATUS_CC_ERROR = 1UL << 20; -/** A general or an unknown error occurred during the operation. */ -const uint32_t CARD_STATUS_ERROR = 1UL << 19; -// bits 19, 18, and 17 reserved. -/** Permanent WP set or attempt to change read only values of CSD. */ -const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL <<16; -/** partial address space was erased due to write protect. */ -const uint32_t CARD_STATUS_WP_ERASE_SKIP = 1UL << 15; -/** The command has been executed without using the internal ECC. */ -const uint32_t CARD_STATUS_CARD_ECC_DISABLED = 1UL << 14; -/** out of erase sequence command was received. */ -const uint32_t CARD_STATUS_ERASE_RESET = 1UL << 13; -/** The state of the card when receiving the command. - * 0 = idle - * 1 = ready - * 2 = ident - * 3 = stby - * 4 = tran - * 5 = data - * 6 = rcv - * 7 = prg - * 8 = dis - * 9-14 = reserved - * 15 = reserved for I/O mode - */ -const uint32_t CARD_STATUS_CURRENT_STATE = 0XF << 9; -/** Shift for current state. */ -const uint32_t CARD_STATUS_CURRENT_STATE_SHIFT = 9; -/** Corresponds to buffer empty signaling on the bus. */ -const uint32_t CARD_STATUS_READY_FOR_DATA = 1UL << 8; -// bit 7 reserved. -/** Extension Functions may set this bit to get host to deal with events. */ -const uint32_t CARD_STATUS_FX_EVENT = 1UL << 6; -/** The card will expect ACMD, or the command has been interpreted as ACMD */ -const uint32_t CARD_STATUS_APP_CMD = 1UL << 5; -// bit 4 reserved. -/** Error in the sequence of the authentication process. */ -const uint32_t CARD_STATUS_AKE_SEQ_ERROR = 1UL << 3; -// bits 2,1, and 0 reserved for manufacturer test mode. -//============================================================================== -/** status for card in the ready state */ -const uint8_t R1_READY_STATE = 0X00; -/** status for card in the idle state */ -const uint8_t R1_IDLE_STATE = 0X01; -/** status bit for illegal command */ -const uint8_t R1_ILLEGAL_COMMAND = 0X04; -/** start data token for read or write single sector*/ -const uint8_t DATA_START_SECTOR = 0XFE; -/** stop token for write multiple sectors*/ -const uint8_t STOP_TRAN_TOKEN = 0XFD; -/** start data token for write multiple sectors*/ -const uint8_t WRITE_MULTIPLE_TOKEN = 0XFC; -/** mask for data response tokens after a write sector operation */ -const uint8_t DATA_RES_MASK = 0X1F; -/** write data accepted token */ -const uint8_t DATA_RES_ACCEPTED = 0X05; -//============================================================================== -/** - * \class CID - * \brief Card IDentification (CID) register. - */ -typedef struct CID { - // byte 0 - /** Manufacturer ID */ - unsigned char mid; - // byte 1-2 - /** OEM/Application ID */ - char oid[2]; - // byte 3-7 - /** Product name */ - char pnm[5]; - // byte 8 - /** Product revision least significant digit */ - unsigned char prv_m : 4; - /** Product revision most significant digit */ - unsigned char prv_n : 4; - // byte 9-12 - /** Product serial number */ - uint32_t psn; - // byte 13 - /** Manufacturing date year high digit */ - unsigned char mdt_year_high : 4; - /** not used */ - unsigned char reserved : 4; - // byte 14 - /** Manufacturing date month */ - unsigned char mdt_month : 4; - /** Manufacturing date year low digit */ - unsigned char mdt_year_low : 4; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** CRC7 checksum */ - unsigned char crc : 7; -} __attribute__((packed)) cid_t; - -//============================================================================== -#ifndef DOXYGEN_SHOULD_SKIP_THIS -/** - * \class CSDV1 - * \brief CSD register for version 1.00 cards . - */ -typedef struct CSDV1 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - unsigned char taac; - // byte 2 - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - unsigned char c_size_high : 2; - unsigned char reserved2 : 2; - unsigned char dsr_imp : 1; - unsigned char read_blk_misalign : 1; - unsigned char write_blk_misalign : 1; - unsigned char read_bl_partial : 1; - // byte 7 - unsigned char c_size_mid; - // byte 8 - unsigned char vdd_r_curr_max : 3; - unsigned char vdd_r_curr_min : 3; - unsigned char c_size_low : 2; - // byte 9 - unsigned char c_size_mult_high : 2; - unsigned char vdd_w_cur_max : 3; - unsigned char vdd_w_curr_min : 3; - // byte 10 - unsigned char sector_size_high : 6; - unsigned char erase_blk_en : 1; - unsigned char c_size_mult_low : 1; - // byte 11 - unsigned char wp_grp_size : 7; - unsigned char sector_size_low : 1; - // byte 12 - unsigned char write_bl_len_high : 2; - unsigned char r2w_factor : 3; - unsigned char reserved3 : 2; - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved4 : 5; - unsigned char write_partial : 1; - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved5: 2; - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Indicates the file format on the card */ - unsigned char file_format_grp : 1; - // byte 15 - unsigned char always1 : 1; - unsigned char crc : 7; -} __attribute__((packed)) csd1_t; -//============================================================================== -/** - * \class CSDV2 - * \brief CSD register for version 2.00 cards. - */ -typedef struct CSDV2 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - /** fixed to 0X0E */ - unsigned char taac; - // byte 2 - /** fixed to 0 */ - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - /** This field is fixed to 9h, which indicates READ_BL_LEN=512 Byte */ - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - /** not used */ - unsigned char reserved2 : 4; - unsigned char dsr_imp : 1; - /** fixed to 0 */ - unsigned char read_blk_misalign : 1; - /** fixed to 0 */ - unsigned char write_blk_misalign : 1; - /** fixed to 0 - no partial read */ - unsigned char read_bl_partial : 1; - // byte 7 - /** high part of card size */ - unsigned char c_size_high : 6; - /** not used */ - unsigned char reserved3 : 2; - // byte 8 - /** middle part of card size */ - unsigned char c_size_mid; - // byte 9 - /** low part of card size */ - unsigned char c_size_low; - // byte 10 - /** sector size is fixed at 64 KB */ - unsigned char sector_size_high : 6; - /** fixed to 1 - erase single is supported */ - unsigned char erase_blk_en : 1; - /** not used */ - unsigned char reserved4 : 1; - // byte 11 - unsigned char wp_grp_size : 7; - /** sector size is fixed at 64 KB */ - unsigned char sector_size_low : 1; - // byte 12 - /** write_bl_len fixed for 512 byte sectors */ - unsigned char write_bl_len_high : 2; - /** fixed value of 2 */ - unsigned char r2w_factor : 3; - /** not used */ - unsigned char reserved5 : 2; - /** fixed value of 0 - no write protect groups */ - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved6 : 5; - /** always zero - no partial sector read*/ - unsigned char write_partial : 1; - /** write_bl_len fixed for 512 byte sectors */ - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved7: 2; - /** Do not use always 0 */ - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Do not use always 0 */ - unsigned char file_format_grp : 1; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** checksum */ - unsigned char crc : 7; -} __attribute__((packed)) csd2_t; -//============================================================================== -/** - * \class csd_t - * \brief Union of old and new style CSD register. - */ -union csd_t { - csd1_t v1; - csd2_t v2; -}; -//----------------------------------------------------------------------------- -inline uint32_t sdCardCapacity(csd_t* csd) { - if (csd->v1.csd_ver == 0) { - uint8_t read_bl_len = csd->v1.read_bl_len; - uint16_t c_size = (csd->v1.c_size_high << 10) - | (csd->v1.c_size_mid << 2) | csd->v1.c_size_low; - uint8_t c_size_mult = (csd->v1.c_size_mult_high << 1) - | csd->v1.c_size_mult_low; - return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); - } else if (csd->v2.csd_ver == 1) { - return (((uint32_t)csd->v2.c_size_high << 16) + - ((uint16_t)csd->v2.c_size_mid << 8) + csd->v2.c_size_low + 1) << 10; - } else { - return 0; - } -} -//----------------------------------------------------------------------------- -// fields are big endian -typedef struct SdStatus { - uint8_t busWidthSecureMode; - uint8_t reserved1; - uint8_t sdCardType[2]; - uint8_t sizeOfProtectedArea[4]; - uint8_t speedClass; - uint8_t performanceMove; - uint8_t auSize; - uint8_t eraseSize[2]; - uint8_t eraseTimeoutOffset; - uint8_t uhsSpeedAuSize; - uint8_t videoSpeed; - uint8_t vscAuSize[2]; - uint8_t susAddr[3]; - uint8_t reserved2[3]; - uint8_t reservedManufacturer[40]; -} SdStatus_t; -#endif // DOXYGEN_SHOULD_SKIP_THIS -#endif // SdCardInfo_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.h b/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.h deleted file mode 100644 index 69573dc1..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdCard/SdioTeensy.h +++ /dev/null @@ -1,277 +0,0 @@ -#ifndef SdioTeensy_h -#define SdioTeensy_h - -// From Paul's SD.h driver. - -#if defined(__IMXRT1062__) -#define MAKE_REG_MASK(m,s) (((uint32_t)(((uint32_t)(m) << s)))) -#define MAKE_REG_GET(x,m,s) (((uint32_t)(((uint32_t)(x)>>s) & m))) -#define MAKE_REG_SET(x,m,s) (((uint32_t)(((uint32_t)(x) & m) << s))) - -#define SDHC_BLKATTR_BLKSIZE_MASK MAKE_REG_MASK(0x1FFF,0) //uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size Mask -#define SDHC_BLKATTR_BLKSIZE(n) MAKE_REG_SET(n,0x1FFF,0) //uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size -#define SDHC_BLKATTR_BLKCNT_MASK MAKE_REG_MASK(0x1FFF,16) //((uint32_t)0x1FFF<<16) -#define SDHC_BLKATTR_BLKCNT(n) MAKE_REG_SET(n,0x1FFF,16) //(uint32_t)(((n) & 0x1FFF)<<16) // Blocks Count For Current Transfer - -#define SDHC_XFERTYP_CMDINX(n) MAKE_REG_SET(n,0x3F,24) //(uint32_t)(((n) & 0x3F)<<24)// Command Index -#define SDHC_XFERTYP_CMDTYP(n) MAKE_REG_SET(n,0x3,22) //(uint32_t)(((n) & 0x3)<<22) // Command Type -#define SDHC_XFERTYP_DPSEL MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data Present Select -#define SDHC_XFERTYP_CICEN MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Command Index Check Enable -#define SDHC_XFERTYP_CCCEN MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command CRC Check Enable -#define SDHC_XFERTYP_RSPTYP(n) MAKE_REG_SET(n,0x3,16) //(uint32_t)(((n) & 0x3)<<16) // Response Type Select -#define SDHC_XFERTYP_MSBSEL MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Multi/Single Block Select -#define SDHC_XFERTYP_DTDSEL MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Data Transfer Direction Select -#define SDHC_XFERTYP_AC12EN MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Auto CMD12 Enable -#define SDHC_XFERTYP_BCEN MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Block Count Enable -#define SDHC_XFERTYP_DMAEN MAKE_REG_MASK(0x3,0) //((uint32_t)0x00000001) // DMA Enable - -#define SDHC_PRSSTAT_DLSL_MASK MAKE_REG_MASK(0xFF,24) //((uint32_t)0xFF000000) // DAT Line Signal Level -#define SDHC_PRSSTAT_CLSL MAKE_REG_MASK(0x1,23) //((uint32_t)0x00800000) // CMD Line Signal Level -#define SDHC_PRSSTAT_WPSPL MAKE_REG_MASK(0x1,19) // -#define SDHC_PRSSTAT_CDPL MAKE_REG_MASK(0x1,18) // -#define SDHC_PRSSTAT_CINS MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Card Inserted -#define SDHC_PRSSTAT_TSCD MAKE_REG_MASK(0x1,15) -#define SDHC_PRSSTAT_RTR MAKE_REG_MASK(0x1,12) -#define SDHC_PRSSTAT_BREN MAKE_REG_MASK(0x1,11) //((uint32_t)0x00000800) // Buffer Read Enable -#define SDHC_PRSSTAT_BWEN MAKE_REG_MASK(0x1,10) //((uint32_t)0x00000400) // Buffer Write Enable -#define SDHC_PRSSTAT_RTA MAKE_REG_MASK(0x1,9) //((uint32_t)0x00000200) // Read Transfer Active -#define SDHC_PRSSTAT_WTA MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Write Transfer Active -#define SDHC_PRSSTAT_SDOFF MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // SD Clock Gated Off Internally -#define SDHC_PRSSTAT_PEROFF MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // SDHC clock Gated Off Internally -#define SDHC_PRSSTAT_HCKOFF MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // System Clock Gated Off Internally -#define SDHC_PRSSTAT_IPGOFF MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Bus Clock Gated Off Internally -#define SDHC_PRSSTAT_SDSTB MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // SD Clock Stable -#define SDHC_PRSSTAT_DLA MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Data Line Active -#define SDHC_PRSSTAT_CDIHB MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Command Inhibit (DAT) -#define SDHC_PRSSTAT_CIHB MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Inhibit (CMD) - -#define SDHC_PROTCT_NONEXACT_BLKRD MAKE_REG_MASK(0x1,30) // -#define SDHC_PROTCT_BURST_LENEN(n) MAKE_REG_SET(n,0x7,12) // -#define SDHC_PROCTL_WECRM MAKE_REG_MASK(0x1,26) //((uint32_t)0x04000000) // Wakeup Event Enable On SD Card Removal -#define SDHC_PROCTL_WECINS MAKE_REG_MASK(0x1,25) //((uint32_t)0x02000000) // Wakeup Event Enable On SD Card Insertion -#define SDHC_PROCTL_WECINT MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Wakeup Event Enable On Card Interrupt -#define SDHC_PROCTL_RD_DONE_NOBLK MAKE_REG_MASK(0x1,20) // -#define SDHC_PROCTL_IABG MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Interrupt At Block Gap -#define SDHC_PROCTL_RWCTL MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Read Wait Control -#define SDHC_PROCTL_CREQ MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Continue Request -#define SDHC_PROCTL_SABGREQ MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Stop At Block Gap Request -#define SDHC_PROCTL_DMAS(n) MAKE_REG_SET(n,0x3,8) //(uint32_t)(((n) & 0x3)<<8) // DMA Select -#define SDHC_PROCTL_CDSS MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Detect Signal Selection -#define SDHC_PROCTL_CDTL MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Detect Test Level -#define SDHC_PROCTL_EMODE(n) MAKE_REG_SET(n,0x3,4) //(uint32_t)(((n) & 0x3)<<4) // Endian Mode -#define SDHC_PROCTL_EMODE_MASK MAKE_REG_MASK(0x3,4) //(uint32_t)((0x3)<<4) // Endian Mode -#define SDHC_PROCTL_D3CD MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DAT3 As Card Detection Pin -#define SDHC_PROCTL_DTW(n) MAKE_REG_SET(n,0x3,1) //(uint32_t)(((n) & 0x3)<<1) // Data Transfer Width, 0=1bit, 1=4bit, 2=8bit -#define SDHC_PROCTL_DTW_MASK MAKE_REG_MASK(0x3,1) //((uint32_t)0x00000006) -#define SDHC_PROCTL_LCTL MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // LED Control - -#define SDHC_SYSCTL_RSTT MAKE_REG_MASK(0x1,28) // -#define SDHC_SYSCTL_INITA MAKE_REG_MASK(0x1,27) //((uint32_t)0x08000000) // Initialization Active -#define SDHC_SYSCTL_RSTD MAKE_REG_MASK(0x1,26) //((uint32_t)0x04000000) // Software Reset For DAT Line -#define SDHC_SYSCTL_RSTC MAKE_REG_MASK(0x1,25) //((uint32_t)0x02000000) // Software Reset For CMD Line -#define SDHC_SYSCTL_RSTA MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Software Reset For ALL -#define SDHC_SYSCTL_DTOCV(n) MAKE_REG_SET(n,0xF,16) //(uint32_t)(((n) & 0xF)<<16) // Data Timeout Counter Value -#define SDHC_SYSCTL_DTOCV_MASK MAKE_REG_MASK(0xF,16) //((uint32_t)0x000F0000) -#define SDHC_SYSCTL_SDCLKFS(n) MAKE_REG_SET(n,0xFF,8) //(uint32_t)(((n) & 0xFF)<<8) // SDCLK Frequency Select -#define SDHC_SYSCTL_SDCLKFS_MASK MAKE_REG_MASK(0xFF,8) //((uint32_t)0x0000FF00) -#define SDHC_SYSCTL_DVS(n) MAKE_REG_SET(n,0xF,4) //(uint32_t)(((n) & 0xF)<<4) // Divisor -#define SDHC_SYSCTL_DVS_MASK MAKE_REG_MASK(0xF,4) //((uint32_t)0x000000F0) - -#define SDHC_SYSCTL_SDCLKEN ((uint32_t)0x00000008) // SD Clock Enable -#define SDHC_SYSCTL_PEREN ((uint32_t)0x00000004) // Peripheral Clock Enable -#define SDHC_SYSCTL_HCKEN ((uint32_t)0x00000002) // System Clock Enable -#define SDHC_SYSCTL_IPGEN ((uint32_t)0x00000001) // IPG Clock Enable - -#define SDHC_IRQSTAT_DMAE MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // DMA Error -#define SDHC_IRQSTAT_TNE MAKE_REG_MASK(0x1,26) // -#define SDHC_IRQSTAT_AC12E MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Auto CMD12 Error -#define SDHC_IRQSTAT_DEBE MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Data End Bit Error -#define SDHC_IRQSTAT_DCE MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data CRC Error -#define SDHC_IRQSTAT_DTOE MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Data Timeout Error -#define SDHC_IRQSTAT_CIE MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command Index Error -#define SDHC_IRQSTAT_CEBE MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Command End Bit Error -#define SDHC_IRQSTAT_CCE MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Command CRC Error -#define SDHC_IRQSTAT_CTOE MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Command Timeout Error -#define SDHC_IRQSTAT_TP MAKE_REG_MASK(0x1,14) // -#define SDHC_IRQSTAT_RTE MAKE_REG_MASK(0x1,12) // -#define SDHC_IRQSTAT_CINT MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Card Interrupt -#define SDHC_IRQSTAT_CRM MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Removal -#define SDHC_IRQSTAT_CINS MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Insertion -#define SDHC_IRQSTAT_BRR MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Buffer Read Ready -#define SDHC_IRQSTAT_BWR MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Buffer Write Ready -#define SDHC_IRQSTAT_DINT MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DMA Interrupt -#define SDHC_IRQSTAT_BGE MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Block Gap Event -#define SDHC_IRQSTAT_TC MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Transfer Complete -#define SDHC_IRQSTAT_CC MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Complete - -#define SDHC_IRQSTATEN_DMAESEN MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // DMA Error Status Enable -#define SDHC_IRQSTATEN_TNESEN MAKE_REG_MASK(0x1,26) // -#define SDHC_IRQSTATEN_AC12ESEN MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Auto CMD12 Error Status Enable -#define SDHC_IRQSTATEN_DEBESEN MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Data End Bit Error Status Enable -#define SDHC_IRQSTATEN_DCESEN MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data CRC Error Status Enable -#define SDHC_IRQSTATEN_DTOESEN MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Data Timeout Error Status Enable -#define SDHC_IRQSTATEN_CIESEN MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command Index Error Status Enable -#define SDHC_IRQSTATEN_CEBESEN MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Command End Bit Error Status Enable -#define SDHC_IRQSTATEN_CCESEN MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Command CRC Error Status Enable -#define SDHC_IRQSTATEN_CTOESEN MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Command Timeout Error Status Enable -#define SDHC_IRQSTATEN_TPSEN MAKE_REG_MASK(0x1,14) // -#define SDHC_IRQSTATEN_RTESEN MAKE_REG_MASK(0x1,12) // -#define SDHC_IRQSTATEN_CINTSEN MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Card Interrupt Status Enable -#define SDHC_IRQSTATEN_CRMSEN MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Removal Status Enable -#define SDHC_IRQSTATEN_CINSEN MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Insertion Status Enable -#define SDHC_IRQSTATEN_BRRSEN MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Buffer Read Ready Status Enable -#define SDHC_IRQSTATEN_BWRSEN MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Buffer Write Ready Status Enable -#define SDHC_IRQSTATEN_DINTSEN MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DMA Interrupt Status Enable -#define SDHC_IRQSTATEN_BGESEN MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Block Gap Event Status Enable -#define SDHC_IRQSTATEN_TCSEN MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Transfer Complete Status Enable -#define SDHC_IRQSTATEN_CCSEN MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Complete Status Enable - -#define SDHC_IRQSIGEN_DMAEIEN MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // DMA Error Interrupt Enable -#define SDHC_IRQSIGEN_TNEIEN MAKE_REG_MASK(0x1,26) // -#define SDHC_IRQSIGEN_AC12EIEN MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Auto CMD12 Error Interrupt Enable -#define SDHC_IRQSIGEN_DEBEIEN MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Data End Bit Error Interrupt Enable -#define SDHC_IRQSIGEN_DCEIEN MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Data CRC Error Interrupt Enable -#define SDHC_IRQSIGEN_DTOEIEN MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Data Timeout Error Interrupt Enable -#define SDHC_IRQSIGEN_CIEIEN MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Command Index Error Interrupt Enable -#define SDHC_IRQSIGEN_CEBEIEN MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Command End Bit Error Interrupt Enable -#define SDHC_IRQSIGEN_CCEIEN MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Command CRC Error Interrupt Enable -#define SDHC_IRQSIGEN_CTOEIEN MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Command Timeout Error Interrupt Enable -#define SDHC_IRQSIGEN_TPIEN MAKE_REG_MASK(0x1,14) // -#define SDHC_IRQSIGEN_RTEIEN MAKE_REG_MASK(0x1,12) // -#define SDHC_IRQSIGEN_CINTIEN MAKE_REG_MASK(0x1,8) //((uint32_t)0x00000100) // Card Interrupt Interrupt Enable -#define SDHC_IRQSIGEN_CRMIEN MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Card Removal Interrupt Enable -#define SDHC_IRQSIGEN_CINSIEN MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Card Insertion Interrupt Enable -#define SDHC_IRQSIGEN_BRRIEN MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Buffer Read Ready Interrupt Enable -#define SDHC_IRQSIGEN_BWRIEN MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Buffer Write Ready Interrupt Enable -#define SDHC_IRQSIGEN_DINTIEN MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // DMA Interrupt Interrupt Enable -#define SDHC_IRQSIGEN_BGEIEN MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Block Gap Event Interrupt Enable -#define SDHC_IRQSIGEN_TCIEN MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Transfer Complete Interrupt Enable -#define SDHC_IRQSIGEN_CCIEN MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Command Complete Interrupt Enable - -#define SDHC_AC12ERR_SMPLCLK_SEL MAKE_REG_MASK(0x1,23) // -#define SDHC_AC12ERR_EXEC_TUNING MAKE_REG_MASK(0x1,22) // -#define SDHC_AC12ERR_CNIBAC12E MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Command Not Issued By Auto CMD12 Error -#define SDHC_AC12ERR_AC12IE MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Auto CMD12 Index Error -#define SDHC_AC12ERR_AC12CE MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // Auto CMD12 CRC Error -#define SDHC_AC12ERR_AC12EBE MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Auto CMD12 End Bit Error -#define SDHC_AC12ERR_AC12TOE MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Auto CMD12 Timeout Error -#define SDHC_AC12ERR_AC12NE MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Auto CMD12 Not Executed - -#define SDHC_HTCAPBLT_VS18 MAKE_REG_MASK(0x1,26) // -#define SDHC_HTCAPBLT_VS30 MAKE_REG_MASK(0x1,25) // -#define SDHC_HTCAPBLT_VS33 MAKE_REG_MASK(0x1,24) // -#define SDHC_HTCAPBLT_SRS MAKE_REG_MASK(0x1,23) // -#define SDHC_HTCAPBLT_DMAS MAKE_REG_MASK(0x1,22) // -#define SDHC_HTCAPBLT_HSS MAKE_REG_MASK(0x1,21) // -#define SDHC_HTCAPBLT_ADMAS MAKE_REG_MASK(0x1,20) // -#define SDHC_HTCAPBLT_MBL_VAL MAKE_REG_GET((USDHC1_HOST_CTRL_CAP),0x7,16) // -#define SDHC_HTCAPBLT_RETUN_MODE MAKE_REG_GET((USDHC1_HOST_CTRL_CAP),0x3,14) // -#define SDHC_HTCAPBLT_TUNE_SDR50 MAKE_REG_MASK(0x1,13) // -#define SDHC_HTCAPBLT_TIME_RETUN(n) MAKE_REG_SET(n,0xF,8) // - -#define SDHC_WML_WR_BRSTLEN_MASK MAKE_REG_MASK(0x1F,24) // -#define SDHC_WML_RD_BRSTLEN_MASK MAKE_REG_MASK(0x1F,8) // -#define SDHC_WML_WR_WML_MASK MAKE_REG_MASK(0xFF,16) // -#define SDHC_WML_RD_WML_MASK MAKE_REG_MASK(0xFF,0) // -#define SDHC_WML_WR_BRSTLEN(n) MAKE_REG_SET(n,0x1F,24) //(uint32_t)(((n) & 0x7F)<<16) // Write Burst Len -#define SDHC_WML_RD_BRSTLEN(n) MAKE_REG_SET(n,0x1F,8) //(uint32_t)(((n) & 0x7F)<<0) // Read Burst Len -#define SDHC_WML_WR_WML(n) MAKE_REG_SET(n,0xFF,16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level -#define SDHC_WML_RD_WML(n) MAKE_REG_SET(n,0xFF,0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level -#define SDHC_WML_WRWML(n) MAKE_REG_SET(n,0xFF,16) //(uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level -#define SDHC_WML_RDWML(n) MAKE_REG_SET(n,0xFF,0) //(uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level - -// Teensy 4.0 only -#define SDHC_MIX_CTRL_DMAEN MAKE_REG_MASK(0x1,0) // -#define SDHC_MIX_CTRL_BCEN MAKE_REG_MASK(0x1,1) // -#define SDHC_MIX_CTRL_AC12EN MAKE_REG_MASK(0x1,2) // -#define SDHC_MIX_CTRL_DDR_EN MAKE_REG_MASK(0x1,3) // -#define SDHC_MIX_CTRL_DTDSEL MAKE_REG_MASK(0x1,4) // -#define SDHC_MIX_CTRL_MSBSEL MAKE_REG_MASK(0x1,5) // -#define SDHC_MIX_CTRL_NIBBLE_POS MAKE_REG_MASK(0x1,6) // -#define SDHC_MIX_CTRL_AC23EN MAKE_REG_MASK(0x1,7) // - -#define SDHC_FEVT_CINT MAKE_REG_MASK(0x1,31) //((uint32_t)0x80000000) // Force Event Card Interrupt -#define SDHC_FEVT_DMAE MAKE_REG_MASK(0x1,28) //((uint32_t)0x10000000) // Force Event DMA Error -#define SDHC_FEVT_AC12E MAKE_REG_MASK(0x1,24) //((uint32_t)0x01000000) // Force Event Auto CMD12 Error -#define SDHC_FEVT_DEBE MAKE_REG_MASK(0x1,22) //((uint32_t)0x00400000) // Force Event Data End Bit Error -#define SDHC_FEVT_DCE MAKE_REG_MASK(0x1,21) //((uint32_t)0x00200000) // Force Event Data CRC Error -#define SDHC_FEVT_DTOE MAKE_REG_MASK(0x1,20) //((uint32_t)0x00100000) // Force Event Data Timeout Error -#define SDHC_FEVT_CIE MAKE_REG_MASK(0x1,19) //((uint32_t)0x00080000) // Force Event Command Index Error -#define SDHC_FEVT_CEBE MAKE_REG_MASK(0x1,18) //((uint32_t)0x00040000) // Force Event Command End Bit Error -#define SDHC_FEVT_CCE MAKE_REG_MASK(0x1,17) //((uint32_t)0x00020000) // Force Event Command CRC Error -#define SDHC_FEVT_CTOE MAKE_REG_MASK(0x1,16) //((uint32_t)0x00010000) // Force Event Command Timeout Error -#define SDHC_FEVT_CNIBAC12E MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // Force Event Command Not Executed By Auto Command 12 Error -#define SDHC_FEVT_AC12IE MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Force Event Auto Command 12 Index Error -#define SDHC_FEVT_AC12EBE MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) // Force Event Auto Command 12 End Bit Error -#define SDHC_FEVT_AC12CE MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) // Force Event Auto Command 12 CRC Error -#define SDHC_FEVT_AC12TOE MAKE_REG_MASK(0x1,1) //((uint32_t)0x00000002) // Force Event Auto Command 12 Time Out Error -#define SDHC_FEVT_AC12NE MAKE_REG_MASK(0x1,0) //((uint32_t)0x00000001) // Force Event Auto Command 12 Not Executed - -#define SDHC_ADMAES_ADMADCE MAKE_REG_MASK(0x1,3) //((uint32_t)0x00000008) -#define SDHC_ADMAES_ADMALME MAKE_REG_MASK(0x1,2) //((uint32_t)0x00000004) -#define SDHC_ADMAES_ADMAES_MASK MAKE_REG_MASK(0x3,0) //((uint32_t)0x00000003) - -#define SDHC_MMCBOOT_BOOTBLKCNT(n) MAKE_REG_MASK(0xFF,16) //(uint32_t)(((n) & 0xFFF)<<16) // stop at block gap value of automatic mode -#define SDHC_MMCBOOT_AUTOSABGEN MAKE_REG_MASK(0x1,7) //((uint32_t)0x00000080) // enable auto stop at block gap function -#define SDHC_MMCBOOT_BOOTEN MAKE_REG_MASK(0x1,6) //((uint32_t)0x00000040) // Boot Mode Enable -#define SDHC_MMCBOOT_BOOTMODE MAKE_REG_MASK(0x1,5) //((uint32_t)0x00000020) // Boot Mode Select -#define SDHC_MMCBOOT_BOOTACK MAKE_REG_MASK(0x1,4) //((uint32_t)0x00000010) // Boot Ack Mode Select -#define SDHC_MMCBOOT_DTOCVACK(n) MAKE_REG_MASK(0xF,0) //(uint32_t)(((n) & 0xF)<<0) // Boot ACK Time Out Counter Value -//#define SDHC_HOSTVER (*(volatile uint32_t*)0x400B10FC) // Host Controller Version - -#define CCM_ANALOG_PFD_528_PFD0_FRAC_MASK 0x3f -#define CCM_ANALOG_PFD_528_PFD0_FRAC(n) ((n) & CCM_ANALOG_PFD_528_PFD0_FRAC_MASK) -#define CCM_ANALOG_PFD_528_PFD1_FRAC_MASK (0x3f<<8) -#define CCM_ANALOG_PFD_528_PFD1_FRAC(n) (((n)<<8) & CCM_ANALOG_PFD_528_PFD1_FRAC_MASK) -#define CCM_ANALOG_PFD_528_PFD2_FRAC_MASK (0x3f<<16) -#define CCM_ANALOG_PFD_528_PFD2_FRAC(n) (((n)<<16) & CCM_ANALOG_PFD_528_PFD2_FRAC_MASK) -#define CCM_ANALOG_PFD_528_PFD3_FRAC_MASK ((0x3f<<24) -#define CCM_ANALOG_PFD_528_PFD3_FRAC(n) (((n)<<24) & CCM_ANALOG_PFD_528_PFD3_FRAC_MASK) - -#define SDHC_DSADDR (USDHC1_DS_ADDR ) // DMA System Address register -#define SDHC_BLKATTR (USDHC1_BLK_ATT) // Block Attributes register -#define SDHC_CMDARG (USDHC1_CMD_ARG) // Command Argument register -#define SDHC_XFERTYP (USDHC1_CMD_XFR_TYP) // Transfer Type register -#define SDHC_CMDRSP0 (USDHC1_CMD_RSP0) // Command Response 0 -#define SDHC_CMDRSP1 (USDHC1_CMD_RSP1) // Command Response 1 -#define SDHC_CMDRSP2 (USDHC1_CMD_RSP2) // Command Response 2 -#define SDHC_CMDRSP3 (USDHC1_CMD_RSP3) // Command Response 3 -#define SDHC_DATPORT (USDHC1_DATA_BUFF_ACC_PORT) // Buffer Data Port register -#define SDHC_PRSSTAT (USDHC1_PRES_STATE) // Present State register -#define SDHC_PROCTL (USDHC1_PROT_CTRL) // Protocol Control register -#define SDHC_SYSCTL (USDHC1_SYS_CTRL) // System Control register -#define SDHC_IRQSTAT (USDHC1_INT_STATUS) // Interrupt Status register -#define SDHC_IRQSTATEN (USDHC1_INT_STATUS_EN) // Interrupt Status Enable register -#define SDHC_IRQSIGEN (USDHC1_INT_SIGNAL_EN) // Interrupt Signal Enable register -#define SDHC_AC12ERR (USDHC1_AUTOCMD12_ERR_STATUS) // Auto CMD12 Error Status Register -#define SDHC_HTCAPBLT (USDHC1_HOST_CTRL_CAP) // Host Controller Capabilities -#define SDHC_WML (USDHC1_WTMK_LVL) // Watermark Level Register -#define SDHC_MIX_CTRL (USDHC1_MIX_CTRL) // Mixer Control -#define SDHC_FEVT (USDHC1_FORCE_EVENT) // Force Event register -#define SDHC_ADMAES (USDHC1_ADMA_ERR_STATUS) // ADMA Error Status register -#define SDHC_ADSADDR (USDHC1_ADMA_SYS_ADDR) // ADMA System Addressregister -#define SDHC_VENDOR (USDHC1_VEND_SPEC) // Vendor Specific register -#define SDHC_MMCBOOT (USDHC1_MMC_BOOT) // MMC Boot register -#define SDHC_VENDOR2 (USDHC2_VEND_SPEC2) // Vendor Specific2 register -// -#define IRQ_SDHC IRQ_SDHC1 - -#define SDHC_MAX_DVS (0xF + 1U) -#define SDHC_MAX_CLKFS (0xFF + 1U) -#define SDHC_PREV_DVS(x) ((x) -= 1U) -#define SDHC_PREV_CLKFS(x, y) ((x) >>= (y)) - -#define CCM_CSCDR1_USDHC1_CLK_PODF_MASK (0x7<<11) -#define CCM_CSCDR1_USDHC1_CLK_PODF(n) (((n)&0x7)<<11) - -#define IOMUXC_SW_PAD_CTL_PAD_SRE ((0x1<)<0) -#define IOMUXC_SW_PAD_CTL_PAD_PKE ((0x1)<<12) -#define IOMUXC_SW_PAD_CTL_PAD_PUE ((0x1)<<13) -#define IOMUXC_SW_PAD_CTL_PAD_HYS ((0x1)<<16) -#define IOMUXC_SW_PAD_CTL_PAD_SPEED(n) (((n)&0x3)<<6) -#define IOMUXC_SW_PAD_CTL_PAD_PUS(n) (((n)&0x3)<<14) -#define IOMUXC_SW_PAD_CTL_PAD_PUS_MASK ((0x3)<<14) -#define IOMUXC_SW_PAD_CTL_PAD_DSE(n) (((n)&0x7)<<3) -#define IOMUXC_SW_PAD_CTL_PAD_DSE_MASK ((0x7)<<3) -#endif // defined(__IMXRT1062__) -#endif // SdioTeensy_h \ No newline at end of file diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/SdFat.h b/extra-libraries/ESP32/SdFat-2.1.2/src/SdFat.h deleted file mode 100644 index 3ae8ea9b..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/SdFat.h +++ /dev/null @@ -1,582 +0,0 @@ -/** - * Copyright (c) 2011-2021 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdFat_h -#define SdFat_h -/** - * \file - * \brief main SdFs include file. - */ -#include "common/SysCall.h" -#include "SdCard/SdCard.h" -#include "ExFatLib/ExFatLib.h" -#include "FatLib/FatLib.h" -#include "FsLib/FsLib.h" -#if INCLUDE_SDIOS -#include "sdios.h" -#endif // INCLUDE_SDIOS -//------------------------------------------------------------------------------ -/** SdFat version for cpp use. */ -#define SD_FAT_VERSION 20102 -/** SdFat version as string. */ -#define SD_FAT_VERSION_STR "2.1.2" -//============================================================================== -/** - * \class SdBase - * \brief base SD file system template class. - */ -template -class SdBase : public Vol -{ -public: - //---------------------------------------------------------------------------- - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \return true for success or false for failure. - */ - bool begin(SdCsPin_t csPin = SS) - { -#ifdef BUILTIN_SDCARD - if (csPin == BUILTIN_SDCARD) { - return begin(SdioConfig(FIFO_SDIO)); - } -#endif // BUILTIN_SDCARD - return begin(SdSpiConfig(csPin, SHARED_SPI)); - } - //---------------------------------------------------------------------------- - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] maxSck Maximum SCK frequency. - * \return true for success or false for failure. - */ - bool begin(SdCsPin_t csPin, uint32_t maxSck) - { - return begin(SdSpiConfig(csPin, SHARED_SPI, maxSck)); - } - //---------------------------------------------------------------------------- - /** Initialize SD card and file system for SPI mode. - * - * \param[in] spiConfig SPI configuration. - * \return true for success or false for failure. - */ - bool begin(SdSpiConfig spiConfig) - { - return cardBegin(spiConfig) && Vol::begin(m_card); - } - //--------------------------------------------------------------------------- - /** Initialize SD card and file system for SDIO mode. - * - * \param[in] sdioConfig SDIO configuration. - * \return true for success or false for failure. - */ - bool begin(SdioConfig sdioConfig) - { - return cardBegin(sdioConfig) && Vol::begin(m_card); - } - //---------------------------------------------------------------------------- - /** \return Pointer to SD card object. */ - SdCard* card() - { - return m_card; - } - //---------------------------------------------------------------------------- - /** Initialize SD card in SPI mode. - * - * \param[in] spiConfig SPI configuration. - * \return true for success or false for failure. - */ - bool cardBegin(SdSpiConfig spiConfig) - { - m_card = m_cardFactory.newCard(spiConfig); - return m_card && !m_card->errorCode(); - } - //---------------------------------------------------------------------------- - /** Initialize SD card in SDIO mode. - * - * \param[in] sdioConfig SDIO configuration. - * \return true for success or false for failure. - */ - bool cardBegin(SdioConfig sdioConfig) - { - m_card = m_cardFactory.newCard(sdioConfig); - return m_card && !m_card->errorCode(); - } - //---------------------------------------------------------------------------- - /** End use of card. */ - void end() - { - Vol::end(); - if (m_card) { - m_card->end(); - } - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] pr Print destination. - */ - void errorHalt(print_t* pr) - { - if (sdErrorCode()) { - pr->print(F("SdError: 0X")); - pr->print(sdErrorCode(), HEX); - pr->print(F(",0X")); - pr->println(sdErrorData(), HEX); - } else if (!Vol::fatType()) { - pr->println(F("Check SD format.")); - } - while (true) {} - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorHalt(print_t* pr, const char* msg) - { - pr->print(F("error: ")); - pr->println(msg); - errorHalt(pr); - } - //---------------------------------------------------------------------------- - /** %Print msg and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorHalt(print_t* pr, const __FlashStringHelper* msg) - { - pr->print(F("error: ")); - pr->println(msg); - errorHalt(pr); - } - //---------------------------------------------------------------------------- - /** Format SD card - * - * \param[in] pr Print destination. - * \return true for success else false. - */ - bool format(print_t* pr = nullptr) - { - Fmt fmt; - uint8_t* mem = Vol::end(); - if (!mem) { - return false; - } - bool switchSpi = hasDedicatedSpi() && !isDedicatedSpi(); - if (switchSpi && !setDedicatedSpi(true)) { - return 0; - } - bool rtn = fmt.format(card(), mem, pr); - if (switchSpi && !setDedicatedSpi(false)) { - return 0; - } - return rtn; - } - //---------------------------------------------------------------------------- - /** \return the free cluster count. */ - uint32_t freeClusterCount() - { - bool switchSpi = hasDedicatedSpi() && !isDedicatedSpi(); - if (switchSpi && !setDedicatedSpi(true)) { - return 0; - } - uint32_t rtn = Vol::freeClusterCount(); - if (switchSpi && !setDedicatedSpi(false)) { - return 0; - } - return rtn; - } - //---------------------------------------------------------------------------- - /** \return true if can be in dedicated SPI state */ - bool hasDedicatedSpi() - { - return m_card ? m_card->hasDedicatedSpi() : false; - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] pr Print destination. - */ - void initErrorHalt(print_t* pr) - { - initErrorPrint(pr); - while (true) {} - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void initErrorHalt(print_t* pr, const char* msg) - { - pr->println(msg); - initErrorHalt(pr); - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void initErrorHalt(print_t* pr, const __FlashStringHelper* msg) - { - pr->println(msg); - initErrorHalt(pr); - } - //---------------------------------------------------------------------------- - /** Print error details after begin() fails. - * - * \param[in] pr Print destination. - */ - void initErrorPrint(print_t* pr) - { - pr->println(F("begin() failed")); - if (sdErrorCode()) { - pr->println(F("Do not reformat the SD.")); - if (sdErrorCode() == SD_CARD_ERROR_CMD0) { - pr->println(F("No card, wrong chip select pin, or wiring error?")); - } - } - errorPrint(pr); - } - //---------------------------------------------------------------------------- - /** \return true if in dedicated SPI state. */ - bool isDedicatedSpi() - { - return m_card ? m_card->isDedicatedSpi() : false; - } - //---------------------------------------------------------------------------- - /** %Print volume FAT/exFAT type. - * - * \param[in] pr Print destination. - */ - void printFatType(print_t* pr) - { - if (Vol::fatType() == FAT_TYPE_EXFAT) { - pr->print(F("exFAT")); - } else { - pr->print(F("FAT")); - pr->print(Vol::fatType()); - } - } - //---------------------------------------------------------------------------- - /** %Print SD errorCode and errorData. - * - * \param[in] pr Print destination. - */ - void errorPrint(print_t* pr) - { - if (sdErrorCode()) { - pr->print(F("SdError: 0X")); - pr->print(sdErrorCode(), HEX); - pr->print(F(",0X")); - pr->println(sdErrorData(), HEX); - } else if (!Vol::fatType()) { - pr->println(F("Check SD format.")); - } - } - //---------------------------------------------------------------------------- - /** %Print msg, any SD error code. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorPrint(print_t* pr, char const* msg) - { - pr->print(F("error: ")); - pr->println(msg); - errorPrint(pr); - } - - /** %Print msg, any SD error code. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorPrint(print_t* pr, const __FlashStringHelper* msg) - { - pr->print(F("error: ")); - pr->println(msg); - errorPrint(pr); - } - //---------------------------------------------------------------------------- - /** %Print error info and return. - * - * \param[in] pr Print destination. - */ - void printSdError(print_t* pr) - { - if (sdErrorCode()) { - if (sdErrorCode() == SD_CARD_ERROR_CMD0) { - pr->println(F("No card, wrong chip select pin, or wiring error?")); - } - pr->print(F("SD error: ")); - printSdErrorSymbol(pr, sdErrorCode()); - pr->print(F(" = 0x")); - pr->print(sdErrorCode(), HEX); - pr->print(F(",0x")); - pr->println(sdErrorData(), HEX); - } else if (!Vol::fatType()) { - pr->println(F("Check SD format.")); - } - } - //---------------------------------------------------------------------------- - /** \return SD card error code. */ - uint8_t sdErrorCode() - { - if (m_card) { - return m_card->errorCode(); - } - return SD_CARD_ERROR_INVALID_CARD_CONFIG; - } - //---------------------------------------------------------------------------- - /** \return SD card error data. */ - uint8_t sdErrorData() - { - return m_card ? m_card->errorData() : 0; - } - //---------------------------------------------------------------------------- - /** Set SPI sharing state - * \param[in] value desired state. - * \return true for success else false; - */ - bool setDedicatedSpi(bool value) - { - if (m_card) { - return m_card->setDedicatedSpi(value); - } - return false; - } - //---------------------------------------------------------------------------- - /** \return pointer to base volume */ - Vol* vol() - { - return reinterpret_cast(this); - } - //---------------------------------------------------------------------------- - /** Initialize file system after call to cardBegin. - * - * \return true for success or false for failure. - */ - bool volumeBegin() - { - return Vol::begin(m_card); - } -#if ENABLE_ARDUINO_SERIAL - /** Print error details after begin() fails. */ - void initErrorPrint() - { - initErrorPrint(&Serial); - } - //---------------------------------------------------------------------------- - /** %Print msg to Serial and halt. - * - * \param[in] msg Message to print. - */ - void errorHalt(const __FlashStringHelper* msg) - { - errorHalt(&Serial, msg); - } - //---------------------------------------------------------------------------- - /** %Print error info to Serial and halt. */ - void errorHalt() - { - errorHalt(&Serial); - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] msg Message to print. - */ - void errorHalt(const char* msg) - { - errorHalt(&Serial, msg); - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. */ - void initErrorHalt() - { - initErrorHalt(&Serial); - } - //---------------------------------------------------------------------------- - /** %Print msg, any SD error code. - * - * \param[in] msg Message to print. - */ - void errorPrint(const char* msg) - { - errorPrint(&Serial, msg); - } - /** %Print msg, any SD error code. - * - * \param[in] msg Message to print. - */ - void errorPrint(const __FlashStringHelper* msg) - { - errorPrint(&Serial, msg); - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] msg Message to print. - */ - void initErrorHalt(const char* msg) - { - initErrorHalt(&Serial, msg); - } - //---------------------------------------------------------------------------- - /** %Print error info and halt. - * - * \param[in] msg Message to print. - */ - void initErrorHalt(const __FlashStringHelper* msg) - { - initErrorHalt(&Serial, msg); - } -#endif // ENABLE_ARDUINO_SERIAL - //---------------------------------------------------------------------------- -private: - SdCard* m_card = nullptr; - SdCardFactory m_cardFactory; -}; -//------------------------------------------------------------------------------ -/** - * \class SdFat32 - * \brief SD file system class for FAT volumes. - */ -class SdFat32 : public SdBase -{ -public: -}; -//------------------------------------------------------------------------------ -/** - * \class SdExFat - * \brief SD file system class for exFAT volumes. - */ -class SdExFat : public SdBase -{ -public: -}; -//------------------------------------------------------------------------------ -/** - * \class SdFs - * \brief SD file system class for FAT16, FAT32, and exFAT volumes. - */ -class SdFs : public SdBase -{ -public: -}; -//------------------------------------------------------------------------------ -#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) -/** Select type for SdFat. */ -typedef SdFat32 SdFat; -/** Select type for SdBaseFile. */ -typedef FatFile SdBaseFile; -#elif SDFAT_FILE_TYPE == 2 -typedef SdExFat SdFat; -typedef ExFatFile SdBaseFile; -#elif SDFAT_FILE_TYPE == 3 -typedef SdFs SdFat; -typedef FsBaseFile SdBaseFile; -#else // SDFAT_FILE_TYPE -#error Invalid SDFAT_FILE_TYPE -#endif // SDFAT_FILE_TYPE -// -// Only define File if FS.h is not included. -// Line with test for __has_include must not have operators or parentheses. -#if defined __has_include -#if __has_include() -#define HAS_INCLUDE_FS_H -//#warning File not defined because __has_include(FS.h) -#endif // __has_include() -#endif // defined __has_include -#ifndef HAS_INCLUDE_FS_H -#if SDFAT_FILE_TYPE == 1 || defined(DOXYGEN) -/** Select type for File. */ -typedef File32 File; -#elif SDFAT_FILE_TYPE == 2 -typedef ExFile File; -#elif SDFAT_FILE_TYPE == 3 -typedef FsFile File; -#endif // SDFAT_FILE_TYPE -#endif // HAS_INCLUDE_FS_H -/** - * \class SdFile - * \brief FAT16/FAT32 file with Print. - */ -class SdFile : public PrintFile -{ -public: - SdFile() {} - /** Create an open SdFile. - * \param[in] path path for file. - * \param[in] oflag open flags. - */ - SdFile(const char* path, oflag_t oflag) - { - open(path, oflag); - } - /** Set the date/time callback function - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here - * - * // return date using FS_DATE macro to format fields - * *date = FS_DATE(year, month, day); - * - * // return time using FS_TIME macro to format fields - * *time = FS_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t* date, uint16_t* time)) - { - FsDateTime::setCallback(dateTime); - } - /** Cancel the date/time callback function. */ - static void dateTimeCallbackCancel() - { - FsDateTime::clearCallback(); - } -}; -#endif // SdFat_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.cpp b/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.cpp deleted file mode 100644 index ea694943..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright (c) 2011-2021 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FsUtf.h" -namespace FsUtf { - //---------------------------------------------------------------------------- - char* cpToMb(uint32_t cp, char* str, char* end) { - size_t n = end - str; - if (cp < 0X80) { - if (n < 1) goto fail; - *(str++) = static_cast(cp); - } else if (cp < 0X800) { - if (n < 2) goto fail; - *(str++) = static_cast((cp >> 6) | 0XC0); - *(str++) = static_cast((cp & 0X3F) | 0X80); - } else if (cp < 0X10000) { - if (n < 3) goto fail; - *(str++) = static_cast((cp >> 12) | 0XE0); - *(str++) = static_cast(((cp >> 6) & 0X3F) | 0X80); - *(str++) = static_cast((cp & 0X3F) | 0X80); - } else { - if (n < 4) goto fail; - *(str++) = static_cast((cp >> 18) | 0XF0); - *(str++) = static_cast(((cp >> 12) & 0X3F)| 0X80); - *(str++) = static_cast(((cp >> 6) & 0X3F) | 0X80); - *(str++) = static_cast((cp & 0X3F) | 0X80); - } - return str; - - fail: - return nullptr; - } - //---------------------------------------------------------------------------- - // to do? improve error check - const char* mbToCp(const char* str, const char* end, uint32_t* rtn) { - size_t n; - uint32_t cp; - if (str >= end) { - return nullptr; - } - uint8_t ch = str[0]; - if ((ch & 0X80) == 0) { - *rtn = ch; - return str + 1; - } - if ((ch & 0XE0) == 0XC0) { - cp = ch & 0X1F; - n = 2; - } else if ((ch & 0XF0) == 0XE0) { - cp = ch & 0X0F; - n = 3; - } else if ((ch & 0XF8) == 0XF0) { - cp = ch & 0X07; - n = 4; - } else { - return nullptr; - } - if ((str + n) > end) { - return nullptr; - } - for (size_t i = 1; i < n; i++) { - ch = str[i]; - if ((ch & 0XC0) != 0X80) { - return nullptr; - } - cp <<= 6; - cp |= ch & 0X3F; - } - // Don't allow over long as ASCII. - if (cp < 0X80 || !isValidCp(cp)) { - return nullptr; - } - *rtn = cp; - return str + n; - } - //---------------------------------------------------------------------------- - const char* mbToU16(const char* str, - const char* end, uint16_t* hs, uint16_t* ls) { - uint32_t cp; - const char* ptr = mbToCp(str, end, &cp); - if (!ptr) { - return nullptr; - } - if (cp <= 0XFFFF) { - *hs = cp; - *ls = 0; - } else { - *hs = highSurrogate(cp); - *ls = lowSurrogate(cp); - } - return ptr; - } -} // namespace FsUtf - diff --git a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.h b/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.h deleted file mode 100644 index ae72f0d3..00000000 --- a/extra-libraries/ESP32/SdFat-2.1.2/src/common/FsUtf.h +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Copyright (c) 2011-2021 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FsUtf_h -#define FsUtf_h -/** -* \file -* \brief Unicode Transformation Format functions. -*/ -#include -#include -namespace FsUtf { - /** High surrogate for a code point. - * \param{in} cp code point. - * \return high surrogate. - */ - inline uint16_t highSurrogate(uint32_t cp) { - return (cp >> 10) + (0XD800 - (0X10000 >> 10)); - } - /** Low surrogate for a code point. - * \param{in} cp code point. - * \return low surrogate. - */ - inline uint16_t lowSurrogate(uint32_t cp) { - return (cp & 0X3FF) + 0XDC00; - } - /** Check for a valid code point. - * \param[in] cp code point. - * \return true if valid else false. - */ - inline bool isValidCp(uint32_t cp) { - return cp <= 0x10FFFF && (cp < 0XD800 || cp > 0XDFFF); - } - /** Check for UTF-16 surrogate. - * \param[in] c UTF-16 unit. - * \return true if c is a surrogate else false. - */ - inline bool isSurrogate(uint16_t c) { - return 0XD800 <= c && c <= 0XDFFF; - } - /** Check for UTF-16 high surrogate. - * \param[in] c UTF-16 unit.. - * \return true if c is a high surrogate else false. - */ - inline bool isHighSurrogate(uint16_t c) { - return 0XD800 <= c && c <= 0XDBFF; - } - /** Check for UTF-16 low surrogate. - * \param[in] c UTF-16 unit.. - * \return true if c is a low surrogate else false. - */ - inline bool isLowSurrogate(uint16_t c) { - return 0XDC00 <= c && c <= 0XDFFF; - } - /** Convert UFT-16 surrogate pair to code point. - * \param[in] hs high surrogate. - * \param[in] ls low surrogate. - * \return code point. - */ - inline uint32_t u16ToCp(uint16_t hs, uint16_t ls) { - return 0X10000 + (((hs & 0X3FF) << 10) | (ls & 0X3FF)); - } - /** Encodes a 32 bit code point as a UTF-8 sequence. - * \param[in] cp code point to encode. - * \param[out] str location for UTF-8 sequence. - * \param[in] end location following last character of str. - * \return location one beyond last encoded character. - */ - char* cpToMb(uint32_t cp, char* str, char* end); - /** Get next code point from a UTF-8 sequence. - * \param[in] str location for UTF-8 sequence. - * \param[in] end location following last character of str. - * May be nullptr if str is zero terminated. - * \param[out] rtn location for the code point. - * \return location of next UTF-8 character in str of nullptr for error. - */ - const char* mbToCp(const char* str, const char* end, uint32_t* rtn); - /** Get next code point from a UTF-8 sequence as UTF-16. - * \param[in] str location for UTF-8 sequence. - * \param[in] end location following last character of str. - * \param[out] hs location for the code point or high surrogate. - * \param[out] ls location for zero or high surrogate. - * \return location of next UTF-8 character in str of nullptr for error. - */ - const char* mbToU16(const char* str, - const char* end, uint16_t* hs, uint16_t* ls); -} // namespace FsUtf -#endif // FsUtf_h diff --git a/extra-libraries/ESP32/SdFat-2.1.2/.gitattributes b/extra-libraries/ESP32/SdFat-2.2.3/.gitattributes similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/.gitattributes rename to extra-libraries/ESP32/SdFat-2.2.3/.gitattributes diff --git a/extra-libraries/ESP32/SdFat-2.2.3/.gitignore b/extra-libraries/ESP32/SdFat-2.2.3/.gitignore new file mode 100644 index 00000000..6dae7474 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/.gitignore @@ -0,0 +1,36 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Icon must ends with two \r. +Icon + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes diff --git a/extra-libraries/ESP32/SdFat-2.1.2/LICENSE.md b/extra-libraries/ESP32/SdFat-2.2.3/LICENSE.md similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/LICENSE.md rename to extra-libraries/ESP32/SdFat-2.2.3/LICENSE.md diff --git a/extra-libraries/ESP32/SdFat-2.1.2/README.md b/extra-libraries/ESP32/SdFat-2.2.3/README.md similarity index 93% rename from extra-libraries/ESP32/SdFat-2.1.2/README.md rename to extra-libraries/ESP32/SdFat-2.2.3/README.md index c3abc011..1f97464b 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/README.md +++ b/extra-libraries/ESP32/SdFat-2.2.3/README.md @@ -1,8 +1,8 @@ -### Warning: This is SdFat Version 2. +File copy constructors and file assignment operators have been made private by +default in 2.2.3 to prevent call by value and multiple copies of file instances. -Earlier releases of Version 1 are here: - -https://github.com/greiman/SdFat/releases +SdFatConfig.h has options to make file constructors and assignment operators +public. UTF-8 encoded filenames are supported in v2.1.0 or later. diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/Doxyfile b/extra-libraries/ESP32/SdFat-2.2.3/doc/Doxyfile similarity index 92% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/Doxyfile rename to extra-libraries/ESP32/SdFat-2.2.3/doc/Doxyfile index 811563db..54e8ce86 100644 --- a/extra-libraries/ESP32/SdFat-2.1.2/doc/Doxyfile +++ b/extra-libraries/ESP32/SdFat-2.2.3/doc/Doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.9.2 +# Doxyfile 1.9.6 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -12,6 +12,16 @@ # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options @@ -60,16 +70,28 @@ PROJECT_LOGO = OUTPUT_DIRECTORY = . -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes -# performance problems for the file system. +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode @@ -81,14 +103,14 @@ ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English @@ -452,7 +474,7 @@ TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 -# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing @@ -546,7 +568,8 @@ HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO @@ -577,14 +600,15 @@ INTERNAL_DOCS = NO # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly # deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be be set to NO to properly deal with +# are not case sensitive the option should be set to NO to properly deal with # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On # Windows (including Cygwin) and MacOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. -# The default value is: system dependent. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. CASE_SENSE_NAMES = NO @@ -836,6 +860,14 @@ WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = YES +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but @@ -851,13 +883,27 @@ WARN_AS_ERROR = NO # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard -# error (stderr). +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). WARN_LOGFILE = @@ -887,10 +933,21 @@ INPUT = ../src \ # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING # The default value is: UTF-8. INPUT_ENCODING = UTF-8 +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. @@ -981,7 +1038,7 @@ EXCLUDE_PATTERNS = # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test +# ANamespace::AClass, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* @@ -1029,6 +1086,11 @@ IMAGE_PATH = # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. @@ -1070,6 +1132,15 @@ FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- @@ -1207,10 +1278,11 @@ CLANG_DATABASE_PATH = ALPHABETICAL_INDEX = NO -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = @@ -1289,7 +1361,12 @@ HTML_STYLESHEET = # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @@ -1304,6 +1381,19 @@ HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a color-wheel, see @@ -1398,6 +1488,13 @@ GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. @@ -1602,7 +1699,7 @@ GENERATE_TREEVIEW = NO # area (value NO) or if it should extend to the full height of the window (value # YES). Setting this to YES gives a layout similar to # https://docs.readthedocs.io with more room for contents, but less room for the -# project logo, title, and description. If either GENERATOR_TREEVIEW or +# project logo, title, and description. If either GENERATE_TREEVIEW or # DISABLE_INDEX is set to NO, this option has no effect. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1633,6 +1730,13 @@ TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for @@ -1653,17 +1757,6 @@ HTML_FORMULA_FORMAT = png FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. @@ -2258,7 +2351,8 @@ SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by the -# preprocessor. +# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of +# RECURSIVE has no effect here. # This tag requires that the tag SEARCH_INCLUDES is set to YES. INCLUDE_PATH = @@ -2354,15 +2448,6 @@ EXTERNAL_PAGES = YES # Configuration options related to the dot tool #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to -# NO turns the diagrams off. Note that this option also works with HAVE_DOT -# disabled, but it is recommended to install and use dot, since it yields more -# powerful graphs. -# The default value is: YES. - -CLASS_DIAGRAMS = YES - # You can include diagrams made with dia in doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. @@ -2395,35 +2480,50 @@ HAVE_DOT = YES DOT_NUM_THREADS = 0 -# When you want a differently looking font in the dot files that doxygen -# generates you can specify the font name using DOT_FONTNAME. You need to make -# sure dot is able to find the font, which can be done by putting it in a -# standard location or by setting the DOTFONTPATH environment variable or by -# setting DOT_FONTPATH to the directory containing the font. -# The default value is: Helvetica. +# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of +# subgraphs. When you want a differently looking font in the dot files that +# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# For details please see Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTNAME = Helvetica +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of -# dot graphs. -# Minimum value: 4, maximum value: 24, default value: 10. +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTSIZE = 10 +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" -# By default doxygen will tell dot to use the default font as specified with -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set -# the path where dot can find it using this tag. +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" + +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. # This tag requires that the tag HAVE_DOT is set to YES. DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a +# graph for each documented class showing the direct and indirect inheritance +# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, +# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set +# to TEXT the direct and indirect inheritance relations will be shown as texts / +# links. +# Possible values are: NO, YES, TEXT and GRAPH. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. CLASS_GRAPH = YES @@ -2437,7 +2537,8 @@ CLASS_GRAPH = YES COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for -# groups, showing the direct groups dependencies. +# groups, showing the direct groups dependencies. See also the chapter Grouping +# in the manual. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2552,6 +2653,13 @@ GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: @@ -2605,10 +2713,10 @@ MSCFILE_DIRS = DIAFILE_DIRS = # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the -# path where java can find the plantuml.jar file. If left blank, it is assumed -# PlantUML is not used or called during a preprocessing step. Doxygen will -# generate a warning when it encounters a \startuml command in this case and -# will not generate output for the diagram. +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. PLANTUML_JAR_PATH = @@ -2646,18 +2754,6 @@ DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 1000 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not seem -# to support this out of the box. -# -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_TRANSPARENT = YES - # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) support @@ -2670,6 +2766,8 @@ DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. diff --git a/extra-libraries/ESP32/SdFat-2.2.3/doc/SdErrorCodes.txt b/extra-libraries/ESP32/SdFat-2.2.3/doc/SdErrorCodes.txt new file mode 100644 index 00000000..91802597 --- /dev/null +++ b/extra-libraries/ESP32/SdFat-2.2.3/doc/SdErrorCodes.txt @@ -0,0 +1,51 @@ +2022-07-01 + +Run the SdErrorCode example to produce an updated list. + +Code,Symbol - failed operation +0X00,SD_CARD_ERROR_NONE - No error +0X01,SD_CARD_ERROR_CMD0 - Card reset failed +0X02,SD_CARD_ERROR_CMD2 - SDIO read CID +0X03,SD_CARD_ERROR_CMD3 - SDIO publish RCA +0X04,SD_CARD_ERROR_CMD6 - Switch card function +0X05,SD_CARD_ERROR_CMD7 - SDIO card select +0X06,SD_CARD_ERROR_CMD8 - Send and check interface settings +0X07,SD_CARD_ERROR_CMD9 - Read CSD data +0X08,SD_CARD_ERROR_CMD10 - Read CID data +0X09,SD_CARD_ERROR_CMD12 - Stop multiple block read +0X0A,SD_CARD_ERROR_CMD13 - Read card status +0X0B,SD_CARD_ERROR_CMD17 - Read single block +0X0C,SD_CARD_ERROR_CMD18 - Read multiple blocks +0X0D,SD_CARD_ERROR_CMD24 - Write single block +0X0E,SD_CARD_ERROR_CMD25 - Write multiple blocks +0X0F,SD_CARD_ERROR_CMD32 - Set first erase block +0X10,SD_CARD_ERROR_CMD33 - Set last erase block +0X11,SD_CARD_ERROR_CMD38 - Erase selected blocks +0X12,SD_CARD_ERROR_CMD58 - Read OCR register +0X13,SD_CARD_ERROR_CMD59 - Set CRC mode +0X14,SD_CARD_ERROR_ACMD6 - Set SDIO bus width +0X15,SD_CARD_ERROR_ACMD13 - Read extended status +0X16,SD_CARD_ERROR_ACMD23 - Set pre-erased count +0X17,SD_CARD_ERROR_ACMD41 - Activate card initialization +0X18,SD_CARD_ERROR_ACMD51 - Read SCR data +0X19,SD_CARD_ERROR_READ_TOKEN - Bad read data token +0X1A,SD_CARD_ERROR_READ_CRC - Read CRC error +0X1B,SD_CARD_ERROR_READ_FIFO - SDIO fifo read timeout +0X1C,SD_CARD_ERROR_READ_REG - Read CID or CSD failed. +0X1D,SD_CARD_ERROR_READ_START - Bad readStart argument +0X1E,SD_CARD_ERROR_READ_TIMEOUT - Read data timeout +0X1F,SD_CARD_ERROR_STOP_TRAN - Multiple block stop failed +0X20,SD_CARD_ERROR_TRANSFER_COMPLETE - SDIO transfer complete +0X21,SD_CARD_ERROR_WRITE_DATA - Write data not accepted +0X22,SD_CARD_ERROR_WRITE_FIFO - SDIO fifo write timeout +0X23,SD_CARD_ERROR_WRITE_START - Bad writeStart argument +0X24,SD_CARD_ERROR_WRITE_PROGRAMMING - Flash programming +0X25,SD_CARD_ERROR_WRITE_TIMEOUT - Write timeout +0X26,SD_CARD_ERROR_DMA - DMA transfer failed +0X27,SD_CARD_ERROR_ERASE - Card did not accept erase commands +0X28,SD_CARD_ERROR_ERASE_SINGLE_SECTOR - Card does not support erase +0X29,SD_CARD_ERROR_ERASE_TIMEOUT - Erase command timeout +0X2A,SD_CARD_ERROR_INIT_NOT_CALLED - Card has not been initialized +0X2B,SD_CARD_ERROR_INVALID_CARD_CONFIG - Invalid card config +0X2C,SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED - Unsupported SDIO command +0X2D,SD_CARD_ERROR_UNKNOWN - Unknown error diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/SdFat.html b/extra-libraries/ESP32/SdFat-2.2.3/doc/SdFat.html similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/SdFat.html rename to extra-libraries/ESP32/SdFat-2.2.3/doc/SdFat.html diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/ZipMsg/index.html b/extra-libraries/ESP32/SdFat-2.2.3/doc/ZipMsg/index.html similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/ZipMsg/index.html rename to extra-libraries/ESP32/SdFat-2.2.3/doc/ZipMsg/index.html diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/clean_html.bat b/extra-libraries/ESP32/SdFat-2.2.3/doc/clean_html.bat similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/clean_html.bat rename to extra-libraries/ESP32/SdFat-2.2.3/doc/clean_html.bat diff --git a/extra-libraries/ESP32/SdFat-2.1.2/doc/del_html.bat b/extra-libraries/ESP32/SdFat-2.2.3/doc/del_html.bat similarity index 100% rename from extra-libraries/ESP32/SdFat-2.1.2/doc/del_html.bat rename to extra-libraries/ESP32/SdFat-2.2.3/doc/del_html.bat diff --git a/extra-libraries/ESP32/SdFat-2.2.3/doc/html.zip b/extra-libraries/ESP32/SdFat-2.2.3/doc/html.zip new file mode 100644 index 0000000000000000000000000000000000000000..efbd384196b71b0daaa74b510e7f59ac94ff2dbc GIT binary patch literal 2552549 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